<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nils Preusker</title>
	<atom:link href="http://www.nilspreusker.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nilspreusker.de</link>
	<description>Pragmatic Technologist</description>
	<lastBuildDate>Tue, 23 Mar 2010 10:44:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SVN + OS X + &#8220;Umlaute&#8221;</title>
		<link>http://www.nilspreusker.de/2010/03/23/svn-os-x-umlaute/</link>
		<comments>http://www.nilspreusker.de/2010/03/23/svn-os-x-umlaute/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 10:44:19 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=333</guid>
		<description><![CDATA[The Mac OS file system —Mac OS Extended (Journaled)— stores umlaut characters as two separate letters (i.e. &#8216;a&#8217; and &#8216;¨&#8217;). This is referred to as NFD or Normalization Form D with canonical decomposition (see &#8220;Unicode Standard Annex #15 &#8211; Unicode Normalization Forms&#8221;, http://unicode.org/reports/tr15/#Norm_Forms).
This behavior can have unfortunate side effects in applications. Especially remote applications that work [...]]]></description>
			<content:encoded><![CDATA[<p>The Mac OS file system —Mac OS Extended (Journaled)— stores umlaut characters as two separate letters (i.e. &#8216;a&#8217; and &#8216;¨&#8217;). This is referred to as NFD or Normalization Form D with canonical decomposition (see &#8220;Unicode Standard Annex #15 &#8211; Unicode Normalization Forms&#8221;, <a href="http://unicode.org/reports/tr15/#Norm_Forms" target="_blank">http://unicode.org/reports/tr15/#Norm_Forms</a>).</p>
<p>This behavior can have unfortunate side effects in applications. Especially remote applications that work path based and interact with different operating systems can run into problems here.</p>
<p>I came across this when I tried to access a subversion repository that contained file names with German umlauts from my Mac. I am running subversion 1.6.5 and when I check out a file with an umlaut in its name, executing &#8220;svn stat&#8221; will list the file twice, once as missing (with an &#8216;!&#8217;) and once as unversioned (with a &#8216;?&#8217;). A search in the collabnet discussion forums finally confirmed that this is a know issue. The following links provide some documentation:<br />
<a href="http://www.opensimwiki.net/index.php/SVN" target="_blank">http://www.opensimwiki.net/index.php/SVN</a><br />
<a href="http://svn.apache.org/repos/asf/subversion/trunk/notes/unicode-composition-for-filenames" target="_blank">http://svn.apache.org/repos/asf/subversion/trunk/notes/unicode-composition-for-filenames</a></p>
<p>However, the subversion issues are just one specific bug. For application developers it is important to know that Unicode equivalence is a term to keep in mind. The wikipedia article (<a href="http://en.wikipedia.org/wiki/Unicode_equivalence" target="_blank">http://en.wikipedia.org/wiki/Unicode_equivalence</a>) mentions a bug in the samba protocol due to different representations of Unicode characters.</p>
<p>So, next time you come across an issue that involves a Mac and umlauts, <strong>Unicode equivalence</strong> might be the term to look for.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2010/03/23/svn-os-x-umlaute/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Serializable and serialVersionUID</title>
		<link>http://www.nilspreusker.de/2010/01/14/java-serializable-and-serialversionuid/</link>
		<comments>http://www.nilspreusker.de/2010/01/14/java-serializable-and-serialversionuid/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 12:32:13 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=317</guid>
		<description><![CDATA[Here&#8217;s a question:
Is a serialVerionUID required on abstract classes?
My first thought: No way! If the serialVersionUID is used by the serialization mechanism to check whether some serialized data is compatible with a serializable class, abstract classes (that will never be instantiated, and thus, never be serialized directly) don&#8217;t need one! The problem is that the [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a question:</p>
<blockquote><p>Is a serialVerionUID required on abstract classes?</p></blockquote>
<p>My first thought: No way! If the serialVersionUID is used by the serialization mechanism to check whether some serialized data is compatible with a serializable class, abstract classes (that will never be instantiated, and thus, never be serialized directly) don&#8217;t need one! The problem is that the entire inheritance tree is checked when a class is de-serialized — and that includes abstract base classes. A simple example illustrates the problem:</p>
<p>If we have an abstract base class &#8230;</p>
<pre>import java.io.Serializable;

public abstract class Base
implements Serializable {}</pre>
<p>&#8230; and a sub-class that declares a serialVersionUID &#8230;</p>
<pre>public class Sub extends Base {
    private static final long serialVersionUID =
      -7913545780181427623L;
}</pre>
<p>&#8230; and we create an instance of the sub-class and serialize it to a file &#8230;</p>
<pre>...
Sub sub1 = new Sub();
try {
    FileOutputStream fout = new FileOutputStream("sub.dat");
    ObjectOutputStream oos = new ObjectOutputStream(fout);
    oos.writeObject(sub1);
    oos.close();
} catch (Exception e) {
    e.printStackTrace();
}</pre>
<p>&#8230; and then we change the base class by e.g. adding an int field &#8230;</p>
<pre>import java.io.Serializable;

public abstract class Base
implements Serializable {
    int a = 0;
}</pre>
<p>&#8230; and try to de-serialize the sub-class &#8230;</p>
<pre>Sub sub2 = null;
// Load the file and de-serialize the object
try {
    FileInputStream fin = new FileInputStream("sub.dat");
    ObjectInputStream ois = new ObjectInputStream(fin);
    sub2 = (Sub) ois.readObject();
    ois.close();
} catch (Exception e) {
    e.printStackTrace();
}</pre>
<p>&#8230; we&#8217;ll get a &#8220;java.io.InvalidClassException&#8221;.</p>
<p>If we do the same thing, but define a serialVersionUID in the abstract base class, the exception would not occur. The reason for this is, that if a serialVersionUID is not explicitly declared, the JVM will calculate a default one, &#8220;based on various aspects of the class&#8221; [1]. This is a great mechanism, at first glance it even seems to be better than creating the id manually — if the class changes, these changes are automatically reflected in the generated id. But, this mechanism can differ based on the VM If you would run this example on one VM and then try to de-serialize the same &#8220;sub.dat&#8221; file with a different VM, without modifying the base class, it is possible that you would get an &#8220;InvalidClassException&#8221;, simply because the VM uses a different mechanism to calculate the default serialVersionUID. This is why it is recommended to manually declare the serialVersionUID.</p>
<p>However, this also means that, if we change a serializable class and thereby make it incompatible with previously serialized instances, we have to update the serialVersionUID!</p>
<p>Now if we think about software maintenance and data integrity, there should be a way to migrate existing serialized data to new versions of the serializable class. I&#8217;d be interested to know if there is an official recommendation for this, but didn&#8217;t investigate further yet.</p>
<p>It would also be interesting to see how OR-mapping frameworks fit into the picture. There is an interesting thread on using Serializable and what to do with the serialVersionUID in the hibernate JIRA: <a title="Hibernate JIRA issue" href="http://opensource.atlassian.com/projects/hibernate/browse/HBX-964" target="_blank">http://opensource.atlassian.com/projects/hibernate/browse/HBX-964</a></p>
<p>I&#8217;d be interested to know what others think about this, so please feel free to comment!</p>
<p>[1] <a title="Java 6 API Docs - Serializable" href="http://java.sun.com/javase/6/docs/api/java/io/Serializable.html" target="_blank">http://java.sun.com/javase/6/docs/api/java/io/Serializable.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2010/01/14/java-serializable-and-serialversionuid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jBPM 4.3 and Spring</title>
		<link>http://www.nilspreusker.de/2010/01/06/jbpm-4-3-and-spring/</link>
		<comments>http://www.nilspreusker.de/2010/01/06/jbpm-4-3-and-spring/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 19:24:25 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[jBPM 4]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jBPM4]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=310</guid>
		<description><![CDATA[jBPM has just been released in version 4.3 and the spring integration has been changed. If you used to have an application that uses the spring integration of previous versions of jBPM, this might lead to exceptions like this:
org.springframework.beans.factory.BeanCurrentlyInCreationException:
Error creating bean with name 'repositoryService': Requested bean
is currently in creation: Is there an unresolvable circular
reference?
The problem [...]]]></description>
			<content:encoded><![CDATA[<p>jBPM has just been released in version 4.3 and the spring integration has been changed. If you used to have an application that uses the spring integration of previous versions of jBPM, this might lead to exceptions like this:</p>
<pre>org.springframework.beans.factory.BeanCurrentlyInCreationException:
Error creating bean with name 'repositoryService': Requested bean
is currently in creation: Is there an unresolvable circular
reference?</pre>
<p>The problem is that rather than having to declare all of jBPM&#8217;s services in your application context — like it used to be up to jBPM 4.2 —, the new spring integration provides access to them through the Process Engine. All you need in your application context is this:</p>
<pre>&lt;bean id="springHelper"&gt;
  &lt;property name="jbpmCfg" value="PATH TO YOUR jbpm.cfg.xml"&gt;
&lt;/property&gt;
&lt;/bean&gt;
&lt;bean id="processEngine" factory-bean="springHelper"
factory-method="createProcessEngine" /&gt;</pre>
<p>Now you can inject the processEngine into your classes and retrieve jBPM&#8217;s services like this:</p>
<pre>processEngine.getExecutionService() …
processEngine.getRepositoryService() …
…</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2010/01/06/jbpm-4-3-and-spring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse on Snow Leopard (10.6.2)</title>
		<link>http://www.nilspreusker.de/2009/11/24/eclipse-on-snow-leopard-10-6-2/</link>
		<comments>http://www.nilspreusker.de/2009/11/24/eclipse-on-snow-leopard-10-6-2/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 08:22:57 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=300</guid>
		<description><![CDATA[When I downloaded and installed Eclipse (eclipse-SDK-3.5.1-macosx-carbon.tar.gz) yesterday, I started to get the following error message:
To fix this, you need to go to &#8220;Preferences &#62; General &#62; Capabilities&#8221; and check &#8220;Classic Update&#8221;. Afterwards you should be able to select &#8220;Help &#62; Software Updates &#62; Find and Install&#8230;&#8221;.
I wasn&#8217;t able to find much on the internet, [...]]]></description>
			<content:encoded><![CDATA[<p>When I downloaded and installed Eclipse (eclipse-SDK-3.5.1-macosx-carbon.tar.gz) yesterday, I started to get the following error message:</p>
<div id="attachment_302" class="wp-caption alignnone" style="width: 423px"><img class="size-full wp-image-302" title="eclipse-update-error" src="http://www.nilspreusker.de/wp-content/uploads/2009/11/eclipse-update-error.png" alt="eclipse-update-error" width="413" height="150" /><p class="wp-caption-text">Eclipse error message: &quot;Cannot complete the request. This installation has not been configured properly for software updates!&quot;</p></div>
<p>To fix this, you need to go to &#8220;Preferences &gt; General &gt; Capabilities&#8221; and check &#8220;Classic Update&#8221;. Afterwards you should be able to select &#8220;Help &gt; Software Updates &gt; Find and Install&#8230;&#8221;.</p>
<p>I wasn&#8217;t able to find much on the internet, but <a href="https://bugs.launchpad.net/ubuntu/+source/eclipse/+bug/438414/comments/18" target="_blank">this post on an Ubuntu forum</a> finally brought the solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2009/11/24/eclipse-on-snow-leopard-10-6-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Some pictures form our New England trip</title>
		<link>http://www.nilspreusker.de/2009/10/05/test-from-iphone/</link>
		<comments>http://www.nilspreusker.de/2009/10/05/test-from-iphone/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 19:16:57 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[New England]]></category>
		<category><![CDATA[USA]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/2009/10/05/test-from-iphone/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="300"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fnilspreusker%2Fsets%2F72157622545153444%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fnilspreusker%2Fsets%2F72157622545153444%2F&#038;set_id=72157622545153444&#038;jump_to="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fnilspreusker%2Fsets%2F72157622545153444%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fnilspreusker%2Fsets%2F72157622545153444%2F&#038;set_id=72157622545153444&#038;jump_to=" width="400" height="300"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2009/10/05/test-from-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technology&#8230;</title>
		<link>http://www.nilspreusker.de/2009/10/02/technology/</link>
		<comments>http://www.nilspreusker.de/2009/10/02/technology/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 16:43:24 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[prototyping]]></category>
		<category><![CDATA[sketching]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=282</guid>
		<description><![CDATA[Just came across this Lawrence Lessig quote in a really interesting article on sketching in hardware:
Technology is responsible for bringing us back from a Read Only (RO) culture to a Read-Write (RW) one&#8230;Human beings have been RW during most of our history. But for some time we stopped creating things and started consuming them instead.
So [...]]]></description>
			<content:encoded><![CDATA[<p>Just came across this <a title="Lawrence Lessig (Wikipedia)" href="http://en.wikipedia.org/wiki/Lawrence_Lessig" target="_blank">Lawrence Lessig</a> quote in a really interesting <a title="Sketching in Hardware is Changing Your Life" href="http://www.core77.com/blog/featured_items/sketching_in_hardware_is_changing_your_life_by_fabricio_dore__14769.asp#more" target="_blank">article</a> on sketching in hardware:</p>
<blockquote><p>Technology is responsible for bringing us back from a Read Only (RO) culture to a Read-Write (RW) one&#8230;Human beings have been RW during most of our history. But for some time we stopped creating things and started consuming them instead.</p></blockquote>
<p>So I decided to switch to read-write mode, post this here, and maybe give you some food for thought for the weekend&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2009/10/02/technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven Dependency Conflicts</title>
		<link>http://www.nilspreusker.de/2009/09/24/maven-dependency-conflicts/</link>
		<comments>http://www.nilspreusker.de/2009/09/24/maven-dependency-conflicts/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 14:05:50 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[mvn]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=270</guid>
		<description><![CDATA[Have you ever seen an exception like this:
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'XY' defined in class path resource
[applicationContext.xml]: Instantiation of bean failed; nested
exception is org.springframework.beans.
BeanInstantiationException: Could not instantiate bean class
[XY]: Constructor threw exception; nested exception is
java.lang.LinkageError: You are trying to run JAXB 2.0 runtime
(from jar:file:/.../WEB-INF/lib/jaxb-impl-2.1.8.jar!/com/sun/
xml/bind/v2/model/impl/ModelBuilder.class)but you have old
JAXB 1.0 runtime earlier in the classpath (at [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever seen an exception like this:</p>
<pre>org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'XY' defined in class path resource
[applicationContext.xml]: Instantiation of bean failed; nested
exception is org.springframework.beans.
BeanInstantiationException: Could not instantiate bean class
[XY]: Constructor threw exception; nested exception is
java.lang.LinkageError: You are trying to run JAXB 2.0 runtime
(from jar:file:/.../WEB-INF/lib/jaxb-impl-2.1.8.jar!/com/sun/
xml/bind/v2/model/impl/ModelBuilder.class)but you have old
JAXB 1.0 runtime earlier in the classpath (at jar:file:
/.../WEB-INF/lib/jaxb-impl-1.0.4.jar!/com/sun/xml/bind/
WhiteSpaceProcessor.class) Please remove the JAXB 1.0
runtime for 2.0 runtime to work correctly.</pre>
<p>Well, I have, several times&#8230; and the task of having to figure out which library causes this dependency conflict seemed <span style="text-decoration: line-through;">unresolvable</span> pretty scary at first! Luckily, there is the m2eclipse plug-in with its excellent dependency graph. So if you are using Eclipse, whether you are actually using m2eclipse to manage your project or not, just the dependency graph makes it worth having a look at it. I still run my maven tasks on the command line, but have m2eclipse installed, just to be able to use the graph.</p>
<p><img title="Dependency Graph" src="http://www.nilspreusker.de/wp-content/uploads/2009/09/dep-graph.png" alt="Dependency Graph" /></p>
<p>After identifying which library is causing the dependency conflict, all you have to do is to add an &#8220;exclude&#8221; node to that dependency in your pom.xml. In the above case, this snipped did the trick:</p>
<pre>&lt;dependency&gt;
    &lt;groupId&gt;...&lt;/groupId&gt;
    &lt;artifactId&gt;...&lt;/artifactId&gt;
    &lt;version&gt;...&lt;/version&gt;
    <strong>&lt;exclusions&gt;
        &lt;exclusion&gt;
</strong><strong>            &lt;artifactId&gt;jaxb-impl&lt;/artifactId&gt;
            &lt;groupId&gt;javax.xml&lt;/groupId&gt;
        &lt;/exclusion&gt;
        ...
    &lt;/exclusions&gt;</strong>
&lt;/dependency&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2009/09/24/maven-dependency-conflicts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java and Snow Leopard</title>
		<link>http://www.nilspreusker.de/2009/09/22/java-and-snow-leopard/</link>
		<comments>http://www.nilspreusker.de/2009/09/22/java-and-snow-leopard/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 11:38:46 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=259</guid>
		<description><![CDATA[I noticed that there isn&#8217;t a whole lot of useful information about Java and Snow Leopard (OS X 10.6) out there on the web. Maybe this is because there isn&#8217;t a whole lot to say about it. Snow Leopard comes with Java 6 (1.6.0_15 that is) only, which means that the links that still exist [...]]]></description>
			<content:encoded><![CDATA[<p>I noticed that there isn&#8217;t a whole lot of useful information about Java and Snow Leopard (OS X 10.6) out there on the web. Maybe this is because there isn&#8217;t a whole lot to say about it. Snow Leopard comes with Java 6 (1.6.0_15 that is) <span style="text-decoration: underline;"><strong>only</strong></span>, which means that the links that still exist in the</p>
<pre>/System/Library/Frameworks/JavaVM.framework/Versions/</pre>
<p>directory all point to &#8220;CurrentJDK&#8221;, which points to &#8220;1.6&#8243;. The thing is that Snow Leopard ships with a 32 bit version and a 64 bit version of the VM (Virtual Machine), 64 bit being the default one. The Java Preferences app shows this nicely:</p>
<p><img src="http://www.nilspreusker.de/wp-content/uploads/2009/09/java-preferences.png" alt="Java Preferences Application" /></p>
<p>And that is the big news about it, since a 32 bit version of java 6 didn&#8217;t previously exist for OS X.</p>
<p>Now I&#8217;ve previously had to tweak Eclipse to use the 1.5 VM (see &#8220;<a title="Java Versions on Mac OS X" href="http://www.nilspreusker.de/2009/03/03/java-versions-on-mac-os-x/" target="_self">Java Versions on Mac OS X</a>&#8220;), and now it just works. I&#8217;m assuming that this is because of the &#8220;mixed mode&#8221;:</p>
<pre>$ java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)</pre>
<p>&#8230;so the VM would automatically detect if an application should be executed in 64 or 32 bit mode and then start the correct VM. I still need to investigate how this actually works. Anyway, the good news is that java and eclipse seems to be working better with Snow Leopard. I&#8217;ll write more on this as I continue working with it, for now here is an interesting post on the topic:</p>
<p><a title="Eclipse, Java and Snow Leopard" href="http://blog.zvikico.com/2009/09/eclipse-java-and-snow-leopard.html" target="_blank">http://blog.zvikico.com/2009/09/eclipse-java-and-snow-leopard.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2009/09/22/java-and-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Find out which applications are listening to which port on Mac OSX</title>
		<link>http://www.nilspreusker.de/2009/09/11/find-out-which-applications-are-listening-to-which-port-on-mac-osx/</link>
		<comments>http://www.nilspreusker.de/2009/09/11/find-out-which-applications-are-listening-to-which-port-on-mac-osx/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 16:31:07 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[commands]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=254</guid>
		<description><![CDATA[If you ever wonder which ports are open on your OS X machine, or whether e.g. jboss is still running, this command will help you:
$sudo lsof -Pi &#124; grep -i "listen"
FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
Man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
]]></description>
			<content:encoded><![CDATA[<p>If you ever wonder which ports are open on your OS X machine, or whether e.g. jboss is still running, this command will help you:</p>
<pre>$sudo lsof -Pi | grep -i "listen"</pre>
<p>FAQ: <a title="FAQ" href="ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ" target="_blank">ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ</a><br />
Man page: <a title="Man Page" href="ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man" target="_blank">ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2009/09/11/find-out-which-applications-are-listening-to-which-port-on-mac-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Different Maven Versions on OS X</title>
		<link>http://www.nilspreusker.de/2009/04/24/different-maven-versions-on-os-x/</link>
		<comments>http://www.nilspreusker.de/2009/04/24/different-maven-versions-on-os-x/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 14:06:08 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=246</guid>
		<description><![CDATA[I keep running into the problem that different projects I&#8217;m working on require different versions of maven. I have two versions installed, maven 2.0.6 in /usr/share/maven-2.0.6 and maven 2.0.9 in /usr/share/maven. To find out which version of maven you are running, open a terminal and type the following
$ mvn --version
Maven version: 2.0.9
Java version: 1.6.0_07
OS name: [...]]]></description>
			<content:encoded><![CDATA[<p>I keep running into the problem that different projects I&#8217;m working on require different versions of maven. I have two versions installed, maven 2.0.6 in /usr/share/maven-2.0.6 and maven 2.0.9 in /usr/share/maven. To find out which version of maven you are running, open a terminal and type the following</p>
<pre>$ mvn --version
Maven version: 2.0.9
Java version: 1.6.0_07
OS name: "mac os x" version: "10.5.6" arch: "x86_64" Family: "mac"</pre>
<p>In this case, maven 2.0.9 is running, so we&#8217;ll see how to switch to maven 2.0.6. First we need to know where the maven executable, or in this case, the symbolic link to the executable is located:</p>
<pre>$ which mvn
/usr/bin/mvn</pre>
<p>Next, we&#8217;ll use ls to check where the symbolic link is pointing:</p>
<pre>$ ls -l /usr/bin/mvn
lrwxr-xr-x  1 root  wheel  24 Apr 24 14:26 /usr/bin/mvn -&gt; /usr/share/maven/bin/mvn</pre>
<p>Finally, if you have different maven versions installed, you can switch between them by overwriting the symbolic link:</p>
<pre>$ sudo ln -fhsv /usr/share/maven-2.0.6/bin/mvn /usr/bin/mvn</pre>
<p>After providing your password, the symbolic link should now be pointing to the maven 2.0.6 executable. To doublecheck, type</p>
<pre>$ mvn --version</pre>
<p>The output should be something like this</p>
<pre>Maven version: 2.0.6</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/2009/04/24/different-maven-versions-on-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
