Saturday January 28, 2006

Confluence Personal Wiki

Atlassian offers the Confluence Personal Wiki (a.k.a. the ‘free beer edition’). It doesn’t give you any support, and is limited to 2 users only, but hey - its free!

Btw: Charles, Confluence lead developer, has posted a good read why wiki is a subversive technology and Joel admits that he judges wiki more positive than he has in the past.

Posted on Jan 28, 2006 at 19:47 (MET) | Permalink | Add comment

Friday January 27, 2006

Comparison Table: Ant vs. Maven

I just found a nice comparison chart of Ant vs. Maven in this article by Julien Dubois:

  Ant Maven
Installation Very easy Very easy (very similar to Ant)
Time to start a new project 5 minutes 15 minutes
Time to add a new functionality 10 minutes to add a new target 2 minutes to use a new goal
Time to learn for a new developer 30 minutes. Very easy to understand, and very good tool support. 2 hours. Can be confusing at the beginning.
Standard layout No (which is good; you can do whatever you want). Yes (which is good, all your projects will look the same).
Multi-project support Yes, but you have to do your own master build file. Yes, with the Maven Reactor
Documentation generation No standard way to do it, but there are plenty of available tools. Yes
IDE integration Yes Very basic

Posted on Jan 27, 2006 at 17:26 (MET) | Permalink | Add comment

Thursday January 26, 2006

Social Software in Software Development

If you start working on an existing project (like I did recently) it is always a problem to find out, who is responsible for which parts of the code base. For this scenario a research team at UCI has developed an eclipse plugin, which analyzes Java code in a CVS repository and spits out a dependency graph - both for code and developers.

If you mix this kind of software with the principles of social software one can stipulate software re-use in large-scale, distributed systems and teams (think of SOAs). Great stuff IMO!

Posted on Jan 26, 2006 at 20:37 (MET) | Permalink | Add comment

Thursday January 26, 2006

Differences between Dummy, Fake, Stub and Mock

Martin Fowler has posted a plug for Gerard Meszaros’ book about patterns for automatic testing with the various XUnit frameworks (the author is probably a thoughtworks fellow). However Gerald has categorized objects used for testing:

  • Dummy objects are passed around but never actually used. Usually they are just used to fill parameter lists.
  • Fake objects actually have working implementations, but usually take some shortcut which makes them not suitable for production (an InMemoryDatabase is a good example).
  • Stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what’s programmed in for the test. Stubs may also record information about calls, such as an email gateway stub that remembers the messages it ’sent’, or maybe only how many messages it ’sent’.
  • Mocks are pre-programmed with expectations which form a specification of the calls they are expected to receive. They can throw an exception if they receive a call they don’t expect and are checked during verification to ensure they got all the calls they were expecting.

Posted on Jan 26, 2006 at 20:19 (MET) | Permalink | Add comment

Thursday January 19, 2006

Import SSL Certificates in Java

SSL certificates which are not signed by a top-level CA cause troubles. For example browsers display a warning about the untrusted certificate and users have to click “accept for this session” or import it to their trusted certifiates. In Java, things are similar: You have to tell Java to accept an untrusted certificate by importing it into the JRE truststore. However, this is not as easy and straight forward as is could be, so I thought Iwrite up a short howto:

  1. Import certificate first. Please note that the default store password is changit (I think this password won’t be changed on 99,9% of all Java installations).
    C:\> keytool -import -alias test -file untrusted_cert.cer -keystore C:\j2sdk1.4.2_06\jre\lib\security\cacerts -storepass changeit -noprompt
  2. Tell your JVM on startup to use the cacerts file (which is in the JRE installation directory) using the following parameters:
    -Djavax.net.ssl.trustStore=C:\j2sdk1.4.2_10\jre\lib\security\cacerts \
    -Djavax.net.ssl.trustStorePassword=changeit \
    -Djavax.net.debug=ssl    // that’s for debugging only

Especially the second bit is not obvious, as you might think that Java would automatically use the cacerts truststore…

But once you know it its not that hard anymore - and now you know it. :-)

Posted on Jan 19, 2006 at 19:25 (MET) | Permalink | Add comment