The Source for Java Technology Collaboration
User: Password:



Daniel Brookshier's Blog

March 2004 Archives


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.



Education And Research Community at Java.Net

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

Introducing the Education and Research Community

Java.Net is a very big place on the net nowadays. There are a lot of communities and hundreds of projects. But what is in each community? Why would you host your project in one or the other? Today I am going to tell you about one of the Java.Net communities I manage, Education and Research (E&R).

But first, Education and Research? Why? In part, education needs software too. There are actually many open source projects developing software related to education. Some of the older projects are beginning to migrate to Java.Net to take advantage of the community and services provided here. But there is more than software for the sake of education. There are also projects related to student thesis and school projects. There are also many researchers that need a space to work with their peers in an open way.

Face it, we have good tools, a great overall community and its all free. Why not support education and our researchers that need all the help they can get?

This community is used by students, teachers, and individuals to create software for all aspects of education and learning from classroom management systems to teaching tools, to hosting projects of students for projects and thesis work. We also host tutorials for learning various subjects, authors post their code and sample chapters for books, and we also host academic research and thesis work.

This community is also important for collaboration between educators, students, and developers of educational software. We host discussions and areas for exploration important for learning or exploring new ideas and new technologies.

Why Host a Project in E&R?

E&R is definitely a loose community as far as projects go. We focus on education, so project here relate to schools, students, educators, or even the ongoing education of developers and managers. So tutorials, code examples, books, educational software, school management, testing, etc. can all be hosted or found here. We cross a wide range of the other communities from J2EE to Swing to Linux. As long as it is related to education and research, you can see there are advantages hosting in a community of teachers and students.

But why not another community? Why host a JXTA tutorial here when there is already a JXTA community? Simply this area is the place to go to learn just like a school is a place to learn. If you are hosting a new project you will have the tools to create and manage learning systems for new projects. We will be cross-linking the communities so that the core community has a link to the educational community hosting its tutorials. This way we can concentrate on the education aspects of a project as a whole plus get help from the experts in the subject community.

Another reason to host your project here is if it is highly experimental. Trying to refine an algorithm, experiment with different designs, implementing a new type of user interface? E&R is open to the educational, the new, the cool, and the strange. Math, science, the arts, and other subjects that we associate with academic and scientific endeavors too.

Education, research, or the odd duck that's hard to classify, E&R is the community space for you and your project.

We are getting things started, so there are just a few projects right now and we are looking for more. Add your own or join an existing one. Roll up your sleeves and lets write some great software or have a rousing discussion.

Project Areas

There are a lot of subjects in education and even more in research. To create a sense of order, we have divided the E&R community into several project areas. See if you can find an area or a project in that area that fits your needs and interests. If you have a project proposal and need a new category, let us know.

  • book-resources-and-code Book source code and materials
  • class-projects Area for teachers to host class projects
  • code-libraries Code Libraries and tools for education and research projects
  • edu-incubatorThis is a place for new(pre-beta) Edu/Research projects
  • education-productivity-toolsEducation Productivity Tools
  • education-research-orphan-projects Orphan Project Area where abandoned projects are looking for Adopters
  • education-resources Section for projects that organize resources for teaching
  • hands-on-labs Hands on Labs for teaching Java technology
  • research-projects Academic Research Projects
  • student-thesis Student Thesis, Dissertation project hosting area
  • tools-for-teaching Projects for tools that help teach subjects and skills
  • topics-and-discussion Section for projects that explore and discuss specific topics
  • tutorials Tutorials for Java and Java technologies.
  • Community Leaders for E&R: Dr. Robert S. Stephenson, Daniel Brookshier.


    Dr. Robert S. Stephenson
    Community Leader - Education & Research at Java.Net
    E-learning Architect
    Assoc. Prof., Biological Sciences
    Wayne State University, Detroit MI
    http://www.science.wayne.edu/~rstephe
    rstephe@sun.science.wayne.edu

    Daniel Brookshier
    Community Leader - Education & Research at Java.Net
    Author - 'JXTA: Java P2P Programming'
    Editor: P2PJournal.com
    President JavaMUG
    Director on the Board of JXTA.ORG
    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.



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