<?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:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>$ thought | blog</title>
	
	<link>http://thoughtworker.in</link>
	<description>Place to serialize my thoughts...</description>
	<lastBuildDate>Tue, 20 Jul 2010 03:50:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/thoughtworker/blog" /><feedburner:info uri="thoughtworker/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>DNS-323, PS3 and UPnP</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/h3RkcdvBq5A/</link>
		<comments>http://thoughtworker.in/2010/07/20/dns-323-ps3-and-upnp/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 03:50:14 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[dlink]]></category>
		<category><![CDATA[dns-323]]></category>
		<category><![CDATA[ps3]]></category>
		<category><![CDATA[raid1]]></category>
		<category><![CDATA[upnp]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=142</guid>
		<description><![CDATA[I recently bought Dlink DNS-323. I am using this in RAID 1 mode to copy my data and archive images. I am also using it as media server (UPnP) for streaming video / audio and image content to PS3. The whole setup is very easy and lot of fun! I copied entire catalog of movies [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F07%2F20%2Fdns-323-ps3-and-upnp%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F07%2F20%2Fdns-323-ps3-and-upnp%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I recently bought <a href="http://www.dlink.com/products/?pid=509" target="_blank">Dlink DNS-323</a>. I am using this in RAID 1 mode to copy my data and archive images.</p>
<p><img class="alignright" src="http://lh4.ggpht.com/_iqaXjFf_V4M/TEUXG33LHjI/AAAAAAAAAXs/9fFToxym_-g/s144/DNS-323_right.png" alt="Dlink DNS-323" width="144" height="110" /></p>
<p>I am also using it as media server (<a href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play" target="_blank">UPnP</a>) for streaming video / audio and image content to PS3. The whole setup is very easy and lot of fun! I copied entire catalog of movies / audio and digital image archive and realized the setup is not working properly. I kept getting error while movie streaming on PS3.</p>
<p><em>"This content cannot be played (800288D8)"</em></p>
<p>I was very frustrated by the error message. Earlier I thought this is happening due to lack of processing power at DNS-323 end. After careful examination that possibility faded. DNS-323 has Marvell 500 Mhz processor, 64 Mb RAM, 1000 Mbps Ethernet connectivity. There are two Samsung Spinpoint 1 TB each HDD placed inside. I wasn't expecting any bottlenecks for couple of users.</p>
<p>I was about to return the unit and then I came across <a title="DNS-323 Wiki" href="http://wiki.dns323.info/start" target="_blank">this</a> fantastic online resource. I installed <a href="http://wiki.dns323.info/howto:ffp" target="_blank">Mediatomb</a> as UPnP server and disabled in-built application. This allowed me to have seamless access to my video content without any issues! I will recommend you to install this on your DNS-323 so that you can enjoy secure storage and media server. <img src='http://thoughtworker.in/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>This setup is good for -</p>
<ul>
<li>Archive of all of your files. No more nightmares of hard-drive failure!</li>
<li>Cheap and abundant storage.</li>
<li>Media serving capabilities at home.</li>
<li>Expose firewall-enabled FTP server over internet.</li>
</ul>
<p>Don't expect miraculous speeds though. 3-4.5 MBps is average transfer speeds for me. This is enough for me to backup and access stored data. For faster access, I prefer firewire or USB 2.0 drive. Figure out yourself about your requirements. Ciao!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=h3RkcdvBq5A:bfVx66GFRZ0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=h3RkcdvBq5A:bfVx66GFRZ0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=h3RkcdvBq5A:bfVx66GFRZ0:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/h3RkcdvBq5A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/07/20/dns-323-ps3-and-upnp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/07/20/dns-323-ps3-and-upnp/</feedburner:origLink></item>
		<item>
		<title>Rewards of “Frequent Check In”</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/cGtvk3YlRK8/</link>
		<comments>http://thoughtworker.in/2010/06/19/rewards-of-frequent-check-in/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 02:23:45 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=133</guid>
		<description><![CDATA[I have worked with many developers and many times, I ran into following conversation. Whenever we are in the middle of development and I ask for checking in the code, one of following reply is heard - Umm, lets do check-in towards end-of-the day. We are not yet done with the code. Let me clean [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F06%2F19%2Frewards-of-frequent-check-in%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F06%2F19%2Frewards-of-frequent-check-in%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I have worked with many developers and many times, I ran into following conversation. Whenever we are in the middle of development and I ask for checking in the code, one of following reply is heard -</p>
<ul>
<li>Umm, lets do check-in towards end-of-the day. We are not yet done with the code.</li>
<li>Let me clean up these things and make them perfect.</li>
<li>I don't want to check-in as I have some ongoing changes and I can't checkin partial files.</li>
<li>Lets checkin tomorrow when we complete major functionality.</li>
</ul>
<p>I am sure you must have heard similar conversation (or had it). Can you give a moment and think about why do are we afraid of checking-in? I have been constantly thinking about this issue and there are many reasons which makes sense on this issue. Few of them are -</p>
<p><strong>Fear of bad code</strong> - Developers are afraid of peers criticizing their code. Its GOOD! Believe me, you're never going to write perfect code without receiving feedback about it. Sooner you receive the feedback, better you perform in short time. This is the reason, people don't make their changes public until they are convinced that they can't do any better. It is clearly a false fear.<br />
One of the way to improve and influence your team is to make your work public as it is in progress. This way, you make team aware of your approach. If there is any conflict in approach or disconnect in understanding, it becomes visible sooner and you can resolve it better.</p>
<p><strong>Not sure about impact on other parts of the system</strong> - Yes! This is very valid reason. You're in middle of a feature and you're not sure how it will impact rest of the system if you check-in early. Half baked features can take the whole system down. To get over this fear, unit testing your code, running a full build before check-in and having continuous integration makes sure your changes are fail-safe. Make sure that you are providing a working build to the team by writing solid unit tests and more comprehensive integration tests.</p>
<p><strong>Working on multiple parallel streams</strong> - It is often a bad practice to work on multiple parallel streams of work. Even worse when you don't commit any of those changes in VCS.<br />
If you're working with DVCS like Git, it is very easy to branch and commit code. If you're working on central VCS like subversion, then it is little tricky to keep your parallel working streams with minimal effort. There are few simple things you can do to make your life little easy -</p>
<p>Use DVCS. This will prove immense value in long run, if you use it properly. There is a learning curve associated with it, but it is definitely worth it.<br />
If you are using SVN, create a branch if it is a big change. If it is small change, evaluate if you can checkin without breaking application. Taking patch is another option too. Use unit testing safety net on your side and make sure you progress smoothly.</p>
<p>In any situation, its not helpful when you're working on parallel streams of work and those changes co-exist. I have often observed people checking in partial or missing content. This happens when they are confused and trying to understand what all files are required to make one of streams live.</p>
<p><strong>Why frequent check in is important?</strong></p>
<ul>
<li>Getting feedback from your application and team.</li>
<li>Never lose any of your changes and hard work. Machines do crash and when they do, its bad!</li>
<li>Avoid stepping on each others toes, particularly when team is distributed and code churn is faster.</li>
<li>Making whole team aware of your approach and remove silo operations. This helps bringing everybody on the same page and triggers conversations whenever required.</li>
<li>You can't explain in 30 minutes of speech what code explains in 10 minutes. It eliminates confusion.</li>
<li>Discipline of frequent checkin allows you to make sure, changes are not causing any conflicts.</li>
<li>Smaller changes, encourages you to refactor and improve code quality.</li>
</ul>
<p>If you want to read more -</p>
<p>Golden principle of development: <a href="http://www.codinghorror.com/blog/2008/08/check-in-early-check-in-often.html" target="_blank">Check-in-early, check-in-often</a>.<br />
DVCS introduction from the master: <a href="http://www.youtube.com/watch?v=4XpnKHJAok8" target="_blank">Google Video on Git</a>.<br />
Continuous integration: <a href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank">Wikipedia entry</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=cGtvk3YlRK8:MNOWggcuP0M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=cGtvk3YlRK8:MNOWggcuP0M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=cGtvk3YlRK8:MNOWggcuP0M:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/cGtvk3YlRK8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/06/19/rewards-of-frequent-check-in/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/06/19/rewards-of-frequent-check-in/</feedburner:origLink></item>
		<item>
		<title>Export CSV from MySQL Query</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/bqpiqC9ONmY/</link>
		<comments>http://thoughtworker.in/2010/05/06/export-csv-from-mysql-query/#comments</comments>
		<pubDate>Thu, 06 May 2010 15:51:17 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Murmur]]></category>
		<category><![CDATA[tips mysql]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=118</guid>
		<description><![CDATA[As you might be aware that I started a "Murmur" category on my blog. I discover or learn these tips on day-to-day basis and just forget them. Sometimes those takes hours to come with one or often it boils down to just a google search. In any case, you might want to refer to these [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F05%2F06%2Fexport-csv-from-mysql-query%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F05%2F06%2Fexport-csv-from-mysql-query%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>As you might be aware that I started a "<a title="Murmurs category on ThoughtBlog" href="http://thoughtworker.in/category/murmur/" target="_self">Murmur</a>" category on my blog. I discover or learn these tips on day-to-day basis and just forget them. Sometimes those takes hours to come with one or often it boils down to just a google search. In any case, you might want to refer to these tips in future as well. So I decided to keep a log of them publicly so that it can help others too.</p>
<p>Many times I need to get dump of data which is output of a sql query. MySQL makes it very easy to output the query result as csv file from command line. Following command should create a names.csv file in $MYSQL_INSTALLATION/data/$DB_NAME/ directory. This command comes very handy when you're working on remote shell where you don't have any GUI tools.</p>
<pre class="sql"><span style="color: #993333; font-weight: bold;">SELECT</span> first_name, last_name</pre>
<pre class="sql"><span style="color: #993333; font-weight: bold;">INTO</span> <span style="color: #993333; font-weight: bold;">OUTFILE</span> <span style="color: #ff0000;">'names.csv'</span></pre>
<pre class="sql"><span style="color: #993333; font-weight: bold;">FIELDS</span> TERMINATED <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #ff0000;">','</span></pre>
<pre class="sql"><span style="color: #993333; font-weight: bold;">ENCLOSED</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #ff0000;">'&quot;'</span></pre>
<pre class="sql"><span style="color: #993333; font-weight: bold;">ESCAPED</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\\</span>'</span></pre>
<pre class="sql"><span style="color: #993333; font-weight: bold;">LINES</span> TERMINATED <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span></pre>
<pre class="sql"><span style="color: #993333; font-weight: bold;">FROM</span> employee;</pre>
<p></br><br />
Very useful.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=bqpiqC9ONmY:Hnmx15k7MUE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=bqpiqC9ONmY:Hnmx15k7MUE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=bqpiqC9ONmY:Hnmx15k7MUE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/bqpiqC9ONmY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/05/06/export-csv-from-mysql-query/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/05/06/export-csv-from-mysql-query/</feedburner:origLink></item>
		<item>
		<title>Nice utility for finding classes in Jar files</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/7c7W417wvWQ/</link>
		<comments>http://thoughtworker.in/2010/05/06/nice-utility-for-finding-classes-in-jar-files/#comments</comments>
		<pubDate>Thu, 06 May 2010 15:22:19 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Murmur]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=114</guid>
		<description><![CDATA[When you're working on large java code-base, its not very difficult to run in situation where you get a ClassNotFoundException. Many times we have a daunting task to find where the class is located and it is not very easy task. I found this nice utility called "jarscan" which makes life much easier. Worked great [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F05%2F06%2Fnice-utility-for-finding-classes-in-jar-files%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F05%2F06%2Fnice-utility-for-finding-classes-in-jar-files%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>When you're working on large java code-base, its not very difficult to run in situation where you get a ClassNotFoundException. Many times we have a daunting task to find where the class is located and it is not very easy task. I found this nice utility called "<a title="Jarscan" href="http://www.inetfeedback.com/jarscan/" target="_blank">jarscan</a>" which makes life much easier.</p>
<p>Worked great for me today!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=7c7W417wvWQ:8D1K-ilazjg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=7c7W417wvWQ:8D1K-ilazjg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=7c7W417wvWQ:8D1K-ilazjg:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/7c7W417wvWQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/05/06/nice-utility-for-finding-classes-in-jar-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/05/06/nice-utility-for-finding-classes-in-jar-files/</feedburner:origLink></item>
		<item>
		<title>Delete My Account</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/NdsBvHvuKFo/</link>
		<comments>http://thoughtworker.in/2010/05/03/delete-my-account/#comments</comments>
		<pubDate>Mon, 03 May 2010 14:20:10 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=107</guid>
		<description><![CDATA[I have few questions for you - For how many years, are you using Internet? Can you remember all the sites where you created an account or shared your personal information? (Email, Phone number, Birth date etc.) Although you can remember all the websites you registered, can you keep those accounts active forever? Whenever I [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F05%2F03%2Fdelete-my-account%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F05%2F03%2Fdelete-my-account%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I have few questions for you -</p>
<ul>
<li>For how many years, are you using Internet?</li>
<li>Can you remember all the sites where you created an account or shared your personal information? (Email, Phone number, Birth date etc.)</li>
<li>Although you can remember all the websites you registered, can you keep those accounts active forever?</li>
</ul>
<p>Whenever I ask these questions to myself, I get uncomfortable. There are probably 50 websites, who have my online account and personal information. It might be more in most probability. Considering this might be similar situation for most of us, how to make sure that you can delete your account? Most of the websites like Google / Yahoo allows you to delete the account completely. Although few of my readers will love to debate about its actual process. <img src='http://thoughtworker.in/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Considering our faith in these online services, I am not quite sure what does complete account removal means for these online websites (Facebook / Gmail / Yahoo etc). Even if it is not complete removal at least I have an option to go and remove my online account information. For most of the websites this option is not available at all!</p>
<p>I will love to make this as public awareness that we should have account removal as standard feature on all the websites who allow users to sign-up. It should be complete removal of account (including all personal information) and not limited to just un-subscribing user from their mailing list.</p>
<p>This will make lot of users much more comfortable to create online account.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=NdsBvHvuKFo:wMV1VGC0uj0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=NdsBvHvuKFo:wMV1VGC0uj0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=NdsBvHvuKFo:wMV1VGC0uj0:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/NdsBvHvuKFo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/05/03/delete-my-account/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/05/03/delete-my-account/</feedburner:origLink></item>
		<item>
		<title>Things to Ponder with Alfresco (Part III: WCM – Improvements)</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/bDgIAkQBxgM/</link>
		<comments>http://thoughtworker.in/2010/01/04/things-to-ponder-with-alfresco-part-iii-wcm-improvements/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 15:18:34 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[alfresco]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=93</guid>
		<description><![CDATA[Now days using web content management systems (WCM) is trivial. You should continuously update the website content to maintain a fresh look. It increases returning customers and popularity. Almost every major website uses a CMS to achieve this. It might be an in-house developed or an off-the-shelf product. In any case, it helps organizations to separate the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F01%2F04%2Fthings-to-ponder-with-alfresco-part-iii-wcm-improvements%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2010%2F01%2F04%2Fthings-to-ponder-with-alfresco-part-iii-wcm-improvements%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Now days using web content management systems (<a title="Wikipedia: Web Content Management System" href="http://en.wikipedia.org/wiki/Web_content_management_system" target="_self">WCM</a>) is trivial. You should continuously update the website content to maintain a fresh look. It increases returning customers and popularity. Almost every major website uses a <a title="Wikipedia: Content Management Systems" href="http://en.wikipedia.org/wiki/Content_management_system" target="_self">CMS</a> to achieve this. It might be an in-house developed or an off-the-shelf product. In any case, it helps organizations to separate the content authoring team from the application development cycles.  This helps in quicker content updates without being dependent on release schedules. I am going to point out certain things about WCM feature of alfresco. You can also apply the same principles to your WCM if you are using existing one, or planning to develop a new one!</p>
<p><strong>Content storage format </strong>- Alfresco provides a nice feature called "web-forms". There are two types of forms currently available i.e. WCM forms and ECM forms. Both of them capture the input data and store it as XML. You can also choose to apply content transformation using XSL. It helps to save final output as either HTML, Text or PDF etc. Not to forget, the content is actually captured and saved as XML. In my perception one of the strengths of Alfresco is its content repository. If XML is target format, it is saved in CR as a cm:content property and it defeats the whole purpose. If CR is not aware of the structure of the content, it defeats the purpose of content model definition? It is not very different from storing the content xml as plain string in database. Frankly I don't see any benefit of using CR over database in this method.</p>
<p>To avoid such inefficient use of alfresco, you can take some effort and write a custom form component. Use custom forms (develop forms in your application and then communicate with alfresco using API) to capture user data and store them in content repository in defined content model and schema.</p>
<p>This will help you in -</p>
<ul>
<li>Content repository now understands the structure of your content. This is really important and if you have any doubts, please post that in comments. I might write about it later in my blog.</li>
<li>You can apply your custom content transformation logic so that content can be exported in XML / HTML / custom output format. Just generate this once every time you update the content. It improves the efficiency of content management system to deliver target content.</li>
<li> You will have a flexibility of own input format, use JSP or rails forms, its your choice!</li>
</ul>
<p><strong>Deployment benefits - </strong> Alfresco has another great strength, Deployment Infrastructure. I think its also one of its weaknesses. Use it wisely to improve your release management. On the release date of web application usually you come across content sanity issues, or format differences. To avoid that, setup proper environments where alfresco can sync content and test it before you push it to live. This might save you a lot of frustration.</p>
<p>Although its a great feature, there is a caveat to that. Generally all the code for web application is stored in CVS systems. Alfresco code (web scripts, web form definitions etc.) is stored in alfresco. Keeping the versions of alfresco code and web application code is nightmare. Develop some automated web script deployment tool and every time you release, wipe out all the previous webscripts and deploy new ones from the CVS. This always makes you keep updated code in the CVS and versioning becomes much robust.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=bDgIAkQBxgM:A2-upkD85gQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=bDgIAkQBxgM:A2-upkD85gQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=bDgIAkQBxgM:A2-upkD85gQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/bDgIAkQBxgM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2010/01/04/things-to-ponder-with-alfresco-part-iii-wcm-improvements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2010/01/04/things-to-ponder-with-alfresco-part-iii-wcm-improvements/</feedburner:origLink></item>
		<item>
		<title>Ubuntu: Cisco VPN Client installation on Intrepid</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/3H83X4ZQShU/</link>
		<comments>http://thoughtworker.in/2008/11/19/ubuntu-cisco-vpn-client-installation-on-intrepid/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 04:57:56 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://thoughtworker.in/?p=81</guid>
		<description><![CDATA[Cisco VPN client for linux installation doesn't happen out-of-the-box. There is plugin of VPNC which gets integrated with NetworkManager of Ubuntu but I didn't focus on that. Maybe somebody would like to guide the steps for it. I investigated a little and found bunch of articles / blog post about VPN issue. Some of the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2008%2F11%2F19%2Fubuntu-cisco-vpn-client-installation-on-intrepid%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2008%2F11%2F19%2Fubuntu-cisco-vpn-client-installation-on-intrepid%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Cisco VPN client for linux installation doesn't happen out-of-the-box. There is plugin of VPNC which gets integrated with NetworkManager of Ubuntu but I didn't focus on that. Maybe somebody would like to guide the steps for it. I investigated a little and found bunch of articles / blog post about VPN issue. Some of the articles are outdated or needs a update. Following steps will get VPN client working on Ubuntu Intrepid and use certificate based authentication to connect.</p>
<p>First get the distribution of VPNClient for linux. This distribution is valid for 32-bit as well 64-bit installations.</p>
<pre>

wget http://tuxx-home.at/vpn/Linux/vpnclient-linux-x86_64-4.8.01.0640-k9.tar.gz

tar -xvzf  vpnclient-linux-x86_64-4.8.01.0640-k9.tar.gz

cd vpnclient

sudo ./vpn_install
</pre>
<p>This command should result in similar output below:</p>
<pre>
Cisco Systems VPN Client Version 4.8.01 (0640) Linux Installer
Copyright (C) 1998-2006 Cisco Systems, Inc. All Rights Reserved.

By installing this product you agree that you have read the
license.txt file (The VPN Client license) and will comply with
its terms.

Directory where binaries will be installed [/usr/local/bin]

Automatically start the VPN service at boot time [yes]

In order to build the VPN kernel module, you must have the
kernel headers for the version of the kernel you are running.

Directory containing linux kernel source code [/lib/modules/2.6.27-7-generic/build]

* Binaries will be installed in "/usr/local/bin".
* Modules will be installed in "/lib/modules/2.6.27-7-generic/CiscoVPN".
* The VPN service will be started AUTOMATICALLY at boot time.
* Kernel source from "/lib/modules/2.6.27-7-generic/build" will be used to build
the module.

Is the above correct [y]

Making module
make -C /lib/modules/2.6.27-7-generic/build SUBDIRS=/home/sachin/vpnsandbox/vpnclient
modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.27-7-generic'
CC [M]  /home/sachin/vpnclient/linuxcniapi.o
In file included from /home/sachin/vpnclient/Cniapi.h:15,
from /home/sachin/vpnclient/linuxcniapi.c:31:
/home/sachin/vpnclient/GenDefs.h:113: error: conflicting types for ‘uintptr_t’
include/linux/types.h:40: error: previous declaration of ‘uintptr_t’ was here
make[2]: *** [/home/sachin/vpnclient/linuxcniapi.o] Error 1
make[1]: *** [_module_/home/sachin/vpnclient] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-7-generic'
make: *** [default] Error 2
Failed to make module "cisco_ipsec.ko".
</pre>
<p>To get around this error you need to patch couple of files in the existing source. Download the patch and apply it.</p>
<pre>

wget http://projects.tuxx-home.at/ciscovpn/patches/vpnclient-linux-2.6.24-final.diff

patch &lt; ./vpnclient-linux-2.6.24-final.diff
</pre>
<p>After successful patch of the files you can proceed to the install procedure again -</p>
<pre>
sudo ./vpn_install
</pre>
<p>You should be able to see all files getting compiled successfully. If it is successful you will see a message like below -</p>
<pre>

* You must run "/etc/init.d/vpnclient_init start" before using the client.
* This script will be run AUTOMATICALLY every time you reboot your computer.
</pre>
<p>Now you can copy your vpn configuration files (*.pcf) in /etc/opt/cisco-vpnclient/Profiles folder and you can start connecting the the vpn network using command -</p>
<pre>

vpnclient connect &lt;profile_name&gt;
</pre>
<p>If you want to use certificate based authentication for the connection then following additional steps will be required.</p>
<pre>

sudo cisco_cert_mgr -U -op import
</pre>
<p>This will ask you for the certificate file location and password for the file if required. Enter the passwords for importing certificates if required and proceed with connection.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=3H83X4ZQShU:_JSPCD1qqZA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=3H83X4ZQShU:_JSPCD1qqZA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=3H83X4ZQShU:_JSPCD1qqZA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/3H83X4ZQShU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2008/11/19/ubuntu-cisco-vpn-client-installation-on-intrepid/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2008/11/19/ubuntu-cisco-vpn-client-installation-on-intrepid/</feedburner:origLink></item>
		<item>
		<title>Region Locked DVDs and Mac Book Pro</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/Plf2sdHLcyU/</link>
		<comments>http://thoughtworker.in/2008/10/16/macbook-pro-dvd-issues/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 16:58:14 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://www.thoughtworker.in/?p=87</guid>
		<description><![CDATA[Recently I got a MacBook Pro 2008 from my office. I love the machine but I was completely disappointed when I inserted Italian Job DVD. I was asked to change the region to 2/4 and I stay in region 5. I own the original copy of the DVD and unfortunately, there is no Region 5 [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2008%2F10%2F16%2Fmacbook-pro-dvd-issues%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2008%2F10%2F16%2Fmacbook-pro-dvd-issues%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Recently I got a MacBook Pro 2008 from my office. I love the machine but I was completely disappointed when I inserted <a title="Imdb Italian Job Page" href="http://www.imdb.com/title/tt0064505/" target="_blank">Italian Job</a> DVD. I was asked to change the <a title="DVD Region Code" href="http://en.wikipedia.org/wiki/DVD_region_code" target="_blank">region</a> to 2/4 and I stay in region 5. I own the original copy of the DVD and unfortunately, there is no Region 5 copy available in India. It was never the issue for me because in Windows, <a title="VLC Media Player" href="http://www.videolan.org/vlc/" target="_blank">VLC</a> media player could easily bypass these region codes and ignore it conveniently.</p>
<div class="wp-caption alignnone" style="width: 410px"><img title="DVD Regions Map" src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/92/DVD-Regions_with_key-2.svg/400px-DVD-Regions_with_key-2.svg.png" alt="DVD Regions Map" width="400" height="203" /><p class="wp-caption-text">DVD Regions Map</p></div>
<p>I own few more DVDs belonging to 2/3/4 regions. I own another DVD player (my PlayStation 3) and that is also region locked. Now I have two very expensive machines and lots of <em>original </em>DVD titles yet can't play any of them. I don't know who created this *stupid* protection system which prohibits user from playing legal copies!</p>
<p>I tried various things on my Mac -</p>
<ul>
<li>Using VLC media player for OS X</li>
<li>Using utilities like MacTheRipper for decrypting the dvd</li>
<li>RegionX for changing the region indefinite times</li>
</ul>
<p>None of the above works. I have almost read thousand blog / forum posts related to DVD region issues with Mac but everything was completely failure. Apparently MacBooks have this "MATSHITA DVD-R   UJ-867" super drive which has no way of getting around the protection. I don't want to replace the firmware to region free as it will void my company laptop warranty which makes me crazy.</p>
<p>Now what reward I got by paying for the legal versions of the DVDs? In India any English movie DVD will cost you around Rs. 399-699 which is considerably expensive. You pay Rs. 800-1000 for 1 month of the internet connection. Why I will not be tempted to download nicely ripped DivX movie from torrent instead of buying freaking expensive DVDs which don't play at all?</p>
<p>Now can I demand my money back for these movies? Can I illegaly download the DivX rip of the movie and play it on my laptop and still it will be legal? I really don't know but I will never buy legal DVDs for sure!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=Plf2sdHLcyU:FpwCTXMrl9I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=Plf2sdHLcyU:FpwCTXMrl9I:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=Plf2sdHLcyU:FpwCTXMrl9I:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/Plf2sdHLcyU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2008/10/16/macbook-pro-dvd-issues/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2008/10/16/macbook-pro-dvd-issues/</feedburner:origLink></item>
		<item>
		<title>Things to ponder with Alfresco (Part-II: Workflow Design)</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/8w2K9vqigNw/</link>
		<comments>http://thoughtworker.in/2008/09/21/workflow-design/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 11:47:12 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.thoughtworker.in/?p=77</guid>
		<description><![CDATA[   Complex Workflow Designs As I mentioned in my earlier post that I will be writing few more posts about the Alfresco. This is second installment in the series. If you are thinking to use Alfresco at the center of your application then it is hard that it will not have a workflow. If your [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2008%2F09%2F21%2Fworkflow-design%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2008%2F09%2F21%2Fworkflow-design%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<div class="mceTemp">
<dl id="attachment_76" class="wp-caption alignright" style="width: 310px;"><a href="http://thoughtworker.in/wp-content/uploads/2008/09/cartoonworkflow1.jpg"><img class="size-medium wp-image-76" title="Workflow Cartoon" src="http://www.thoughtworker.in/wp-content/uploads/2008/09/cartoonworkflow-300x238.jpg" alt="Complex Workflow Designs" width="300" height="238" /></a>  </p>
<dd class="wp-caption-dd">Complex Workflow Designs</dd>
</dl>
</div>
<p class="MsoNormal">As I mentioned in my earlier post that I will be writing few more posts about the Alfresco. This is second installment in the series. If you are thinking to use Alfresco at the center of your application then it is hard that it will not have a workflow. If your business process is just more than simple workflows mentioned in Alfresco, then for sure you have to write your own business model definition.</p>
<p class="MsoNormal">If you are planning to do so, here are few lessons I have learned –</p>
<ul>
<li><em>Simplicity</em> – We got lot of benefits just by keeping our process definition simple and neat. Don’t add unnecessary steps which will cause confusing steps for the end users.</li>
<li><em>Right things at right place – </em>Alfresco is very flexible in terms of business logic implementation. You will always have multiple options to accomplish same operation. Web Scripts, Java classes or Web Service and you will be tempted to use different things at times. Decide one approach and stick to it. Put as much as logic in the workflow and don’t spread across the workflow business logic outside the workflow.</li>
<li><em>Loops can be evil –</em> Loops in the workflow actions can be daunting at times. Rethink on the circular steps in the workflow and make sure you are not violating the “simplicity” rule. It might be difficult sometimes to achieve these steps.</li>
<li><em>Blocking is good sometimes –</em> Next bigger decision should be synchronous operations or asynchronous. All the operations which might result in inconsistent states should be synchronous i.e. transactional. Asynchronous operations are better in terms of responsiveness. Sending e-mails could be asynchronous tasks as you people can receive emails after couple of seconds, but if it is related to pushing records to a queue, let it be synchronous. You got the idea!</li>
</ul>
<p>You are advised to check Alfresco <a title="Alfresco Workflow Wiki" href="http://wiki.alfresco.com/wiki/Workflow" target="_blank">wiki</a> for more details. There is plenty of documentation available for the administration and authoring custom workflows.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=8w2K9vqigNw:I8t1fHnQCbI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=8w2K9vqigNw:I8t1fHnQCbI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=8w2K9vqigNw:I8t1fHnQCbI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/8w2K9vqigNw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2008/09/21/workflow-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2008/09/21/workflow-design/</feedburner:origLink></item>
		<item>
		<title>Things to ponder with Alfresco (Part-I: Content Model)</title>
		<link>http://feedproxy.google.com/~r/thoughtworker/blog/~3/Kkxn6N0XU3E/</link>
		<comments>http://thoughtworker.in/2008/09/13/things-to-ponder-with-alfresco-part-i-content-model/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 18:21:54 +0000</pubDate>
		<dc:creator>Sachin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.thoughtworker.in/?p=69</guid>
		<description><![CDATA[For any content repository, content model definition is similar to the DDL (schema definition) for databases. It is expected in a big application to have evolutionary content model like databases. Updating the table structures or introducing new tables is common in any business application. In content repository, you should also keep in mind that your [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthoughtworker.in%2F2008%2F09%2F13%2Fthings-to-ponder-with-alfresco-part-i-content-model%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthoughtworker.in%2F2008%2F09%2F13%2Fthings-to-ponder-with-alfresco-part-i-content-model%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>For any content repository, content model definition is similar to the DDL (schema definition) for databases. It is expected in a big application to have evolutionary content model like databases. Updating the table structures or introducing new tables is common in any business application. In content repository, you should also keep in mind that your content model should be open to evolve. Define the content model which will be extensible. Most of the good practices of database design should be applicable here.</p>
<p>Few tips for better content models -</p>
<ul>
<li>Use aspects for specializing types instead of defining content types. There are few advantages of that, aspects can be applied or removed at run-time which gives you much more control over the dynamic nature of types.</li>
<li>Aspects also helps in keeping the default set of properties over a content type to be small. Alfresco recommends you to prefer aspects over custom content types.</li>
<li>Aspects helps you to logically group properties. This helps your data to be part of multiple groups at the same time. If you have aspects <em>Publishable</em> and <em>Indexable</em>; you can apply or revoke a nature at your will without much hassle.</li>
<li>Indexing is very helpful for searchable content. It is useful but use it wisely. The cost of indexing in Alfresco is much higher than cost of index in Databases as this will be full-text search indexes. It will take up more disk space as well as time to index the data. Don't index the content which people are not expect to search! You can define this at the time of content model definition.</li>
<li>Versioning is similar to indexing and use this wisely. The content which is versionable is handled separately by Alfresco. This might be affecting performance as your repository size grows. Don't mark content as versionable if you don't plan to maintain revisions for content.</li>
</ul>
<p>I will continue this series with other experiences with Alfresco. Later.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=Kkxn6N0XU3E:-uzSja4PfOA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/thoughtworker/blog?a=Kkxn6N0XU3E:-uzSja4PfOA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/thoughtworker/blog?i=Kkxn6N0XU3E:-uzSja4PfOA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/thoughtworker/blog/~4/Kkxn6N0XU3E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://thoughtworker.in/2008/09/13/things-to-ponder-with-alfresco-part-i-content-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://thoughtworker.in/2008/09/13/things-to-ponder-with-alfresco-part-i-content-model/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.367 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-02 16:54:06 --><!-- Compression = gzip -->
