Under the Hood of the Hiitch Server  

August 16th, 2007

Comment iconNo Comments

Under the Hood of the Hiitch Server

We have described the general server design and threading model in our last article. Today we will go under the hood to explore the engineering details of how data is transferred between the server and the client. On the high level, instruction requests are harvested in sets and queued for processing by the worker threads. The worker threads resolves the XML instruction requests into a set of executable instructions on the server and processes them after correctly authenticating the source. The complexity of this system is based on a simple but advanced communication protocol designed for today’s needs.

Communication Protocol
The communication protocol between the server and the client is in XML. The client aggregates a list of instructions that they want executed on the server and then transmits that to the server. The sequence of the execution is determined by the ordering of the client’s XML request, which is done bottom up. The last instruction at the bottom of the XML request is the first to be executed on the server, followed by the last second and so on. The format of the protocol is not entirely XML based. The protocol divides all the data received or send into two segments. The first segment hold the XML instruction, the second segment hold raw attachments, if any. Attachment segment may hold additional file contents that are not XML based (eg. binary data). The first 8 bytes or 64 bits dictate the total data block size. The second 4 bytes or 32 bits indicates the first segment size, the remaining data belong to the second segment.

Protocol Details

This protocol design although simple will allow us to provide a basic mechanism to transfer vast amount of differing types of data depending on the XML instruction request defined by the first segment. You can view the first segment as the instruction manual to process the request or sets of requests and the second segment as any other additional data required to fulfill the request or sets of requests. It may seem that this protocol is nothing special on first inspection but we think otherwise. Many of the protocols used today (eg. web server) are done using fixed Id values and headers which are less flexible and robust. The reason is that these older protocols mainly focuses on the format of transferring data and stopped there. Data that we communicate to each other today demands more than just being transferred but also properly processed to have any real value.

A simple example will be a file transfer using this more advanced high level protocol. The first XML segment can define a file transfer indicating how big the file size is in the attachment, the file name, destination location and etc. The protocol can also handle multiple file transfers in a single request. This will then allow the server to save the file to some predefined location. The XML segment might also define a decompression instruction that will result in the transferred file being uncompressed at the end of the entire exchange. The XML segment might also further define what is to be done with the uncompressed data and etc. This results in a more flexible and robust system that can be self descriptive and automated at a high level.

If you use our work, we ask that you remember to give us the credit that we deserve. Our hope is to develop better technology through open sharing so that future generations can benefit. Research and development for newer and better technology is still in great need as our generation moves towards the digital age, so join us in this fight towards the cutting edge of information technology.

File iconFiled under: Tips and Tricks, Features User iconby geek | Tack iconAdd Comments
AddThis Social Bookmark Button

Hiitch Server Design Overview  

August 8th, 2007

Comment icon1 Comment

Server Design Overview

The Hiitch server is a multi-threaded application server that you can tune to scale it to your desired hardware setup. It also implements customizable security features that you can use to secure your own network’s integrity and privacy. Hence, understanding some of the key concepts in its design implementation is important. We will begin by describing the detail interaction process that goes on in the server that is unique to every individual Hiitch network implementation.

Server Interaction Process
Before any information is communicated between the client and the server, the clients will first request for the authenticity of the server. Each client has an associated digital certificate that ties it to a particular server. The client will then verify the digital signature to see if the content is coming from the intended server and proceed to send its confidential information to sign in to the server. This whole verification process is unique to each network. During the server installation process, our default script will assist you to generate a set of public and private key pair, also known as a digital certificate, that identifies your particular network. Without generating this digital certificate and exporting the cert to your clients, the integrity of your network can be easily compromised. Once the verification process is correctly completed, the clients will start a new secure session with the server.

Server Threading Model
Once a secure session has been authenticated and started on the server, its threading model kicks in. All clients requests are harvested and then independently processed by a pool of worker threads. You can tune and configure the total number of threads you want as socket harvesters and the number of worker threads attached to each socket harvester. The flexibility of the threading model will enable you to control the performance ratio between accepting requests and processing instructions on each server. Socket harvester threads are responsible for receiving incoming requests and then queue them up for processing by worker threads. Worker threads are responsible to resolve incoming requests to a combination of instructions and then processing those instructions to satisfy the requests. The result of this design is a very advance, efficient and scalable server that you can optimize with your dedicated hardware setup.

Server Performance Considerations
The Hiitch server was also designed to work with other techniques that can help you to easily and cheaply scale your network. A few of these techniques that you can use in combination are load balancing, network file system (NFS), high availability and etc. With a good amount of bandwidth, you can improve your social network performance by load balancing multiple Hiitch servers on a few old computers sharing their storage space using NFS. Hiitch servers will work seamlessly across the entire cluster of machines as if they were one single computer. High availability is a build in feature on Hiitch servers, although not extensive but it should be reasonable enough to meet your average needs.

Future Server Developments
Future developments will move toward a peer to peer (P2P) Hiitch servers system with clients that can connect across different networks securely and dynamically.

If you are interested to read more, other earlier technical articles about Hiitch can be found here.

File iconFiled under: Tips and Tricks, Features User iconby geek | Tack iconAdd Comments
AddThis Social Bookmark Button

Software Components Overview of Hiitch  

August 1st, 2007

Comment iconNo Comments

The Hiitch platform consists of three basic software components. These components are aggregated together on the desktop to produce a seamless real time social networking system. In due time more components may be added to provide richer functionality and online services but we will just focus on these three components for now.

Hiitch Components OverviewHiitch Server
The server is the most critical component of the entire platform. It manages all the critical information and the security of the platform. The Hiitch server is a very advanced piece of software. It understands complex instructions and allow the clients to interact with it through pure XML. It was designed to function very much like our human brain. At the core, it is preloaded by a set of generic instructions that are common to many online services provided by web servers. However, it is far more advanced than today’s web servers in the way it processes and understands information. A typical interaction with the server starts with the client communicating a set of XML instructions to the server. The server then processes the client’s XML request and resolves them into a combination of runtime instructions. These instructions are then aggregated to perform a complex operation. The server will also determine at this point if the requesting client is part of the system and is authorized to carry out those operations. If all is well, it executes and processes the request and returns any results. Each interaction between the server and the client are done on a dedicated pool of threads that provides the parallel processing nature of the server. Depending on your hardware, you can decide on how you want to scale the server to meet your number crunching needs by tuning the threading model. You can also easily customize the server’s runtime behavior and operations by adjusting the instruction set that it is preloaded with. We will discuss more about the details of the server on another post. ;)

Hiitch IM Server
Hiitch was never meant to be an instant messaging (IM) system. IM in Hiitch is just another feature that we provided as a means of communication and not its defining characteristic. Hiitch is a social networking platform which has IM facilities among many others and not the other way around. With that said, the IM facilities in Hiitch is very much a peer to peer (P2P) system. The IM facilities should be more accurately called a routing facility than a chat server. The reason for this is that, the IM server does nothing more than route the interaction between both clients to each other. It does no processing except to work with the Hiitch server to determine if the clients are authorized to use the system and to notify both parties of any incoming initiation for interactions. There is a need for this routing facility because many networks are not designed or configured to work with a P2P system. The IM facilities on Hiitch is still very much a work in progress and you will see more of it in later stages of our development.

External Services
External services are not connected to the Hiitch server in any way. Client developers are free and encouraged to implement facilities and features of their own through this avenue. Although external services are not considered part of the Hiitch platform, but it is still part of the social interaction process that the user is experiencing on their desktop. We have implemented two examples on the client that we thought was useful. The first one is the delivery of interesting events as an autosuggestion to the user based on his/her location and profile. The second is the real time updating of the user’s shout message and default picture to our web widget that can be found on our blog. Developers desiring to extend this portion of the Hiitch platform do not need to understand how the Hiitch system functions but are still able to integrate their software into our social networking experience.

You can read more about Hiitch’s Network Connectivity Overview here.

I hope that this article will get you excited about developing with and on the Hiitch platform. You are encouraged to sign up an account with our default network and use it as a means to contact us or interact with other developers of the Hiitch platform. Just download the default client and join us today as part of our community!

File iconFiled under: Tips and Tricks, Features User iconby geek | Tack iconAdd Comments
AddThis Social Bookmark Button

The Technology Behind Hiitch  

July 24th, 2007

Comment icon5 Comments

This is the first of many technical articles that we will be releasing as we begin our work to bring Hiitch to you as promised in our previous blog postings. We will basically focus on the technology behind building a complete desktop social networking platform like Hiitch and how you can better utilize it for your own purposes without reinventing the wheel. Your suggestions and feedback will be greatly appreciated. You can also write to us about what you would like to know regarding the technologies behind Hiitch.

Network Connectivity Diagram

Hiitch is designed and developed to build a vibrant online community on the desktop. It delivers things of interest such as new people and events to the user by analyzing the user’s profile. It does automatic match making and has an array of features to allow users to interact online (eg. IM, file sharing, photo sharing, community forums, etc) at real time. All these are done securely on the desktop using technologies such as digital signature verification, SSL, data encryption and etc.

Another discussion on Hiitch’s security features can also be found from our previous posting:

How Secure Is Hiitch?

Hiitch is basically (or partially) a client and server networking model. It is not intended to work with web proxies as they post as a big security risk and information leak. All communication done on Hiitch has to be done with direct connections to either the server or the client. A peer to peer model (p2p) for the clients is not used because not all networks allow p2p technologies to work correctly. Some networks hide their computers with transparent proxies to better protect their internal network which result in p2p connection problems. Other disadvantages include the fact that users must have enough know how to configure their home or private network to work with p2p solutions (port forwarding, firewall, DMZ and etc). Often than not a home or private network consists of a group of computers (LAN) and this will require multiple IP addresses not available to most home users. P2P is still a very good networking model and we are still experimenting on how best to combine both p2p models and the more traditional client server models to produce a best of both world solution.

