Wednesday, August 31, 2005

Swing on Windows Vista

Swing in Windows Vista

I found a screenshot of NetBeans on Windows Vista, which looks awesome! I really like the look & feel! I find it really hard to believe, that no code changes were necessary to get the nice Vista look.

Monday, August 29, 2005

Java BluePrints

The Java™ BluePrints Solutions Catalog is a new project from the Java BluePrints program. It consists of a set of guidelines and best practices and small applications to illustrate these guidelines on the J2EE 1.4 platform.

There is a lite version, which you can view online, and there is a full version, which you can download from project web site. I've only browsed the lite version so far and I like the best practises on web services. I think it's a good resource, when you start developing a new EE application, at least for me as a EE novice.

Saturday, August 27, 2005

Star Office 8 Beta Download

Since I still receive inquiries about Star Office 8 Beta, I uploaded it to my web space. It's about 170 mb, which you can download from my download site.

I've been testing the beta for about half a year now and it's very buggy! I suggest only to use it in testing environment, and not in production! I used it to write a report about my internship, which was a big mistake! I found so many bugs, that I regret not using Microsoft's Word!

Thursday, August 25, 2005

Direct Web Remoting

AJAX is all the rage, but who wants to write all that JavaScript code to mess with DOMs, XMLHttpRequest, etc.? With Direct Web Remoting (DWR), you don't have to. Joe Walker shows how this java.net project provides solutions for developing both the server- and client-side pieces of an AJAX web application.

rating comment: The article gives a straight high level overview of Direct Web Remoting. Since it's on java.net, I would have expected a little more technical details, like what's going on behind the scenes. But if you don't have any experience with AJAX or Direct Web Remoting at all, it's a nice introduction.

I dug a little deeper and I must say I am quite impressed of Direct Web Remoting. It really makes it easy to develop AJAX web sites, and I definitely gotta check it out! The most impressive thing is, how easy it is to fill data into HTML components, using the util functions. It's really helpful and saves a lot of time and work!

About Prototyping

Do you prototype your GUIs? Should you? A great prototype can help work out the kinks in the flow of a GUI. But it can also get rushed into production as a seemingly (but not really) ready product, if you do too good a job of showing how your app will work. In this installment of "Interaction Happens," Jonathan Simon surveys the range of prototype options available to the GUI developer.

rating comment: I think prototyping is important, especially when it comes to graphical user interfaces and usability engineering. You cannot develop a gui without involving the people who are going to work with it and what better way to do that than using a prototype. This article gives a great introduction to prototyping and is a good start to dive deeper.

Wednesday, August 24, 2005

Google Talk

Mit dem offiziellen Start von Google Talk haben sich die Vermutungen bestätigt, dass Google einen eigenen Instant-Messaging-Client auf Jabber-Basis anbietet, der neben Instant Messaging auch VoIP unterstützt, um darüber mit anderen Google-Talk-Nutzern gratis zu telefonieren. Überraschend ist dabei, dass Google Talk derzeit eine Unterfunktion von Gmail ist, so dass zur Nutzung des im Beta-Test befindlichen Dienstes ein Gmail-Konto erforderlich ist.

Ich habe das Teil noch nicht getestet, aber es sieht schon recht nett aus. Ich bin gespannt ob es sich durchsetzten wird, denn Messenger wie MSN oder ICQ sind ja mittlerweile etabliert. Interessant finde ich, dass Google in zuküntigen Versionen SIP unterstützen will, denn dann wäre Google Talk eine echte alternative zu Skype.  

Tuesday, August 23, 2005

Wiki Software II

As I was searching the net for a suitable wiki solution, suitable for me means matching my requirements which are: easy to install and maintain, export capability and standalone application which runs on an usb flash stick. I found a couple of great sites which give a very good overview of all the wiki engines.

The first site I found was wiki.splitbrain.org, irrespective of the disturbing name, it gives a very good overview of wiki engines. The site is well maintained, at the time of my visit the last update was just two days ago. Unfortunately all the wikis listed on this site don't satisfy my requirements, since they are all web based.

