Mar 14, 2011

Meaning of words

Wow! after reading some papers about ontology, I realised how serious and how hard it is to imply a meaning to a word. Hope to write some stuff  about ontology on my other blog.  

Mar 3, 2011

Kademlia based file sharing tool

What is Kademlia?
Kademlia[1] is a UDP-based peer-to-peer communications protocol, a variation on the DHT (distributed hash table). It is distinguished by its use of XOR as a metric [2].

Why Kademlia?
Some key features of Kademlia can be found in here[3].

What else!
What's the big fuss about Kademlia? Well, I wrote a simple file sharing application for demonstration. Actually, I wrote the file sharing application, the core Kademlia part is borrowed from Dr. Thomas Ambus's "Peer-to-Peer Routing for Persistent Storage"[4].


Simple implementation of Kademlia based file sharing
You can download the whole project file from here. If you only want to test just use the jar in the dist folder. else you can directly import it to netbeans as a project. (write "java -jar KademliaApplication.jar" in a text file and save it as "run.bat" :) and double click on the bat file)

You can start a network by your own, by pressing the Start Network button. You can join a network if you know the port and the IP of another machine where this application is running. local node's port is randomly generated.

If you want to upload a content, you should first start the server and then upload the file using Upload button.

using Search Content button, you can search a file(hmm.. you have to write the exact name of the file that you search). Then if the content is available, it will show up as a green text under the Search Content button.  Then download and have fun.


References:
[1]http://jkadx.googlecode.com/files/nps6DF.pdf
[2]http://xlattice.sourceforge.net/components/protocol/kademlia/index.html
[3]http://code.google.com/p/jkadx/wiki/KademliaWhitePaper
[4]http://www.ambus.dk/plan-x/routing/

What is Software

Once upon a time I worked in a software company as a software engineer . And I stayed in my aunts house since it was closer to the workplace. My aunt had no clue what software engineering is. However, she believed its about VERY IMPORTANT stuff. People who started their career as developers know the nature of life when the deadlines get closer. What so ever, I brought all the work home and thus had worked every day until mid night. This was not that difficult. After some while, when I am bit relaxed, we had a casual tea party and my aunt ask me what is your job?. Well, by knowing that my aunt know nothing about software, I started the explanation.

me:"Software is something that we could create in the computer. But its intangible. exists within the computer only! E.g. Civil Engineers create buildings, they architect, design and create them. Likewise, software engineers design, develop software." I had to create something out of nothing. It was easy for her to understand the work of Civil Engineer, but of a software engineer it seemed to be tough.

aunt: "How do you charge? because there is only something remained in the computers. The clients wont like it".

Then I just changed the flow of the conversation.

Its been one year now.  I still have the same fundamental question. How to teach or explain about software to person who hardly has any idea about computers in a short period?. Well the question is still open. And I am in search of a solution.