The Source for Java Technology Collaboration
User: Password:



Daniel Brookshier's Blog

Community: JXTA Archives


JXTA at 5 Years Old

Posted by turbogeek on April 07, 2006 at 04:37 PM | Permalink | Comments (3)

JXTA is just about to turn 5 years old. Hard to imagine. Those internet years at 7 to 1 seem to be in play, at least with my memory. A lot has happened in 5 years.

I got involved with JXTA soon after it was announces. Anything with the mark of Bill Joy had to have something smart associated with it, so I jumped in head first. I quickly started writing applications and doing small things. I learned a lot.

Soon after things started, I got a call from Sams Publishing to do a book on JXTA. It was a difficult book. Though I had some experience, we were still struggling with how to best write P2P applications. P2P is not the easiest thing in the world. The idea of publish pipes and all that was not an easy thing to wrap your mind around. The ping example in the book went on for many pages - now I can write ping in one.

One of the key advances was simply an understanding of how to write P2P applications. One of the best is just the simplistic well-known-ID or WKI for lack of something shorter. For all the indexing and advertising, there are simpler applications of WKI that make it very simple to implement many P2P applications.

The JXTA spec and platform evolved too. The original version was painfully slow. Just connecting to the network could take a couple of minutes. Now average boot and connect to a JXTA network is a couple of seconds. Transfer speeds are also way up. The C version of the platform is also doing well and had a lot of heavy rewriting. Nothing better than a little refactoring, except more refactoring.

The protocol changed slightly, making up for some of the speed. The key advances were in how the Rendezvous worked. But it seems that a lot of things sped up with little changes here and there over a few years. None of this was without a lot of dedication from the platform team.

The next bit of advancement was the addition of a Socket wrapper for JXTA. One of the tough problems with the base API was working with an API that was unfamiliar. The socket API is very familiar and it is easier for the average developer to understand what's going on. The socket also hides things like reliability a bit better. There has been a lot of churn in the design of the code under the wrapper, but those changes are completely transparent.

The business viability of JXTA also continued to improve. I have been employed by several companies that were using JXTA, including many fortune 500's. I have also worked with several startups. JXTA makes sense for a lot of applications and businesses see that quite clearly. There are still a few things that big business needs like out of the box presence, identity management, and a true P2P database. We do have presence in our commons project, but there is room to grow.

The market for P2P is still growing and JXTA is still the only viable multi-purpose solution. Don't get me wrong, there is a lot of P2P out there, but mostly for file sharing and not writing business critical applications. The only alternative is Groove and that's owned by Microsoft. It also costs quite a bit. JXTA is open source and it is simple to set up your own P2P network for pennies on the dollar.

Where is the market? Where are the applications? They are in a lot of places from the military to telecom. I have consulted with a bunch of companies, plus there are many listed at jxta.org.

The latest startup I've been working with is called Kerika. They have a really cool tool that is best described as a graphical wiki. The workspace is sort of like a drawing tool mixed with the ability to add text, images, and documents but also relate them with connecting lines. The symbols can be clicked to reveal an even deeper view. Sort of like mind mapping, but this tools also adds collaboration and sharing to the mix. I think it is one of the coolest applications for P2P and it is written in 100% Java with Swing, but has its own look that is very clean and professional. They have just started their beta program, so the product is free, so check Kerika out.

Overall, it has been an amazing 5 years. JXTA is out in the real world and is doing a great job. We have a lot to grow. But that also means there is opportunities everywhere!

Quick Links

Kerika - http://www.kerika.com/
JXTA - http://www.jxta.org/
JXTA Commons Project - https://commons.jxta.org/
JXTA Company Spotlight - http://www.jxta.org/companies/companyarchive.html

Continue Reading...



JXTA in Belgium!

Posted by turbogeek on March 22, 2006 at 08:41 AM | Permalink | Comments (0)

JaDiMo is a very cool application that can do various things from finding an open parking space to booking a hotel room. It is written with JXTA and Java plus runs on everything from cell phones to desktops. What is really amazing is the number of business use cases they cover. They have very cleverly moved from their original goal of finding an open parking space to multiple patterns of time/space availability and reservation like hotel rooms.

I spoke with Steven Palmaers of the JaDiMo project to learn more about their application and the future of the project. So, on with the interview:

First give a quick explanation of what JaDiMo is and why it is important.