Another site I found was c2.com, the cool thing about this site is that it lists all wiki engines by technology/programming language. For me this site gives the best overview of current wiki engines. Like the other site it's also well maintained, last update was two days ago. So this was my starting point, which led me to the first wiki engine I checked out: XoYnKi.

XoYnKi is a Java based wiki engine, which runs in a small proprietary application server. You just need to download the jar and execute it, the console output will tell you on which port the server listens. Then you open your browser and point it to this site, then you are ready to go. This would have been the perfect solution for me: easy to install and maintain (it's Java) and standalone. Unfortunately there is no documentation, or maybe I didn't find it, and there is no way to export your data. Since there is no development site whatsoever, which means no progress, no improvement, no bug tracking and so on, I think that's not the solution of my choice.

The next wiki engine I checked out was TiddlyWiki. It's based on HTML, CSS and JavaScript, which means there is no server necessary whatsoever. This is a very charming approach, since it really only needs one HTML file. From the website you can download an "empty" wiki HTML file and start your wiki instantly. There is a development website and a good tutorial. You can export your data to an rss feed and you can save backup HTML files of your wiki. Unfortunately the JavaScript is a little dull on slow machines, which gives you a hard time when trying to navigate quickly. But I think altogether think approach is very appealing and fits my requirements perfectly.

The third wiki application I took a look at is the "Wiki on a stick" solution of MediaWiki. It consists of a standalone server, called Uniform Server, which serves as platform for the MediaWiki software. Uniform Server is really cool, it contains Apache Webserver, PHP 5, MySQL, Perl and phpMyAdmin. It runs as a standalone application, you just download it and run the start.bat script that's it. The server will create a drive with letter w, that's where you'll find the directory www, where you'll put MediaWiki. MediaWiki is the same software wikipedia uses, and is therefore stable and tested. It is easy to install and the fact that it runs with PHP and MySQL maks it easy to maintain. The "Wiki on a stick" solution is great! I really like it, not only because it satisfies all of my requirements.

The conclusion is, that there are solutions out there that fit the requirements: easy to install and maintain, export capability and standalone application which runs on an usb flash stick. For me I think the TiddlyWiki is the best solution, since it's small and compact. The "Wiki on a stick" solution might be overkill for my purpose, but I like the solution a lot. I also tested SnipSnap, which runs on an embedded servlet container (jetty), but in my opinion it's more to a blog than a wiki. Well, I haven't decided yet, there is still some time to evaluate.

Google Messenger

Angeblich bringt Google am morgigen Mittwoch ein "Kommunikationswerkzeug" auf den Markt, wobei es sich vermutlich um einen Instant-Messaging-Client handelt. Wie nun bekannt wurde, wird es sich dabei wohl um einen VoIP-Dienst handeln, der das Jabber-Protokoll verwendet. Google würde damit einerseits in Konkurrenz zu Skype, aber auch in direkten Wettbewerb zu den übrigen Anbietern von Instant-Messaging-Funktionen treten.

Ich weiss nicht was sich Google davon verspricht, denn eine Konkurrenz zu Skype kann man nicht über Nacht auf die grüne Wiese stellen. Natürlich hat sich die Kernkompetenz von Google schon lange vom Such-Geschäft auf andere Geschäftsbereiche ausgebreitet, irgendwie passt so ein Messenger schon ins Bild. Vielleicht gibts ja bald eine integrierte Lösung bei der man GMail und Google-IM gemeinsam nutzen kann. Darf ich GMail denn überhaupt noch sagen?

Monday, August 22, 2005

Wiki Software I

In daily life, my blog is my knowledge management software, my knowledge base. I blog a lot about Java technology and software engineering, cause that's my area of expertise, at least that's what I want it to be someday. Java is a broad technology and unfortunately I tend to forget things easily, so whenever I have one of these "wait I heard about this sometime" moments, I search my blog and get the information I want - or at least the link where I can find more information. So I think it is very important to have a knowledge base, which not only supports you when looking up information, but can also be helpful when documenting e.g. software. Look at JBoss, they are using a wiki base application to document/support their products.

I know there is Google, which covers billions of websites, but personally I think it's difficult sometimes to find the right information. If you start a Google search with a Java related keyword, you'll probably get hundreds of pages and you have no idea which site contains the information you are looking for. That's one reason why I started my blog, to get the information I'm looking for without going through dozens of links. Another nifty thing I introduced to my blog is an article rating, which I use to quantify the quality of an article I read.

For my upcoming thesis I want to use a similar approach, the requirements are the same: I need information, fast and easy! The technical conditions are not the same though. I'm looking for a knowledge management software, which must work as a standalone application, meaning no additional server or database needs to be installed. Furthermore it has to work on a usb flash stick, so that I can use it on any computer. I know a web application suits these technical requirements perfectly, but I will be working offline from time to time. I'd also like to have a glossary like solution, maybe with export capability to use the data in my preparation. I think for all these requirements a wiki based application is the best choice.

Google Desktop Sidebar

Von der Windows-Desktop-Suche Google Desktop Search wurde eine neue Version veröffentlicht, die vorerst nur als Beta-Version zur Verfügung steht und nun mit einer Sidebar ausgestattet ist, die einen Infobereich links oder rechts auf dem Bildschirmbereich anzeigt. Die Sidebar informiert etwa über neue Nachrichten, aktuelle Aktienkurse, frisch eingetroffene E-Mails oder gibt einen Wetterausblick und kann noch einiges mehr.

Bin gespannt ob das neue Feature der Suche was taugt! Viel interessanter finde ich eigentlich das Gerücht, dass Google ins IM Geschäft einsteigen will, denn das wäre nun wirklich mal nen Kracher! 

Sunday, August 21, 2005

DAO Example

A couple of days ago I read an article about the Apache Ibatis DAO framework, which got me very interested. I decided to code a small example to get a closer look at the framework.

I use nearly the same domain logic as in the drools example, which is excellent to implement my "Liquor Store Example".... Anyways, I decided to use Apache Ibatis DataMapper, as an O/R-Mapping framework. Both frameworks I use here are Ibatis products, which lets them work perfectly together. Since everything comes from Apache nowadays, I thought Derby, the embedded database engine, is a good choice for a database.

So what does my example do? It implements a simple store application, which I like to call "Liquor Store". As I said, it is kept very simple. I just use a couple of domain classes to get an idea of how things could work in a real application. To get a closer look at the DAO framework, I decided to store the data of two domain objects persistently, for example the data of the "Item" domain object. I use the DAO framework, to manage the data in a persistent store, which is in my case the Derby database. For further information how things work, check out the readme file of the example.

Both frameworks, DAO and DataMapper, left a throughout positive mark! They are well documented with examples and an easy to read manual, which is sometimes a major setback when using free software. Using the DAO framework is very straightfoward and in conjunction with DataMapper very efficient. The configuration of Apache Ibatis DAO is quite simple, you just have to define the persistence mapping mechanism, in my case DataMapper, and the DAO Implementations which are being used to store the data. Configuring Apache Ibatis DataMapper is also very simple, there is one confguration file to define the database that you want to store your data to and for every persistent object there is another file which defines the mapping. The configuration part was the most time consuming task when I was developing this example. I hope there is tool support for configuration out there, which would speed things up. Programming with DAO is very straightforward, since you are programming to interfaces. This makes it easy to test your business logic with mock objects.

All things considered, I think these two frameworks are very useful and they are worth taking a look at.  

WP Plugin suggest version 0.6

This is just a maintenance release, nothing has really changed. I updated the readme file and tested the plug-in in detail. I found a couple of issues, which I am working on.

There are still small problems when using Internet Explorer, with my template they are pretty ugly though. There is also a new issue when using Firefox, which causes a lot of spacing at the bottom of my page. Altogether I am quite surprised that he plug-in works so well with WP 1.5. So I think I can anncounce WordPress 1.5 support from now on.

The latest version, which is 0.6 (I didn't do a 0.5.1, cause I wanna keep it simple), can be found at my download site or at the wp-plugins.org repository.

Saturday, August 20, 2005

Neues Blog, Neues Glück

Nachdem mein Blog vor zwei Tagen gehackt wurde, habe ich mich entschlossen auf Wordpress 1.5 umzusteigen. Da ich diese schon einmal probiert hatte, wusste ich was auf mich zukommen wird.

Der Hack fand in der Nacht von Mittwoch auf Donnerstag statt. Soweit ich das nachvollziehen kann, haben die Angreifer eine Sicherheitslücke in Wordpress 1.2 ausgenutzt, was mich dann doch zu einem Update bewegt hat. Die verwundbare Datei hat übrigens mit der Trackback-Funktion von Wordpess zu tun, die ich ja wenige Stunden zu vor gefixt hatte.

Da ich schon einmal versucht hatte auf eine neue Version von WP umzusteigen, wusste ich, dass mein Template nicht mehr funktionstüchtig sein wird. Nach einem kurzen Test hat sich dies bestätigt. Also habe ich mich entschlossen meinen Blog in ein neues Gewand zu hüllen. Das Template war im Originalzustand schon sehr hübsch anzusehen, allerdings habe ich dann doch jede Menge Anpassungen vornehmen müssen, um aus dem Gewand einen Minirock mit High Heels zu machen. Das Ergebnis kann sich meiner Meinung nach sehen lassen, auch wenn es ein wenig gewöhnungsbedürftig ist.

Was mich erstaunt hat: Meine beiden Plug-ins sind ohne größeres Customizing mit WP 1.5 einsatzfähig. Dazu gibts aber später mehr...  

Wednesday, August 17, 2005

Trackback gefixt

Nachdem ich festgestellt habe, dass das Trackback nicht mehr funktioniert, habe ich es gestern gefixt.

Aus irgendwelchen Gründen, hängt wohl mit den "Rewrite Rules" zusammen die ich definiert habe, hat die Trackback-Funktion nicht mehr funktioniert. Naja, jedenfalls hat sich jetzt auch die Syntax der Trackback-Url geändert, was manchmal zu Problemen beim Layout führt, nämlich dann, wenn die Url zu lang ist.

Mal sehen was man da noch machen kann, vielleicht findet sich noch ein Weg die Url zu kürzen.

Introduction to JDO

The Java Data Objects (JDO) specification, Java Specification Request (JSR) 12, defines an API for a standard way to transparently persist plain Java technology object and database access. Using JDO, Java application developers can write code to access the underlying data store without using any database-specific code. This article provides a tutorial on JDO. It covers the essentials of JDO and offers sample code to give a flavor of the effort involved in using JDO to persist your Java technology objects.

rating comment: Very good introduction to JDO, which grasps almost every aspect of the technology. Although it only scratches the surface, I like this article a lot, cause it gives a good overview. A couple of month ago I played around with the JPOX JDO implementation, but I couldn't get it to work smoothly, which somehow left a bad impression on me. Well, I might give it another shot, though I personally think the new EJB 3.0 persistence specification could be also worth looking at.

Tuesday, August 16, 2005

Apache iBatis DAO

The J2EE Data Access Object pattern calls for encapsulating access to a data source behind an API, giving you the freedom to change implementations or use different persistence strategies for different operations. As Sunil Patil shows, the Apache iBatis DAO framework helps you develop such a strategy.

rating comment: Great article which gives a solid introduction to DAO and the Apache iBatis DAO framework. The notion of DAO is not new to me, but this framework seems to be very cool! I like the implicit transaction and connection management, this could be really helpful. I hope I can check out the framework soon to get a closer look, cause it really got me intrigued.

Sunday, August 14, 2005

Drools Example

I made a small example, which I'd like to call "Liquor Store", using the Drools rule engine. I created a scenarion of a small store implementation that uses Drools to apply business rules.

For further details, check out the readme file that comes along with the example. It is available through my download site.

Java on Wheels

When someone mentions the hottest new mobile, Internet-enabled, multimedia computational system, what comes to mind is the latest handheld, cell phone, or PDA device. But in the not-too-distant future, you might also think of . . . your car.

Siemens VDO Automotive, in conjunction with BMW, has enabled the BMW 7, 6, and 5 series of cars with its Top Level Architecture (TLA), a Java technology-based software platform that provides for the seamless addition and integration of location-based services, web services, and multimedia functionality throughout the vehicle's entire life cycle. And as a result, TLA offers Java platform developers an unexpected but explosive new niche for developing mobile, networked device applications for the car.

Very cool! I like the idea of developing applications for my car...if I had car.

Monday, August 8, 2005

Set the rules with JSR 94

It's almost too easy to express your business logic as a spaghetti-code fiasco. The result is hard to test, hard to maintain, and hard to update. Rule engines offer an alternative: express your business logic as rules, outside of your Java code, in a format even the business side of the office can understand. Paul Browne uses the open source Drools framework to introduce the idea.

rating comment: Nice article which gives a good introduction to rule engines, their use and notion. I've checked out the drools implementation of JSR 94 and made a small example which I'll upload sometime this week.

I'm not too happy about drools, cause I think the complexity, at least using drools, is only being pulled out of the code and put into an XML file. And now you have your code in two different files, which doesn't simplify things, it makes them worse! Okay you can use Java, Groovy or Phyton to define your rules in the XML file, but that won't reduce the complexity of implementing business logic. With drools, you cannot delegate the definition of rules to business experts, since they need to have programming experience.

There is one advantage though: You can change your business logic at runtime! Unfortunately that's the only one I see.

Saturday, August 6, 2005

Friday, August 5, 2005

A Conversation with Erich Gamma

  • In Part I, Gamma gives his opinion on the appropriate ways to think about and use design patterns, and describes the difference between patterns libraries, such as GoF, and an Alexandrian pattern language.

  • In Part II, Gamma discusses the importance of reusability, the risks of speculating, and the problem of frameworkitis.

  • In Part III, Gamma discusses two design principles highlighted in the GoF book: program to an interface, not an implementation, and favor object composition over class inheritance.

  • In Part IV, Gamma discusses how design patterns are problem solution pairs, how design patterns help you understand intent and tradeoffs, and how to become a better designer through practice.
Great series of articles about different aspects of object oriented programming. My favorite article is the one where Gamme dicusses Flexibility and Reuse, cause I think there are a lot of people out there using these terms without any idea what they mean, especially reusability. "We are using Java cause it fosters reusability of existing code!" - you hear that a lot, but unfortunately most of the time reusability is being neglected when developing software. And if there is reusability, then people are mostly using it the wrong way!

Wednesday, August 3, 2005

Hints on Listeners

The Observer pattern, most often seen in Swing development, is also very useful for decoupling components in situations other than GUI applications. However, some common pitfalls with registering or invoking listeners exist. In this installment of Java theory and practice, Java therapist Brian Goetz offers some feel-good advice on how to be a good listener -- and how to be nice to your listeners, too.
rating comment: This article covers a lot of useful hints on listeners. Especially the thread-safty issue is one of the most dangerous sources of error, which I can definitely relate to. But personally I think the biggest problem is what the author calls "Lapsed listeners", cause if you don't deregister listeners, you'll certainly run into problems, especially if you have large Swing applications.

Tuesday, August 2, 2005

Mobile SOA

This article describes how to implement SOA on mobile devices and shows how to implement a simple messaging application using mobile SOA design principles. It also points to some of the security implications and how to handle them. Furthermore it adds the ability for devices to become involved in atomic transactions. Transactions are vital in ensuring that all of the relevant resources that a system provides are coordinated and managed so that the overall state of the system remains consistent.
Cool concept of connecting mobile applications to business services. I really like the RMI/Proxy stub generator and I'm definitely gonna check it out sometime if it's possible to use it with your own mobile gateway.