Internally, Hiitch uses a technique similar to remote procedure call (RPC). We will discuss this in more detail in a separate post. ;-) All communication data in Hiitch is transmitted using XML. This decision was to allow the client and server to become technology independent and open up possibilities to “just in time” instruction discoveries. So regardless of the programming language used to build the server or client, the only requirement for them (to communicate) is understanding XML. Each instruction(s) send from the client to the server is decrypted (when necessary), parsed and resolved into a set of runtime instructions. These instructions are then checked to see if they are allowed to run. Finally, the instructions are then executed on the server and any results available are returned to the client.

We hope this article will get you excited about Hiitch and the technology behind it. Our hope is that we can build a strong community of experts who are interested and willing to work with us to produce ground breaking social networking technologies for the generations ahead. Join our community today!

File iconFiled under: Tips and Tricks, Features User iconby geek | Tack iconAdd Comments
AddThis Social Bookmark Button

How to build your own secure private online social network?  

May 15th, 2007

Comment iconNo Comments

When we first started working on Hiitch our focus was mainly on on-line dating. However, as we progressed, we realized that Hiitch was becoming more and more like a dedicated and secure social networking software than merely an on-line dating tool. We like to see ourselves as still in the process of allowing our users discover for themselves what Hiitch really is to them. In this article I would like to discuss a few examples of how you can make use of Hiitch for your own social networking purposes. Hiitch has many features that can help you deal with your everyday social networking needs that cannot be found in today’s instant messaging (IM) culture. Before I go on, I like to highlight the fact that Hiitch is not and never will be an IM software. IM is only a supported feature in Hiitch and not what it is about. Hiitch is about discovering new people on-line and providing a common ground to communicate and share yourself with others. OK lets proceed with the scenarios that Hiitch can be of use to you.

 

Scenario One: Work

You have a small company or team that you work with. Everyone is usually hard at work on their own desk all the time. Some of them are physically not in the office most of the time. You would like to setup a dedicated network with them so that you can share things on-line and communicate more simply together at real time. You thought about using MySpace, Facebook and etc to help you tie everyone together but you hate the idea of checking your web browser all the time for new information. You are also skeptical about all the negative publicity about security and etc from these service providers. You feel that the common IM software like MSN live, Yahoo messenger, and etc just isn’t cut out for your social networking needs. This is where Hiitch can help you.

 

Hiitch sits nicely on your system tray and notifies you when items of your interests are received. Your contact comes on-line, you are notified (only if you want to). Someone in the team sends you an urgent file, you get notified and that file remains available for you always at anytime and anywhere until you choose to remove it yourself. If you are offline, messages send to you are kept for you until you come on-line. You can even send quick messages to your teammates without disturbing them during their work through your contact list. Your on-line status on Hiitch will help maintain your intentions to others in the network. So, if you set ‘do not disturb’, then no one can IM you directly. If you set yourself to ‘private’ then only your contacts will see you as on-line and etc. A new team member comes aboard and you are interested to get to know him/her, you can simply browse their profile card and read more about them, browse their photographs and etc. You can post news about company events or instructions on the community interface and notify your team as soon as you post them. If you keep them private, only your teammates in your contact list will be able to read them. You can also get others outside your team involved when you require feedback on ideas, get advice from others or want to do a community survey. You can also setup appointments with your teammate in another country without worrying about time zone conversions, Hiitch does it for you automatically and notifies both of you when the appointment is due.

 

Scenario Two: Play

Have you ever considered your own secure private social network? You are old enough to be responsible for yourself. You want to meet new people and get others to notice you. However, you don’t want to look desperate and try those on-line match making sites like eHarmony, Match and etc. You like your social life to pick up but you want to do that at your own time and have it all in your own control. You would also like to keep your existing friends and family as part of your private social network. This is where Hiitch can also help you.

 

Hiitch allows you to setup your own prospect criteria and helps you find them automatically. You just need to make sure you put in the right information about yourself and the kind of people you are looking for and leave the rest to Hiitch. When Hiitch finds people that you may be interested in, you get notified about them. You can then choose to view their profile immediately or bookmark them for later browsing. If the person that you have bookmarked has also done like wise, then Hiitch will notify both sides to encourage you to get to know each other better. Hiitch helps you keep track on the interactivity with others on your contact list. When you see that your interactivity with your best friend is getting low, you can send him/her gifts to brighten his/her day or just simply message or IM to keep in touch. Hiitch is not just about serious social networking. You can also search for other people manually and browse their profiles and pictures at your own time. You can even vote for pictures that you think are cool or just purely interesting if you like them. If you find a handsome man or babe, give them the compliment by voting for their pictures. You can also publicize about yourself by writing articles for the Hiitch community at your own spare time to share your views and ideas with others. Who knows, may be you might just become the most popular person within our community.

 

Hiitch is made for you to reach out to others and also for others to reach out to you simply and easily! There is much you can discover with Hiitch. Try it for yourself today by signing up for our private invitation into Hiitch.

File iconFiled under: General, Tips and Tricks, Others, Features User iconby geek | Tack iconAdd Comments
AddThis Social Bookmark Button