<?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>CodeBistro: lean software development</title>
	<atom:link href="http://codebistro.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://codebistro.com</link>
	<description>For Startups and Agile Companies</description>
	<lastBuildDate>Tue, 03 Apr 2012 22:41:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='codebistro.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>CodeBistro: lean software development</title>
		<link>http://codebistro.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://codebistro.com/osd.xml" title="CodeBistro: lean software development" />
	<atom:link rel='hub' href='http://codebistro.com/?pushpress=hub'/>
		<item>
		<title>Bristle template: when you don&#8217;t have time to do your Moustache</title>
		<link>http://codebistro.com/2012/01/29/bristle-template-when-you-dont-have-time-to-do-your-moustache/</link>
		<comments>http://codebistro.com/2012/01/29/bristle-template-when-you-dont-have-time-to-do-your-moustache/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 04:53:36 +0000</pubDate>
		<dc:creator>Sasha O</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[templates]]></category>
		<category><![CDATA[variable substitution]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://codebistro.com/?p=129</guid>
		<description><![CDATA[Usually I generate my pages with Velocity. Recently I had a project where even implementing Velocity was not worth the time. I tried both MessageFormatter and StringTemplates and both had problems with some portion of HTML/Javascript markup. So I did what we, engineers always do in this situation: run your own. Good news, it took just over [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=129&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Usually I generate my pages with <a title="Velocity Templates" href="http://velocity.apache.org/" target="_blank">Velocity</a>. Recently I had a project where even implementing Velocity was not worth the time. I tried both MessageFormatter and StringTemplates and both had problems with some portion of HTML/Javascript markup.</p>
<p>So I did what we, engineers always do in this situation: run your own. Good news, it took just over an hour and I ended with a single very small file. It  can only variable substitution but that was enough for me. Here it is:</p>
<p><a href="http://codebistro.googlecode.com/svn/trunk/misc/src/main/java/org/codebistro/util/BristleTemplate.java" target="_blank">http://codebistro.googlecode.com/svn/trunk/misc/src/main/java/org/codebistro/util/BristleTemplate.java</a></p>
<p>The best part: it has no dependencies so you can just copy file into your project and template away.</p>
<p>Of course you can Maven just as well:</p>
<pre>    &lt;repositories&gt;
        ...
        &lt;repository&gt;
            &lt;id&gt;codebistro-open&lt;/id&gt;
            &lt;name&gt;codebistro-open repo&lt;/name&gt;
            &lt;layout&gt;default&lt;/layout&gt;
            &lt;url&gt;<a href="http://codebistro.googlecode.com/svn/repo/&lt;/url&#038;gt" rel="nofollow">http://codebistro.googlecode.com/svn/repo/&lt;/url&#038;gt</a>;
        &lt;/repository&gt;
        ...
    &lt;/repositories&gt;
    ...
    &lt;dependencies&gt;
        ...
        &lt;dependency&gt;
            &lt;groupId&gt;org.codebistro.util&lt;/groupId&gt;
            &lt;artifactId&gt;misc&lt;/artifactId&gt;
            &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
        &lt;/dependency&gt;
     &lt;dependencies&gt;</pre>
<p>Microframeworks are popular these days. This thing doesn&#8217;t even qualify to be called micro- or even nano- but I got a feeling I am going to use Bristle template in the future&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codebistro.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codebistro.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codebistro.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codebistro.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/codebistro.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codebistro.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codebistro.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/codebistro.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codebistro.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codebistro.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codebistro.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codebistro.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codebistro.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codebistro.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=129&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://codebistro.com/2012/01/29/bristle-template-when-you-dont-have-time-to-do-your-moustache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32b1a9e0e49f2efcdb76b603e3d77e90?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sashaov</media:title>
		</media:content>
	</item>
		<item>
		<title>Google+: &#8220;Oops, you need a google profile to use this feature&#8221; and a workaround</title>
		<link>http://codebistro.com/2011/07/09/google-oops-you-need-google-profile-workaround/</link>
		<comments>http://codebistro.com/2011/07/09/google-oops-you-need-google-profile-workaround/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 17:50:31 +0000</pubDate>
		<dc:creator>Sasha O</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codebistro.com/?p=112</guid>
		<description><![CDATA[Update: This is no longer relevant. Google+ allows to log in with a Google Apps account. I use my custom domain name Google Apps account as my primary email. I still have Google account and Google profile but I am not logged into this account by default. So when I go to http://google.com/+ I get [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=112&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> This is no longer relevant. Google+ allows to log in with a Google Apps account.</p>
<p>I use my custom domain name Google Apps account as my primary email. I still have Google account and Google profile but I am not logged into this account by default.</p>
<p>So when I go to <a title="Google Plus" href="http://google.com/+" target="_blank">http://google.com/+</a> I get this dreaded error message:</p>
<div id="attachment_114" class="wp-caption alignnone" style="width: 310px"><a href="http://codebistro.files.wordpress.com/2011/07/0-oops1.png"><img class="size-medium wp-image-114" title="Oops, you need a google profile to use this feature" src="http://codebistro.files.wordpress.com/2011/07/0-oops1.png?w=300&#038;h=62" alt="Oops, you need a google profile to use this feature" width="300" height="62" /></a><p class="wp-caption-text">Oops, you need a google profile to use this feature</p></div>
<p>I found a workaround to this problem. The solution requires that a) you have a &#8220;regular&#8221; Google Account (&#8230;@gmail.com) and b) this account should be enabled the &#8220;<a title="Sign in to multiple accounts page" href="https://www.google.com/accounts/b/0/MultipleSessions" target="_blank">Sign in to multiple Google Accounts</a>&#8221; feature (thanks Paul for the tip) :</p>
<p>1. Go to <a title="Sasha's profile" href="https://plus.google.com/u/1/109313807130897224792" target="_blank">any profile page</a> on Google plus:</p>
<p><a href="http://codebistro.files.wordpress.com/2011/07/1-profile.png"><img class="alignnone size-medium wp-image-116" title="Go to your Google Profile" src="http://codebistro.files.wordpress.com/2011/07/1-profile.png?w=300&#038;h=184" alt="Go to your Google Profile" width="300" height="184" /></a></p>
<p>2. Click on the Account -&gt; Switch Accounts menu:</p>
<p><a href="http://codebistro.files.wordpress.com/2011/07/2-switch.png"><img class="alignnone size-medium wp-image-117" title="Switch accounts menu" src="http://codebistro.files.wordpress.com/2011/07/2-switch.png?w=300&#038;h=107" alt="Switch accounts menu" width="300" height="107" /></a></p>
<p>3. Select the Google Account (not the Google Apps account) or log into your Google Account:</p>
<p><a href="http://codebistro.files.wordpress.com/2011/07/3-switched.png"><img class="alignnone size-medium wp-image-118" title="Switch to Google Account" src="http://codebistro.files.wordpress.com/2011/07/3-switched.png?w=300&#038;h=157" alt="Switch to Google Account" width="300" height="157" /></a></p>
<p>Bingo! Your Google plus is now working!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codebistro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codebistro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codebistro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codebistro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/codebistro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codebistro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codebistro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/codebistro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codebistro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codebistro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codebistro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codebistro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codebistro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codebistro.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=112&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://codebistro.com/2011/07/09/google-oops-you-need-google-profile-workaround/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32b1a9e0e49f2efcdb76b603e3d77e90?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sashaov</media:title>
		</media:content>

		<media:content url="http://codebistro.files.wordpress.com/2011/07/0-oops1.png?w=300" medium="image">
			<media:title type="html">Oops, you need a google profile to use this feature</media:title>
		</media:content>

		<media:content url="http://codebistro.files.wordpress.com/2011/07/1-profile.png?w=300" medium="image">
			<media:title type="html">Go to your Google Profile</media:title>
		</media:content>

		<media:content url="http://codebistro.files.wordpress.com/2011/07/2-switch.png?w=300" medium="image">
			<media:title type="html">Switch accounts menu</media:title>
		</media:content>

		<media:content url="http://codebistro.files.wordpress.com/2011/07/3-switched.png?w=300" medium="image">
			<media:title type="html">Switch to Google Account</media:title>
		</media:content>
	</item>
		<item>
		<title>BuildNumber &#8212; from SVN into your application</title>
		<link>http://codebistro.com/2011/01/11/build-number-from-svn-application/</link>
		<comments>http://codebistro.com/2011/01/11/build-number-from-svn-application/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 03:59:29 +0000</pubDate>
		<dc:creator>codebistro</dc:creator>
				<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://codebistro.com/?p=91</guid>
		<description><![CDATA[Finally found some time to publish BuildNumber &#8212; a Maven plugin and Ant task to embed SVN build number into your application during build. Great for tracking what version is deployed where.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=91&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Finally found some time to publish <a href="http://code.google.com/p/codebistro/wiki/BuildNumber">BuildNumber</a> &#8212; a Maven plugin and Ant task to embed SVN build number into your application during build. Great for tracking what version is deployed where.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codebistro.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codebistro.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codebistro.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codebistro.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/codebistro.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codebistro.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codebistro.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/codebistro.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codebistro.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codebistro.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codebistro.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codebistro.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codebistro.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codebistro.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=91&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://codebistro.com/2011/01/11/build-number-from-svn-application/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c25f1610d5773e9930d6ca977de60505?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codebistro</media:title>
		</media:content>
	</item>
		<item>
		<title>rsync IDE project files</title>
		<link>http://codebistro.com/2010/08/24/rsync-ide-project-files/</link>
		<comments>http://codebistro.com/2010/08/24/rsync-ide-project-files/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 05:44:16 +0000</pubDate>
		<dc:creator>codebistro</dc:creator>
				<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[developer tools]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://codebistro.com/?p=55</guid>
		<description><![CDATA[The jury is still out on whether to version control the IDE files (see for example this question on StackOverflow). I recently tend to agree with Anton and lend towards not version-controlling or at least keeping them separate. This little rsync script can help moving all project files to a separate hierarchy so that you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=55&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The jury is still out on whether to version control the IDE files (see for example <a href="http://stackoverflow.com/questions/1655293/best-practices-for-intellij-idea-9-maven-version-control">this question on StackOverflow</a>). I recently tend to agree with <a href="http://java.akraievoy.org/">Anton</a> and lend towards not version-controlling or at least keeping them separate.</p>
<p>This little rsync script can help moving all project files to a separate hierarchy so that you can manage them separately from your source tree:</p>
<blockquote>
<div id="_mcePaste">#!/bin/sh</div>
<div id="_mcePaste">rsync -av \</div>
<div id="_mcePaste">&#8211;filter=&#8217;+ */&#8217; \</div>
<div id="_mcePaste">&#8211;filter=&#8217;+ .classpath&#8217; \</div>
<div id="_mcePaste">&#8211;filter=&#8217;+ .project&#8217; \</div>
<div id="_mcePaste">&#8211;filter=&#8217;+ **/*.iml&#8217; \</div>
<div id="_mcePaste">&#8211;filter=&#8217;+ .idea/***&#8217; \</div>
<div id="_mcePaste">&#8211;filter=&#8217;- *&#8217; \</div>
<div id="_mcePaste">&#8211;prune-empty-dirs $1 $2</div>
</blockquote>
<p>Thanks <a href="http://serverfault.com/questions/156761/rsync-and-include-exclude-how-hard-can-it-be/156819#156819">Shane Meyers</a> for the insight into rsync filter patterns.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codebistro.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codebistro.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codebistro.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codebistro.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/codebistro.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codebistro.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codebistro.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/codebistro.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codebistro.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codebistro.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codebistro.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codebistro.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codebistro.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codebistro.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=55&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://codebistro.com/2010/08/24/rsync-ide-project-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c25f1610d5773e9930d6ca977de60505?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codebistro</media:title>
		</media:content>
	</item>
		<item>
		<title>ProGuard, Mac OS X, runtime libraries and honey</title>
		<link>http://codebistro.com/2010/07/18/proguard-and-runtime-libraries-on-mac-os-x/</link>
		<comments>http://codebistro.com/2010/07/18/proguard-and-runtime-libraries-on-mac-os-x/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 16:33:23 +0000</pubDate>
		<dc:creator>codebistro</dc:creator>
				<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JRE]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[ProGuard]]></category>

		<guid isPermaLink="false">http://codebistro.com/?p=43</guid>
		<description><![CDATA[ProGuard is a great tool for packaging your Java Applet or application. We use it mainly to package a program and bunch of dependencies into small .jar file. It works great on Linux and Windows but on my Mac it would end up with messages like: [proguard] Reading library jar [/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/jsse.jar] [proguard] Error: Can't read [proguard.ClassPathEntry@50502819] [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=43&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://proguard.sourceforge.net/" target="_blank">ProGuard</a> is a great tool for packaging your Java Applet or application. We use it mainly to package a program and bunch of dependencies into small .jar file. It works great on Linux and Windows but on my Mac it would end up with messages like:</p>
<blockquote>
<pre>[proguard] Reading library jar [/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/jsse.jar]
[proguard] Error: Can't read [proguard.ClassPathEntry@50502819] (No such file or directory)</pre>
</blockquote>
<p>With some help  from the <a href="http://www.graphics.cornell.edu/~eric/" target="_blank">Eric Lafortune</a>, the ProGuard author, the solution was to put a link to the missing file to its &#8220;regular&#8221; place in Java libraries:</p>
<blockquote>
<pre>cd $JAVA_HOME/lib
sudo ln -s ../../Classes/classes.jar rt.jar
sudo ln -s ../../Classes/jsse.jar .</pre>
</blockquote>
<p>The downside is that you should do some manual stuff on each Mac you want to build on. If somebody has better solution I would love to know about it.</p>
<p style="padding-left:30px;"><em><span style="color:#999999;">In military training long time ago, I and my fellow students were forced to do a lot of things that were illogical, redundant or  outright stupid. Sometimes our only explanation was &#8220;so the life wouldn&#8217;t seem sweet like honey&#8221;. It kind of made sense to make life intentionally hard in the army &#8212; it was supposed to be training after all. It seems that the Apple in this case was following the same logic: let&#8217;s spread runtime libraries all over the system so that the engineer&#8217;s life wouldn&#8217;t seem too sweet like honey. Anybody got better explanation, please let me know.</span></em></p>
<p style="padding-left:30px;">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codebistro.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codebistro.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codebistro.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codebistro.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/codebistro.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codebistro.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codebistro.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/codebistro.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codebistro.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codebistro.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codebistro.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codebistro.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codebistro.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codebistro.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=43&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://codebistro.com/2010/07/18/proguard-and-runtime-libraries-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c25f1610d5773e9930d6ca977de60505?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codebistro</media:title>
		</media:content>
	</item>
		<item>
		<title>Adding CACert to the Java Trusted Store</title>
		<link>http://codebistro.com/2010/03/25/adding-cacert-to-the-java-trusted-store/</link>
		<comments>http://codebistro.com/2010/03/25/adding-cacert-to-the-java-trusted-store/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 16:07:47 +0000</pubDate>
		<dc:creator>codebistro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://codebistro.com/?p=27</guid>
		<description><![CDATA[http://www.cacert.org/ is a great way to easily create free SSL certificates for development work. In order to successfully connect from Java program using SSL to a server carrying a certificate issued by CACert you need to &#8220;bless&#8221; the certiticate, or make it trusted by your your local Java JRE installation. Let&#8217;s first make sure we are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=27&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="http://www.cacert.org/" href="http://www.cacert.org/">http://www.cacert.org/</a> is a great way to easily create free SSL certificates for development work. In order to successfully connect from Java program using SSL to a server carrying a certificate issued by CACert you need to &#8220;bless&#8221; the certiticate, or make it trusted by your your local Java JRE installation.</p>
<p>Let&#8217;s first make sure we are in the lib/security subdirectory of the currently running JRE:</p>
<blockquote>
<pre>&gt; <span style="font-weight:bold;">cd $JDK_HOME\jre\lib\security</span></pre>
</blockquote>
<p>Then, download the certificate file to your local computer:</p>
<pre>
<blockquote>
<div id="_mcePaste">$JDK_HOME\jre\lib\security&gt; <span style="font-weight:bold;">wget <a href="http://www.cacert.org/certs/root.crt" rel="nofollow">http://www.cacert.org/certs/root.crt</a></span></div>
<div id="_mcePaste"><span style="color:#999999;">--2010-03-16 09:24:40--  http://www.cacert.org/certs/root.crt</span></div>
<div id="_mcePaste"><span style="color:#999999;">Resolving <a href="http://www.cacert.org.." rel="nofollow">http://www.cacert.org..</a>. 213.154.225.245</span></div>
<div id="_mcePaste"><span style="color:#999999;">Connecting to <a href="http://www.cacert.org" rel="nofollow">http://www.cacert.org</a>|213.154.225.245|:80... connected.</span></div>
<div id="_mcePaste"><span style="color:#999999;">HTTP request sent, awaiting response... 200 OK</span></div>
<div id="_mcePaste"><span style="color:#999999;">Length: 2569 (2.5K) [application/x-x509-ca-cert]</span></div>
<div id="_mcePaste"><span style="color:#999999;">Saving to: `root.crt'</span></div>
<div id="_mcePaste"><span style="color:#999999;">100%[======================================&gt;] 2,569       15.4K/s   in 0.2s</span></div>
<div id="_mcePaste"><span style="color:#999999;">2010-03-16 09:24:41 (15.4 KB/s) - `root.crt' saved [2569/2569]</span></div>
</blockquote>
</pre>
<p>Now let&#8217;s import the certificate into the JRE keystore (note the password of the default JRE keystore &#8212; it&#8217;s different on different platforms):</p>
<pre>
<blockquote>

$JDK_HOME\jre\lib\security&gt; <span style="font-weight:bold;">keytool -import -keystore cacerts 
-storepass changeit -alias cacert-root1 -trustcacerts -file root.crt
<span style="font-weight:normal;">Owner: EMAILADDRESS=support@cacert.org, CN=CA Cert Signing Authority, OU=http://www.cacert.org, O=Root CA</span></span></blockquote>
<blockquote>
Issuer: EMAILADDRESS=support@cacert.org, CN=CA Cert Signing Authority, OU=http:/
/www.cacert.org, O=Root CA
Serial number: 0
Valid from: Sun Mar 30 04:29:49 PST 2003 until: Tue Mar 29 05:29:49 PDT 2033
Certificate fingerprints:
MD5:  A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B
SHA1: 13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33
Trust this certificate? [no]:  yes
Certificate was added to keystore</blockquote>
</pre>
<p>Now you are ready to start sending Java SSL requests to your server.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codebistro.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codebistro.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codebistro.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codebistro.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/codebistro.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codebistro.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codebistro.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/codebistro.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codebistro.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codebistro.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codebistro.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codebistro.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codebistro.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codebistro.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=27&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://codebistro.com/2010/03/25/adding-cacert-to-the-java-trusted-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c25f1610d5773e9930d6ca977de60505?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codebistro</media:title>
		</media:content>
	</item>
		<item>
		<title>The AHAH! Moment</title>
		<link>http://codebistro.com/2008/12/23/the-ahah-moment/</link>
		<comments>http://codebistro.com/2008/12/23/the-ahah-moment/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 05:41:50 +0000</pubDate>
		<dc:creator>codebistro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://codebistro.wordpress.com/?p=20</guid>
		<description><![CDATA[By my faith! For more than forty years I have been speaking prose without knowing anything about it, and I am much obliged to you for having taught me that. Molière We have been doing AHAH for a few months and now I know! The thing definitely makes sense, especially as the app gets more [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=20&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:right;"><em>By my faith! For more than forty years I have been speaking prose without knowing anything about it, and I am much obliged to you for having taught me that.</em></p>
<p style="text-align:right;"><em>M</em><em>olière</em></p>
<p style="text-align:left;">We have been doing <a href="http://microformats.org/wiki/rest/ahah" target="_blank">AHAH</a> for a few months and now I know! The thing definitely makes sense, especially as the app gets more complicated and every bit of code shaved off the client side saves us a bit of our lives.</p>
<p style="text-align:left;">The performance still requires investigation. For now I assume that transparent gzip compression can make HTML snippets just about as small as compressed JSON responses.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codebistro.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codebistro.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codebistro.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codebistro.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/codebistro.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/codebistro.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/codebistro.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/codebistro.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codebistro.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codebistro.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codebistro.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codebistro.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codebistro.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codebistro.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codebistro.com&amp;blog=5148182&amp;post=20&amp;subd=codebistro&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://codebistro.com/2008/12/23/the-ahah-moment/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c25f1610d5773e9930d6ca977de60505?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codebistro</media:title>
		</media:content>
	</item>
	</channel>
</rss>
