Wednesday, April 28

This blog has moved


This blog is now located at http://danielstephan.blogspot.com/.
You will be automatically redirected in 30 seconds or you may click here.

For feed subscribers, please update your feed subscriptions to
http://danielstephan.blogspot.com/feeds/posts/default.

Thursday, March 8

Beans Binding

Hello folks,

as I have some spare time now (being on leave for two weeks), I would like to point your attention to the JSR-295 "Beans Binding" databinding framework for Swing, which seems to be near completion. Proper databinding support looks to me to become a big plus for rich client applications with Java.

The lead of the project has very recently been taken over by Shannon Hickey, who introduces himself in this forum post at java.net: http://forums.java.net/jive/thread.jspa?messageID=206602&tstart=0#206602 He writes, the project would be "almost ready" for an initial public release.

But how exactly does a databinding framework ease the development of rich client applications? For one part, it hides the tedious work of creating listeners, binding them to widgets and having them update your Java beans behind a convenient automatism. This obviously makes the development more easy. For another part, the automatism allows GUI editors like Netbeans to actually support databinding visually. Roman Strobl (Roumen) has put together an excellent demonstration using Flash, which shows how Netbeans 6 might do the job. This stuff looks very neat, it is exactly what I was missing in Java Swing.

The Beans Databinding project is not the only effort to provide databinding in rich client applications. Specifically, there is
The article "Understanding JFace databinding in Eclipse" on developerworks compares both frameworks and shows how they are typically used. If I pull out my crystal ball and try to see the future, I think I will see the JSR-295 API survive the two others in the long run. How exactly will have to be seen as soon as a public release is out. After all, the JGoodies framework is (I guess) used in a number of projects already, so it won't go away too quickly. For the JFace databinding... I would hope that they review their framework design, comparing their goals with what the future Beans Databinding standard API can bring, and conclude that it is better to use the standard API (with some extensions possibly) instead of writing something else entirely. As it is new and not yet fixed, the chance is still there to switch to the standard API (if possible). (effjay)

Thursday, August 11

How to classify

Today I read an essay by Clay Shirky about the problems of classification that we face in nowadays digital world. I really liked that article! If there is a librarian living somewhere in your heart, please click on the link hidden in the topic for this entry and read his text, it is entertaining and informative both at the same time.

In essence, he tells that a hierarchical classification like the one that we find at DMOZ or even at Yahoo proves to be inferior to Google, and even more to what del.icio.us gives us. The main reason seems to be that most classification schemas are based on the assumption of a shelve and that a book can be in one place only, while it can be written about multiple topics at the same time. (It may even mean different things to different readers, I might add.)

Reading his text, one might come to the conclusion, that those classifications are to be avoided and bad things. I do not agree to this conclusion fully, though. A hierarchical system may not be perfect, but it still basically documents the contents of the information system. A user can, while browsing the system, see what kind of information she may expect to get out of it. A system as broad as Google, which covers probably every possible topic one can think of, may not benefit much of it. But as soon as the system is smaller and the information stored in it less diverse, it pays off to know what is in there and what is not.

A hierarchy easily allows to see to the boundaries of the information system. If the system knows only links, then even after hours of browsing through documents about, say ... cars, a user can never know for sure, if one of those other links somewhere points to a totally different world of non-car-topics. If the user has a hierarchy in front of her which says Vehicles at the top, then she knows right from the start, that it would not pay off to look for information about mp3 players or other non-vehicles.

In smaller setups it may also be impossible to benefit from the community effects that drive del.icio.us, forcing the system architect to look for other solutions. Like a classification.

In practice I guess, if one thinks in smaller terms than Google, a classification may still be helpful. The perfect information system probably provides the user with everything - a classification, fulltext search as well as user-provided labels.

So far my thoughts for tonight :)

Cheers,
effjay

PS: (By the way: I agree that del.icio.us implements a very innovative and interesting idea, but I still... I don't really use any bookmarks. I have Google, why do I need bookmarks :-) How about you? Are you actively using del.icio.us services?).

Monday, April 18

CocaCola goes Open Source? :)

Another off topic post, click on the topic and you'll see a recipe for cola under GPL. I think thats funny :)

cheers
eff

Trillian Instant Lookup

This is rather off topic, but something I just stumbled upon. The cerulean guy praises their instant lookup feature, which I personally find rather annoying in its current form. Because of which I disabled it.

Not because I dislike the feature, but because it happens to disturb while not being used. As soon as the mouse pointer accidentally sits on a word which wikipedia has information about, it shows the associated entry. Which then disturbs my concentration and forces me to move the mouse away to be able to keep typing. Also, because I communicate in german most of the time, certain words are being underlined and activated, which have nothing to do with the english wikipedia entry. And there is no configuration possible to select a default language, also a language detection would be helpful.

In the rare cases when I really don't know the meaning of a word, it is nice that Trillian gives easy access to the wikipedia entry. But, as said, most of the time it gets in the way.

So, if you are developing a nice feature for your UI, please try to keep it as passive as possible. Showing information in a kind of push-manner might seem nice first, but in reality it proves quite annoying if you actually try to work or chat. Offer help, but let it sit there passively until the user decides he or she would like to use it (signaling this for example through clicking on the underlined word).

