NetBeans 6 delivers great updates to the Matisse GUI builder. Spend a few minutes with Roman Strobl and get an expert briefing on what's new and what has changed. (sponsored)
In this, the third and final installation of Andres' Introduction to Groovy series, you learn about how Groovy handles variable numbers of arguments, named parameters, currying, and more about Groovy operators. Including, some new operators.
Swing Fuse (actually just Fuse), is a framework designed to make it easier to create your own custom desktop components. In this article, Daniel Spiewak shows you how to get started and provides sample source code you can download.
Willam Louth shows how he uses JXInsight Probes to investigate probable performance issues with code bases that he is not familiar with. He also highlights possible pitfalls in creating a benchmark, as well as in the analysis of results.
The "Semantic Web", and its related terms, "Web 3.0" and "hyperdata", are fluid in range and scope, tricky to pinpoint and narrow down to concrete dimensions. Henry Story, a globetrotting hyperdata explorer, is trying to do just that. In some ways, his life exemplifies the fluidity of the concepts he works with, though he's continually attempting to nail himself and his work down to comprehensible terms, as this interview shows. But what is hyperdata? And... do you want to know about some tools that you'll find useful while dealing with hyperdata? Read on!
Henry, first tell us who you are and where you're doing that!
I am me, and I am always doing that here. Here tends to change a lot, as I am lucky to have found a job where the only requirement for me to work is to have an internet connection. So I travel around. Recently I was in Prague, Vienna, Graz, Paris, Zurich, Boston, the Bay Area, Oxford and London. The French pay me, but my manager is in California. Next I will be going to Sao Paulo for my brother's Wedding, in a month's time, which will be my first time in South America.
In short, I am making use of the internet to build up a completely new way of life. I am a wireless nomad.
What's your main area of development interest, personally?
Currently I am working a lot on
Semantic Web
(or "Web 3.0") technologies, which combines key domains of interest to me—the Web, philosophy, language, and software.
Now, that may make it seem very complicated. In fact, it is quite the opposite—in some ways the Semantic Web makes everything a lot simpler. But, it does require a bit of a mental shift to "get it". I have found that the best way to create a mental shift is through practice. And so I am putting together a few very simple applications that really make it clear what is going on here and what the advantages of doing things this way are. Most of the demos I put together are on
sommer.dev.java.net
.
How did you get involved in the Semantic Web? What's your connection with it?
After discovering an early version of Java at University in 1995, I decided to learn it, wrote a
fractal applet
(the code was pretty bad, to tell the truth) and somehow got a free ticket for JavaOne. So I flew to California, met a lot of people and promptly was offerd a Job at AltaVista, the Google equivalent at the time. There I worked on a little applet that showed conceptual relationships between words found on the web. After that, I named and deployed the
BabelFish machine translation web service
, in C initially, and then ported it to Java... which took longer than expected; it is only really with Java 1.3 that the VM became good enough to support such large services. After changing companies four times without changing office (DEC, CompaQ, HP, CMGI), I decided in full downturn to try out a startup. Not a good idea for my career, but it gave me time to do other things like read up on psychology, having lost my job there.
I had to get back to Europe as I did not have a green card, and worked on a few small jobs here and there. Finally, I worked for larger companies, such as Philips, in what was very clearly a Fordist chain factory setup. That is when I decided that I had to try a radically different way to find a job... going through head hunters is not the way to get an interesting job in Europe I noticed, as they tend to just do keyword matching on words they have no understanding about.
So I decided to do some blogging and open source programming, to contribute back to the community. I found James Gosling's
BlogEd editor
, used it and contributed back some fixes, and worked on adding a semantic web engine to BlogEd. Unexpectedly James offered me a job at Sun, which I was really happy to accept.
At Sun, whilst developing BlogEd, I worked on the
Atom Syntax
, which was a deepdive into the details of XML. Then I worked on the
RESTful Atom API
, but not fulltime, as it became clear to me that the more interesting developments were clearly going to be in the Semantic Web area. Since there were a lot of blog editors available, and since I did not want to spend my time hacking around complex XML formats, I decided it was more important to find ways in which I could get Sun more clearly on board the Semantic path. This is how,
unintentionally
, my career as an Evangelist started.
So, what are you passionate about in the Java world at the moment?
There are 578 Semantic Web tools
out there
(best viewed in FireFox) and 50% of them
are in Java
!
But, really, I am passionate about
hyperdata
. Hyperdata is to data what hypertext was to plain old documents. Hypertext contains text that contains hyperlinks that link to any document in the world. So you can go from one document to the next document, each one hosted on completely independent servers or organisations. We all know the advantages this brought to us since 1995—it's called "the Web".
Hyperdata is the same. With hyperdata, each piece of data leads you to another piece of data and it does not matter that that data is on a different server. You can have a file with your friend info on one server pointing to your friends on another server, who themselves point to their friends on yet further servers and so on,
as described here
.
I have just published a really simple demo of hyperdata—the
DOAP bean
. DOAP stands for "Description of a Project". It is an ontology (i.e., a set of classes) which describes projects—their authors, contributors, Wiki pages, mailing lists, repository location, etc. In the Semantic Web, all you have to do is to name, using URIs (preferrably URLs), the things you want to speak about. This is what the DOAP people did. Then you can publish files on the web. With the DOAP button installed into NetBeans IDE, you can then
drag and drop
the URL of a project page you are looking at (say
https://sommer.dev.java.net/
) onto the button and it will go and fetch the file, with this result:
From there on, it is just up to one's imagination what one can do with this information. The DOAP button does one very simple thing at the moment—with a click of a button it will download the project for you. So you can drag and drop a project into NetBeans IDE now.
For DOAP to really fully use the power of hyperdata, such files would have to also link to other projects. I am trying to get them to add a "doap:dependsOn" relation, which would relate two projects where the first project depends on the second. Then you could import all the dependent projects too, or at least know where their documentation is or their source code... All of this is open source and I am very happy to add contributors to the project. There is just too much to do here for one person!
Another project I am going to be working on, in the immediate future, is a Semantic Address Book, that would read and write these hyperdata
foaf files
. So stay tuned...
What other cool RDF-based open source applications do you think would be helpful?
I think it would be nice to have a Java Component that does a little what
Tabulator
does. Tabulator is a a plugin and an AJAXy application for Firefox that allows you to browse RDF files.
So you can add my foaf name (
http://bblfish.net/people/henry/card#me
) into the box and then browse information from there. It is in many ways quite primitive but it does give one a good feel for what hyperdata is. The interesting difference with a web browser is that you don't move from one page to another, the data just keeps getting merged in one application.
This is certainly not the only way to present hyperdata, by the way. You could create hyperdata versions of iTunes, iPhoto, AddressBook, or any other application you choose to think of, where they would not look very different from the ones we know...
Tell us: What two things have you learned this week that you didn't know at all last week?
This week I wrote two editors for NetBeans IDE, using the Schliemann framework (the project name for the Generic Languages Framework API)—
one
for the extremely simple RDF syntax, called NTriples, and
the other
for the more human-friendly superset of it, called Turtle.
Here is a section of my NTriples editor:
And here you see part of my Turtle editor:
This was the first I had learned about Schliemann and it only took a day to get some very useful functionality out of it.
I also learned that, when doing byte code rewriting, having a good Java Decompilation tool is like switching on the light. I found
JAD
last weekend and finally I could see what I had been doing. So I immediately set about to rewrite the whole
so(m)mer framework
. It is a lot better now.
Finish this sentence: "In 5 years time, Java...
... will be completely RDF enabled, and reasoning may even be part of the core VM."
Who or what was the greatest influence in your Java development career?
It was the student at Imperial College, London, who shouted "Eureka!" in 1995 when he found an early alpha version of Java, then set out to write a demo 3D visualization application that used the processing power on a cluster of Sun machines from the computing labs. The guy was really good.
What do you know now that you didn't know 1 year ago, about Java code?
A little over a year ago I did not know anything about byte code rewriting or aspect oriented prgramming. So, I asked around at the the Paris Open Source Get Together (OSSGTP) about what lightweight library I should use to make a Hibernate-like framework for RDF. Emanuel Bernard suggested I look at javassist, which was used at JBoss to develop Hibernate. Javassist allows you to insert methods, fields, interfaces, and behavior into bytecode, by simply writing out some Java code in strings, which is nice, because I did not really have the time to get down to learning byte code programming. I was able to get it to work quite quickly, but it took some time to understand how to debug it. I was blind until I learned to catch some exceptions thrown by the framework and log them. I finally got to see clearly last week when I used JAD. (You can see I have not been working continuously on this.)
If you could change one thing about Java, it would be...
...to build RDF into the fabric of Java. I am working on this, and don't think it will be that difficult.
I am quite intrigued with what is going to happen with continuations and Aspect Oriented Programming.
If you could spend two hours in conversation with someone in the programming world, who would it be and why?
With someone who could help me get better at Java2D and visualisation. I need to learn this really well. A good demo needs great visualization. So I am going to be reading
Filthy Rich Clients
next!
Is there a tip or trick, or insight, you'd like to share with us about something that everyone should, according to you, be aware of about Java?
Hypertext and hyperdata work because of the URL, the Uniform Resource Locator. The URL (or its generalised URN) is to the (hyper)web what the pointer is to Java. This is where the big difference between these two ways of thinking comes from: the JVM is a closed world of information, which is what makes it fast, but partial; the web is an open world, which is so vast it can never be fully be explored. In your local JVM, it makes sense to count pointers, on the web that makes no sense. Both worlds are complementary though.
does your feeling that this was self centered stem from the intro sentence "I am me, and I am always doing that here." ?
I am asking, because in case you did not realize, I am not you, and neither is anyone else here, so they may have difficulty guessing what the reason you made that statement were.
Interestingly enough, words such as "I", "you", "me", "here", "now" and "actually" are all indexicals [1]. That is they get their meaning by reference to the author. On the web we have something similar: relative URLs. A relative url is a short hand for the full URL. It requires knowledge of where the document was fetched from, in order to be able to properly be able to dereference it. Usually it is possible to keep track of that information.
So we are back to the problem of reference. In Java all the objects you reference are indexed to your virtual machine. You cannot easily escape from its bounds. The Web gives us the tools to do this on a global scale through the use of URIs: Universal Resource Identifiers.
> Martin,
>
> does your feeling that this was self centered stem
> from the intro sentence "I am me, and I am always
> doing that here." ?
>
> I am asking, because in case you did not realize, I
> am not you, and neither is anyone else here, so they
> may have difficulty guessing what the reason you
> made that statement were.
Good reply
Having developed tools/applications taking advantage of the semantic web technology (through jena). It is clear that the potential of the technology is mind boggling and still way under the radar. Although, I cannot tell much about our use of this technology (due to patents pending) suffice to say that the domain of applicability is vast and still largely unexplored.
It is very refreshing to see that other people are following the same path
Jean-Marie Dautelle - Marlboro, MA
-- Javolution: Everything should be made as simple as possible...
-- JScience: But not simpler!
What I find interesting is that so much of this stuff is really "under the radar". A group of visionaries are working in this area, while "the rest of us" are not only uninvolved, but also unaware of what's going on. That's always how such things happen, I suppose. The only difference here is that one can be aware of this process, and even contribute to it, so the openness of the Web 3.0 developments, rather than its "under the radarness" is one of its defining features, in my humble opinion, which at least potentially enables more input than would otherwise be the case.
It's not so much a new concept, as the clearest way to understand what is original in the Semantic Web program. It's the Web part of "Semantic Web". Most of the research has focused on the "semantic" side of things. This helps in one word, bring the web clearly back into the picture. I would suggest that it is easier to understand the whole project by thinking of it in terms of hyperdata.
Exploring Hyperdata with Henry Story
At 9:17 AM on Oct 9, 2007, Geertjan wrote:
Fresh Jobs for Developers Post a job opportunity
Henry, first tell us who you are and where you're doing that!
I am me, and I am always doing that here. Here tends to change a lot, as I am lucky to have found a job where the only requirement for me to work is to have an internet connection. So I travel around. Recently I was in Prague, Vienna, Graz, Paris, Zurich, Boston, the Bay Area, Oxford and London. The French pay me, but my manager is in California. Next I will be going to Sao Paulo for my brother's Wedding, in a month's time, which will be my first time in South America.
In short, I am making use of the internet to build up a completely new way of life. I am a wireless nomad.
What's your main area of development interest, personally?
Currently I am working a lot on Semantic Web (or "Web 3.0") technologies, which combines key domains of interest to me—the Web, philosophy, language, and software.
Now, that may make it seem very complicated. In fact, it is quite the opposite—in some ways the Semantic Web makes everything a lot simpler. But, it does require a bit of a mental shift to "get it". I have found that the best way to create a mental shift is through practice. And so I am putting together a few very simple applications that really make it clear what is going on here and what the advantages of doing things this way are. Most of the demos I put together are on sommer.dev.java.net .
How did you get involved in the Semantic Web? What's your connection with it?
After discovering an early version of Java at University in 1995, I decided to learn it, wrote a fractal applet (the code was pretty bad, to tell the truth) and somehow got a free ticket for JavaOne. So I flew to California, met a lot of people and promptly was offerd a Job at AltaVista, the Google equivalent at the time. There I worked on a little applet that showed conceptual relationships between words found on the web. After that, I named and deployed the BabelFish machine translation web service , in C initially, and then ported it to Java... which took longer than expected; it is only really with Java 1.3 that the VM became good enough to support such large services. After changing companies four times without changing office (DEC, CompaQ, HP, CMGI), I decided in full downturn to try out a startup. Not a good idea for my career, but it gave me time to do other things like read up on psychology, having lost my job there.
I had to get back to Europe as I did not have a green card, and worked on a few small jobs here and there. Finally, I worked for larger companies, such as Philips, in what was very clearly a Fordist chain factory setup. That is when I decided that I had to try a radically different way to find a job... going through head hunters is not the way to get an interesting job in Europe I noticed, as they tend to just do keyword matching on words they have no understanding about.
So I decided to do some blogging and open source programming, to contribute back to the community. I found James Gosling's BlogEd editor , used it and contributed back some fixes, and worked on adding a semantic web engine to BlogEd. Unexpectedly James offered me a job at Sun, which I was really happy to accept.
At Sun, whilst developing BlogEd, I worked on the Atom Syntax , which was a deepdive into the details of XML. Then I worked on the RESTful Atom API , but not fulltime, as it became clear to me that the more interesting developments were clearly going to be in the Semantic Web area. Since there were a lot of blog editors available, and since I did not want to spend my time hacking around complex XML formats, I decided it was more important to find ways in which I could get Sun more clearly on board the Semantic path. This is how, unintentionally , my career as an Evangelist started.
So, what are you passionate about in the Java world at the moment?
There are 578 Semantic Web tools out there (best viewed in FireFox) and 50% of them are in Java !
But, really, I am passionate about hyperdata . Hyperdata is to data what hypertext was to plain old documents. Hypertext contains text that contains hyperlinks that link to any document in the world. So you can go from one document to the next document, each one hosted on completely independent servers or organisations. We all know the advantages this brought to us since 1995—it's called "the Web".
Hyperdata is the same. With hyperdata, each piece of data leads you to another piece of data and it does not matter that that data is on a different server. You can have a file with your friend info on one server pointing to your friends on another server, who themselves point to their friends on yet further servers and so on, as described here .
I have just published a really simple demo of hyperdata—the DOAP bean . DOAP stands for "Description of a Project". It is an ontology (i.e., a set of classes) which describes projects—their authors, contributors, Wiki pages, mailing lists, repository location, etc. In the Semantic Web, all you have to do is to name, using URIs (preferrably URLs), the things you want to speak about. This is what the DOAP people did. Then you can publish files on the web. With the DOAP button installed into NetBeans IDE, you can then drag and drop the URL of a project page you are looking at (say https://sommer.dev.java.net/ ) onto the button and it will go and fetch the file, with this result:
From there on, it is just up to one's imagination what one can do with this information. The DOAP button does one very simple thing at the moment—with a click of a button it will download the project for you. So you can drag and drop a project into NetBeans IDE now.
For DOAP to really fully use the power of hyperdata, such files would have to also link to other projects. I am trying to get them to add a "doap:dependsOn" relation, which would relate two projects where the first project depends on the second. Then you could import all the dependent projects too, or at least know where their documentation is or their source code... All of this is open source and I am very happy to add contributors to the project. There is just too much to do here for one person!
Another project I am going to be working on, in the immediate future, is a Semantic Address Book, that would read and write these hyperdata foaf files . So stay tuned...
What other cool RDF-based open source applications do you think would be helpful?
I think it would be nice to have a Java Component that does a little what Tabulator does. Tabulator is a a plugin and an AJAXy application for Firefox that allows you to browse RDF files.
So you can add my foaf name ( http://bblfish.net/people/henry/card#me ) into the box and then browse information from there. It is in many ways quite primitive but it does give one a good feel for what hyperdata is. The interesting difference with a web browser is that you don't move from one page to another, the data just keeps getting merged in one application.
This is certainly not the only way to present hyperdata, by the way. You could create hyperdata versions of iTunes, iPhoto, AddressBook, or any other application you choose to think of, where they would not look very different from the ones we know...
Tell us: What two things have you learned this week that you didn't know at all last week?
This week I wrote two editors for NetBeans IDE, using the Schliemann framework (the project name for the Generic Languages Framework API)— one for the extremely simple RDF syntax, called NTriples, and the other for the more human-friendly superset of it, called Turtle.
Here is a section of my NTriples editor:
And here you see part of my Turtle editor:
This was the first I had learned about Schliemann and it only took a day to get some very useful functionality out of it.
I also learned that, when doing byte code rewriting, having a good Java Decompilation tool is like switching on the light. I found JAD last weekend and finally I could see what I had been doing. So I immediately set about to rewrite the whole so(m)mer framework . It is a lot better now.
Finish this sentence: "In 5 years time, Java...
... will be completely RDF enabled, and reasoning may even be part of the core VM."
Who or what was the greatest influence in your Java development career?
It was the student at Imperial College, London, who shouted "Eureka!" in 1995 when he found an early alpha version of Java, then set out to write a demo 3D visualization application that used the processing power on a cluster of Sun machines from the computing labs. The guy was really good.
What do you know now that you didn't know 1 year ago, about Java code?
A little over a year ago I did not know anything about byte code rewriting or aspect oriented prgramming. So, I asked around at the the Paris Open Source Get Together (OSSGTP) about what lightweight library I should use to make a Hibernate-like framework for RDF. Emanuel Bernard suggested I look at javassist, which was used at JBoss to develop Hibernate. Javassist allows you to insert methods, fields, interfaces, and behavior into bytecode, by simply writing out some Java code in strings, which is nice, because I did not really have the time to get down to learning byte code programming. I was able to get it to work quite quickly, but it took some time to understand how to debug it. I was blind until I learned to catch some exceptions thrown by the framework and log them. I finally got to see clearly last week when I used JAD. (You can see I have not been working continuously on this.)
If you could change one thing about Java, it would be...
...to build RDF into the fabric of Java. I am working on this, and don't think it will be that difficult.
I am quite intrigued with what is going to happen with continuations and Aspect Oriented Programming.
If you could spend two hours in conversation with someone in the programming world, who would it be and why?
With someone who could help me get better at Java2D and visualisation. I need to learn this really well. A good demo needs great visualization. So I am going to be reading Filthy Rich Clients next!
Is there a tip or trick, or insight, you'd like to share with us about something that everyone should, according to you, be aware of about Java?
Hypertext and hyperdata work because of the URL, the Uniform Resource Locator. The URL (or its generalised URN) is to the (hyper)web what the pointer is to Java. This is where the big difference between these two ways of thinking comes from: the JVM is a closed world of information, which is what makes it fast, but partial; the web is an open world, which is so vast it can never be fully be explored. In your local JVM, it makes sense to count pointers, on the web that makes no sense. Both worlds are complementary though.
7 replies so far (
Post your own)
Re: Exploring Hyperdata with Henry Story
WTF was that self-centered cr*p ?Re: Exploring Hyperdata with Henry Story
OK, Martin, please be niceRick
bestuff.com - the best stuff in the world
Re: Exploring Hyperdata with Henry Story
Martin,does your feeling that this was self centered stem from the intro sentence "I am me, and I am always doing that here." ?
I am asking, because in case you did not realize, I am not you, and neither is anyone else here, so they may have difficulty guessing what the reason you made that statement were.
Interestingly enough, words such as "I", "you", "me", "here", "now" and "actually" are all indexicals [1]. That is they get their meaning by reference to the author. On the web we have something similar: relative URLs. A relative url is a short hand for the full URL. It requires knowledge of where the document was fetched from, in order to be able to properly be able to dereference it. Usually it is possible to keep track of that information.
So we are back to the problem of reference. In Java all the objects you reference are indexed to your virtual machine. You cannot easily escape from its bounds. The Web gives us the tools to do this on a global scale through the use of URIs: Universal Resource Identifiers.
[1] http://en.wikipedia.org/wiki/Indexical
Re: Exploring Hyperdata with Henry Story
> Martin,>
> does your feeling that this was self centered stem
> from the intro sentence "I am me, and I am always
> doing that here." ?
>
> I am asking, because in case you did not realize, I
> am not you, and neither is anyone else here, so they
> may have difficulty guessing what the reason you
> made that statement were.
Good reply
Having developed tools/applications taking advantage of the semantic web technology (through jena). It is clear that the potential of the technology is mind boggling and still way under the radar. Although, I cannot tell much about our use of this technology (due to patents pending) suffice to say that the domain of applicability is vast and still largely unexplored.
It is very refreshing to see that other people are following the same path
-- Javolution: Everything should be made as simple as possible... -- JScience: But not simpler!
Re: Exploring Hyperdata with Henry Story
What I find interesting is that so much of this stuff is really "under the radar". A group of visionaries are working in this area, while "the rest of us" are not only uninvolved, but also unaware of what's going on. That's always how such things happen, I suppose. The only difference here is that one can be aware of this process, and even contribute to it, so the openness of the Web 3.0 developments, rather than its "under the radarness" is one of its defining features, in my humble opinion, which at least potentially enables more input than would otherwise be the case.Re: Exploring Hyperdata with Henry Story
hyperdata,interested, It's new concept?Hope know more about it.
Re: Exploring Hyperdata with Henry Story
> hyperdata,interested, It's new concept?It's not so much a new concept, as the clearest way to understand what is original in the Semantic Web program. It's the Web part of "Semantic Web". Most of the research has focused on the "semantic" side of things. This helps in one word, bring the web clearly back into the picture. I would suggest that it is easier to understand the whole project by thinking of it in terms of hyperdata.