JaDiMo is a research project at the XIOS Hogeschool Limburg (http://www.xios.be), which is an institute for higher education in Belgium, comparable to a college in the US.

The project is co-financed by IWT and some commercial partner companies. IWT is the Institute for the Promotion of Innovation by Science and Technology in Flanders and was established by the Flemish government in 1991. They have a yearly budget which they use to support companies and research institutes financially. The JaDiMo project is financed by the so-called HOBU programme, which primary purpose is to research new, promising technologies. The proposed projects can have different subjects, such as medics, biology and ICT of course.

The main goal of the project is to research the use of JXTA in combination with J2ME. Most of the use cases have to do with the mobility problem. There is for example a carpooling system, a system to locate parking garages in a city and a system to locate restaurants or hotels. Most of the applications come as a web version, a desktop version and a J2ME version (both MIDlet as Personal Profile). The main purpose of the project is to provide our partners with a proof of concept of JXTA and P2P in general.

Tell us about yourself and the team.

The JaDiMo project team consists of three people: Marina Luwel, Nicky Eichmann and Steven Palmaers. Marina is the project leader, she’s also a Java teacher at the XIOS Hogeschool Limburg. Nicky and Steven work full-time on the project. Nicky and Steven graduated two years ago. Nicky holds a BS in Computer Science and Steven holds a MS in Computer Science.

How did it all get started? What made you think of the idea and use JXTA and P2P?

As we wanted to submit a HOBU project proposal, we were looking for a new, promising technology to do research in. A Belgian Sun employee pointed us towards JXTA, which was quickly becoming popular at that time (late 2002, early 2003). So the sentence “in the beginning there was JXTA” pretty much sums it all up. Once we had our technology, we had to think of possible applications. We defined several use cases, which all have something to do with the mobility problem. We also decided to use J2ME technology, as we wanted our applications to be usable on mobile phones and PDAs. After we submitted the project proposal, a jury rated the different project proposals. The JaDiMo project was one of the projects selected. January 2004 we started working on the project. All HOBU projects have a maximum duration of 24 months, so the project ends December 2005.

One thing that struck me as genius was how many of the modules are very similar like parking slots and hotel rooms. Do you look for matching patters to fit your first module or did you design your modules to fit multiple patterns?

As I stated before, in the beginning there was JXTA. We then looked at possible applications that could be developed in a P2P way. The first application we came upon was our carpooling system. This makes it possible to find a carpooling partner in real-time, without having to go through a cumbersome registration process on a website. One of our partners is an organization that organizes carpooling, lift services and home exchange services. So our first application can basically be seen as an electronic, mobile version of their system. The difference however is that our application is ad-hoc. As soon as I realize that I need to go somewhere, I take out my mobile phone or PDA and can immediately find other people travelling to the same destination.

Most other applications are also concerning mobility. For example finding a parking garage, finding a hotel or restaurant. So as it turns out, most applications can be send as “search and get” applications, which happen to be focused towards mobility. But it would be equally possible to create a self-organizing P2P dating agency. In fact it’s maybe not a bad idea to make the core functionality of our applications publicly available at the end of the project.

Another application that we developed is a bus application, that can be used by the bus companies to send delays to bus stops, track different buses (using a GPS receiver), …

On your web page, you list a lot of partners. What are you doing with them?

The project is co-financed by the Flemish government and some partners. We have one scientific partner, the Expertise Centre for Digital Media (http://www.edm.uhasselt.be) which is a research institute of the Hasselt University (http://www.uhasselt.be). The other partners are commercial companies or public organizations with up to 50 employees. In general those companies don’t have a budget to do research themselves. So in fact, we are investigating a new, promising technology, JXTA in this case, on their behalf. After the project finishes, the partners are free to use the applications that we developed. They can further adapt them to their needs and possibly commercialise them. Other partners simply see our research project as a ‘proof of technology’.
Every 3 months, we organise a user committee meeting, where we give a presentation about the recent evolutions of the project and the partners can give feedback or make suggestions. We also organized two technology days, which are in fact free courses for the partners’ employees. One was about JXTA and the other one about J2ME.

Has working with the partners helped the development and commercialization prospects for JaDiMo?

The primary purpose of our project partners, as outlined before, is to provide feedback during the user committee meetings. Our partners also have the right to further develop or adapt our applications to their own needs and possibly commercialise them.
In Hasselt (a town close to our institution) people are currently working on a wireless city implementation with all kinds of services. There have been some initiatives from one of our partners to propose some of our applications as services inside that project, but talks are still going on.

How do you describe P2P and JXTA to your clients and partners?

As we are a pure research projects, we do not have clients. Since JXTA is one of the main subjects of our project, we describe JXTA to our partners as a solid framework to develop P2P applications. We also organized a JXTA technology day, were our partners’ employees could follow a course to learn the basics of JXTA. So our partners have a good understanding of what JXTA is and what its possibilities are. Most people we talk to, and tell about P2P, almost always think of (illegal) file sharing or instant messaging when P2P comes up. We try to explain them that JXTA is much more than that.

What are you currently working on with JaDiMo?

At this time, we are fine tuning most of our applications. We are also working on some smaller applications that use JXTA. During the last weeks, we have also been working on a system for ‘event pooling’. The meaning is to reduce traffic problems around rock concerts, football stadiums, … Our system will allow people to register on a website or by mobile phone and enter their details (address, car available, …). The system will then automatically match users and send an e-mail or a text message to their mobile phones. They can then travel together to the concert or the sports event and so help reducing the traffic congestion that normally occurs. This application will be commercialized next year by one of our partners. It will probably be launched together with one of the major rock concerts in Belgium. JXTA technology only plays a small role in this application.

What are your plans for the coming years for JaDiMo?

The JaDiMo project ends December 2005, so we only have a few months left. After that, the project partners can further develop our applications to their own needs and possibly commercialise them. Unfortunately there will be no further active development on the JaDiMo applications. We will however keep an eye on the JXTA community evolutions.

Are you looking for help or certain types of partners for JaDiMo?

Currently, as the project is about to end in a few months, the primary aspect we are looking at is finishing the project up. So we are not actively looking for help.

What gets you excited about what you are doing with JXTA and P2P?

When we first looked at JXTA we didn’t really have a clue about what it was and what its possibilities were. Now, almost two years later, it’s amazing to see how many people are involved in the JXTA community and how much interesting applications are being developed. I hope that by working on our project, we can help to make JXTA more known in Belgium, and to prove that P2P is so much more than illegal file sharing. A lot of people just don’t realize that P2P can be applied in a lot of applications and domains.

Are you working on any other projects besides JaDiMo?

Currently we are not working on another project. However, when the current project ends, we are starting a new research project, again for 24 months. The (long) title of this new project is ‘OSGi as a framework for context-aware monitoring and updating software for mobile and embedded systems’. The short name will be OCoMIS. This project is in collaboration with the Expertise Centre for Digital Media, our current scientific partner. The primary purpose of the project will be to research the practical use of OSGi (release 4 specifically) combined with interactive television, mobile devices and domotics.

About the interviewer: Daniel Brookshier is seasoned Java veteran that is now a P2P/JXTA specialist. He has written several books on software and is currently working on a book about P2P patterns. He is on the board of directors for http://www.jxta.org and runs the P2P user group in Dallas.



An Interview with a P2P/JXTA Brazlillian

Posted by turbogeek on February 16, 2006 at 12:48 AM | Permalink | Comments (2)

Edward Ribeiro is a Student at the at University of Brasilia doing some interesting work on JXTA for his Masters dissertation. Daniel Brookshier sat down via email for a chat about what he is doing with JXTA.

Name: Edward Ribeiro
JXTA ID: edwardribeiro
University of Brasilia, Brasilia

Daniel Brookshier (Q): Tell us a bit about yourself.

Edward Ribeiro (A): I am a second year MSc. student at University of Brasilia (Brazil). I am currently working in a government institution in Brazil.

Q: How long have you been working with JXTA?
A: I have been working with JXTA since the beginning of 2005. Nevertheless, I have played with it during short periods of time since its creation.

Q: What are you using JXTA for and in particular why use Peer-to-Peer as a
solution to your problem?

A: My masters dissertation is centered on distributed systems applied to computational biology problems and it is heavily based on JXTA. We are trying to develop a P2P "cluster-like" system to process DNA sequences on BLAST. We think the P2P model can be scalable and flexible solution to distributed programs execution and, of course, we were highly inspired by the good example of Protein@HOME.

We have just finishing our first prototype using JXTA. It works well, but there are some open questions/bugs related to JXTA that need to be solved before deploying it. My advisor was very happy with the little demo I showed.

Q: What attracted you to choose the JXTA technology and platform?
A: It is the most mature P2P solution in the market. I could have written a customized P2PP2P solution, but this was not the point in the dissertation work. I needed a mature platform to implement further ideas on it.

Q: What open source JXTA projects are you working on?
A: I could say that I am particularly interested in the 'platform' project. I keep posting on a regular basis and solving doubts as much as possible. I hope to be deep involved in this project after defending my thesis. I am particularly interested in the jxta-c project, but I didn't have any free time to spend on it.

Q: Is your company using JXTA and if please describe it if you can?
A: There's a consortium of universities paying a close attention at my project. They want to use the distributed infrastructure that I am building. Therefore, JXTA can potentially be used to integrate all these universities in a comp. biology network.

Q: In either your company or in your open source projects, do you need help and if so what skills or experience are you looking for?
A: My project is a great JXTA testbed and I would be more the grateful if you could provide me some personal advice. It needs to be secure, encouraged.

Q: What JXTA platform(s) are you using (J2SE, J2ME, C)?
A: J2SE

Q: This is for us to do a better job, what do you think needs to be added to the JXTA.org web site to help you?
A: At first, I think that data transmission (pipes, jxtasockets, jxtabidipipes) should have the highest rank in a priority list, because jxtasockets and jxtabidipipes are not 100% reliable or efficient as plain sockets. I could certainly live with some degree of inefficiency, but unreliability makes me too upset. A related point in this area would be the addition of QoS (Quality of Service) to JXTA.

Finally, an updated version of JXTA inner workings. Something like this (http://wiki.java.net/bin/view/Jxta/JXTAImplementationUseCases#Publish_an_advertisement).

Q: One more question: What is your most burning question about JXTA or P2P development? (I'll reply if I have the answer)
A: Could you suggest a good presence design for JXTA? I have implemented my own, but it is not quite reliable as I would like to.:-)

Q: I would be happy to! Try https:commons.jxta.org where we have some good code for a simple presence system.

Thank you for your time!

You are welcome.:-)



Juxta-CAT: A JXTA project in Spain at Universitat Politecnica de Catalunya

Posted by turbogeek on February 16, 2006 at 12:47 AM | Permalink | Comments (2)

Joan has just started a new project in the JXTA community at java.net. His project https://juxtacat.dev.java.net/ is just starting, but looks very interesting.

Here is his description of the project: The jxta-based project, called Juxta-CAT, is an effort to use the JXTA architecture to build a job execution-sharing distributed environment. The client peers from this network can use this environment to submit/run their own jobs, basically, programs written in Java and stored on signed jar files, which can use nodes reachable from the net.

So, now we know the project, who is Joan, and why JXTA? Here is the interview that tells all:

Name: Joan Esteve Riasol
JXTA ID: jestever
Universitat Politecnica de Catalunya, in Barcelona, Spain

Q: Tell us a bit about yourself.

I was born in Barcelona (SPAIN) on 1981. I've always lived in this nice Mediterranean city.

I began to feel interested on programming when I started my studies on Technical Computing Engineering, in the Computing Faculty of Barcelona. Before that, I did not used to spend too much time learning about programming languages.

When I started my first classes, I knew that I had chosen the best Career for me. I discovered that I was good and fast with design, development and object-oriented programming. Besides, I took Java as my favorite language to deploy my applications. learning about programming languages.

On 2003, I published my first complete application developed with Java (An applet-based Local Search resolver using XML) It was presented as my degree's thesis. Thanks to the experience gained during this work, I got a job as Java Developer in my University. I've been working here up to now, increasing my skills on Java and learning more about this technology.

After my thesis exposure, I decided to continue my university studies, and I began the second part of my degree: High Computing Engineering (in the same Faculty). I'm going to finish it very soon, because The Project Juxta-Cat is the master thesis that I'm going to present to reach my qualifications. It will be the second thesis written by me.

Computing apart, there are also other important things in my life. I like to practice sport (mountain bike is my favorite). I also love to travel, go out with my friends, stay with my family... I think that everyone needs to distinguish work from free-time, because both things are necessary to be happy during his life.

Q: How long have you been working with JXTA?

I heard about JXTA on 2004, and I have been using this technology up to now.

Q: What attracted you to choose the JXTA technology and platform?

I discovered JXTA when I got involved in a research Project for my University. This application, called "E-RUC", became a file-sharing environment which catalogues its contents using the MPEG-21 specification.

My work-package consisted in develop a suitable sharing platform which allow users to transfer the catalogued contents over the network. Those contents had to be signed using MPEG security issues, in order to create something different than Emule, Kazaa, and other P2P applications already released. The main goal was to exploit the MPEG-21 possibilities.

The JXTA technology was mentioned during a brainstorming with my work partners. We had to decide the most suitable P2P architecture for our project. I was responsible for prepare a report about JXTA and expound it to my supervisors.

I think that we finally choose to use JXTA at "E-RUC" for three reasons:

- Its an architecture built in Java, which supposes an easy integration with other applications developed in this language.

- It has proved that JXTA enjoys a very good maintenance and tracking: Sun developers & contributors who announce new releases every 2-3 months, mailings lists with active members asking and solving their answers there, excellent documentation, helpful wiki,...

- Several interesting open-source projects involved in this technology and already released: JxtaShell, MyJXTA and CMS (which includes file-sharing management)

Q: What open source JXTA projects are you working on?

After several months using JXTA on "E-RUC", I decided to perform my skills by proposing a Master Thesis related to this architecture. This Master Thesis is called "Juxta-CAT Project!" and I'm very near to publish its first stable release.

During its implementation I checked, as observer, other projects published at jxta.org. For example:

JXTA-Shell: As a starting point to understand the JXTA's internal policy: rendezvous & edge peers, pipe connections, peer visibility, advertisements management, etc...

MyJXTA2: As an idea of complete client-side application that works with this technology. Finally, I decided to implement my own classes diagrams and design patterns. But I could collect several ideas obtained from Gonzo's work. learning about programming languages.

CMS: As a File-sharing environment.

Q: Is your university using JXTA and if please describe it if you can?

I don't know if my university, the Universitat Politecnica de Catalunya, is currently handling other master thesis related with JXTA. But It must be possible, because the impact and spreading of JXTA are increasing every day!

Q: In either your projects, do you need JXTA what was that hardest part?

My main problems with JXTA appeared during the understanding and management of JxtaBidiPipes and Peer's Cache handling. Furthermore, I think that we could publish more samples explaining how to JXTA stores the discovered advertisements through the network.

Q: What JXTA platform are you using?

I've developed E-RUC (project at work) and Juxta-CAT (project as Master Thesis) using J2SE platform of JXTA. Usually downloading latest releases when they are announced. If everything's fine with my Thesis, I'm going to start learning JXME in order to work in a new Project, called "MEDIAMOBIL", which will pretend to research peer-to-peer technologies applied on mobile systems.

Q: This is for us to do a better job, what do you think needs to be added to the web site to help you?

The website is very complete and easy-to-use. The core applications and libraries are well documented. Mailing lists are also well-managed, and people feel free to participate on them.

If I'd become JXTA web administrator, I think that I'd try to improve the Tutorials section: it includes several old examples. I think I have talked about this in above questions.

Q: What is your most burning question about JXTA?

About the projects published on JXTA, I think that one of them is going to be forgotten by JXTA community. It's the JXTA Metering Project. I used to need this API for my projects, and all the documentation and mailing activity is becoming scarce (last posts on 2003). I had several problems when recompiling with Ant my first jxta releases by adding the modification of "meteringEnabled" property.

I have also found problems when I've tried to integrate the JXTA Shell in my own Swing-based applications. I still don't have found a suitable way to use SwingShellConsole, ShellConsole or other classes from shell.jar. I finally decided to use the solution offered by James Todd on MyJXTA: launch Shell as an independent app over the peerGroup and opening the Frame in a separate window. I'm not able to manage the Shell's content pane in order to include it on my Swing-based projects.

Continue Reading...



New Projects in the Education & Learning Community

Posted by turbogeek on September 07, 2005 at 03:22 PM | Permalink | Comments (2)

The Global Education and Learning Community continues to grow. Again we have a wide range from student-based exploration, teaching tools, Chinese language learning to an innovative healthcare application. The projects are from around the world and include Viet Nam, USA, China, and Brazil. Here are summaries of each of the projects. Click the link below to read more on the details from each of the projects.

compdoc2cn - Component Doc to Chinese
credweb - Academic project simulating an Web Interface of a Credit System
EpA - A web cooperative editor for learning environments
GHIN - Global Health Information Network
JAC - Vocabulary Trainer for Chinese
kids - help kids to learn and use Java
nb-elearning - eLearning Portal for Viet Nam.
Open Gradebook - Easy to use, non-intrusive open source grading system.
sfsucsc868group1f05 - CSc868 Group 1 Coursework
ufskart - Educational project through a virtual store.
virtual-campus - Virtual-Campus will be a feature rich E-learning / P2P tool
webbrowser - WebBrowser inclues various taste of different popular browser.

Here are the details of the projects:

Continue Reading...



Want to have your brain explode? Meet Me at JavaOne

Posted by turbogeek on May 31, 2005 at 11:33 PM | Permalink | Comments (0)

Meeting people is always interesting (frightening sometimes, but interesting). Meeting people that you know from the internet is very interesting. I can not remember meeting one person that seemed like they did on the internet. The real-time experience enhances what you know and it is usually a little disorienting (ok, you will not really explode). But then there is a whole other class of meeting people: Meeting someone that wants to meet "you". I am one of those kind of people that wants to meet as many quality people as I can at JavaOne.

Why? First, the more people you know, the more you know about the world. Knowledge is how the world works. Most of you I have no idea that you exist or what you do. Are you doing something interesting I could use in my job? Are you doing something cool I could write about? Will you make me think, or just laugh out-loud? You never know, so you meet as many people as you can. If we are in line, I am going to talk to you. If I am at the Community Corner booth at JavaOne I am going to do my damnedest to strike up a conversation if you are walking by. I'll also be at the community leaders weekend and Java Technology Communities in Action, and the JXTA Town Hall, plus many other events.

Look for me and introduce yourself. Give me your business card and let me know what you do and what your passions are. Maybe I know someone you should know (perhaps it's me). Maybe we have something in common. You never know.

It is said that if there are no lucky people, only people open to opportunity. If you find a twenty dollar bill on the ground, it is not that you and the twenty are in the right place, but that you were open enough to see that bill on the ground when others have blissfully walked by. People are the same way. You never know if the next person is going to make your day, year, or life better. The best solution is to say hello.

What am I interested in? Writing (blogs and books), Java, JXTA, Java.net, and of course the Global Education and Learning Community (GELC) which means all things educational or experimental. I also juggle so I am looking for few fellow tossers too. There is much more and I'll be sure to be interested in hearing from you. Look me up at JavaOne!

Daniel Brookshier
java.net Global Education and Learning Community
JXTA.org

Say hello and keep your head!



Peer Presence in JXTA

Posted by turbogeek on April 11, 2005 at 10:53 PM | Permalink | Comments (0)

First, I apologize for my long absence from blogging at java.net. I have a busy job as Chief Architect at No Magic. I do talks at conventions, training, run development in three countries (Lithuania, Thailand, and the US), and sing and dance for customers. Kind of hard to get time to blog on my passions of P2P and Java. So without further ado, no more excuses.

Lots of people assume you can just ask for who is online. Not going to work, unfortunatly.The problem is that the request is done through the protocol rather than a DB call which is what you would expect.
In the current implementation the RDV has an in-memory knolledge of the peers and their information. As each new peer arives, its info is added to the list plus broadcast to all connected peers. The new peer gets a copy of the list so that it knows about everyone currently on line.

In my new version, the data passed around will be minimal with just the peer ID, an email, and a last update date. The brunt of the data will be stored in an advertisement indexed by the peer ID. If the last update is newer than the local advert, the peer fetches the advert by specifying the peer ID and using the peer ID as the index (confused yet?). This works because the advert is matched via a primary key. If you just asked for adverts of a particular type, you only get the first few advertisements.

Now, if the peer is coming online and it has never done so before, it gets a list of peers online. It iterates through this list, asking for an advert of each peer. It only asks for the advertisement, but does not specify that only that peer be searched. So, what happens is that the nearest peer that has that advertisement will reply. The peer then checks the date of the last update and the date in the advertisement. If the date is older, it then re requests an advertisement from the peer+peerID so that it gets the most up to date copy. The upshot of this is that the info about the peer gets replicated so that no one peer is inundated with info plus each peer caches its view so that requests are limited to peers that have just changed their resume'.

Why not store all this on a RDV? The problem with that is it turns the RDV into a server. It loads it down with cpu, bandwidth, and memory reduction. It also causes it to be a greater point of failure. The less information stored on a RDV, the better.

Now for the magic of the presence system. I had said we don't want the RDV to serve. Well, it has to do a little, but only to peers connected. The data is also transient. As a peer connects it adds data. As it disconnects, it removes data. But if the RDV fails or is taken offline, peers will reconnect to a new RDV and add their info to the new RDV. So this is in fact fault tolerant.

Now for my next trick. Peers need to belong to peer groups. These help to do three things. First is just the address space, second is the ability to accept messages between peers only in the peer group, and finally to only use resources within the peer group. The final bit is of most concern to us. Since the core of peer presence is run from the RDV, only the peers in the peer group will get messages and be able to see data about fellow peers. This helps scale the system plus if we are doing this the most efficient way, a couple of peers within each group are volunteered as RDV which means no single computer does the duty for all peers.



New projects at GELC: JXTA P2P Bioinformatics and Neural Networks

Posted by turbogeek on December 14, 2004 at 08:03 AM | Permalink | Comments (0)

Two more projects have been added to the Global Education and Learning Community (GELC) at java.net. This week we have a new project based on JXTA P2P for bioinformatics. The second project is neural networks that will help categorize poems after their authors. Take a look and see if there is a project you are interested in and email the owners on how you can help out. Remember this is a community and participation is what this place is all about.

http://chinook.dev.java.net/

Chinook is a peer-to-peer (P2P) bioinformatics service. The goal of the Chinook platform is to facilitate exchange of analysis techniques within a local community and/or worldwide. Chinook operates by turning command-line applications into services which are broadcast over a virtual network. Currently, there are over 25 analysis services that have been made "Chinook-ready". These range from alignment to regulation prediction algorithms. Furthermore, Chinook is designed to make it extremely easy to add new services. Chinook clients can be operated from Java, Perl, or within applications like Sockeye. (And soon Pegasys, and OrthoSeq). All user's guides and manuals are currently available via checkout of source.

http://sheepasleep.dev.java.net/

I intend to create various neural networks that will help categorize poems after their authors. In the first phase I’m going to use letter patterns to do that, as per a paper by Johan F. Hoorn, Stefan L. Frank, Wojtek Kowalczyk and Floor Van Der Ham. Unlike in their research, I want to use self organizing maps, not supervised feed-forward networks. In a second phase, I’ll replace the letter combination input with some NLP analysis, though exactly how I still have to document myself. Practical purposes of this application would be to categorize popular poems (creations with multiple authors - folklore), to help in settling authorship disputes etc. In future, I want to expand this to prose and even music. The development will be done in Java 5.



Save P2P by stopping the INDUCE Act.

Posted by turbogeek on July 26, 2004 at 03:16 AM | Permalink | Comments (6)

I just received an email from Ray Gao of P2PJournal.com. Apparently the lobbyists are at it again. This time your MP3 player is at risk. This also opens the door to a lot of other anti-P2P shenanigans from other companies. The INDUCE Act is just plain bad to the bone.

But first, let me say that I am 100% legal. I don't steal music. I buy a lot in fact (you gotta see my iTunes bill). Stealing is stealing. But the music industry wants to stamp out fair use. That's why I am hot about this issue.

Please take a look at this anti-P2P bill currently being proposed at the congress. And, sign the petition oppose it. Tell your congressman that this bill should not become a law.

I just sent a free fax from the site urging my reps in Congress to stop the INDUCE Act. Convincing even a single Senator will force a real debate on the bill.

Check out: www.savetheipod.com which will allow you to fax congress with a few clicks (I used auto form fill on my browser to do most of the work).

www.savetheipod.com has more info about the INDUCE Act and a form to fax your Senators and Representative. It only takes a few seconds to send a fax and it is really important that we respond to this legislation quickly.

Take a look at www.savethe.com for more information and details on the lobbyists and specific congressmen that are paid to be lobbyists lapdogs.



JavaOne - Day four - 4 - IV - t-shirts via P2P and bling for java.net users

Posted by turbogeek on July 01, 2004 at 03:16 PM | Permalink | Comments (3)

The awards were given out at the end of the main session today. The winners were "The Cyclists". I got to speak to the developer of the software. Silly me forgot to write down his name, but he can be reached at mrjava @ sprint.com and the web site is www.observeit.com (site is not up yet).

As Gosling said, the winner was built with a lot of weirdness and imagination. Here is the list of technology involved:
o J2EE web server for audience participation and media server to relay server link establishment.
o Java Applet for real-time sighting video display
o J2Se Swing app(media server) for graphics and sound rendering.
o J2Se bike relay server - off - bike communications
o Dallas TINI Java Controller = sensors and actuation or the drills A.K.A poor man's servos and light controls.
o JavaCard iButton computer thrown with t-shirts for Java enabled camera phone giveaway.

But there was more to the details! There were two computers in the system on stage that communicated via 802.11 back to the man server to find the IP address of each other. This is the poor man's Peer-to-Peer system. What happens is that the each PC calls the J2EE server (at the developer's house) to get the other peer's IP address. Just before they rolled out, the 802.11 was overloaded by all the attendees and in the last few minutes before they rolled out, they had to rewrite the code to use a hard wired connection that was hastily wired to the computes on the bike. With five minutes to spare the code was patched and tested. Not knowing your IP address is a bit worse than having the chain break (actually it was the master link on the chain that was popped off by two desperate competitors in front of a live audience ). I could not help with the chain, but I did sugest he use JXTA instead of the home grown solution. We will also host the code at Java.net in the Java Education and Learning Community.

I was running around with Bruno (the fellow from Brazil with the Brazilian flag cape and who runs the Java user group community on java.net) and met some guys that will donate free installation software to the Java.net community. No names yet, but look for an announcement soon.

Finally I talked to a fellow from a mining company. They use 802.11 to communicate between their heavy equipment. They have problems communicating and managing their various devices. We talked about JXTA as a solution. Looks like a lot of their problems and allow a multi-ton earth mover to call the office for an oil change via JXTA P2P. Look for JXTA in applications like this real soon.



JavaOne - Day Three - More friends, JXTA, epackaging of an app server and open source

Posted by turbogeek on July 01, 2004 at 02:19 AM | Permalink | Comments (0)

Greetings!

We can't solve problems by using the same kind of thinking we used when we created them - Albert Einstein
A Paper Airplane made of JXTA

I got to attend Brad Neuberg's tech session on P2P Sockets and Paper Airplane. Paper Airplane is a Mozilla plugin written with JXTA. It is a great example of extending a known metaphore into the P2P world. Brad talked about a shared Wiki and other services like SOAP via the JXTA network. Check out http://p2psockets.jxta.org/ and http://paperairplane.dev.java.net/ for more info. I really think this is a great way of doing things. There is a freedom from servers and a freedom to communicate. There are a few things to work out, but Brad has a lot of great ideas in this area that need to be explored.

Email==Face

Got to meet more people today. From the JXTA community, to my book readers, to business customers. Most I have never seen or talked to except via email. Some of these people have been emailing me for years and this is the first time I have seen them in person. JavaOne is getting to be a watering hole where everyone meets. Forget the sessions, it's about meeting the smart people of the world in person.

UML

I also got to teach a short class on UML today for NoMagic and ExitCertified (Sun's education partner). I had room full of people willing to learn UML and we had some fun too. Speaking of UML, I overheard someone say that the white-board is the best place to do UML. All I have to say is that is misleading. Using a white-board to think about a design is nice, but you need to capture the design for the long run. A white-board can't be emailed to your customer. A white-board can't be filed away to be referenced years later by a maintenance developer. You can't edit the same white-board to change the design over the course of ten years of maintenance. Use tools, free or otherwise and be a professional.

Creating an Artificial Einstein with JXTA

One of the more visionary people I met today (well... yesterday because it is now 2:00am) was Jeff Zhuk of ITS Inc. Jeff is using Open CYC and JXTA to create a distributed knowledge system and expert system. How cool is that? I have done similar things, but Jeff is going for a massive solution that integrates thousands of people to build an expert system via peer to peer computing. In addition, Jeff teaches Java, JXTA, and JINI. He has all the pieces and is looking for help.

Einstein and Java Enterprise Server

Spent the morning at Sun looking at Java Enterprise System (JES). JES is a new way to deploy and license the infrastructure of an internet business. Sounds innovative, but I would say it just shows that there are finally some smart people at Sun thinking about doing things right. JES is built on the idea that most portals are really built of a dozen or so applications like the portal application framework, web server, application server, calendar, email, instant messaging, LDAP, single sign on and many others. All of these pieces are usually put together one at a time and with a lot of work dedicated to getting them to actually work as a single unit. My past is littered with the with the wasted and long hours or complete failures because of applications not mixing well. What Sun has done is create a clean integration of all of these tools that runs smoothly and is tested as a unit to discover integration problems. The end result is a lot of the core business software is up and ready to use in a few hours. Think about the Integration of all the software components that make up the infrastructure. They are like building an airplane from little pieces and a blueprint. Instead, JES is a fully assembled and tested Lear Jet.

Like I said, not really innovative, but it takes a lot of work and politics to integrate all your standalone products into a single install, with a single interface for management, and one application to license, and get maintenance agreements on. My hat is off to the guy that proposed such a departure in the Sun way of doing business.

But now to the second part of the innovation of JES that might give JBoss a run for their money. The JES set of componenets in the common install management tools is available with a cool procing model. Think about having it all with a portal application framework, web server, application server, calendar, email, instant messaging, LDAP, single sign on and many others for just $100 a year per full time employee. This is just the business model for pricing and not some magic number that is part of the CPU count, the number of gigabytes of storage, email accounts, your first born child, and a chariot that turns into a pumpkin at midnight. The key is that this is just a way to price the system, it is not the price for the number of actual users. This just buys support for the tool and your software updates.

This is more cool and obvious if we look at a company that has 100 employees for a cost of 1000*$100 (it is free up to 99 employees but there is no maintenance). Now even though the company bought the 1000 employee license, they can have a million customers and their 1000 employees use the system without any additional costs(except for the pesky hardware). A good example is Google with 5,000 employees and 7 million customers would only need to pay for the 5,000 employee license. The economies of scale look like open source with maintenance.

The tools are all based on open standards, not open source. Seeing and modifying code is not an option. But when you have a good maintenance agreement, the risk and cost of maintaining open source verses a maintenance contract is about the same or better since most of the components are usually used as is and not customized. Because they are tested as a suite, there is even less need for the IT department to be fiddling with code that should be considered infrastructure rather than custom applications. Of course this is still a modular system and you can swap out almost any piece with an open source or commercial alternative (like the application server).

Is Sun really a winner with JES? Hard to say at this point. They have happy customers so far with the first release and a model that is hard to ignore. The application server and all those component parts are newly rewritten and running fast and seem scalable. They could be a market leader in their own J2EE market. Really! Stranger things have happened. Stay tuned.

One more day

One day to go here at JavaOne. Time to pull out all the stops and meet as many people as you can and collect ideas and business cards. Make friends, learn from them, and help them as much as you can. We are all in this together and we are a community. Get out there and make the Java world a better place!



JavaOne - Day Two - The Rise of Buzz

Posted by turbogeek on June 29, 2004 at 11:18 PM | Permalink | Comments (0)

Today we got to see the sunny side of Scott McNealy at the keynote today. I have to admit that I like to hear that man talk. The key thing that he said that got my attention was that there were 14,000 developers at JavaOne. That is almost like before the crash! Almost everything but the requisite T-Shirt lofting at the end of the talk was just icing on the cake of the Java economy(the T-Shirt lofter self-destructed after 3 shots - but it did look real cool). Even making nice with Microsoft is less a happening than knowing that the developer community is thriving. If you can afford to go to JavaOne, there must be some money in the economy.

Tonight we also had our meeting of the minds for java.net. There were a lot of people there and the conversations were loud and hard to stop - even when we announced a few cool prizes. I heard lots of talk about opportunity knocking. There are a lot of new projects out there and a lot entrepreneurial work too. With a down economy the smart people are replacing the defunct companies. I heard of a lot of people making their way in small businesses with cool ideas. I was able to show off a few of mine too like 312 Inc's LeanOnMe P2P backup software, Quantum Chess (a P2P chess variant), and Venezia-Gondola (P2P ebay killer) all written in JXTA.

I also heard a lot of talk that Java technology is getting bigger and better. As an example, JXTA is now faster and easier. Tools and techniques are also improving. I also saw that Java is still bigger than you can absorb. There are a lot of API out there for all sorts of applications. Thank goodness we have Google or we would never find these great tools and products.

Today was also another day of meeting people. I must have met 30 people that know me, but only online. It is always a surprise to find that nobody looks like their smiley faces :o) I am amazed at how conversations always turned to business or succeeding with Java.

Education and Java started to become apparent today. I met several people form different universities. There were students and professors, all seeming to be working on very cool projects.

More to come. Tomorrow there is a JXTA session and a BOF. I'll be at the session and might make the BOF. I need to share my time with the NoMagic folks( makers of MagicDraw UML, a 100% Java UML modeler). If you are interested, I'll be teaching a short course in UML Wednesday night and will be signing copies of my JXTA book. Come by the NoMagic Booth and sign up, we have only limited seating.

Stay tuned! Two more days to go!



Killer Applications and JXTA

Posted by turbogeek on March 26, 2004 at 11:57 PM | Permalink | Comments (7)

    Serial Killer Applications

Some technologies don't gain wide adoption until there is an application used by a large number of users. We call them killer applications because they are so compelling or in fact kill a problem dead. For the personal computer it was the spreadsheet (Visicalc was the first and it was copied by the rest) and at about the same time, the word processor. What will be the killer application for JXTA? Is it already here?

    P2P & File Sharing - Capture and Death of a Serial Killer

Napster was a killer application. Sadly it was done in a way that was not legal. I won't go into the politics of record companies and free speech - the fact is that Napster was taken out of play by the courts. Yes there are other music sharing and purchasing applications, but nothing as big as Napster. But the other problem is that it was only about music (at least the killer part). There was no real big application associated with general business or entertainment based on the P2P/Central-Index scheme of Napster.

Don't think that there are not other file sharing applications doing quite well. In fact, there are file sharing applications written in JXTA that support thousands of users in legitimate business applications. They may become the new 'next big thing' but I see it as just a better way to share files rather than the ultimate killer application.

    People Like to Save Time and Effort

Sometimes a killer application just makes things easier. Struts is making it even easier to develop web applications. Ant makes it easier to build and maintain projects. XDoclets reduces labor via its code generation capabilities. All these examples are starting to be widely adopted because of their productivity improvements. Can JXTA make things easier?

JXTA has all the hallmarks of reduced effort. First, there is no real server involved. Imagine the time, money, and sweat equity saved by not dealing with the monolithic server and its support system. But that's just economics - where is the savings for the common man? Let's look a little at one of the key ideas about JXTA.

    It's a Candy / It's a Breath Mint

What makes JXTA unique? It's not about Peer-to-Peer (P2P). P2P is just a fuzzy buzzword that means computers talking to to computers. What abut JXTA is that it places the Internet inside applications rather than the browser. This also means the gestalt of the application includes a real interface, storage, and can be run 24 hours a day if needed.

The quote below is from Juan Taylor, which covers this quite nicely:

What s the ONE thing that P2P can do that client/server can't?

It's that the Client can be a Server.

WHY would the client want to be a server?

To share information Easily and in different and even complex (only jxta can do this) ways in a 'User to User' way. In anonymous file-sharing there is an innate loss of wanting to share files. In a User to User perspective, there is an immediate desire to share.

There's the Benefit, and the complexity of which only JXTA can handle.

What this means simply is that unlike client server, JXTA is client/server and server/client or even server to server or client to client. The information, storage, processing, and communications can start at either end. In the world of applications this also means that I don't have to work in a world of centralized resources where there are multiple issues. The worst problem of course is just the impedance mismatch between the world of application and the world of web applications.

    Are You Thinking Differently?

So, what if every client was a server? Sadly it is not all about efficiency. I say sadly because P2P is all about wasted space and CPU cycles. The sad part is the knee jerk reaction many have to waste. But the fact is that replicating data and the power of your own CPU verses a shared server is far safer and can be orders of magnitude more efficient in getting the job done. The waste is insignificant in terms of the modern PC with their large disks and often idle CPU's. When you trade inefficiency in an area that is monetarily insignificant, the gain in productivity is essentially for free.

    P2P Forum

The forum interface is similar to those on Java.net. Basically a forum is a threaded discussion. The oldest version of this is the old news forums which still exists but has been taken over by spam. Think of it as a server based email that anyone can read or submit messages.

What would a P2P Forum look like? First the history of the messages need to be available to anyone. This a great feature of the forum because it lets you search for a conversation in the past. Guess what, that has to be on a PC since there is no server. Here comes the duplication of effort: To make this work, keeping the history on as many computers as possible increases the speed of the search. The search is really fast if you have your own copy. If the forum history is very large, and is bigger than that free 5 gigabytes on your disk, we can share different sections of the data. We still need a lot of copies because some peers may go off line.

    Thinking until it Hurts

Ok, does it hurt your sense of efficient computing yet? I remember being unable to use linked lists and hash tables for years because my professor in college was so anal that memory was the most important thing in the world. He put speed and ease of use far far down the list of importance.

    Waste or efficient use?

Ok, now back to killer applications. What if we added a P2P forum to a development tool? First, because it is part of the tools, the focus is like a laser. The efficiency of use is very close to the tool because it is the tool. Have a weird exception? It is a click to add it verses cut and paste and a little reformatting. Wondering what the correct settings are for a task? What if the expert could reply with his settings which you can just use rather than interpret a poorly formatted and worded answer. Yes I have perhaps a couple gig of messages, but I have the world's greatest integrated help system. These ideas are Copyright Daniel Brookshier 2004, all rights and derivative patents can not be used by Microsoft or its agents. Free use to those that use 100% Java and JXTA to implement the solution. Ideas like this need to be free to make life less like walking on broken glass.

    Killer Instinct

JXTA is a killer capability that will make a good application a great application. Making every a PC a server seems like a good idea. Not every solution will benefit, but there are a few thousand new ideas that JXTA makes possible. Look at the world upside down. Be the server.



Peer-to-Peer, JXTA, and Making a Lot of Money with Virul Marketing

Posted by turbogeek on March 26, 2004 at 11:55 PM | Permalink | Comments (2)

.

    Viral Marketing with JXTA

Viral marketing is a concept used in marketing and sales that describes how adoption of a product occurs and how it can be coerced to spread like a virus. Very simply, viral markets are those where one purchaser infects friends and acquaintances with their enthusiasm for a product or other wise causes them to use the product because it is required by the first person. Viral markets are coveted because they can create huge profits in a very short time.

    The Viral License

With most software, you buy a single license. If it is a networked application, you can only interact with people that have bought a similar license. In open source, we just download the application, so there is no barrier caused by reluctant buyers. If you look at all the network applications that are widely distributed by commercial companies, they are all free to avoid this same problem. For example the chat applications like Yahoo, AIM, and MS Messenger. But what about commercial applications? How do you get people to buy enough copies so that there is a large group of interconnected users?

An alternative to selling a user a single license, is to sell several that they have the right to distribute to acquaintances, family, and coworkers. For example, have 3 to 5 licenses as your standard package rather than just one, In fact, never let a customer buy just one copy.

    The Power of Giving

You are more likely to install a piece of software if a friend bought you a license. It is a gift. People accept gifts. Compare this to a single license. If your friend buys a chat program, you must also buy a copy to chat with them. That’s not a gift, that’s a burden that your friend is imposing on you. You will resist purchasing a copy because it is not your idea and the chat application may not interest you too much. As a gift however, you will willingly install it and try it out. If it does turn out to be useful, you may buy a copy for your other friends.

This type of license is a great way to push the other products because it only takes one person to bring in many others who in turn bring even more. This also improves the local share networking by getting the original licensee to get his friends to install the product as soon as they purchase it. That way network optimizations happen during installation. You can up-sell the secondary licensees by disabled functionality or just let them add 5 packs to share with their friends for a few bucks a pop.

Let’s look at the economics. This is buying in bulk, so the prices are smaller. Who is doing most of the work, the buyer. That means you are not working to sell 5 licenses for instance, instead one license pack to a guy that has 5 friends or coworkers. In fact those other licenses are possibly going to people that would never use the product and would probably not buy a license for themselves. But not you have 4 guys for the effort of one, You also have 4 people that have more friends. Economics? The economics are the cost of a single transaction for 5 users and free marketing. Of course, this also means there are possibly 4 people that know 4 people “each” or 16 people. Those 16 know 4 each for a total of 64 which leads to 1024 users and so on into the millions. That is a lot of sales for the infection of just one person if the application is compelling enough. That is very economical on a grand scale!

    Small Worlds

This a model described by the small world theory. The world is made up of a web of interconnected people. Simply, the network of relationships links us all together. But small world theory says that the links between any two people averages out to about 6 hops on a chain of people that know the prior and the next person. The implication is that given something that can travel this network, the entire network will be saturated very quickly. If the whole world is connected by an average of 6 steps, I should be able to sell to the entire population after reaching 6 steps away from my original buyer.

    A Real Virus

It is the same for very virulent contagious diseases. The more contagious, the faster it will infect the population. The fact that a large number will be infected is caused by the network which passes the disease from node to node or person to person because of the relationships whether it be friends, coworkers, or even customers and clients or merchants.

We can take advantage of the interconnections and the forward purchase of licenses to walk the network of relationships to populate the network based on the one-to-one connections between people. This also ensures a purchase for a group by selling to a singe person rather than having to sell everyone. Once the other users have it and are addicted, they buy licenses to interact with their other friends, family, and coworkers. By having a license pack rather than a single license, the network can grow at an exponential rate because it forces adoption both by original seed purchasers that were not a part of the network and by those that are given a license, but buy more to expand the reach to their own circle of acquaintances.

Did I mention that I study marketing, sales, and persuasion psychology along with P2P and JXTA? To survive in today’s economy it helps to think like Leonardo DaVinci. This is about leveraging a small set of facts to create a larger truth. And like many of DaVini’s inventions, the solution is based on a study of nature,

    Viral Ideas

The world is a network. JXTA lets you write applications that live in the network. Always keep in mind that the power of P2P is not just about the improvements for users, but the improvements in how you can use that very same network to grow its self.

As part of your social network, you now know who I am and how I think. Ideas are infectious. Pass this one on and tell your friends that Daniel says, hi.

Daniel Brookshier is a freelance technology writer and JXTA Consultant. Daniel can be reached at Turbogeek@cluck.com.



Is JXTA Exciting?

Posted by turbogeek on March 02, 2004 at 02:12 PM | Permalink | Comments (1)

JXTA - Is it important or just cool?

Software can be a bit boring. So where do we get our jollies? What is exciting in the software world? Well, we can all take up skydiving while doing code reviews** or we can use a new technology. Its hard to say why 'new' holds such a fascination for most of us. When a new technology saves us time or money it has a lot of pull. But something that can save time and/or money "and" be cool, well it just warms our hearts.

JXTA is new, gives us access to both the technology and to resources to use it at a price as good as free beer. JXTA is also a brain teaser. If you move away from the comfortable home of the application server to the edgy resources of the personal computer, most ideas don't survive. JXTA requires intelligence, creativity, and invention. Now that's exciting.

Application servers change things a bit, but they can't be used to develop for fun, research, small business, or even a charity. There is too much to pay for between hosting, bandwidth, support, and the hardware. Yes, you can do some web apps on the cheap, but not easily and often not easily scalable. JXTA goes the other way, so it is at least more accessible.

I don't want to learn another damned API. Really? Are you dead? Lazy? A traditionalist? Or are you 100% sure that what you are doing is going to be a marketable skill in five years? About the only legitimate excuse for not learning a new technology is time and resources. Since JXTA does not require that you have anything more than just your PC and perhaps those of your friends, it has no barrier to entry. That leaves time. The only way you get time is to make a priority and put something else off for a while. I think JXTA is important enough, but you need to make that choice for yourself.

I have called JXTA a revolutionary technology. It is like the first personal computer (mine was an Apple II). Before the personal computer appeared, software was written by only a small and privileged few. The reason was that computers at the time cost as much as a house. But with the personal computer, the number of programmers exploded. Compare JXTA to web and application servers. JXTA needs little or no investment to create useful applications. Web an application servers need hosting, hardware, bandwidth, and the costs increase as you scale (it is much cheaper to do so, but the average hobbyist can't afford a simple site).

Some architects recommend that you should develop with the least complex technology possible. Others recommend minimalist designs or least complicated methods too. How would JXTA fall into this?

JXTA is less complex then web apps because it removes or reduce the complexity of multiple languages(Java, html, JavaScript, etc), browser incompatibility, and the web infrastructure of servers and data centers. JXTA can use a real GUI (Swing, SWT, or AWT), which can save a lot of development time. There are also many more resources because of other computers in the P2P network. The downside is increased latency for some types of data and in many cases a more complex distributed design. Counteracting the bad is reduced equipment and reduced interactions between the pieces (like interfaces between html, srcipts, XML, and Java).

Sounds like JXTA uses less technology and reduces the touchpoints between them. But is there less code and a simpler design? Jury is out on that one because complex applications have not really been analyses. For simple applications it seems like there is less code.

New technology is sometimes a moving target. JXTA is no exception. The direction of change is toward less complex and easier to use. Some of the churn is also in how we design with JXTA. Turning any paradigm on its head is going to keep you on your toes for a while.

JXTA developers also need a lot more than the API. JXTA at is core is just a protocol. It is not a turnkey business solution. But that's another reason to lust after JXTA. There are a lot of important things to do, from crafting unique frameworks to modifying existing ones to fit a JXTA and P2P environment. Building a business solution with JXTA is still a job for a fabricator. It takes a craftsman to make his own scaffold when things get complex. What really makes this fun is that the solutions are like no other.

So, is JXTA fun? Yes! Is it hard work, yes again for some things. Is it good for your business? Yes, because despite some extra time developing, the benefits of P2P, and the reduced costs are enormous and they add up over the lifetime of a product.

**Most companies don't do code reviews so life is already exciting.



If you already know about a P2P service, is that bad?

Posted by turbogeek on March 02, 2004 at 02:12 PM | Permalink | Comments (3)

I’ve had the same conversation with four different people this month. The conversation started when I was showing how a well-known ID can directly connect two peers. All four made the same observation: Doesn’t that go against the idea that P2P is about creating ad-hoc networks and the dynamic discovery services and resources?

They have been lead to believe that P2P applications should not start with any information and should only be allowed to discover things in the network. They fell in love with the idea of discovering treasures by looking in hidden places. Hard to tell if it is wunderlust or just an old idea that stuck in thier minds from old assumptions. The P2P literature has not helped much either because most discussed P2P in terms of searching. This is not surprising, considering that most of the current P2P is oriented toward file sharing where 'all' data is 'discovered'.

The second thing that many in P2P talk about is discovery of a service as opposed to a file. This is what I call a inverse software agent. Software agents usually get passed from computer to computer to do work. The inverse agent is one that you discover some place else and use on your PC to interact with other agents. An example might be a datin service that you discover and then use to interact with others that are single. The inverse agent makes sense, but there is very little support for it. Yes, it is a good idea, but the software and security support is not there. It is thousands of times more efficient to just write and distribute an application rather than a plugin to extend your network capabilities. An application that genericly finds and loads applications is overkill unles it is very generic - at which point it then loses its value. Catch-22.

Making all applications start with a search at a higher level of framwork is also not a JXTA strength. JXTA is multipurpose. It is not partcularly useful as a search tool(at least without a specific type of search). It is not even optimized for searching. Yes, there are search mechanisms, but they are very limited.

There is one area of search optimization that the JXTA team is working on very hard: Finding another computer listening to a pipe address. Simply, a computer that wants to accept information or create a two-way conversation. That’s what most network applications do, so that’s a reasonable area to optimize. That also means that even if we discover the application somehow, we still have the system to discover other computers in a P2P network.

But why throw away the purest view of ad-hoc networking? Well, I am not throwing it away. Just putting it back where it should belong. Applications should be applications - not a service.

Lets talk about the real crux of the argument, the well-known ID and how it is not a violation of a dynamic P2P network.

A Priori ID / Well-Known-ID

I was once taught a Latin phrase that has stuck with me but I have found difficult to follow all the time: “Eschew Obfuscation.” Translated it is simply, “avoid complicated language”. The problem with this sage advise is that when a new technology comes around we get ne buzzwords too. In JXTA, a well-known or a priori ID is an ID that is already known or can be created from known information. The best example of this is an email address. You know your email address, so does your email provider, and so do your friends. Because an email address is usually simple, like turbogeek@ cluck.com, it is simple for any application to require it as a way to identify you. In effect, your email address becomes an ID, plus it can be used for email.

But lets get back to confusing buzzwords for a moment. An ID in JXTA is a URN or Universal Resource Name. URN’s can have many formats, but they are just a unique identifier. The JXTA form of the ID is found everywhere in JXTA from groups to pipes and to identify versions and types of code or data. ID’s are everywhere in JXTA

But where is the discovery or ad-hoc cpability of this P2P system? Mainly in managing the network to discover peers and route messages. The network is created ad-hoc except for a few seeded peers that are used to discover the rest of the network. Beyond that, there is no requirement or preference that peers ‘discover’ information. Thus for well-know identifiers, the network is crreated on the fly to connect peers via an identical ID.

Discovery in JXTA, as I have said, is a little inefficient for data searches. There are many methods for creating efficient searches. I describe one earlier in a prior blog on a six degrees of separation search (a Kevin Bacon network search). The six-degree search used well-known ID’s created from email addresses to create connections between PC’s. Using the well-known ID increased the efficiency of the network.

This finnaly brings me back to the guys that think a known ID is 'not' a way to build an ad-hoc network. You should have seen that the ID is indeed a transiant thing - at least by clients when using an email address. The connection between peers is also ad-hoc and discovered via pipe routing whenever you are mathing peers with identical ID. In addition the ID can be formed to represent any subject, service, location, thing, or person. All you need is agreement between peers looking for the representation. Sounds like well-known ID are the poster boy for P2P.

I Dream of JINI

Perhaps it is the dream of JINI applications that lingers in the P2P purist's minds? If just walking into a room with a WiFi PDA connects you to a local printer is cool, why can't you apply the same thing to P2P? For example, if I log into JXTA, shouldn't it automatically guess I am not looking for a printer?

P2P is not as straight forward as JINI. Realizing that there is a printer is not the same as discovering a service that does printing and thus might be useful. To look at this another way, you could create aJXTA dating service. If we apply a JINI model, a PDA owned by a single person would aoutomatically load the dating service and start looking for a mate. Might be nice, but really a bit of overkill. On the other hand, if I run a dating application enabled with JXTA, I can use data about your likes and dislikes to create an ID that can match you to someone else like you.

The bottom line? Feel free to use JXTA ID’s created from known data. It is not against the spirit of P2P. The well-known ID is also an eligent way to solve many P2P problems. No one will call the P2P thought police. If they do, send them to me and I'll give them your Get out of Jail Free card.

Things change, but remain the same

Posted by turbogeek on October 18, 2003 at 02:15 PM | Permalink | Comments (0)

Time for me to switch jobs. This time it looks like it is for the long term. After years of consulting I am now a full-time employee of Texas Instruments. I am in the Education and Productivity Systems group in Dallas. My new job is to lead TI into the next generation of collaborative software (and any thing else I think is cool and will make TI a company you want to buy products from).

What's that mean? Basically I am working on ways to improve education through non-invasive technology. Since TI is also in the general productivity business, it also means I'll try to make all our lives a little easier. How? Well, I'm working on that right now. I'll let you know when I can.

But things remain the same. I am still active in JXTA and will in fact help the open source movement via my position at TI. Though they are not (yet) a source of open software, they are a user and a contributer to many projects.

My old job at Verizon was fun and I was sad to leave. At least I saw my software live on stage at JavaOne this year (Digital Compainion).

Speaking of my old job, I am still looking for my replacement. If you know JXTA and are looking for a job, email me ASAP!

Stay tuned. More educational blogs to come.



Where's the Grid?

Posted by turbogeek on September 15, 2003 at 06:39 AM | Permalink | Comments (5)

Time for a poll. The goal is to uncover a few ideas to apply P2P to grid computing. Grid computing of course is used to solve some very big problems. Some, like weather prediction, calculating PI, or even the SETI or Folding @Home projects are obvious. But what is not obvious or at least not applied today. What are your thoughts and ideas? What are your applications for grid computing? Use your imagination!

JXTA & Business - The catalog

Posted by turbogeek on September 12, 2003 at 07:07 AM | Permalink | Comments (0)

JXTA Catalog - Saving Money or Better Business

There are a few that stick to the old tried and true. The nice thing is that the adventurous have a competitive advantage. The adventure seekers and mavericks are better thinkers too because learning exercises the brain and keeps it humming.

JXTA is a very new paradigm (20 cents) and not always simple to grasp and apply to business problems. Throwing out old client server ideas and replacing them with P2P solutions takes a little effort. Lets look at an online catalog for example. Some hard thinking ahead. Turn back now now if you are faint of heart.

Catalogs are not hard to implement on the web. Get a good shopping cart and you have it. One thing we would like to get rid of is the cost for hosting and bandwidth. It is expensive to run a web site that can serve millions of hits. But we would also like to get our customers together for contests, games, chatting, and even to help or support each other (a topic to be covered in future).

Look at the components of a catalog: pictures, descriptions, prices, on-hand in inventory, shopping cart, order processing, credit card processing, order status. P2P is not going to replace every function. Credit cards, order processing, order status, and on-hand in inventory need to be done in part at the data-center, in the servers. The peer can get the request ready though. Our unavoidable contact with the back office are done with a web service or even through a traditional web page. But what am I saving?

Let’s Go Shopping

Think about how most people shop. There are three modes: browsing, restocking, and impulse buys. All three can occur during a shopping experience. Mostly though, the user is moving from page to page, downloading your catalog's pictures, descriptions, and the navigation buttons, banners, backgrounds and other HTML flotsam.

What is happening? The user is downloading and re-downloading lots of data. Very little other work is done until the user wants to add something to the shopping cart, paying for the order, or looking at older orders. Essentially 95% of your bandwidth and hardware at the data-center is dedicated to just delivering copies of the online catalog. Worse, most of this is duplicated multiple times to the same user and then duplicated again for every customer.

So, the catalog looks like it might be a place for optimization. By giving each user their own copy, the size of your web operation is reduced by 95%. Sound good? But how?

First, use the P2P network to distribute the catalog. We could do this in the simplest way possible by just storing the HTML on the user's machine. The P2P application would look at other user's computers to see if they have the most up to date pages. This is like a web cache on steroids because your web server is not called until absolutely required.

Getting Your Neighbor’s Copy

Distribution of the catalog is a little tricky. When the application starts it sends out a signal to other peers to see if there is a new copy of the catalog. When the catalog is older than it should be, the web server is queried for updates to sections of the catalog and those that get the copy become distributors for the rest of the network. Very quickly there are thousands of exact copies of the updates available for others to update their data.

The ultimate version of the catalog would be a little more complicated. By using Java to create a full-blown application even the shopping cart and other functions can be implemented on the client side. Only the ends of transactions or queries need to be implemented as web services.

Who Said Java Was Slow?

But isn't Java slow? Well, how slow is a web page through a slow connection? Java is not slow in any case and even if it were, anything is faster than most web page requests. Plus you have the freedom to add all sorts of client side tools, business intelligence, bells, and whistles to enhance the experience and increase profit.

Fresh Prices

What about the pricing of items and discontinued products? First, customers are far more flexible than many give them credit. They accept change - the don't always like it, but they understand. Next, understand that prices for most retail goods do not change that often. Even sale prices are usually set far in advance. For volatile prices we update them at checkout time(Amazon does this with special pricing). We can also update the price changes at intervals that can ensure that the new prices are fetched either from another peer or a web service at a rate higher than catalog content. If you are extremely paranoid, the updated prices could be fetched each time the user starts.

Scaling the application is different with JXTA. Since the brunt of the work is done by the customer's computer rather than your servers, the scaling of the infrastructure is proportional to its contribution rather than 100%. There are some JXTA scaling issues, but these relate mostly to tuning and how the P2P network is used. Since JXTA has a notion of super peers to help increase the efficiency of some operations, you may want to add a few to increase the efficiency of the application. More about super peers in another blog.

More Bells and Discounts

There are other benefits to the P2P/Web mix. Here are a few:

  1. One computer language – No need to mix javascript, DHTML, PHP, Perl, Flash, etc.
  2. Auto Software Update – Software distributed with the same system.
  3. Works On Laptop – Users can use the application without connecting to the Internet. The final sale can be queued for later transmission.
  4. Reduced bandwidth cost – Peers talk between each other rather than through your data center. You only pay for the final transaction - not the entire experience.
  5. User to user connectivity – Users can chat and share info like product choices like an instant messenger application with more features and without impacting the data center. This is great for products that have communities like collectors, hobbyists, and are passionate about your products.
  6. Local Storage – A user’s own computer is used to store things like past orders, credit card info, and even info on when to reorder. This reduces the size of your storage and complexity of web apps and can improve security.
  7. Local retailers participation - Since this is P2P, anyone can be a part of the network, including the local retailer. What if you ordered a book? The local retailer could reserve it for you via a message from your computer to the store's computer. You pick it up and save on shipping.
  8. Extras - Now that you are on the desktop there are all sorts of things possible from games to integrating with the user's calendar applications. Just use your imagination.

A P2P catalog is just one example of how JXTA can be used to enhance an idea and save money. There are other things that are cool about JXTA and P2P. More to come.



Six Degrees of Seperation

Posted by turbogeek on August 12, 2003 at 11:16 PM | Permalink | Comments (2)

It's a Small Small World After-all

August, 7 2003, the BBC reported that an article in Science had been published about an experiment that proves that by simply forwarding email among acquaintances, it only takes a chain of five to seven emails to reach a specific email user unknown by the original emailer. Why is that important? It helps prove that you can write P2P applications that let you find people or information by at most 6 steps away. This is known as Small World (first tested by psychologist Stanley Milgram) or its more popular moniker, Six Degrees of Separation (A.K.A. the Kevin Bacon theory).

Six Degrees = A Lot of People

But there is a problem with Six Degrees. There were actually a lot of people emailed in the course of the search. Think of a pyramid. You email ten friends and they email ten friends who email ten friends. At 3 levels about 1,110 might be sent with each person having ten friends. At 6 degrees it is a maximum of 1,111,110 emails. If each person knew 100 people, at 6 degrees of separation, it would be 1,010,101,010,100 people. More than enough to reach everyone on the planet. That's a lot of spam and a lot of network traffic. See the problem?

Searching for a Friendster

The six degrees problem depends on who or what you are looking for. It could be a specific person, a type of person, or even a someone at a location, a or a person who has something you want. The experiment would probably have failed if repeated too many times because the emails would be treated as an intrusion and thus spam.

www.friendster.com/ is a similar idea in connectivity (join and look for turbogeek@cluck.com). Friendster is of course a web site with a large database. They also have to pay for big servers and a lot of bandwidth. What if we duplicated a similar idea in JXTA? How could it be done?

JXTA Friends

Here is the concept. I have a JXTA pipe listening to an address that is the equivalent of my email address (one of the few things as unique as your social security number). I have a list of my friends and their email addresses. If you know me, then you know my email address and can access my friends in my address book. With access to the book, you can connect to the friend's address book to continue your search if I don't have the person you are looking for in mine.

To use the system, just connect to the pipe with my email address and ask for a contact with a person you are looking for. If I have it, I return it. If I do not have it, I can ask my friends via the same mechanism.

Too Many Friends

There is a slight flaw in this straight forward design. If we have a lot of a lot of people in the network, the number of messages could be quite large. In fact, this is the same problem Gnutella has with its search mechanism. But the answer is not too hard to solve. Just put more information on each peer and set limits on how deep searches can go. Start by replicating your friend's address books.

By duplicating address books we decrease the number of hops for each connection. Since there is a tendency for friends to flock together and thus have each other's email addresses we also reduce duplicate searches. So, in just one hop we access the close group of friends and those that are looser acquaintances (we know this by the frequency of duplicated entries among the friends).

Duplicating address books does add a little bit of storage. For example, 100 friends,each with 100 of their friends at say 256 bytes per entry is 2.5 meg. This seems like a small number with todays disk drives (my little Apple laptop has a paltry 60 Gigs). Yes, it is a waste of space to a certain degree, but is cheaper than a terabyte of disk space on a centralized web server. It also means you and your friends have a great backup mechanism for those all important address books. The best benefit though is that you save a little less than ten thousand connections for each peer contacted.

Of course there would be more to do. Security is one of the more important pieces. In addition, if we are really going to go after true 6 degrees, that's still a lot of connections. Luckily the six degrees network finds the right guy within just two or three hops. No one said software was a simple profession.

Smarter Searching

The numbers can probably be made much better. With a few networking techniques and ways to qualify the route taken, the search can be optimized. Of course I'm just talking about people in this example. If we were looking for a specific type of person (like an accountant or politician), the search space would be much smaller. It's smaller because the odds are that there is a lawyer of accountant known by at least one of your friends.

Its a Big Gulp World

Small worlds are a little easier to see when looking for types of things like the accountant or politician. Small world is a slightly different idea than pure six degrees of separation. A better example might be Starbucks Coffee, McDonalds,7-Eleven, and Wal-Mart. How close are you to one of these businesses? In effect, you are as close to one of these as are a great number of people throughout the United States and increasingly throughout the world. The network of the franchise has made the world much smaller. For example, you may need to drive a few blocks to get a coke at a 7-Eleven rather than always driving to Dallas, Texas where the original store was located. Your world is effectively smaller.

What if we replace the idea of convenience store with a peer? The peer is often just a small computer with its limited resources. A 7-Eleven is small and has a limited selection and inventory. What types of things can we put in a peer that are similar to the convenience store?

We can create small worlds in two ways. This first is to locate information geographically. For example a computer with Starbucks locations would only have addresses within a few miles of the PC (actually a large number in most neighborhoods). Another method is to repeat information. Repeating info is the same idea as the franchise or chair where each location looks identical to the next except it is conveniently located near you wherever you are. Convenience would be in relation to your geographic location via the network, LAN, ISP, etc.

Six Degree and Small Worlds networking has a lot of promise. But what can you really do with this type of software? What are other applications worth pursuing? Since P2P is here to stay, what can we use it for? I have a few ideas, but what are yours?



The Riddle of the Spinx

Posted by turbogeek on August 10, 2003 at 11:22 PM | Permalink | Comments (6)

RTFM==QED

Sometimes you do something that surprises people. Jaws drop and wonder is seen in your friend’s eyes. You too can tap into these secrets of the ancients. See a source of hidden knowledge, known only to select few. Answer the riddle of the Sphinx, just by reading the manual.

A little knowledge, creativity and some imagination and you can change the way people think. I have just recently done just that. I do it a lot because I have a habit of reading the manual and exploring how I can apply what I have read in ways the authors have not expected. It’s a bad habit from school where I was bored with dry assignments, so I twisted them to be interesting to me, rather than the teacher. Yes, I was a rebel…

I Robot

What I have done recently is to mix a couple disassociated things to create something not really intended by the designers. The first is Robot class in the java.awt package. This is certainly one of those read-the-manual things. You may have not heard of the Robot class. Robot was probably added to Java in 1.4 to help with testing. First it can capture an image of the entire desktop or just a part of it. This is quite a cool considering that in the past Java was limited to its own windows. The second, and very surprising feature is that it can send mouse and keyboard events to the operating system. In effect, controlling the entire desktop. Quite a departure from what you thought Java could do eh?

A Remote Possibility

Of course what this meant to me was that I could do more than capture the desktop or control things for a test. This meant I could control the computer from a Java application. Specifically I wanted to do it remotely. More specifically, using JXTA.

JXTA-Remote-Desktop was born! No need to dig up bodies and piece the monster together. Just pick up a couple of pieces and read the manuals. The Jr. Frankenstein kit.

Open Source A Me

What is JXTA-Remote-Desktop(JRD)? First it is open source and hosted here at java.net. It’s a simple implementation of the remote desktop idea, like PC Anywhere, Go To My PC, or VNC. It is written in 100% Java using JXTA as a transport. The key difference from the competitors (it is hard to compete with VNC because it is free), is that JRD can connect any two PC's even if there is DHCP, a firewall, or a NAT**.

JXTA's P2P network uses other generic computers to act as middlemen for HTTP tunneling and relay of messages. This is not a big security hole because the computer behind the firewall must be a willing party to the communication, just like other HTTP tunneling applications. JXTA also has its own addressing scheme so NAT and DHCP are not a problem.

JXTA is certainly not the best choice (message rather than stream based, and it has unpredictable data rates), but it is the only choice for this type of application. Think about your average PC. You can't get to it with a URL because it has no web address. You can't depend on its IP address because it changes. And there’s usually a NAT or firewall preventing direct access. JXTA lets you access almost any connected PC no matter what its current IP address or topology.

How good is JRD? Well, it is not as good as VNC yet. There still needs to be a little work to get the screenshots to be a little more efficient. Most remote applications use the native OS to get just what changes on the screen while JRD is limited to screen shots. JRD can become better through a combination of compression and differencing techniques similar to Internet video. The I/O of mouse and keyboard are delayed quite a bit so the user does not get too far ahead of the screen updates.

JXTA-Remote-Desktop is getting closer to being a viable application. The code works and there is even a multiplatform installer. I will also have an article at P2PJournal.com soon to explain the code. Since it is open source, I am looking for help to improve it. High on my wish list is better video differencing. I challenge you to look at the code and come up with an innovating solution to this devilish problem.

More to come! Up next, running Java and JXTA applications on an Apple Macintosh!

** NAT is an acronym for Network Address Translation. Most cable modems and DSL routers implement NAT. A NAT prevents anyone from directly contacting a PC from outside your home network.



Just a Little JXTA Muse

Posted by turbogeek on August 09, 2003 at 11:18 PM | Permalink | Comments (4)

Blog Away

Am I crazy? I write books, mentor, and architect code (oh and code what I design). I also like to juggle knives, torches, MS XP CD’s, and other implements of mass destruction. I run a couple of Java user groups, and of course, I am a Java guy. And now I blog, therefore I am.

A blog can be a diary, soap box, and a place of information. You might get the first two here, but information is my goal. Be warned my passions are Java and JXTA… and very, very bad puns. With any luck the info will keep you coming back for more...despite the bad puns.

For today's blog, on the off chance that you have not heard about JXTA, let me introduce you.

JXTA I Suppose

It’s amazing to me that every few months there is yet another Java API. Between Sun and the open source community, it’s hard to keep up. But what’s important and what gives you the most bang for the buck? I believe that JXTA is worth your effort. Oh, JXTA is short for Juxtapose.

What the heck is JXTA? Simply it is a way to interconnect home and work PC’s together. Sounds simple, but it really isn’t. The first problem is the barrier to addressing most PC’s. With NAT, DHCP, and firewalls, most PC’s cannot see each other. Web pages, email, and instant messaging are our key protocols, but they suck for applications. Worse is that to host more than a web page costs a lot of money.

Another problem with today's internet, even if you can address millions of computers, how do you find the one you want? Looking for the right data, service, or person? There is no Google for your neighbor’s PC. What if you want to talk with a group of computers? How do you constrain the messages to ‘just’ those PC’s? The more computers there are, the harder it gets.

JXTA solves the addressing problem and has some of the tools for the second. JXTA is a Peer-to-Peer protocol and API developed by Sun, and its also an open source community. JXTA includes routing, message delivery, addressing, and more for P2P computing.

Why JXTA? With JXTA, anyone can create and deploy an Internet application without laying out a load of cash. You no longer need to have a web site and an application server to do interesting applications on the web. JXTA lets you do very interesting and powerful applications with just your PC and those you interact with. It is the missing link that lets anyone write an Internet application. JXTA is the Internet for the masses.

Are servers dead then? Not at all because they still have their place. JXTA can reduce or eliminate your dependence on them. There is a point where having to pay out cash is inevitable, but you can do a whole lot for a lot less and many applications will need no server to be a success.

Sometimes servers do make sense. If you need a central authority for credit card transactions or connecting to the database to check inventories. For these types of things, mixing P2P with the normal web infrastructure of servers and especially web services makes sense and will cost less in infrastructure than just web-based applications.

There is more protocol magic in JXTA like message relays, dynamic routing, and of course a little security. JXTA is also language neutral, so it is more than just Java. I’d explain it all here, but I have a whole book for that. There are a few articles on the net and other JXTA books too. Plenty of resources for learning JXTA. I plan on making this blog yet another place to look for ideas and information about JXTA and P2P.

Time for you to learn a little JXTA. Head to jxta.org, to learn more about JXTA.

If you can really connect any computer in the world, there is a key problem of which one? We'll talk about that soon. Stay tuned!

Punishment

What came first, the chicken or the egg?

The egg.

A chicken must first eggzist!!!





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds