<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ben J. Christensen &#187; Tools</title>
	<atom:link href="http://benjchristensen.com/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://benjchristensen.com</link>
	<description>Software Development and Other Random Stuff</description>
	<lastBuildDate>Tue, 17 Jan 2012 22:36:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='benjchristensen.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/a7bf6ab05bce6d423674b5a8bb676139?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Ben J. Christensen &#187; Tools</title>
		<link>http://benjchristensen.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://benjchristensen.com/osd.xml" title="Ben J. Christensen" />
	<atom:link rel='hub' href='http://benjchristensen.com/?pushpress=hub'/>
		<item>
		<title>JUnit Tests as Inner Classes</title>
		<link>http://benjchristensen.com/2011/10/23/junit-tests-as-inner-classes/</link>
		<comments>http://benjchristensen.com/2011/10/23/junit-tests-as-inner-classes/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 07:44:30 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=416</guid>
		<description><![CDATA[For several years on multiple Java projects I have written my unit tests as inner classes of the class they are testing. I have never liked or bought into the idea of putting unit tests in a separate class in a separate source folder. I am fine with and like having functional and/or system tests [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=416&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For several years on multiple Java projects I have written my unit tests as inner classes of the class they are testing. I have never liked or bought into the idea of putting unit tests in a separate class in a separate source folder. I am fine with and like having functional and/or system tests off in that separate ./test/ source folder – just not the unit tests.</p>
<p>Following are my reasons why I find it so much more productive and beneficial to write the unit tests as inner classes.</p>
<p><em>Note on terminology: I will use &#8220;concrete class&#8221; to represent the class that needs to be tested.</em></p>
<p><strong>Low Friction</strong></p>
<p><a href="https://gist.github.com/1198069"><img class="alignright size-full wp-image-417" title="JSONUtilityUnitTests" src="http://benjchristensen.files.wordpress.com/2011/10/jsonutilityunittests.png?w=800" alt=""   /></a></p>
<p>Unit testing should not feel like a burden, if it does many will likely not do it. Sure, developers often agree on the surface that writing unit tests is &#8220;the right thing to do&#8221;, but in practice most developers don&#8217;t do it. There are many reasons, but I believe one of them is that the friction for doing it is too high in most cases. Partly this is because unit tests off in another source folder have no context to the concrete class being worked on and rely upon human memory and tedious process to find, manage and keep in sync with the concrete class through the development cycle &#8211; especially when it&#8217;s someone other than the original developer of the class and tests.</p>
<p>Putting the unit tests in an inner class greatly reduces the friction of writing and maintaining unit tests for the following reasons:</p>
<ul>
<li>I only have to deal with a single class in my file/package/class navigator instead of two</li>
<li>I don&#8217;t have to open and manage 2 editor windows/tabs for every class I want to edit (this is a big deal, especially when most developers have dozens of classes open at any given time)</li>
<li>When I use keyboard shortcuts to open that single class file, the unit tests are right there with them, I don&#8217;t have to do twice the work to open first the concrete file, then the second file</li>
<li>I don&#8217;t have to try and maintain the naming convention of 2 separate files, especially through refactorings (more on this below)</li>
<li>I can immediately execute the unit tests for the class I&#8217;m viewing without going off and searching for another class</li>
<li>All developers see the unit tests when they open the class, they don&#8217;t need to remember to go looking if there happens to be one (especially in code bases where most classes don&#8217;t have tests so they will almost certainly never bother to go looking after failing to find any the first several times).</li>
<li>Maintainability is improved because the non-original developers who open a class see the tests and are thereby reminded and encouraged to use and add to them as they edit the class</li>
</ul>
<p>In short, unit tests as inner classes are easy to find, run, work on and maintain. This in turn encourages adoption and maintenance of them.</p>
<p><strong>Context</strong></p>
<p>Another benefit is that the unit tests as an inner class are very contextual to what they are testing. Many of the points of the previous section related to &#8220;low friction&#8221; are due to the context an inner class has with the concrete class. The tests are &#8220;in your face&#8221; and can&#8217;t be missed. They are obviously intended for testing the class currently being viewed and immediately prompt the developer to use them as part of their development process.</p>
<p>This in turn enforces them being &#8220;unit tests&#8221; and not becoming system tests by developers starting to test multiple concrete classes from a single test class just because it&#8217;s easier to keep adding tests to an existing test class than to create a new test class for every concrete class. Tests in a separate source folder have a very loose relationship to the concrete class, thus it&#8217;s very easy for the context to be lost and have it start testing interaction between classes, rather than only unit testing the class it was originally intended to test.</p>
<p>The mental model of unit tests in an inner class is very clear – these tests are for this class and only this class.</p>
<p><strong>Encapsulation</strong></p>
<p>Unit testing should not result in the weakening of encapsulation. This easily starts to happen when the tests are in a separate class and trying to gain full access to a non-trivial concrete class to setup mocks and perform assertions.</p>
<p>Methods and constructors start being made public or package accessible that should have remained private just so that hooks can be provided for the test class.</p>
<p>Arguments are plentiful about whether private methods and inner classes should be unit tested, and in many cases the arguments are valid that only public methods should need to be tested and they will internally exercise the private members.</p>
<p>Unfortunately there are plenty of use cases I have come across where this ideal is not a reality on non-trivial classes due to a desire to keep things encapsulate and hide implementation details.</p>
<p>Here are 2 examples:</p>
<ul>
<li>Example of &#8216;wanting&#8217; to test privates: lots of internal logic in private methods where building the class via test-driven-development (TDD) is easier by testing the private methods as you go (like building blocks with simple progressive tests), rather than trying to write all the code then test only the public methods at the end. <em>(Yes, it can theoretically all be done via TDD by only going via the public method, and yes I understand the theory of it. In practice however I have found it beneficial to have some types of private methods tested so they are covered as &#8220;building blocks&#8221; rather than relying on the top level public method test failing and digging into what internal private method failed.)</em></li>
<li>Example of &#8216;needing&#8217; to test privates: an inner class which runs a daemon thread to perform background cache refreshes. This is something I want fully encapsulated and not exposed in any way, but I need to test that it correctly runs, does what it&#8217;s supposed to do and mock it out for other unit tests.</li>
</ul>
<p>Specifically on the second example of an inner class and background thread, these could easily be made testable by an external class by exposing things via publics or package private methods or variables, or even by pulling the inner class for the thread into a separate class – but all of those break the encapsulation I was striving for. I do not want the package structure or javadocs to know anything about the implementation details. I want it all private, not package private and certainly not public.</p>
<p>Thus, the only way to get access without breaking encapsulation and good object design is to put the tests inside the concrete class.</p>
<p>Unit tests as inner classes allow for testing without opening member variables or methods to package or public access which then leak the implementation details.</p>
<p><strong>Refactoring</strong></p>
<p>If and when the the concrete class has its name or package refactored the unit tests as an inner class just go along for the ride.</p>
<p>No one needs to remember to go find the associated unit tests and also rename them.</p>
<p>This is particularly important in large codebases maintained by many developers where the person working on the code likely is not the one who originally wrote it.</p>
<p>Otherwise, the unit tests becomes an orphan, in the wrong package with the wrong name. Yes, the tests likely will still work (unless they depend on package access, in which case a compilation error would have flagged it) but they are now less maintainable than ever since the naming convention that was holding them together is gone and nobody will know to go looking for it in future edits to the concrete class.</p>
<p>In short, when unit tests are done as an inner class, everything is fully contained and goes along for the ride regardless of where the concrete class goes or how it&#8217;s named.</p>
<p><strong>Self-documenting</strong></p>
<p>When a class has all of its tests as an inner class they act as built-in documentation of what the class is supposed to do, regardless of whether the person looking for the code knows or cares to go looking for unit tests.</p>
<p>They can&#8217;t be missed – they are staring the developer in the face at the bottom of the class and in the outline as &#8220;UnitTest&#8221; with a bunch of methods declaring the functionality that is expected.</p>
<p><strong>Arguments Against This Approach</strong></p>
<p>Unfortunately the use of inner classes for unit testing is not more common so I sometimes get opposition when I work with new teams and they see my tests as inner classes.</p>
<p>Here are the common questions/concerns and my perspective on them:</p>
<p><strong>What About Shipping Test Code to Production?</strong></p>
<p>The small amount of byte code that will get shipped is negligible compared to the amount of 3rd party JARs in most deployments so it hardly dents the size of WAR files being shipped around, and since the classes are never referenced or invoked in production they are never loaded into the class loaders and thus never take up permgen space on the heap.</p>
<p>And if there is a philosophical or actual real reason to not ship test code they can simply be stripped by a build process since they all compile to $UnitTest.class (if that naming convention is used, which I follow and recommend) and can then be easily filtered before building the JAR files.</p>
<p><strong>Apache Doesn&#8217;t Do It This Way</strong></p>
<p>Or otherwise said: &#8216;Why would you put test classes there!?&#8217;.</p>
<p>Apache/Maven <a href="http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html">advocates</a> having a ./src/main and ./src/test folder and they have enough clout in the industry to have made it the most known place of putting test classes.</p>
<p>Just because it works for them doesn&#8217;t mean it&#8217;s the best way of doing it and in practice I have found it to be detrimental. I agree that in a theoretical &#8220;standard directory layout&#8221; it makes sense, but in practice the lack of context, increased friction, maintainability issues and impacts on encapsulation make it less-than-ideal for the developers writing the tests.</p>
<p><strong>Summary</strong></p>
<p>Inner classes are a great home for unit tests when writing Java.</p>
<p>This pattern reduces friction of both writing and maintaining unit tests which in turn increases code coverage, speeds up development, improves maintainability, increases velocity and enables adopting practices such as continuous deployment.</p>
<p>&nbsp;</p>
<p>Update (Jan 17 2012):</p>
<p>One drawback of unit tests as inner classes is that they show up in Javadocs. The solution is to filter them out using a custom &#8216;Doclet&#8217; implementation.</p>
<p>Example can be found here: <a href="https://gist.github.com/1410681">https://gist.github.com/1410681</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/416/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=416&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2011/10/23/junit-tests-as-inner-classes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2011/10/jsonutilityunittests.png" medium="image">
			<media:title type="html">JSONUtilityUnitTests</media:title>
		</media:content>
	</item>
		<item>
		<title>Automount AFP via autofs in Mac OSX (Snow Leopard)</title>
		<link>http://benjchristensen.com/2011/06/21/automount-afp-via-autofs-in-mac-osx-snow-leopard/</link>
		<comments>http://benjchristensen.com/2011/06/21/automount-afp-via-autofs-in-mac-osx-snow-leopard/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 20:51:34 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=380</guid>
		<description><![CDATA[I wanted a mount point that was automatic from my desktop to laptop and didn&#8217;t need me to manually re-connect each time I came back to it. After a bit of research, trial and error I figured out the correct incantation: Edit the /etc/fstab (create if not there) to be: HOSTNAME:MOUNTPOINT /PATH_ON_MACHINE_TO_USE_AS_MOUNT url automounted,url==afp://USERNAME:PASSWORD@HOSTNAME/MOUNTPOINT 0 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=380&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wanted a mount point that was automatic from my desktop to laptop and didn&#8217;t need me to manually re-connect each time I came back to it.</p>
<p>After a bit of research, trial and error I figured out the correct incantation:</p>
<p>Edit the /etc/fstab (create if not there) to be:<br />
<code><br />
HOSTNAME:MOUNTPOINT /PATH_ON_MACHINE_TO_USE_AS_MOUNT url automounted,url==afp://USERNAME:PASSWORD@HOSTNAME/MOUNTPOINT 0 0<br />
</code></p>
<p>Note that &#8220;MOUNTPOINT&#8221; on Mac for a users directory is NOT &#8220;/Users/username&#8221;, it is just &#8220;username&#8221;.</p>
<p>To restart the automounter type:<br />
<code><br />
automount -vc<br />
</code></p>
<p>It will mount the newly defined mountpoint and create the folder defined with PATH_ON_MACHINE_TO_USE_AS_MOUNT.</p>
<p>Some links I found useful while researching:</p>
<p><a href="http://forums.plexapp.com/index.php/topic/14201-howto-automount-afpsmb-shares-using-autofs/">http://forums.plexapp.com/index.php/topic/14201-howto-automount-afpsmb-shares-using-autofs/</a><br />
<a href="http://rajeev.name/2007/11/23/autofs-goodness-in-apples-leopard-105-part-ii/">http://rajeev.name/2007/11/23/autofs-goodness-in-apples-leopard-105-part-ii/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/380/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=380&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2011/06/21/automount-afp-via-autofs-in-mac-osx-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Dynamic Directory of Jar Files in Classpath via Eclipse Plugin</title>
		<link>http://benjchristensen.com/2011/05/26/dynamic-directory-of-jar-files-in-classpath-via-eclipse-plugin/</link>
		<comments>http://benjchristensen.com/2011/05/26/dynamic-directory-of-jar-files-in-classpath-via-eclipse-plugin/#comments</comments>
		<pubDate>Fri, 27 May 2011 04:34:24 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=364</guid>
		<description><![CDATA[I came across a scenario where I needed Eclipse to dynamically add a folder of jar files to the classpath and found out that Eclipse doesn&#8217;t support this out of the box (no idea why &#8230; IntelliJ does). So I began Googling and found &#8220;how&#8221; to solve it by writing a classpath container but could [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=364&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I came across a scenario where I needed Eclipse to dynamically add a folder of jar files to the classpath and found out that Eclipse doesn&#8217;t support this out of the box (no idea why &#8230; IntelliJ does).</p>
<p>So I began Googling and found &#8220;how&#8221; to solve it by writing a classpath container but could find a pre-packaged solution.</p>
<p>The how was explained here: <a href="https://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/">https://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/</a></p>
<p>I took that example and tweaked it into a working plugin. It now lives at <a href="https://github.com/benjchristensen/SimpleDirectoryContainer_EclipsePlugin">GitHub</a> where the plugin and source can be downloaded.</p>
<p>Once the plugin is installed in Eclipse, edit the &#8220;Java Build Path&#8221; on a project and click &#8220;Add Library&#8221; and choose &#8220;Directory Container&#8221;:</p>
<p><a href="http://benjchristensen.files.wordpress.com/2011/05/add-library.png"><img src="http://benjchristensen.files.wordpress.com/2011/05/add-library.png?w=800&#038;h=543" alt="" title="add-library" width="800" height="543" class="aligncenter size-full wp-image-368" /></a></p>
<p>Then choose the folder (a subfolder of the project so it&#8217;s relative) and defines what file extensions it should include:</p>
<p><a href="http://benjchristensen.files.wordpress.com/2011/05/creating-library.png"><img src="http://benjchristensen.files.wordpress.com/2011/05/creating-library.png?w=800" alt="" title="creating-library"   class="aligncenter size-full wp-image-365" /></a></p>
<p>Once saved this library will show up like any other Eclipse classpath library and show all Jar files from the selected folder &#8230; and most importantly will dynamically update the classpath when refreshed to whatever is in that folder.<br />
<a href="http://benjchristensen.files.wordpress.com/2011/05/directory-classpath.png"><img src="http://benjchristensen.files.wordpress.com/2011/05/directory-classpath.png?w=800" alt="" title="directory-classpath"   class="aligncenter size-full wp-image-371" /></a></p>
<p>I hope this helps someone else needing the same behavior in Eclipse!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/364/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=364&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2011/05/26/dynamic-directory-of-jar-files-in-classpath-via-eclipse-plugin/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2011/05/add-library.png" medium="image">
			<media:title type="html">add-library</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2011/05/creating-library.png" medium="image">
			<media:title type="html">creating-library</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2011/05/directory-classpath.png" medium="image">
			<media:title type="html">directory-classpath</media:title>
		</media:content>
	</item>
		<item>
		<title>Useless SVN Error Message: Network connection closed unexpectedly</title>
		<link>http://benjchristensen.com/2010/06/01/useless-svn-error-message-network-connection-closed-unexpectedly/</link>
		<comments>http://benjchristensen.com/2010/06/01/useless-svn-error-message-network-connection-closed-unexpectedly/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 16:34:25 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=300</guid>
		<description><![CDATA[If you&#8217;re trying to do a subversion checkout using svn+ssh like this: svn co svn+ssh://hostname/path &#8230; and are getting a useless error like this &#8230; svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file. svn: Network connection closed unexpectedly Try removing .ssh/known_hosts [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=300&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re trying to do a subversion checkout using svn+ssh like this:</p>
<p><code><br />
svn co svn+ssh://hostname/path<br />
</code></p>
<p>&#8230; and are getting a useless error like this &#8230;</p>
<p><code>svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.<br />
svn: Network connection closed unexpectedly</code></p>
<p>Try removing .ssh/known_hosts (which fixed my issue) or ensure that the private/public keys in .ssh have the right permissions, such as this:</p>
<p><code>benjchristensen-notebook:~ benjchristensen$ ls -al .ssh/<br />
drwx------   6 benjchristensen  staff   204 Jun  1 09:30 .<br />
drwxrwxrwx+ 39 benjchristensen  staff  1326 Jun  1 09:24 ..<br />
-rw-------   1 benjchristensen  staff  1743 Jun  1 09:17 id_rsa<br />
-rw-r--r--   1 benjchristensen  staff   423 Jun  1 09:17 id_rsa.pub<br />
-rw-r--r--   1 benjchristensen  staff   413 Jun  1 09:30 known_hosts</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/300/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=300&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2010/06/01/useless-svn-error-message-network-connection-closed-unexpectedly/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Ideal Equipment</title>
		<link>http://benjchristensen.com/2009/07/09/ideal-equipment/</link>
		<comments>http://benjchristensen.com/2009/07/09/ideal-equipment/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 21:52:15 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=187</guid>
		<description><![CDATA[The following is my opinion of ideal equipment for developing &#8211; and anything else I do. MacBook Pro 15-inch: 2.8GHz 8GB Memory 7200 RPM 500GB Drive LED Cinema Display (24&#8243;) Because one display is never enough.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=187&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The following is my opinion of ideal equipment for developing &#8211; and anything else I do.</p>
<p><img class="size-full wp-image-188 alignnone" style="border:0 initial initial;" title="Picture 6" src="http://benjchristensen.files.wordpress.com/2009/07/picture-6.png?w=800" alt="Picture 6"   /></p>
<h3 style="font-size:1em;font-weight:bold;border-bottom-width:0;border-bottom-style:initial;border-bottom-color:initial;letter-spacing:0;line-height:21px;color:#000000;margin:0;padding:0;">MacBook Pro 15-inch: 2.8GHz</h3>
<p>8GB Memory</p>
<p>7200 RPM 500GB Drive</p>
<p><img class="size-full wp-image-189 alignnone" style="border:0 initial initial;" title="Picture 7" src="http://benjchristensen.files.wordpress.com/2009/07/picture-7.png?w=800" alt="Picture 7"   /></p>
<h3 style="font-size:1em;font-weight:bold;border-bottom-width:0;border-bottom-style:initial;border-bottom-color:initial;letter-spacing:0;line-height:21px;color:#000000;margin:0;padding:0;">LED Cinema Display (24&#8243;)</h3>
<p>Because one display is never enough.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/187/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=187&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/09/ideal-equipment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2009/07/picture-6.png" medium="image">
			<media:title type="html">Picture 6</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2009/07/picture-7.png" medium="image">
			<media:title type="html">Picture 7</media:title>
		</media:content>
	</item>
		<item>
		<title>Impact of Tools on Productivity</title>
		<link>http://benjchristensen.com/2009/07/08/impact-of-tools-on-productivity/</link>
		<comments>http://benjchristensen.com/2009/07/08/impact-of-tools-on-productivity/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 01:22:50 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=173</guid>
		<description><![CDATA[Yesterday I was analyzing java heap dumps at my office using a Mac Pro with 8 Xeon CPU cores and 16GB of memory. It took 30-60 seconds to load a 3.5GB file and was very usable while browsing the heap and analyzing it. When I got home I wanted to peruse it a little more. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=173&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was <a href="http://benjchristensen.com/2009/07/07/netbeans-heap-profiler-works-well/">analyzing java heap dumps</a> at my office using a Mac Pro with 8 Xeon CPU cores and 16GB of memory.</p>
<p>It took 30-60 seconds to load a 3.5GB file and was very usable while browsing the heap and analyzing it.</p>
<p>When I got home I wanted to peruse it a little more. I just had my laptop, a MacBook Pro with a Core 2 Duo 2.5GHz and 4GB memory.</p>
<p>It took over 20 minutes just to load the file, and the machine was virtually unusable that entire time. Once loaded, every click of the mouse took time ranging from a noticeable lag to multiple seconds of being hung. The machine was swapping to death. Even though I have a very high end laptop, it just couldn&#8217;t handle what I was throwing at it as compared to the very powerful desktop machine.</p>
<p>I gave up rather quickly as the <a href="http://benjchristensen.com/2009/06/26/speed-of-thought/">friction</a> of using the system was too high. I didn&#8217;t have the patience to deal with it &#8211; I just waited until I returned to the office today and again used the Mac Pro.</p>
<p>It has made me think again about what kind of equipment is provided to development teams. I know for a fact that my extended team of 40+ overseas don&#8217;t have a single machine in their office as powerful as the Mac Pro I was using.</p>
<p>So, if one of them needed to analyze that heap dump, profile a large server application or do some other intensive task, what would they do? Deal with 20 minute waits as opposed to 30 seconds, and multi-second pauses between each mouse click &#8211; and waste a day in their effort instead of minutes or hours of effective work allowing their tools to work as fast as their thoughts?</p>
<p>One could argue that a remote server, such as one at EC2 could be used for a couple hours by using a web based solution like JHat to analyze the heap. Except that <a href="http://twitter.com/benjchristensen/status/2534093699">didn&#8217;t work</a> so well.</p>
<p>How much productivity is lost because a developer is given equipment below actual requirements, or by making them use the same machine long past its usefulness (3 years is an eternity for a developer, yet is a standard &#8216;depreciation&#8217; time for which a developer is often made to endure their machine).</p>
<p>For example, I have 4GB on my laptop and push on that limit constantly. Yet I know a lot of my team only has 2GB, and are working on CPU architectures several years old.</p>
<p>For a US developer this is just silly &#8211; as having new equipment every 18-24 months is a fraction of the cost of the persons salary, and in my opinion more than makes up for itself in improved productivity as well as morale.</p>
<p>For an offshore developer, with much lower salary costs it&#8217;s a higher fraction, but still I believe its dividends are worth it.</p>
<p>This applies to all types of tools and equipment for developers: faster machines, more memory, <a href="http://martinfowler.com/bliki/BigScreen.html">dual large monitors</a>, commercial software as opposed to everything being opensource and other such things.</p>
<p>People are expensive. I think it&#8217;s more cost effective to spend a little on the right equipment and increase productivity and morale of development teams by giving them the right tools &#8211; as I had while analyzing heap dumps.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=173&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/08/impact-of-tools-on-productivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Netbeans Heap Profiler Works. Well.</title>
		<link>http://benjchristensen.com/2009/07/07/netbeans-heap-profiler-works-well/</link>
		<comments>http://benjchristensen.com/2009/07/07/netbeans-heap-profiler-works-well/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 20:23:57 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Production Problems]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=161</guid>
		<description><![CDATA[Netbeans (which I never use) has seemingly come a long way since I last looked at it. The UI is certainly a lot nicer. Today however, it&#8217;s the Heap Profiler that I&#8217;m happy with &#8211; cause it actually works unlike anything else I&#8217;ve tried today. It loaded a 3.5GB  heap in less than 30 seconds! (I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=161&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Netbeans (which I never use) has seemingly come a long way since I last looked at it. The UI is certainly a lot nicer.</p>
<p>Today however, it&#8217;s the <a href="http://www.netbeans.org/features/java/profiler.html">Heap Profiler</a> that I&#8217;m happy with &#8211; cause it actually works unlike anything else I&#8217;ve tried today.</p>
<p>It loaded a 3.5GB  heap in less than 30 seconds! (I had set my max heap for Netbeans to 12GB on my 16GB, 8-core machine).</p>
<p>Finally a tool for heap analysis that works and works well. And it&#8217;s elegant looking at the same time.</p>
<p><img class="aligncenter size-full wp-image-162" title="Netbeans Heap Profiler" src="http://benjchristensen.files.wordpress.com/2009/07/picture-2.png?w=800&#038;h=487" alt="Netbeans Heap Profiler" width="800" height="487" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/161/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=161&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/07/netbeans-heap-profiler-works-well/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2009/07/picture-2.png" medium="image">
			<media:title type="html">Netbeans Heap Profiler</media:title>
		</media:content>
	</item>
		<item>
		<title>Memory Analyzer Can&#8217;t Handle Large Heaps</title>
		<link>http://benjchristensen.com/2009/07/07/memory-analyzer-cant-handle-large-heaps/</link>
		<comments>http://benjchristensen.com/2009/07/07/memory-analyzer-cant-handle-large-heaps/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 20:10:33 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Production Problems]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=157</guid>
		<description><![CDATA[Despite the claims that Memory Analyzer works well with large heaps, the following screenshot is the evidence of my continued inability to have it parse a 3.5GB heap dump. I have attempted JDK 5 and JDK 6, both 64-bit, with up to 14GB of memory allocated on an 8-core machine with 16GB of memory. Note [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=157&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Despite the <a href="http://wiki.eclipse.org/index.php/MemoryAnalyzer/FAQ#Out_of_Memory_Error_while_Running_the_Memory_Analyzer">claims</a> that <a href="http://www.eclipse.org/mat/">Memory Analyzer</a> works well with large heaps, the following screenshot is the evidence of my continued inability to have it parse a 3.5GB heap dump.</p>
<p>I have attempted JDK 5 and JDK 6, both 64-bit, with up to 14GB of memory allocated on an 8-core machine with 16GB of memory.</p>
<p>Note the memory bar at the bottom showing it&#8217;s using only 2121M out of 11879M &#8211; yet it still thinks it&#8217;s running out of memory.</p>
<p>The settings are:</p>
<blockquote><p>-vmargs</p>
<p>-Xms12g</p>
<p>-Xmx14g</p>
<p>-XX:MaxPermSize=1G</p>
<p>-Dorg.eclipse.swt.internal.carbon.smallFonts</p>
<p>-XstartOnFirstThread</p></blockquote>
<p> </p>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:103px;width:1px;height:1px;">-vmargs</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:103px;width:1px;height:1px;">-Xms12g</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:103px;width:1px;height:1px;">-Xmx14g</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:103px;width:1px;height:1px;">-XX:MaxPermSize=1G</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:103px;width:1px;height:1px;">-Dorg.eclipse.swt.internal.carbon.smallFonts</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:103px;width:1px;height:1px;">-XstartOnFirstThread</div>
<p> </p>
<p><img class="aligncenter size-full wp-image-158" title="Memory Analyzer OutOfMemory" src="http://benjchristensen.files.wordpress.com/2009/07/picture-1.png?w=800&#038;h=591" alt="Memory Analyzer OutOfMemory" width="800" height="591" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=157&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/07/memory-analyzer-cant-handle-large-heaps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2009/07/picture-1.png" medium="image">
			<media:title type="html">Memory Analyzer OutOfMemory</media:title>
		</media:content>
	</item>
		<item>
		<title>Micro-Blogging with Twitter</title>
		<link>http://benjchristensen.com/2009/07/06/micro-blogging-with-twitter/</link>
		<comments>http://benjchristensen.com/2009/07/06/micro-blogging-with-twitter/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:39:13 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.wordpress.com/?p=141</guid>
		<description><![CDATA[I started using Twitter about 2 weeks ago. Before that I thought Twitter was a silly thing. Why would I want to post &#8220;what I&#8217;m doing&#8221; at any given moment? However, a handful of people whose blogs I follow began migrating more and more of their commentary to Twitter. In fact, one of them retired [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=141&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I started using Twitter about 2 weeks ago. Before that I thought Twitter was a silly thing. Why would I want to post &#8220;what I&#8217;m doing&#8221; at any given moment?</p>
<p>However, a handful of people whose blogs I follow began migrating more and more of their commentary to Twitter. In fact, one of them retired from blogging and only uses Twitter now. Thus, I started an account so I could follow these few people.</p>
<p>I soon came to recognize Twitter for what it can actually be used for &#8211; micro-blogging. It&#8217;s not just &#8220;status updates&#8221; as used by teens, tweens and soccer moms &#8211; but a viable communication platform for short thoughts and messages that would often go un-written, un-shared, un-communicated (pardon the poor grammar) because traditional blogging (if a 5 year old concept can be considered traditional) needs more content than a single sentence to be bothered with.</p>
<p>To post a blog entry it needs at least a title plus a paragraph.</p>
<p>With Twitter, you just need the title.</p>
<p>Thus, the sharing of thoughts, ideas, quotes, links etc all become more natural because there is less friction in doing so.</p>
<p>As I commented in an earlier post on &#8220;<a href="http://benjchristensen.wordpress.com/2009/06/26/speed-of-thought/">Speed of Thought</a>&#8220;, if something has friction, it it less likely to be used or performed. The same with sharing of thoughts and ideas.</p>
<p>Blogging reduced the friction greatly from the techniques before it, and Twitter (or micro-blogging more generically) appears to be doing the same for a realm of communication previously not very feasible to attempt.</p>
<p>I have <a href="http://twitter.com/benjchristensen">posted 83 messages</a> in 18 days since starting &#8211; some benign, others more thoughtful. A mixture of personal and professional.</p>
<p>I do not see Twitter as a replacement of blogs. I see them as very compatible mediums that mix together to create a stream of thoughts and ideas &#8211; to be shared and create dialog. In fact, I have mixed them now on this blog as shown by the Twitter feed in the right column, providing a single place to find my thoughts &#8211; both those well thought out and edited as blog entries, and those more &#8220;sound bite&#8221; sized from Twitter.</p>
<p>Despite my views on the subject just 3 weeks ago, I now think Twitter is a valuable addition to our communication toolset alongside email, RSS and blogs.</p>
<p>If you&#8217;re still questioning the significance of Twitter and think it&#8217;s just celebrities, teens and tweens, check out some of the following which are a few I follow:</p>
<ul>
<li>(CNN Breaking News) <a href="https://twitter.com/whitehouse">https://twitter.com/cnnbrk</a></li>
<li>(Reuters News) <a href="https://twitter.com/Reuters">https://twitter.com/Reuters</a></li>
<li>(Al Jazeera News) <a href="https://twitter.com/AJEnglish">https://twitter.com/AJEnglish</a></li>
<li>(Application Architect) <a href="https://twitter.com/martinfowler">https://twitter.com/martinfowler</a></li>
<li>(Enterprise Architect) <a href="https://twitter.com/mcgoverntheory">https://twitter.com/mcgoverntheory</a></li>
<li>(Data Center) <a href="https://twitter.com/Rackspace">https://twitter.com/Rackspace</a></li>
<li>(USA White House) <a href="https://twitter.com/whitehouse">https://twitter.com/whitehouse</a></li>
<li>(Muse &#8211; a great band) <a href="https://twitter.com/musewire">https://twitter.com/musewire</a></li>
</ul>
<p>The fact that companies, news agencies and governments are using the medium for instant communication &#8211; not just personal friends &#8211; is an amazing convergence of parties making the medium that much more powerful and useful.</p>
<p>Communicating and staying in touch with so many diverse parties has never had as little friction as this.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/141/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=141&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/06/micro-blogging-with-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Eclipse Galileo (3.5) and Subversion</title>
		<link>http://benjchristensen.com/2009/06/24/eclipse-galileo-3-5-and-subversion/</link>
		<comments>http://benjchristensen.com/2009/06/24/eclipse-galileo-3-5-and-subversion/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 19:35:39 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://benjchristensen.wordpress.com/?p=110</guid>
		<description><![CDATA[Eclipse still does not ship with subversion support by default. Here&#8217;s how I enabled it. Much easier than with Ganymede, but I still shouldn&#8217;t have to do this considering Subversion is used by 57.5% of the Eclipse users who responded to the recent survey. See page 3 of http://www.eclipse.org/org/press-release/Eclipse_Survey_2009_final.pdf: &#8220;Subversion is the dominant Source Code [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=110&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Eclipse still does not ship with subversion support by default.</p>
<p>Here&#8217;s how I enabled it. Much easier than with Ganymede, but I still shouldn&#8217;t have to do this considering Subversion is used by 57.5% of the Eclipse users who responded to the recent survey.</p>
<p>See page 3 of http://www.eclipse.org/org/press-release/Eclipse_Survey_2009_final.pdf:</p>
<blockquote><p>&#8220;<span style="font-family:Arial, 'Times New Roman', 'Bitstream Charter', Times, fantasy;line-height:normal;font-size:11px;">Subversion is the dominant Source Code Management system used by <span style="font-family:Arial, 'Times New Roman', 'Bitstream Charter', Times, fantasy;">developers, with 57.5%.&#8221;</span></span></p></blockquote>
<p>Anyways, the following screenshots show how to install it from &#8220;Help -&gt; Install New Software&#8221;.</p>
<ul>
<li>The first site &#8220;Galileo&#8221; is already included in Eclipse 3.5.</li>
<li>The second site is the following URL: <strong>http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/</strong></li>
</ul>
<p><img class="aligncenter size-full wp-image-111" title="Picture 4" src="http://benjchristensen.files.wordpress.com/2009/06/picture-4.png?w=800" alt="Picture 4"   /></p>
<p><img class="aligncenter size-full wp-image-112" title="Picture 3" src="http://benjchristensen.files.wordpress.com/2009/06/picture-3.png?w=800" alt="Picture 3"   /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=110&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/06/24/eclipse-galileo-3-5-and-subversion/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2009/06/picture-4.png" medium="image">
			<media:title type="html">Picture 4</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2009/06/picture-3.png" medium="image">
			<media:title type="html">Picture 3</media:title>
		</media:content>
	</item>
	</channel>
</rss>
