<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Rob@Rojotek</title>
	
	<link>http://www.rojotek.com/blog</link>
	<description>Software Development in Brisbane</description>
	<pubDate>Tue, 07 Jul 2009 07:26:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/rojotek" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>The Shack — Book Review</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/WLt8sWvyiYE/</link>
		<comments>http://www.rojotek.com/blog/2009/07/07/the-shack-book-review/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 07:26:14 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=920</guid>
		<description><![CDATA[       I have just finished reading the book The Shack. Through its powerful narrative story, The Shack presents the most powerful images of God that I have seen for a long time. The book challenges the reader&#39;s assumptions and views of God and the bible. I&#39;d highly recommend it [...]]]></description>
			<content:encoded><![CDATA[<p>       I have just finished reading the book <a href="http://theshackbook.com/">The Shack</a>. Through its powerful narrative story, <a href="http://theshackbook.com/">The Shack</a> presents the most powerful images of God that I have seen for a long time. The book challenges the reader&#39;s assumptions and views of God and the bible. I&#39;d highly recommend it to anyone remotely interested in God, Jesus and the Trinity. When making this recommendation, I&#39;d only add that this is a book of fiction, that doesn&#39;t have everything perfect about God. &#160;IMHO the best place to understand and learn about God is the bible, it is the direct source. &#160;Reading the accounts of the life of Jesus for yourself as an adult will challenge mosts peoples perceptions and understandings of Jesus. The Shack been touted as a modern day successor to <a href="http://www.amazon.com/gp/product/0192834002?ie=UTF8&#38;tag=rojotek-20&#38;linkCode=as2&#38;camp=1789&#38;creative=390957&#38;creativeASIN=0192834002">The Pilgrim&#39;s Progress</a><img border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=rojotek-20&#38;l=as2&#38;o=1&#38;a=0192834002" width="1" style=" margin-left: 0; margin-right: 0; margin-top: 0px; margin-bottom: 0px; border: none !important;" height="1" />, a title which (while somewhat bold) is at least partially justified. It&#39;s a fresh, unique and thought-provoking book that manages to touch the heart in very real ways    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=WLt8sWvyiYE:zy7X9vu5t3Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=WLt8sWvyiYE:zy7X9vu5t3Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=WLt8sWvyiYE:zy7X9vu5t3Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=WLt8sWvyiYE:zy7X9vu5t3Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=WLt8sWvyiYE:zy7X9vu5t3Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=WLt8sWvyiYE:zy7X9vu5t3Y:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=WLt8sWvyiYE:zy7X9vu5t3Y:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=WLt8sWvyiYE:zy7X9vu5t3Y:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=WLt8sWvyiYE:zy7X9vu5t3Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=WLt8sWvyiYE:zy7X9vu5t3Y:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/WLt8sWvyiYE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/07/07/the-shack-book-review/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/07/07/the-shack-book-review/</feedburner:origLink></item>
		<item>
		<title>Outliers — Book Review</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/FDL-eq94dNw/</link>
		<comments>http://www.rojotek.com/blog/2009/07/07/outliers-book-review/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 01:55:27 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Book Reviews]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=916</guid>
		<description><![CDATA[       In Outliers: The Story of Success, Malcolm Gladwell presents his findings on why some people achieve in statistically outlying ways. Malcolm Gladwell has performed a broad reaching study aiming to find what makes people who are extremely successful different. As usual he’s done a pretty good job at [...]]]></description>
			<content:encoded><![CDATA[<p>       In <a href="http://www.amazon.com/gp/product/0316017922?ie=UTF8&#38;tag=rojotek-20&#38;linkCode=as2&#38;camp=1789&#38;creative=390957&#38;creativeASIN=0316017922">Outliers: The Story of Success</a><img border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=rojotek-20&#38;l=as2&#38;o=1&#38;a=0316017922" width="1" style=" margin-left: 0; margin-right: 0; margin-top: 0px; margin-bottom: 0px; border: none !important;" height="1" />, Malcolm Gladwell presents his findings on why some people achieve in statistically outlying ways. Malcolm Gladwell has performed a broad reaching study aiming to find what makes people who are extremely successful different. As usual he’s done a pretty good job at presenting some of his findings with a good mix of anecdotes and facts.    </p>
<p>       One of the big overriding factors is how much external influences impact people. The location and cultural context in which someone is born, the year in which they were born, and even the birth month has a huge impact. Before reading the book I would have had no idea, after I can agree with him, but don’t worry, I’m not about to become an astrologer, and I don’t think it is directly related to the Chinese birth years (although there might be some links). Of additional interest is the idea of 10000 hours of practice being required to become an expert.    </p>
<p>       The quick list of impacts of particular interest for me were:    </p>
<ol>
<li>        10,000 hours of practice is required before becoming an expert      </li>
<li>        the birth month can have a huge impact (6-9 months of age difference can make a huge difference in early childhood – so early streaming favours the older children, with cascading effects)      </li>
<li>        the birth year can have a huge impact (careers available, and many hugely successful people are early adopters, so there is only a small window of age/experience that makes it available)      </li>
<li>        our cultural heritage makes a huge difference (what path and options make sense is often dependant on how we are guided by our parents, which cascades backwards)      </li>
</ol>
<p>       The lessons are taught well through the book, and it is a compelling read. You may not agree with all the findings, but I’m sure you will get a good read, learn the stories of some successful people, and be challenged in some of your thinking about success.    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=FDL-eq94dNw:3ZcQQQKDsZA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=FDL-eq94dNw:3ZcQQQKDsZA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=FDL-eq94dNw:3ZcQQQKDsZA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=FDL-eq94dNw:3ZcQQQKDsZA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=FDL-eq94dNw:3ZcQQQKDsZA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=FDL-eq94dNw:3ZcQQQKDsZA:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=FDL-eq94dNw:3ZcQQQKDsZA:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=FDL-eq94dNw:3ZcQQQKDsZA:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=FDL-eq94dNw:3ZcQQQKDsZA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=FDL-eq94dNw:3ZcQQQKDsZA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/FDL-eq94dNw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/07/07/outliers-book-review/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/07/07/outliers-book-review/</feedburner:origLink></item>
		<item>
		<title>Bayside House For Sale</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/7gITV6thwgw/</link>
		<comments>http://www.rojotek.com/blog/2009/06/30/bayside-house-for-sale/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 01:26:56 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=912</guid>
		<description><![CDATA[       My father-in-law is experimenting with selling his home privately. I’m not sure how it will go, but it will be interesting to see how the internet helps make it all happen. He’s started with an early launch of the website, before sending it out to some of the [...]]]></description>
			<content:encoded><![CDATA[<p>       My father-in-law is experimenting with selling his home privately. I’m not sure how it will go, but it will be interesting to see how the internet helps make it all happen. He’s started with an early launch of the website, before sending it out to some of the relevant Real Estate sites soon.    </p>
<p>       If you are interested in having a look at the site he put together, or if you are interested in buying a house in the coastal suburb of Wynnum, in Brisbane, Australia, take a look at <a href="http://www.baysidehouseforsale.info">Bayside House For Sale</a>.    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=7gITV6thwgw:am3PT4OaLkg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=7gITV6thwgw:am3PT4OaLkg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=7gITV6thwgw:am3PT4OaLkg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=7gITV6thwgw:am3PT4OaLkg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=7gITV6thwgw:am3PT4OaLkg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=7gITV6thwgw:am3PT4OaLkg:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=7gITV6thwgw:am3PT4OaLkg:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=7gITV6thwgw:am3PT4OaLkg:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=7gITV6thwgw:am3PT4OaLkg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=7gITV6thwgw:am3PT4OaLkg:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/7gITV6thwgw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/06/30/bayside-house-for-sale/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/06/30/bayside-house-for-sale/</feedburner:origLink></item>
		<item>
		<title>Phishing Spam Fail</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/Ne7q0Nua1m8/</link>
		<comments>http://www.rojotek.com/blog/2009/06/25/phishing-spam-fail/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:41:43 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=903</guid>
		<description><![CDATA[       &#160;    
       I always find the latest incarnations of phishing spam entertaining. &#160;I almost clicked on one of the fake facebook links a while ago, but really wasn&#39;t at all tempted to click on the links in the one [...]]]></description>
			<content:encoded><![CDATA[<p>       &#160;    </p>
<p content="EditLive! 6.3.4.80" name="generator" http-equiv="Content-Type">       I always find the latest incarnations of phishing spam entertaining. &#160;I almost clicked on one of the <a href="http://www.rojotek.com/blog/2008/06/18/facebook-phising-scams/">fake facebook links</a> a while ago, but really wasn&#39;t at all tempted to click on the links in the one that came in today..    </p>
<p>       <a href="http://www.rojotek.com/blog/wp-content/uploads/2009/06/outlook_update.png" title="outlook_update"><img alt="outlook_update" title="outlook_update" src="http://www.rojotek.com/blog/wp-content/uploads/2009/06/outlook_update.png" width="450" /></a>    </p>
<p>       Yes, I am looking at that message in Mail.app, and viewing the source did show that the link didn&#39;t go to where it said it would go.    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=Ne7q0Nua1m8:58zR9Hpvllk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Ne7q0Nua1m8:58zR9Hpvllk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=Ne7q0Nua1m8:58zR9Hpvllk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Ne7q0Nua1m8:58zR9Hpvllk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=Ne7q0Nua1m8:58zR9Hpvllk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Ne7q0Nua1m8:58zR9Hpvllk:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Ne7q0Nua1m8:58zR9Hpvllk:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Ne7q0Nua1m8:58zR9Hpvllk:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Ne7q0Nua1m8:58zR9Hpvllk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=Ne7q0Nua1m8:58zR9Hpvllk:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/Ne7q0Nua1m8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/06/25/phishing-spam-fail/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/06/25/phishing-spam-fail/</feedburner:origLink></item>
		<item>
		<title>Making the Home and End Keys work in Eclipse 3.4 on Apple Mac OSX</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/EhuhKXOqdXU/</link>
		<comments>http://www.rojotek.com/blog/2009/06/12/making-the-home-and-end-keys-work-in-eclipse-34-on-apple-mac-osx/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 01:22:29 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[OS X Tools, Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=897</guid>
		<description><![CDATA[       Hidden in the comments of the article of Starry Hope - Mac Home and End Keys are some instructions for how to make the home and end keys work well as begin and end line in eclipse. &#160;I&#39;ve done all the other tricks to make this work on [...]]]></description>
			<content:encoded><![CDATA[<p>       Hidden in the comments of the article of <a href="http://www.starryhope.com/tech/2006/mac-os-x-home-and-end-keys/#comment-294 ">Starry Hope - Mac Home and End Keys</a> are some instructions for how to make the home and end keys work well as begin and end line in eclipse. &#160;I&#39;ve done all the other tricks to make this work on my Mac, so was getting really frustrated with Eclipse. &#160;double home and double end are common key combinations for me in IntelliJ and Eclipse on Windows, so the current behaviour of going to the beginning or end of the file drives me crazy. &#160;The details of doing this differ slightly in Eclipse 3.4.1, so I&#39;ll list the steps I followed below.    </p>
<ol>
<li>        open the eclipse preferences pane      </li>
<li>        general-&#62;keys      </li>
<li>        in the filter type line start and note that there will be existing bindings when editing text.      </li>
<li>        select line start type home, and ensure that the &quot;when&quot; field stays with Editing Text      </li>
<li>        apply      </li>
<li>        follow this process for select line start, line end, and select line end.      </li>
</ol>
<p>       After doing this, expect your anger at eclipse on Mac to decrease to much more manageable levels.    </p>
<p>       &#160;    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=EhuhKXOqdXU:C72kPteLgVE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=EhuhKXOqdXU:C72kPteLgVE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=EhuhKXOqdXU:C72kPteLgVE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=EhuhKXOqdXU:C72kPteLgVE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=EhuhKXOqdXU:C72kPteLgVE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=EhuhKXOqdXU:C72kPteLgVE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=EhuhKXOqdXU:C72kPteLgVE:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=EhuhKXOqdXU:C72kPteLgVE:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=EhuhKXOqdXU:C72kPteLgVE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=EhuhKXOqdXU:C72kPteLgVE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/EhuhKXOqdXU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/06/12/making-the-home-and-end-keys-work-in-eclipse-34-on-apple-mac-osx/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/06/12/making-the-home-and-end-keys-work-in-eclipse-34-on-apple-mac-osx/</feedburner:origLink></item>
		<item>
		<title>Influence: The Psychology of Persuasion - Book Review</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/q2SJZ_GRO5A/</link>
		<comments>http://www.rojotek.com/blog/2009/06/03/influence/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 05:24:01 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Book Reviews]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=878</guid>
		<description><![CDATA[       Influence: The Psychology of Persuasion&#160;is a good little book. It provides a readable interesting introduction to the lifework of Robert Cialdini PhD. Robert&#39;s research is an interesting mix of Psychology and Marketing, and while&#160;I know that it isn&#39;t normal for an Engineer to read something like this, but [...]]]></description>
			<content:encoded><![CDATA[<p>       <a href="http://www.amazon.com/gp/product/006124189X?ie=UTF8&#38;tag=rojotek-20&#38;linkCode=as2&#38;camp=1789&#38;creative=390957&#38;creativeASIN=006124189X">Influence: The Psychology of Persuasion</a><img border="0" style=" margin-left: 0; margin-top: 0px; margin-bottom: 0px; margin-right: 0; border: none !important;" alt="" src="http://www.assoc-amazon.com/e/ir?t=rojotek-20&#38;l=as2&#38;o=1&#38;a=006124189X" height="1" width="1" />&#160;is a good little book. It provides a readable interesting introduction to the lifework of Robert Cialdini PhD. Robert&#39;s research is an interesting mix of Psychology and Marketing, and while&#160;I know that it isn&#39;t normal for an Engineer to read something like this, but I like to be atypical (I also am an Aussie who doesn&#39;t drink ;)).&#160;    </p>
<p>       Robert presents the findings of his research, and what he has discovered about persuasion, distilled into the form of six principles . What makes this particularly interesting is the active way he did the research. &#160;He studied the results of experiments, performed his own studies, and worked hard to understand the results (which he presented well). &#160;Also Robert tells of his excitement in trying to analyse situations in which someone persuaded him to do something, and his adventures in trying to understand some of the persuasive people out there. &#160;The wide range of examples in the book includes:    </p>
<ul>
<li>        Boy scouts selling chocolates      </li>
<li>        How the Krishna work      </li>
<li>        Used car salespeople      </li>
<li>        Celebrity endorsements      </li>
<li>        Limited time specials      </li>
<li>        Some very interesting scientific studies      </li>
</ul>
<p>       If nothing else reading through each of the examples of the persuasion and the discussion of what happened was brilliant. &#160;My perspective of free gifts has completely changed. I&#39;d argue that there is much more value in the book. &#160;Getting an idea of why people say yes, and some of the principles behind this is very valuable. The principles are:    </p>
<ul>
<li>        Reciprocation      </li>
<li>        Commitment and Consistency      </li>
<li>        Social Proof      </li>
<li>        Liking      </li>
<li>        Authority      </li>
<li>        Scarcity      </li>
</ul>
<p>       The following provide a very brief note of each area. They are not complete, instead opening up some of the things that most impressed me, and that are worth noting. &#160;Read the <a href="http://www.amazon.com/gp/product/006124189X?ie=UTF8&#38;tag=rojotek-20&#38;linkCode=as2&#38;camp=1789&#38;creative=390957&#38;creativeASIN=006124189X">book</a> if you want to get the real sense of what&#39;s being talked about. &#160;(Failing reading the book you can visit the <a href="http://www.influenceatwork.com/">website</a>).    </p>
<h3>       Reciprocation    </h3>
<p>       After someone does something nice we are likely to reciprocate and do something nice for them. What we do in return may be much greater in value. &#160;Also if we say no to what feels like a big request, we are likely to reciprocate by saying yes to a smaller request.    </p>
<p>       In sales. Try and start big. Then be nice and sell smaller.    </p>
<h3>       Commitment and Consistency    </h3>
<p>       Once we have made a commitment to something we are likely to act in a way that is consistent with that action.    </p>
<p>       If we say that we start doing something small we are likely to continue. &#160;This provides an interesting trade-off between this principle and reciprocation. &#160;The way I would reconcile things is the start with a big request, then graciously let someone turn it down and go with a small request in the initial meeting. &#160;The later use the principle of consistency to continue with additional requests.    </p>
<h3>       Social proof    </h3>
<p>       We will often look to others when deciding how to act in a situation. This mostly works well, but can be the cause of problems in situations like if someone has had an accident in a crowd. &#160;People in the crowd will look to how others respond, which can lead to inactivity.    </p>
<h3>       Liking    </h3>
<p>       We will often behave differently if we like someone, or if they like us. &#160;The best example of using this principle comes from Tupperware. &#160;Women will often buy Tupperware when at a party to help their friends, even when they only went to the party because of the friendship. &#160;Blokes aren&#39;t immune to this either.    </p>
<h3>       Authority    </h3>
<p>       We treat authority figures differently. &#160;Even young college students (who we expect to have a healthy disrespect for authority)&#160;treat authority figures differently. &#160;What is particulary interesting is that experimental results show that we have a poor self perception of how much we do value authority.    </p>
<h3>       Scarcity    </h3>
<p>       A cookie tastes better if there aren&#39;t many, and even better again if the limited supply is caused by lots of other people wanting it. &#160;Tech manufactures use this principles. &#160;There is an art form to ensuring that you run out of stock on release day.    </p>
<p>       Being aware of these principles is a valuable skill to have. We all are in situations where we need to communicate important information. &#160;Being able to persuade people is important. We are all in situations where others are trying to persuade us. &#160;Robert does a good job in helping us think through strategies of how to avoid being manipulated.&#160;    </p>
<p>       Go Read the <a href="http://www.amazon.com/gp/product/006124189X?ie=UTF8&#38;tag=rojotek-20&#38;linkCode=as2&#38;camp=1789&#38;creative=390957&#38;creativeASIN=006124189X">book</a> and learn about persuasion, and use your powers for good.    </p>
<p>       &#160;    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=q2SJZ_GRO5A:3R2FKS9GOWM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=q2SJZ_GRO5A:3R2FKS9GOWM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=q2SJZ_GRO5A:3R2FKS9GOWM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=q2SJZ_GRO5A:3R2FKS9GOWM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=q2SJZ_GRO5A:3R2FKS9GOWM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=q2SJZ_GRO5A:3R2FKS9GOWM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=q2SJZ_GRO5A:3R2FKS9GOWM:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=q2SJZ_GRO5A:3R2FKS9GOWM:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=q2SJZ_GRO5A:3R2FKS9GOWM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=q2SJZ_GRO5A:3R2FKS9GOWM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/q2SJZ_GRO5A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/06/03/influence/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/06/03/influence/</feedburner:origLink></item>
		<item>
		<title>Port forwarding with iptables and debain</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/Z7eBkpK-E-Y/</link>
		<comments>http://www.rojotek.com/blog/2009/06/02/port-forwarding/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 01:59:27 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[iptables]]></category>

		<category><![CDATA[VMWare server]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=882</guid>
		<description><![CDATA[       &#160;    
       Subtitle:&#160;    
       Avoid Remembering that VMWare Server Listens on Port 8333&#160;    
       Alternate subtitle:    
  [...]]]></description>
			<content:encoded><![CDATA[<p>       &#160;    </p>
<p http-equiv="Content-Type" name="generator" content="EditLive! 6.3.4.80">       Subtitle:&#160;    </p>
<h4>       Avoid Remembering that VMWare Server Listens on Port 8333&#160;    </h4>
<p>       Alternate subtitle:    </p>
<h4>       Make Tomcat Listen on Port 80    </h4>
<p>       It&#39;s increasingly common for applications to have web front ends. &#160;These all tend to run on their own port, which is nice in that it stops services from running into each other (and means that they can run as non-root), but is somewhat painful in that there are always a whole heap of different ports to remember. &#160;Exposing a service over port 80 makes it much easier to use (especially on ie which is dumb, and doesn&#39;t know to make requests to non standard ports default to port 80, generating much rsi, and many hours logged into the <a href="http://ie-waste.appspot.com">IE Waste Recorder</a>). &#160;Making services listen on port 80 on Debian is pretty straight forward. &#160;Follow the process below (which I pinched from someone somewhere in the blogosphere a while ago, put on a server as a part of some work with <a href="http://www.rojotek.com/blog/2008/09/09/ssh-tunnelling-is-your-friend/">SSH&#160;Tunnelling</a>, and only remembered recently when we were getting some VMWare servers setup). So here is the script. In your /etc/network/if-up.d add a script with the following:    </p>
<blockquote><p>         <strong><span style=" color: #1F497D;">#!/bin/sh</span></strong>      </p>
<p>         PATH=/sbin:/bin:/usr/sbin:/usr/bin      </p>
<p>         <em><span style=" color: #1F497D;"># Flush any existing firewall rules we might have</span></em><span style=" color: #1F497D;"><br />        </span> iptables -F<br />         iptables -t nat -F<br />         iptables -t mangle -F<br />         iptables -X      </p>
<p>         <em><span style=" color: #1F497D;"># Perform the rewriting magic.</span></em><br />         iptables -t nat -A PREROUTING -p tcp <code>--</code>dport 80 -j REDIRECT <code>--</code>to 8222<br />         iptables -t nat -A OUTPUT -o lo -p tcp <code>--</code>dport 80 -j REDIRECT <code>--</code>to-port 8222      </p>
</blockquote>
<p>       This forwards requests from port 80 to port 8222, and will work for local and remote requests. &#160;I keep this in a script called /etc/network/if-up.d/firewall, because <a href="http://www.netfilter.org/projects/iptables/index.html">iptables</a> is firewallish, and I believe this is the standard place for this to live. &#160;Remember to chmod +x the script. 8222 is the http port for vmware, and will redirect to 8333 using https.&#160;By putting the script in the /etc/network/if-up.d it will automatically be run when the networking layer of your debian installation is brought up.    </p>
<p>       As per the <a href="http://it.newinstance.it/2005/06/23/how-to-do-port-redirection-with-debian-and-doing-so-securing-tomcat/">NewInstance</a> post, this will work for Tomcat as well (Luigi put the iptables rules in a different spot, but that was in 2005, and /etc/network/if-up.d is the right place for this).    </p>
<p>       So with the above iptables rules, it will be easy to make any service available on port 80.    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=Z7eBkpK-E-Y:MzJrzA7X2eI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Z7eBkpK-E-Y:MzJrzA7X2eI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=Z7eBkpK-E-Y:MzJrzA7X2eI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Z7eBkpK-E-Y:MzJrzA7X2eI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=Z7eBkpK-E-Y:MzJrzA7X2eI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Z7eBkpK-E-Y:MzJrzA7X2eI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Z7eBkpK-E-Y:MzJrzA7X2eI:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Z7eBkpK-E-Y:MzJrzA7X2eI:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=Z7eBkpK-E-Y:MzJrzA7X2eI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=Z7eBkpK-E-Y:MzJrzA7X2eI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/Z7eBkpK-E-Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/06/02/port-forwarding/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/06/02/port-forwarding/</feedburner:origLink></item>
		<item>
		<title>Updating RubyGems in OSX 10.5.7</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/RWc3_x9I2ZQ/</link>
		<comments>http://www.rojotek.com/blog/2009/05/27/updating-rubygems-in-os-x/#comments</comments>
		<pubDate>Wed, 27 May 2009 05:15:54 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[gem]]></category>

		<category><![CDATA[RubyGems]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=871</guid>
		<description><![CDATA[       .7When recently trying to install Sinatra via RubyGems, I got a message that RubyGems was out of date. I figured that gem would be smart enough to have an easy upgrade command, so there had to be a command to easily upgrade. Naturally there is:    [...]]]></description>
			<content:encoded><![CDATA[<p>       .7When recently trying to install <a href="http://www.sinatrarb.com">Sinatra</a> via RubyGems, I got a message that RubyGems was out of date. I figured that gem would be smart enough to have an easy upgrade command, so there had to be a command to easily upgrade. Naturally there is:    </p>
<p>       <code><span style=" background-color: #ffffcc;">gem update &#8211;system</span></code>    </p>
<p>       I only found this when looking through google, and I got a series of pages warning to be careful when using <code><span style=" background-color: #ffffcc;">gem update &#8211;system</span></code> as it can kill existing gems (<a href="http://puctuatedproductivity.com/2007/11/01/unistalling-ruby-installed-by-source-on-os-x">http://puctuatedproductivity.com/2007/11/01/unistalling-ruby-installed-by-source-on-os-x</a>, <a href="http://thenoobonrails.blogspot.com/2008/06/doing-gem-update-system-might-lose-all.html">http://thenoobonrails.blogspot.com/2008/06/doing-gem-update-system-might-lose-all.html</a>) so I was a bit nervous. &#160;Since I have a periodic use of ruby and&#160;I&#39;m lazy enough to make Larry Wall proud, I figured I&#39;d take a punt on just using <code><span style=" background-color: #ffffcc;">gem update &#8211;system</span></code>. &#160;Turns out it just works, and I&#39;ve kept all my old gems. &#160;Hooray. &#160;Given that the posts talking about issues are old, I&#39;m either assuming that they&#39;ve done things differently to me, or things have been fixed since then&#8230; so&#8230; if you need to update gems due to a message:    </p>
<blockquote><p>      ERROR: Error installing sinatra:<br />       fastthread requires RubyGems version &#62;= 1.2    </p></blockquote>
<p>       or similar, just use <code><span style=" background-color: #ffffcc;">gem update &#8211;system</span></code>    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=RWc3_x9I2ZQ:g0bnnNoj2GQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=RWc3_x9I2ZQ:g0bnnNoj2GQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=RWc3_x9I2ZQ:g0bnnNoj2GQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=RWc3_x9I2ZQ:g0bnnNoj2GQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=RWc3_x9I2ZQ:g0bnnNoj2GQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=RWc3_x9I2ZQ:g0bnnNoj2GQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=RWc3_x9I2ZQ:g0bnnNoj2GQ:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=RWc3_x9I2ZQ:g0bnnNoj2GQ:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=RWc3_x9I2ZQ:g0bnnNoj2GQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=RWc3_x9I2ZQ:g0bnnNoj2GQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/RWc3_x9I2ZQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/05/27/updating-rubygems-in-os-x/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/05/27/updating-rubygems-in-os-x/</feedburner:origLink></item>
		<item>
		<title>A Review of 5 Java JSON Libraries</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/BQBRccwBA84/</link>
		<comments>http://www.rojotek.com/blog/2009/05/07/a-review-of-5-java-json-libraries/#comments</comments>
		<pubDate>Thu, 07 May 2009 04:19:44 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[JSON]]></category>

		<category><![CDATA[Library]]></category>

		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/?p=860</guid>
		<description><![CDATA[       &#160;    
       json.org lists 18 different Java libraries for working with JSON (Flexjson gets a double mention). These provide varying levels of functionality, from the simplest (the default org.json packages), to more comprehensive solutions like XStream and Jackson. Join [...]]]></description>
			<content:encoded><![CDATA[<p>       &#160;    </p>
<p http-equiv="Content-Type" name="generator" content="EditLive! 6.3.4.80">       <a href="http://www.json.org/">json.org</a> lists 18 different Java libraries for working with <span class="caps">JSON</span> (Flexjson gets a double mention). These provide varying levels of functionality, from the simplest (the default org.json packages), to more comprehensive solutions like XStream and Jackson. Join me on a quick review of some of these, focusing on those which have friendly licenses, and meet my requirements. &#160;If you are lazy, you can fast forward to my <a href="#Summary2">summary</a>    </p>
<p>       My Requirements    </p>
<ol>
<li>        Serialises and Deserialises <span class="caps">JSON</span>      </li>
<li>        Lightweight and Simple      </li>
<li>        runs on Java 1.4      </li>
<li>        Friendly license      </li>
</ol>
<p>       The contendors    </p>
<ol>
<li>        org.json      </li>
<li>        Jackson      </li>
<li>        XStream      </li>
<li>        JsonMarshaller      </li>
<li>        <span class="caps">JSON</span>.simple      </li>
</ol>
<h2>       Serialises and Deserialises <span class="caps">JSON</span>    </h2>
<p>       This might sound like an obvious requirement, but I’ve seen at least one library which was completely focused on spitting out <span class="caps">JSON</span>, without any support for reading <span class="caps">JSON</span>. I’m actually using this as a pre-requisite for inclusion in my comparison. If a library can’t read <span class="caps">AND</span> write <span class="caps">JSON</span>, I’m not going to consider it.    </p>
<h2>       Lightweight    </h2>
<p>       I’ll begin by stating that my actual usecase is to operate within a plugin for EditLive!. I don’t need a all singing all dancing <span class="caps">JSON</span> serialisation/deserialisation library. There are some very cool libraries out there that do awesome stuff, but all I need to do is read and write <span class="caps">JSON</span> data.    </p>
<p>       Coupled with this is that I’ll want to be able to keep the memory footprint pretty low, so want to work with Java Streams without needing to necessarily pull in the whole serialised object if I don’t need it.    </p>
<h2>       Runs on Java 1.4    </h2>
<p>       Yep it’s still out there. Thankfully <a hrer="http://java.sun.com/j2se/1.4.2/download.html">Java 1.4.2</a> has reached it’s <span class="caps">EOL</span>, but businesses can still request patches, and there are most definitely still Ephox clients running on this <span class="caps">JRE</span>, even though more recent <span class="caps">JRE</span>’s work so much better. (side note: If you have the option of upgrading your <span class="caps">JRE</span> to Java 6, please do it, the children in Africa will be much happier. Everytime someone runs up a 1.4 <span class="caps">JRE</span> a puppy dies). 1.4 is in it’s final death throws, but it is still kicking.    </p>
<h2>       Friendly License    </h2>
<p>       For Ephox to make money from the product/component that uses <span class="caps">JSON</span> (gotta think about the $$$ at the end of the day), I’ll need to make sure that the license is non-viral and Enterprise friendly. Apache license good. <span class="caps">GPL</span> bad. (sorry <span class="caps">FSF</span>)    </p>
<h2>       Assessment&#160;    </h2>
<p>       So having run through the requirements, we can now consider the options. For each library, I’ll provide a simple table.    </p>
<p>       The metrics I’m using to judge the libraries are included in the table. The most crude metric that I’ve got is the number of classes. I’m more than happy to admit that this is a very crude way to measure how lightweight the library is, but it does provide an ok rough heuristic, particularly given that there are order of magnitude differences.    </p>
<h2>       org.json    </h2>
<p>       The granddady of them all. This comes pretty close to being a reference implementation. It provides a nice simple <span class="caps">API</span> (7 classes), doesn’t try and do any magic, and just makes sense. I’ve used it before when working with small amounts of data. Unfortunately it doesn’t provide any streaming goodness.    </p>
<table class="PrimaryBordersTable">
<tr>
<th>          url        </th>
<td>          <a href="http://www.JSON.org/java/index.html">http://www.JSON.org/java/index.html</a>         </td>
</tr>
<tr>
<th>          classes        </th>
<td>          7        </td>
</tr>
<tr>
<th>          Streaming support        </th>
<td>          No        </td>
</tr>
<tr>
<th>          Friendly License        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Java 1.4        </th>
<td>          Yes        </td>
</tr>
</table>
<h2>       Jackson    </h2>
<p>       Jackson advertises itself as a fast powerful conformant <span class="caps">JSON</span> processor. It provides heaps of features, and looks to be a good tool for reading and writing <span class="caps">JSON</span> in a variety of ways (see the <a href="http://jackson.codehaus.org/Tutorial">Jackson tutorial</a> for more). The drawback of Jackson for my purposes is that it isn’t exactly svette at 250 classes.    </p>
<table>
<tr>
<th>          url        </th>
<td>          <a href="http://jackson.codehaus.org/">http://jackson.codehaus.org/</a>         </td>
</tr>
<tr>
<th>          classes        </th>
<td>          ~250        </td>
</tr>
<tr>
<th>          Streaming support        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Friendly License        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Java 1.4        </th>
<td>          Yes        </td>
</tr>
</table>
<h2>       XStream    </h2>
<p>       XStream gets a mention because it’s cool :). I haven’t really considered it because it provides more of a direct object serialisation format, which wasn&#39;t quite what I&#39;m looking for. Also, it’s heritage as an xml serialisation format shows, and it likes Java 5 much better. The ability to directly go between Javabeans and <span class="caps">JSON</span> java classes is cool, but I don&#39;t need this magic or the 200+ classes that come with it.    </p>
<table class="PrimaryBordersTable">
<tr>
<th>          url        </th>
<td>          <a href="http://xstream.codehaus.org/">http://xstream.codehaus.org/</a>         </td>
</tr>
<tr>
<th>          classes        </th>
<td>          &#62;200        </td>
</tr>
<tr>
<th>          Streaming support        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Friendly License        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Java 1.4        </th>
<td>          Yes        </td>
</tr>
</table>
<h2>       Json Marshaller    </h2>
<p>       Json Marshaller sells itself (it almost sounds like a bolierplate project description by now) as “Fast, Lightweight, Easy to Use and Type Safe <span class="caps">JSON</span> marshalling library for Java”. It’s been under consistent active development for a number of years, and looks to be headed in the right direction. Unfortunately the current version has 3 deal stopping flaws for my environment at the moment.    </p>
<ol>
<li>        It requires Java 5      </li>
<li>        It has a dependancy on <span class="caps">ASM</span> (the developers are looking to remove his dependancy)      </li>
<li>        While it hasn’t quite piled on the bulk of XStream or Jackson, it still has a couple to many classes for me to consider      </li>
</ol>
<p>       These constraints make it not quite fit for my purposes, but like all decisions, it depends on your own situation.    </p>
<table class="PrimaryBordersTable">
<tr>
<th>          url        </th>
<td>          <a href="http://code.google.com/p/jsonmarshaller/">http://code.google.com/p/jsonmarshaller/</a>         </td>
</tr>
<tr>
<th>          classes        </th>
<td>          ~50        </td>
</tr>
<tr>
<th>          Streaming support        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Friendly License        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Java 1.4        </th>
<td>          No        </td>
</tr>
</table>
<h2>       <span class="caps">JSON</span>.simple    </h2>
<p>       <span class="caps">JSON</span>.simple advertises itself as “a simple Java toolkit for <span class="caps">JSON</span>”. It provides reading and writing to <span class="caps">JSON</span> streams. It’s lightweight and focused on generating <span class="caps">JSON</span> from Java code. The critical feature it provides is support for Java IO readers and writers.    </p>
<table class="PrimaryBordersTable">
<tr>
<th>          url        </th>
<td>          <a href="http://code.google.com/p/json-simple/">http://code.google.com/p/json-simple/</a>         </td>
</tr>
<tr>
<th>          classes        </th>
<td>          12        </td>
</tr>
<tr>
<th>          Streaming support        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Friendly License        </th>
<td>          Yes        </td>
</tr>
<tr>
<th>          Java 1.4        </th>
<td>          Yes        </td>
</tr>
</table>
<h2>       <a id="Summary2" name="Summary2">Summary&#160;</a>    </h2>
<p>       For the interested, here’s a table that summarises my findings.    </p>
<table class="PrimaryBordersTable">
<tr>
<th>          &#160;        </th>
<th>          <a href="http://www.JSON.org/java/index.html">org.json</a>         </th>
<th>          <a href="http://jackson.codehaus.org/">Jackson</a>         </th>
<th>          <a href="http://xstream.codehaus.org/">XStream</a>         </th>
<th>          <a href="http://code.google.com/p/jsonmarshaller/">Json Marshaller</a>         </th>
<th>          <a href="http://code.google.com/p/json-simple/">JSON.Simple</a>         </th>
</tr>
<tr>
<th>          classes        </th>
<td>          7        </td>
<td>          ~250        </td>
<td>          &#62;200        </td>
<td>          ~50        </td>
<td>          12        </td>
</tr>
<tr>
<th>          Streaming support        </th>
<td>          No        </td>
<td>          Yes        </td>
<td>          Yes        </td>
<td>          Yes        </td>
<td>          Yes        </td>
</tr>
<tr>
<th>          Friendly License        </th>
<td>          Yes        </td>
<td>          Yes        </td>
<td>          Yes        </td>
<td>          Yes        </td>
<td>          Yes        </td>
</tr>
<tr>
<th height="25">          Java 1.4        </th>
<td height="25">          Yes        </td>
<td height="25">          Yes        </td>
<td>          Yes        </td>
<td height="25">          No        </td>
<td height="25">          Yes        </td>
</tr>
</table>
<p>       &#160;    </p>
<h2>       Conclusion    </h2>
<p>       If you are looking for a simple lightweight Java library that reads and writes <span class="caps">JSON</span>, and supports Streams, <span class="caps">JSON</span>.simple is probably a good match. It does what it says on the box in 12 classes, and works on legacy (1.4) JREs.    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=BQBRccwBA84:-_Lpzz1sczI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=BQBRccwBA84:-_Lpzz1sczI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=BQBRccwBA84:-_Lpzz1sczI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=BQBRccwBA84:-_Lpzz1sczI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=BQBRccwBA84:-_Lpzz1sczI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=BQBRccwBA84:-_Lpzz1sczI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=BQBRccwBA84:-_Lpzz1sczI:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=BQBRccwBA84:-_Lpzz1sczI:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=BQBRccwBA84:-_Lpzz1sczI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=BQBRccwBA84:-_Lpzz1sczI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/BQBRccwBA84" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/05/07/a-review-of-5-java-json-libraries/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/05/07/a-review-of-5-java-json-libraries/</feedburner:origLink></item>
		<item>
		<title>Choosing a data storage format</title>
		<link>http://feedproxy.google.com/~r/rojotek/~3/9o_-4gD7qL4/</link>
		<comments>http://www.rojotek.com/blog/2009/05/06/choosing-a-data-storage-format/#comments</comments>
		<pubDate>Wed, 06 May 2009 02:46:56 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[JSON]]></category>

		<category><![CDATA[XML]]></category>

		<category><![CDATA[YAML]]></category>

		<guid isPermaLink="false">http://www.rojotek.com/blog/2009/05/06/choosing-a-data-storage-format/</guid>
		<description><![CDATA[       In case you haven’t noticed, XML is not a silver bullet. (google xml+silver+bullet). It is not, and should not be an automatic choice when thinking of a data storage format. The ubiquitous libraries for working with XML are often hard to use, and are often overkill for a [...]]]></description>
			<content:encoded><![CDATA[<p>       In case you haven’t noticed, <span class="caps">XML</span> is not a silver bullet. (<a href="http://www.google.com/search?q=xml+silver+bullet">google xml+silver+bullet</a>). It is not, and should not be an automatic choice when thinking of a data storage format. The ubiquitous libraries for working with <span class="caps">XML</span> are often hard to use, and are often overkill for a simple storage format. In today’s world, I’d suggest that the following options should be considered (at least briefly).    </p>
<ol>
<li>        Native Object Serialisation      </li>
<li>        Custom format      </li>
<li>        <span class="caps">XML</span> – Extensible Markup Language      </li>
<li>        <span class="caps">YAML</span> – <span class="caps">YAML</span> Ain’t a Markup Language (obviously created by geeks with the recursive name)      </li>
<li>        <span class="caps">JSON</span> – JavaScript Object Notation      </li>
</ol>
<p>       Join me in having a look at these formats, and I’ll let you know some of the issues to consider. The main problem I’m solving is for data that belongs to your own application. I’m not considering databases or interoperability.    </p>
<h2>       Native Object Serialisation    </h2>
<p>       Consider this briefly before running away. I’m particularly familiar with the idea of Java Object serialisation. I’ve used <a href="http://www.prevayler.org/">Prevayler</a> in the past storing java objects, and xml (So while I’m having a dig at Java Object serialisation in general, I’m not specifically having a go at prevayler).    </p>
<p>       While the use of native object serialisation is often easy, it has costs, making the content unreadable by humans, coupling the data storage to your implementation language, and can create object migration issues. These costs will typically outweigh the benefits. Having human readable data to aid debugging would provide reason for not using native object serialisation if there was nothing else.    </p>
<h2>       Custom Format    </h2>
<p>       The use of a custom simple text format should not be discarded out of hand. The lack of any third party dependancies is a useful feature, and should be considered. That said, if you have a library that does the parsing for you, that should not be sneezed at.    </p>
<h2>       <span class="caps">XML</span>    </h2>
<p>       As wikipedia says, “XML is a general-purpose specification for creating custom mark-up languages” (<a href="http://en.wikipedia.org/wiki/XML">Wikipedia on <span class="caps">XML</span></a>). Parsers and tools exist for many platforms and environments, which makes it a useful tool when you want to share information between different environments. While a good tool, the syntax is verbose, and can be hard for humans to read.    </p>
<p>       <span class="caps">XML</span> has influenced the birth of two of two more recent notations which are useful for data storage: <a href="http://yaml.org/spec/current.html"><span class="caps">YAML</span></a>, and <a href="http://www.json.org/xml.html"><span class="caps">JSON</span></a>    </p>
<h2>       <span class="caps">YAML</span>    </h2>
<p>       <span class="caps">YAML</span> purports to be “a human friendly data serialization standard for all programming languages” (<a href="http://yaml.org/">Yaml.org</a>). It has a well defined specification (<a href="http://yaml.org/spec/current.html"><span class="caps">YAML</span> Spec</a>), and makes for an easy to understand data storage format. Implementations of <span class="caps">YAML</span> exist for a wide range of languages, including Java, C++, Ruby and Javascript. It’s been around for a while, and has a decent amount of uptake. If it wasn’t for <span class="caps">JSON</span>, it would probably be a good default choice.    </p>
<h2>       <span class="caps">JSON</span>    </h2>
<p>       At first glance <span class="caps">JSON</span> seems much less suitable than <span class="caps">YAML</span> for languages other than JavaScript. The kicker against it is that it has “JavaScript” in the name, which has always made people feel icky. That said, it does make for a good cross platform format, it is human readable, and is implemented on a wide range of platforms (<a href="http://www.json.org/">Json.org</a>).    </p>
<p>       <span class="caps">JSON</span> has also has the advantages of having mindshare, and is slightly more familiar to developers than <span class="caps">YAML</span>. Every developer who has had anything to do with the web has done stuff with JavaScript, so the basic format will be familiar to them. Also in <span class="caps">JSON</span>’s favour is the fact that <span class="caps">JSON</span> and <span class="caps">YAML</span> are syntactically very close (<a herf="http://redhanded.hobix.com/inspect/yamlIsJson.html">see Redhanded</a>). <span class="caps">JSON</span> appears to be very close to a subset of <span class="caps">YAML</span>(<a href="http://ajaxian.com/archives/json-yaml-its-getting-closer-to-truth">Ajaxian</a>). In addition, the general applicability of <span class="caps">JSON</span> is higher, particularly for people who are going to be doing Javascript development. Also, if you have any possibility of playing with JavaScript, <span class="caps">JSON</span> is a very good option because of the native support in JavaScript.    </p>
<p>       These factors combine to make <span class="caps">JSON</span> an excellent choice.    </p>
<h2>       Summary    </h2>
<p>       Tim Bray makes a good case for this being an automatic choice based on your circumstances(<a href="http://www.tbray.org/ongoing/When/200x/2006/12/21/JSON">http://www.tbray.org/ongoing/When/200x/2006/12/21/JSON</a> ). You’ll still need to think about the pros and cons of the different technologies for your situation (see <a href="http://webignition.net/articles/xml-vs-yaml-vs-json-a-study-to-find-answers/">http://webignition.net/articles/xml-vs-yaml-vs-json-a-study-to-find-answers/</a>), but you’ll often find that <span class="caps">JSON</span> is a good format to use for data storage.    </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rojotek?a=9o_-4gD7qL4:loWnjYen41w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=9o_-4gD7qL4:loWnjYen41w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rojotek?i=9o_-4gD7qL4:loWnjYen41w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=9o_-4gD7qL4:loWnjYen41w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rojotek?i=9o_-4gD7qL4:loWnjYen41w:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=9o_-4gD7qL4:loWnjYen41w:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/rojotek?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=9o_-4gD7qL4:loWnjYen41w:bcOpcFrp8Mo"><img src="http://feeds.feedburner.com/~ff/rojotek?d=bcOpcFrp8Mo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=9o_-4gD7qL4:loWnjYen41w:XAVGb8Xj5zA"><img src="http://feeds.feedburner.com/~ff/rojotek?d=XAVGb8Xj5zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rojotek?a=9o_-4gD7qL4:loWnjYen41w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/rojotek?i=9o_-4gD7qL4:loWnjYen41w:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rojotek/~4/9o_-4gD7qL4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rojotek.com/blog/2009/05/06/choosing-a-data-storage-format/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.rojotek.com/blog/2009/05/06/choosing-a-data-storage-format/</feedburner:origLink></item>
	</channel>
</rss>