so long, cheers :)
eff

Sunday, April 10

Effjay Foundation Classes

I put some source code in the public domain. It manages tasks and might ease the one or the other multithreading implementation. Check it out and tell me what you think.

Cheers
Eff

Friday, March 25

Linear Algebra + Java = ?

I like Java. As a matter of fact Java is the one language that I get around with best and which I like to use in just as many projects as I can. The current project needs a lot of specialized mathematics, most of which in the area of linear algebra - meaning matrices and their decompositions, determinants, eigenvectors, singular values, stuff like that. I want to do that with Java as well. The JDK doesn't bring the needed algorithms with it, so what to do?

As I don't like to implement that kind of stuff myself (which is fairly complicated to do, and the result will probably not work very well) I was looking at the web to see where to find implemenations of suitable algorithms. Here the results of my research:

First of all I should mention that (being a student and not getting any money for that mainly scientific project) I was looking for cost-free code. So, to get it over with, there are of course some commercial mathematical systems - if you care, here are some links: Maple, Matlab, VisualNumerics All of those products are much more comprehensive than anything you will find in the open source. Matlab is probably THE mathematical system. Before you wonder, because they don't specifically talk about Java - there exist interfaces allowing you to call their interfaces from Java.

But I was after free code for linear algebra. What I found at first was LAPACK. This is a library in Fortran77 and pretty mature. It doesn't contain the newest research, but it works. It works tightly together with the BLAS codebase, so both always come together. There exist optimized implementations from AMD as well as from Intel for their processors. I have also seen code from SUN for their SPARC architecture. LA functions are fairly complex and may take some time to compute, so the need for the best possible implementation, optimized for the system at hand, is there. I don't know how well these optimized implementations really work. I didn't try, because I am still after a version for Java.

At this point I was already a little disappointed, because there just won't be any optimized implementation with Java, it will run within the Java VM and won't know anything about cool special features of the CPU. Or, in other words, it relies on the VM to know about these features and use them. If it doesn't, well - then it doesn't. But lets get over this disappointment and look at the projects.

JAMA - This one is a pure Java implementation of basic linear algebra functions. It can compute SVD, also LU decomposition and QR. It has a fairly nice API and is easy to use. It doesn't do SVD fast enough for large matrices, but as it has a very low learning curve, I do recommend it for smaller computations.

JLAPACK - This one is basically blas+lapack for Java. It was converted automatically from Fortran77 and incorporates none of these: OOP, a plausible API. It is a bunch of methods with names like DGESVD and it returns results through call by reference (filling passed double[] arrays) instead of by return values. It takes some detective work to understand which parameters are needed and why. Also to understand which function does what. There is some kind of pattern which relates the function name to what it is doing. I managed to call DGESVD and was pretty happy about that already. I would not recommend to use it, because of the lack of any kind of ease of use. Although you may still prefer it, if you need some of its functions. It is more comprehensive than JAMA, so you may not be able to get around it. I did get around.

JScience - This one looks promising (at least it got a pretty web site). It is even an active project, most recent version (1.0.4) at the time of this writing is from 26. January 2005. (Which makes it 6 years younger than JAMA and I think 250 years younger than LAPACK). It already has some implementations of mathematical functions, but I do miss the SVD (because I need it). The linear algebra part of this package is lacking important features. It has a similar implementation of a matrix class like JAMA does (which adds SVD and QR). It has LU, though. As this is (other than JAMA) actively developed, it should be observed. The API looks well and the author plans to add more featurs this year. It doesn't have enough for me right now, though. If you are a physicist, you may get more value from this library than I do.

GTP (look in the software section) - This one is not a library but a tool. It parses text documents and indexes it using LSI. It uses a very efficient SVD function based on the iterative lanczos method. Besides, this is basically a port to Java from SVDPACK. It doesn't contain all the functionality from SVDPACK but instead only provides those functions which the used SVD algorithm needs. Try to not look at its design from an OOP point of view, because you won't like it. Its ugly, but still efficient. I am using it for SVD, interfacing it from my own Java application.

Thats what I found, hope it sheds some light on the topic.

So long, have a nice day.

Eff

Thursday, February 10

digital music without DRM

This one is a little off-topic, but otherwise quite hot. If your music preferences are a little off-mainstream you might be interested in this new offer. Key features are: no DRM, high quality mp3 (192kbps), 88cent per song.

I tried to test it yesterday and the server behaved quite slow. The registration procedure was buggy also, probably only little tested with international customers in mind. But I suppose they will get rid of those little illnesses over time. So, keep an eye on it.

Cheers
Eff

Free License For IDEA

JetBrains grants free IDEA licenses for everyone who is active committer to an active open source project. Anybody want to start such a project? I sure would like that license :)

Cheers
Eff

New EJB3 Draft

TheServerSide reports that a new EJB3 draft has been published. Read it, if interested. In case you don't why you should be interested: EJB3 addresses lots of the concerns that developers had in the past about EJB. It should become easier to use and more elegant. It incorpoorates ideas from Hibernate and JDO.

Current draft:
http://jcp.org/aboutJava/communityprocess/edr/jsr220/index2.html

Cheers
Eff