<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Paul's blog - dedicated to my friends</title>
	<atom:link href="http://paulsabou.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://paulsabou.wordpress.com</link>
	<description>Blogging for friends</description>
	<lastBuildDate>Sun, 20 Nov 2011 09:47:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='paulsabou.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Paul's blog - dedicated to my friends</title>
		<link>http://paulsabou.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://paulsabou.wordpress.com/osd.xml" title="Paul&#039;s blog - dedicated to my friends" />
	<atom:link rel='hub' href='http://paulsabou.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Using parent/child applications contexts in the Spring framework</title>
		<link>http://paulsabou.wordpress.com/2011/11/20/using-parentchild-applications-contexts-in-the-spring-framework/</link>
		<comments>http://paulsabou.wordpress.com/2011/11/20/using-parentchild-applications-contexts-in-the-spring-framework/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 09:47:04 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[spring framework]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://paulsabou.wordpress.com/?p=503</guid>
		<description><![CDATA[The problem : We would like to have an application that has two layers : (1) a non-dynamic layer (2) dynamic layer The non-dynamic layer could include things like : * database sessions * mail services * templating engines * basic beans/components etc. As to keep things simple, a bean/component belongs to the non-dynamic layer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=503&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>The problem :</strong><br />
We would like to have an application that has two layers :<br />
(1) a non-dynamic layer<br />
(2) dynamic layer</p>
<p>The non-dynamic layer could include things like :<br />
* database sessions<br />
* mail services<br />
* templating engines<br />
* basic beans/components<br />
etc.</p>
<p>As to keep things simple, a bean/component belongs to the non-dynamic layer if you are ok<br />
with changing only through redeploys. The examples mentioned (ie. database sessions, etc.)<br />
clearly belong to this category as we almost never want to change the database session settings<br />
while the application runs.</p>
<p>The dynamic layer could include things like :<br />
* configurable modules<br />
* rule processing chains<br />
* logging</p>
<p>The rule of thumb would be : anything that you might want to change while the application runs<br />
(without any redeploy) would belong to the dynamic layer.</p>
<p>The Spring JAVA framework can help a lot with this. There are mainly 3 ways to do it :<br />
(1) multiple hierarchical application contexts<br />
(2) dynamic language support<br />
(3) OSGI</p>
<p>The easiest (and best performing) solution is to use multiple hierarchical application contexts.</p>
<p><strong>1. Creating hierarhical application contexts</strong><br />
The principle behind this is the fact that the Spring application context is similar to a<br />
tree, builded from bottom up. As such every application context that we load (an XML file content<br />
or just plain String) can have another application context as parent.</p>
<p>AbstractApplicationContext parentContext = new ClassPathXmlApplicationContext(new String[]{&#8220;classpath:META-INF/spring/applicationContext-job-sample1.xml&#8221;});<br />
AbstractApplicationContext childContext = new ClassPathXmlApplicationContext(new String[]{&#8220;classpath:META-INF/spring/applicationContext-job-sample1.xml&#8221;},parentContext);</p>
<p>The fact that the tree is builded bottom up is a usefull metaphor to remember as it constrains the visibility of the application contexts (and the beans defined inside of them):<br />
the child can see the parent, the parent cannot see the child. This makes sense as when the parent context was loaded, there was no child context available.<br />
As such the visibility/scope is going only one way. You cannot use the parent context to get a bean from the child context. Only the other way around : use the child context to<br />
get a bean from the parent context.</p>
<p><strong>2. Managing multiple contexts &#8211; the simplest way to go</strong><br />
The easiest/cleanest way to work with this situation is to think of the child application context as a &#8220;second class citizen&#8221;. As such it can contain beans that<br />
refer to the parent/stable context. Also you avoid cross-refering/cross-using beans from one child context to another (this is not possible through the Spring<br />
context application loader, but it could be done trough different hacks in your code).<br />
A good example of the child application context would be that of a job that gets configured as a chain of multiple resources/beans available in the parent :</p>
<p>[Parent context]<br />
&lt;bean id=&#8221;parentTask1 /&gt;<br />
&lt;bean id=&#8221;parentTask2 /&gt;<br />
&lt;bean id=&#8221;databaseSession&#8221; /&gt;</p>
<p>[Child context 1]<br />
&lt;bean id=&#8221;job1&#8243; class=&#8221;com.example.Job&#8221; &gt;<br />
&lt;util:list name=&#8221;tasks&#8221; &gt;<br />
&lt;value ref=&#8221;parentTask1&#8243; /&gt;<br />
&lt;value ref=&#8221;parentTask2&#8243; /&gt;<br />
&lt;/util:list&gt;<br />
&lt;property name=&#8221;databaseSession&#8221; ref=&#8221;parentDatabaseSession&#8221; /&gt;<br />
&lt;/bean&gt;</p>
<p>[Child context 2]<br />
&lt;bean id=&#8221;job2&#8243; class=&#8221;com.example.Job&#8221; &gt;<br />
&lt;util:list name=&#8221;tasks&#8221; &gt;<br />
&lt;value ref=&#8221;parentTask1&#8243; /&gt;<br />
&lt;value ref=&#8221;parentTask2&#8243; /&gt;<br />
&lt;/util:list&gt;<br />
&lt;property name=&#8221;databaseSession&#8221; ref=&#8221;parentDatabaseSession&#8221; /&gt;<br />
&lt;/bean&gt;</p>
<p>As you can see the child context just define &#8220;job plans&#8221;, which can be fancifull assemblies of existing parent beans.<br />
Whenever you want to call a job (ie. by id) you just need to know in which child context was the job defined and then<br />
use that particular context to instantiate the bean. The straightforward way to do this is to keep a Map&lt;String,AbstractApplicationContext&gt;<br />
somewhere accesible in the parent context and whenever you add a new child context, update the map with all the beans from the child context<br />
that you know you will need to call directly (ie. in the above example it would make sense to get all the beans that are an instance of the<br />
com.example.Job class as I&#8217;m sure that I will call just job beans directly)</p>
<p><strong>2.1 Load, Refresh &amp; Close</strong><br />
The main reson why we want to have child application contexts is because we want our jobs to be flexible. As such we need to be able to create, update<br />
&amp; delete jobs without any redeploy.This is done straightforward in our situation :</p>
<p><span style="text-decoration:underline;">Create a child application context :</span><br />
AbstractApplicationContext childContext = new ClassPathXmlApplicationContext(new String[]{&#8220;classpath:META-INF/spring/applicationContext-job-sample1.xml&#8221;},parentContext);</p>
<p><span style="text-decoration:underline;">Use the child application context :</span><br />
Job job = (Job) chilContext.getBean(&#8220;job1&#8243;)</p>
<p><span style="text-decoration:underline;">Refresh the child application context :</span><br />
childContext.refresh();</p>
<p><span style="text-decoration:underline;">Close the child application context :</span><br />
childContext.close();<br />
If you have some mechanism to update the child application context XML files, all you need to do is to refresh the child application (or close and<br />
load them), and you get a new &#8220;version&#8221; of the jobs.</p>
<p><strong>3. Pitfalls</strong><br />
<strong>First</strong> : Don&#8217;t cross reference beans from two different child contexts. What happens when you end up closing one of the contexts and the other one needs it?<br />
<strong>Second</strong> : Don&#8217;t use beans from the child context in the parent context. You cannot do this through Spring directly, but you can still assign it through you code. When the child application gets closed or refreshed you will<br />
still keep references from the old version.</p>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/engineering/'>engineering</a>, <a href='http://paulsabou.wordpress.com/category/computer-science/java/'>java</a>, <a href='http://paulsabou.wordpress.com/category/computer-science/ai/spring-framework/'>spring framework</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/503/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=503&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/11/20/using-parentchild-applications-contexts-in-the-spring-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>
	</item>
		<item>
		<title>Interesting opportunity towards selling human body parts for cooking</title>
		<link>http://paulsabou.wordpress.com/2011/08/23/interesting-opportunity-towards-selling-human-body-parts-for-cooking/</link>
		<comments>http://paulsabou.wordpress.com/2011/08/23/interesting-opportunity-towards-selling-human-body-parts-for-cooking/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 19:50:19 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[imagination from the other side]]></category>
		<category><![CDATA[no comment]]></category>
		<category><![CDATA[philosophy]]></category>

		<guid isPermaLink="false">http://paulsabou.wordpress.com/?p=498</guid>
		<description><![CDATA[In the recent years a new interesting practice has begun to take shape among some (new wave) mothers : placentophagy. As the birth has finished, the mother requests the placenta, takes it home and cooks it in various ways, and eats it together with relatives or friends. As this practice is relatively common among many mammals &#38; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=498&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the recent years a new interesting practice has begun to take shape among <a href="http://news.bbc.co.uk/2/hi/4918290.stm">some (new wave) mothers</a> : <a title="Placentophagy" href="http://en.wikipedia.org/wiki/Placentophagy">placentophagy</a>. As the birth has finished, the mother requests the placenta, takes it home and cooks it in various ways, and eats it together with relatives or friends. As this practice is relatively common among many mammals &amp; also in different human cultures (ie. China) it is a rather periferic practice in Western/European culture.</p>
<p>The fact that this is possible (legally at least) opens up interesting opportunities towards creating an &#8220;exclusive&#8221; (but wholly legal) market for human body parts (as raw materials for exquisite recipes). I believe the steps would be the followings :</p>
<ol>
<li><strong>the body part &#8211; from the person to property</strong> : it is a matter of routine that a certain percentage of accidents and illnesses require certain body parts to be amputated (ie. legs, arms, etc.) or internal organs to be removed (ie. lungs, parts of the liver, kidney, etc.); once the body part is separated from the body, it is no longer part of the &#8220;holy legal sanctity of the person&#8221; and becomes just property (more precisely : the property of the former person). As such it seems pretty reasonable (at least legally) that people can hold those ex-body/person parts at home, as many of us hold artifacts/souvenirs of past people and places.</li>
<li><strong>the property &#8211;  from body part to object</strong> : as the body part is no longer (legally at least) part of the person, it loses any kind of protection that &#8220;people&#8221; have and it&#8217;s now protected by the laws regarding &#8220;ownership&#8221;; as such, it can become insured (as an object and not as part of the former &#8220;person life insurance&#8221;) against theft or damage and also the owner can dispose of it in the way of the object : it can eat it alone, it can share it with friends or it could even exchange it for other human body parts or money</li>
</ol>
<div>Through this complicated succesion of steps, a good deal of the parts of the human body can become objects of commercial and culinary activity. It carefully avoids bringing any harm to the &#8220;sanctity of the person&#8221; (ie. like in the classical cases of cannibalism) &amp; moves towards commodity through the strong intuitions and laws regarding ownership. As such I would believe that right now there are no clear laws that would forbid the creation of a supermarket for &#8220;fresh&#8221; human body parts, that were being sold by their previous owners through the wonderful mechanism of free market economy. In an interesting twist of things the people who eat it are no longer legally cannibals even through they &#8220;enjoy&#8221; the forbidden fruit of eating from their peers.</div>
<div>Bon appetit!</div>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/imagination-from-the-other-side/'>imagination from the other side</a>, <a href='http://paulsabou.wordpress.com/category/no-comment/'>no comment</a>, <a href='http://paulsabou.wordpress.com/category/philosophy/'>philosophy</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/498/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=498&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/08/23/interesting-opportunity-towards-selling-human-body-parts-for-cooking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>
	</item>
		<item>
		<title>Neil Postman : 6 questions on technology</title>
		<link>http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/</link>
		<comments>http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 16:58:29 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[Neil Postman]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[philosophy of technology]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://paulsabou.wordpress.com/?p=493</guid>
		<description><![CDATA[What is the problem that gets resolved? Who&#8217;s problem is it? What problems do we create by solving this problem? Which people and which institutions might be harmed by a technological solution? What changes in language occur as the result of technological change? Which people and which institutions will acquire economic and political power when [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=493&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ol>
<li>What is the problem that gets resolved?</li>
<li>Who&#8217;s problem is it?</li>
<li>What problems do we create by solving this problem?</li>
<li>Which people and which institutions might be harmed by a technological solution?</li>
<li>What changes in language occur as the result of technological change?</li>
<li>Which people and which institutions will acquire economic and political power when this technology is adopted?</li>
</ol>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/"><img src="http://img.youtube.com/vi/uglSCuG31P4/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/"><img src="http://img.youtube.com/vi/13bXaYsn33U/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/"><img src="http://img.youtube.com/vi/HpUbhrzSPnY/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/"><img src="http://img.youtube.com/vi/KRZUolLIgQo/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/"><img src="http://img.youtube.com/vi/K2bcloFDc8Q/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/"><img src="http://img.youtube.com/vi/g_eQP9_oQ18/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/"><img src="http://img.youtube.com/vi/x8VQGTzy2Yo/2.jpg" alt="" /></a></span>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/philosophy/philosophy-of-technology/neil-postman/'>Neil Postman</a>, <a href='http://paulsabou.wordpress.com/category/philosophy/'>philosophy</a>, <a href='http://paulsabou.wordpress.com/category/philosophy/philosophy-of-technology/'>philosophy of technology</a>, <a href='http://paulsabou.wordpress.com/category/video/'>video</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/493/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/493/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/493/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/493/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/493/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/493/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/493/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/493/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/493/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/493/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/493/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/493/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/493/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/493/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=493&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/07/06/neil-postman-6-questions-on-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>
	</item>
		<item>
		<title>The critique of Jacques Ellul on Technology &amp; technological society</title>
		<link>http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/</link>
		<comments>http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 20:16:03 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[Jacques Ellul]]></category>
		<category><![CDATA[philosophy of technology]]></category>
		<category><![CDATA[sociology]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[critique]]></category>
		<category><![CDATA[french sociologist]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://paulsabou.wordpress.com/?p=490</guid>
		<description><![CDATA[Filed under: Jacques Ellul, philosophy of technology, sociology, video Tagged: critique, french sociologist, technology<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=490&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><code><span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/"><img src="http://img.youtube.com/vi/LdogID589Mk/2.jpg" alt="" /></a></span></code></p>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/"><img src="http://img.youtube.com/vi/LVOsS8_qE8M/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/"><img src="http://img.youtube.com/vi/4fNyXqknQ0Q/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/"><img src="http://img.youtube.com/vi/jH_JM6yPtDI/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/"><img src="http://img.youtube.com/vi/x5iNO7R4_aE/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/"><img src="http://img.youtube.com/vi/ZQMmuopIZUI/2.jpg" alt="" /></a></span>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/philosophy/philosophy-of-technology/jacques-ellul/'>Jacques Ellul</a>, <a href='http://paulsabou.wordpress.com/category/philosophy/philosophy-of-technology/'>philosophy of technology</a>, <a href='http://paulsabou.wordpress.com/category/sociology/'>sociology</a>, <a href='http://paulsabou.wordpress.com/category/video/'>video</a> Tagged: <a href='http://paulsabou.wordpress.com/tag/critique/'>critique</a>, <a href='http://paulsabou.wordpress.com/tag/french-sociologist/'>french sociologist</a>, <a href='http://paulsabou.wordpress.com/tag/technology/'>technology</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/490/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/490/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/490/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=490&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/07/05/the-critique-of-jacques-ellul-on-technology-technological-society/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>
	</item>
		<item>
		<title>Challenging Duchamp&#8217;s urinal in a pragmatic way</title>
		<link>http://paulsabou.wordpress.com/2011/06/16/challenging-duchamps-urinal-in-a-pragmatic-way/</link>
		<comments>http://paulsabou.wordpress.com/2011/06/16/challenging-duchamps-urinal-in-a-pragmatic-way/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 13:17:42 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[art at work]]></category>
		<category><![CDATA[imagination from the other side]]></category>
		<category><![CDATA[meaningfull only for romanians and moldavians]]></category>
		<category><![CDATA[no comment]]></category>

		<guid isPermaLink="false">https://paulsabou.wordpress.com/2011/06/16/challenging-duchamps-urinal-in-a-pragmatic-way/</guid>
		<description><![CDATA[Filed under: art at work, imagination from the other side, meaningfull only for romanians and moldavians, no comment<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=488&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://paulsabou.files.wordpress.com/2011/06/20110616-041616.jpg"><img src="http://paulsabou.files.wordpress.com/2011/06/20110616-041616.jpg?w=720" alt="20110616-041616.jpg" class="alignnone size-full" /></a></p>
<p><a href="http://paulsabou.files.wordpress.com/2011/06/20110616-041641.jpg"><img src="http://paulsabou.files.wordpress.com/2011/06/20110616-041641.jpg?w=720" alt="20110616-041641.jpg" class="alignnone size-full" /></a></p>
<p><a href="http://paulsabou.files.wordpress.com/2011/06/20110616-041659.jpg"><img src="http://paulsabou.files.wordpress.com/2011/06/20110616-041659.jpg?w=720" alt="20110616-041659.jpg" class="alignnone size-full" /></a></p>
<p><a href="http://paulsabou.files.wordpress.com/2011/06/20110616-041718.jpg"><img src="http://paulsabou.files.wordpress.com/2011/06/20110616-041718.jpg?w=720" alt="20110616-041718.jpg" class="alignnone size-full" /></a></p>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/art-at-work/'>art at work</a>, <a href='http://paulsabou.wordpress.com/category/imagination-from-the-other-side/'>imagination from the other side</a>, <a href='http://paulsabou.wordpress.com/category/meaningfull-only-for-romanians-and-moldavians/'>meaningfull only for romanians and moldavians</a>, <a href='http://paulsabou.wordpress.com/category/no-comment/'>no comment</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/488/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=488&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/06/16/challenging-duchamps-urinal-in-a-pragmatic-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>

		<media:content url="http://paulsabou.files.wordpress.com/2011/06/20110616-041616.jpg" medium="image">
			<media:title type="html">20110616-041616.jpg</media:title>
		</media:content>

		<media:content url="http://paulsabou.files.wordpress.com/2011/06/20110616-041641.jpg" medium="image">
			<media:title type="html">20110616-041641.jpg</media:title>
		</media:content>

		<media:content url="http://paulsabou.files.wordpress.com/2011/06/20110616-041659.jpg" medium="image">
			<media:title type="html">20110616-041659.jpg</media:title>
		</media:content>

		<media:content url="http://paulsabou.files.wordpress.com/2011/06/20110616-041718.jpg" medium="image">
			<media:title type="html">20110616-041718.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>The end of the world &#8211; romanian style</title>
		<link>http://paulsabou.wordpress.com/2011/06/16/the-end-of-the-world-romanian-style/</link>
		<comments>http://paulsabou.wordpress.com/2011/06/16/the-end-of-the-world-romanian-style/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 13:10:19 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[imagination from the other side]]></category>
		<category><![CDATA[meaningfull only for romanians and moldavians]]></category>
		<category><![CDATA[written in romanian]]></category>

		<guid isPermaLink="false">https://paulsabou.wordpress.com/2011/06/16/the-end-of-the-world-romanian-style/</guid>
		<description><![CDATA[Filed under: imagination from the other side, meaningfull only for romanians and moldavians, written in romanian<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=482&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://paulsabou.files.wordpress.com/2011/06/20110616-040958.jpg"><img src="http://paulsabou.files.wordpress.com/2011/06/20110616-040958.jpg?w=720" alt="20110616-040958.jpg" class="alignnone size-full" /></a></p>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/imagination-from-the-other-side/'>imagination from the other side</a>, <a href='http://paulsabou.wordpress.com/category/meaningfull-only-for-romanians-and-moldavians/'>meaningfull only for romanians and moldavians</a>, <a href='http://paulsabou.wordpress.com/category/written-in-romanian/'>written in romanian</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/482/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=482&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/06/16/the-end-of-the-world-romanian-style/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>

		<media:content url="http://paulsabou.files.wordpress.com/2011/06/20110616-040958.jpg" medium="image">
			<media:title type="html">20110616-040958.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Bace toghire</title>
		<link>http://paulsabou.wordpress.com/2011/06/15/479/</link>
		<comments>http://paulsabou.wordpress.com/2011/06/15/479/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 20:14:12 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[imagination from the other side]]></category>
		<category><![CDATA[meaningfull only for romanians and moldavians]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[written in romanian]]></category>

		<guid isPermaLink="false">https://paulsabou.wordpress.com/2011/06/15/479/</guid>
		<description><![CDATA[Filed under: imagination from the other side, meaningfull only for romanians and moldavians, photos, written in romanian<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=479&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://paulsabou.files.wordpress.com/2011/06/20110615-111341.jpg"><img src="http://paulsabou.files.wordpress.com/2011/06/20110615-111341.jpg?w=720" alt="20110615-111341.jpg" class="alignnone size-full" /></a></p>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/imagination-from-the-other-side/'>imagination from the other side</a>, <a href='http://paulsabou.wordpress.com/category/meaningfull-only-for-romanians-and-moldavians/'>meaningfull only for romanians and moldavians</a>, <a href='http://paulsabou.wordpress.com/category/photos/'>photos</a>, <a href='http://paulsabou.wordpress.com/category/written-in-romanian/'>written in romanian</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/479/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=479&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/06/15/479/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>

		<media:content url="http://paulsabou.files.wordpress.com/2011/06/20110615-111341.jpg" medium="image">
			<media:title type="html">20110615-111341.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>MongoDB: The Definitive Guide</title>
		<link>http://paulsabou.wordpress.com/2011/04/13/mongodb-the-definitive-guide/</link>
		<comments>http://paulsabou.wordpress.com/2011/04/13/mongodb-the-definitive-guide/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 21:00:17 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[technical book review]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[document based persistence]]></category>

		<guid isPermaLink="false">http://paulsabou.wordpress.com/?p=436</guid>
		<description><![CDATA[&#8220;MongoDB: The Definitive Guide&#8221; (by Kristina Chodorow and Michael Dirolf) is a concise and practical guide to develop &#38; manage a MongoDB backed application. I appreciate the fact that the book covers both the developer side and the administration part of working with Mongo. As a developer I read &#38; worked it out in the following way [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=436&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;<a href="http://oreilly.com/catalog/0636920001096" target="_blank">MongoDB: The Definitive Guide</a>&#8221; (by Kristina Chodorow and Michael Dirolf) is a concise and practical guide to develop &amp; manage a MongoDB backed application. I appreciate the fact that the book covers both the developer side and the administration part of working with Mongo.</p>
<p>As a developer I read &amp; worked it out in the following way :</p>
<p>1. Installing the server and testing the Mongo basics &#8211; Ch. 1,2,3,4 &#8211; (it&#8217;s good practice to write small pieces of code to check how the things you read work out)</p>
<ul>
<li>installed MongoDB with my Linux package manager (I have Ubuntu, but the MongoDB server is available in most major Linux distributions as a package) &#8211; check Appendix A for a detailed way to install Mongo and Ch. 8 &#8211; part 1 for starting/stopping it</li>
<li>read chapters 1-4 (Introduction, Getting started, CRUD, Querying)</li>
</ul>
<p>In the first 4 chapters the book focuses both on practical things like CRUD &amp; querying (with sample code in the console) &amp; on the data design part. I found that the data design part to be of considerable importance for the developer that works with a &#8220;document based&#8221; database for the first time in his life. As you will see (if you give Mongo a try), MongoDB pushes the the &#8220;document based&#8221; model to the limits, allowing the developer to use a powerfull and sometimes SQL-like query language. In terms of time I believe that understanding the first four chapters (and their examples) should not take more than 12 hours. After you finish this you should be able to build a small blog-like app on your own.</p>
<p>2. Getting into aggregation &amp; indexing  &#8211; Ch. 5,6 : gives a good insight in how to optimize your Mongo for speed (with the right indexing) and some more information on ways to use aggregated/summarizing queries. This is also a good read but make sure you have some data in your test database so you can test counting, summing &amp; the rest. If you have some experience with SQL indexing and aggregation you can skip most parts of those two chapters and just focus on the syntax.</p>
<p>3. The advanced topics : This is covered in Ch. 7 and shows off some &#8220;cool&#8221; and rather unique capabilities of Mongo : capped collections (great for logging), distributed filesystem, server-side scripting (in Javascript!). This is also worth your reading so that maybe you can implement the features you need with them, instead building something from scratch.</p>
<p>In total, it would take you around 20 hours to read the first 7 chapters.</p>
<p>As a server administrator (some developers for large scale system will also need to wear this hat from time to time) The last 3 chapters deal with administration (clustering, replication, backup, monitoring, etc.). Read it just to get some insight. But it&#8217;s just an intro. If you want to use Mongo in a production environment, go search more on the net on this one.</p>
<p>As a whole the book is a very good introduction and I would strongly recommend it to anyone who wants to seriously start doing something with Mongo.</p>
<p>&nbsp;</p>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/books/'>books</a>, <a href='http://paulsabou.wordpress.com/category/books/technical-book-review/'>technical book review</a> Tagged: <a href='http://paulsabou.wordpress.com/tag/book-review/'>book review</a>, <a href='http://paulsabou.wordpress.com/tag/document-based-persistence/'>document based persistence</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/436/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=436&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/04/13/mongodb-the-definitive-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>
	</item>
		<item>
		<title>A Practical Guide to Content Delivery Networks</title>
		<link>http://paulsabou.wordpress.com/2011/04/05/a-practical-guide-to-content-delivery-networks/</link>
		<comments>http://paulsabou.wordpress.com/2011/04/05/a-practical-guide-to-content-delivery-networks/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 19:42:21 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[technical book review]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[CDN]]></category>

		<guid isPermaLink="false">http://paulsabou.wordpress.com/?p=434</guid>
		<description><![CDATA[&#8220;A Practical Guide to Content Delivery Networks&#8221; (by Gilbert Held) is an introduction to CDN&#8217;s, covering just the basics. If you have some decent knowledge of networking (ie. TCP/IP fundamentals) you can skip the first three chapters and go right to the two CDN technical chapters :  Ch4. : &#8220;The CDN Model&#8221; &#38; Ch5. &#8220;Caching [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=434&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/Practical-Guide-Content-Delivery-Networks/dp/084933649X" target="_blank">&#8220;A Practical Guide to Content Delivery Networks&#8221;</a> (by Gilbert Held) is an introduction to CDN&#8217;s, covering just the basics. If you have some decent knowledge of networking (ie. TCP/IP fundamentals) you can skip the first three chapters and go right to the two CDN technical chapters :  Ch4. : &#8220;The CDN Model&#8221; &amp; Ch5. &#8220;Caching and load balancing&#8221;. Both those chapters are worth you time :</p>
<ul>
<li>Ch4. &#8220;The CDN Model&#8221; : an accessible presentation of the architecture and role of a CDN and why you can&#8217;t beat the CDN model with your local server rack</li>
<li>Ch5. &#8220;Caching and load balancing&#8221; : the most valuable thing here is the detailed presentation of the META tags used in requests &amp; responses so that you can control how caching is done both upstream/request and downstream/response</li>
</ul>
<p>The last 2 chapters are a little bit less technical and cover stuff that&#8217;s more related to the business model and gathering statistics from your CDN usage (ie. logs &amp; monitoring). So I would recommend that you focus on Ch4. &amp; Ch5. and if you got some slack, give Ch6. and Ch7. a try.</p>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/books/'>books</a>, <a href='http://paulsabou.wordpress.com/category/books/technical-book-review/'>technical book review</a> Tagged: <a href='http://paulsabou.wordpress.com/tag/book-review/'>book review</a>, <a href='http://paulsabou.wordpress.com/tag/cdn/'>CDN</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/434/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=434&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/04/05/a-practical-guide-to-content-delivery-networks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>
	</item>
		<item>
		<title>Making a scalable IP 2 Geolocation service</title>
		<link>http://paulsabou.wordpress.com/2011/02/21/making-a-scalable-ip-2-geolocation-service/</link>
		<comments>http://paulsabou.wordpress.com/2011/02/21/making-a-scalable-ip-2-geolocation-service/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 19:52:51 +0000</pubDate>
		<dc:creator>Paul Sabou</dc:creator>
				<category><![CDATA[computer science]]></category>
		<category><![CDATA[noSQL]]></category>
		<category><![CDATA[Redis]]></category>
		<category><![CDATA[ways to make things work]]></category>

		<guid isPermaLink="false">http://paulsabou.wordpress.com/?p=447</guid>
		<description><![CDATA[As many of us know being able to geolocate an IP can be of tremendous help for any business that offers localized services on the net. Functionally such a service is straightforward : the caller has an IP and he needs a latitude/longitude pair (and maybe some extra data like : the closest city, population density, weather code, etc.). [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=447&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As many of us know being able to geolocate an IP can be of tremendous help for any business that offers localized services on the net. Functionally such a service is straightforward : the caller has an IP and he needs a latitude/longitude pair (and maybe some extra data like : the closest city, population density, weather code, etc.).</p>
<p>Such services are readily available on the  web today, free of charge, but with a limited number of calls/time unit. So, if your application needs this at a larger scale (ie. 100k calls/day), then you might need to do it on your own. In this post I will discuss some ways to build such a system.</p>
<p>Basic functional characteristics :</p>
<ol>
<li>it involves mostly reads (99.9999% reads &amp; 0.0001% writes)<br />
- usually the IP 2 Geo database gets updated once per month<br />
- having stale data is no problem (on short periods of time)</li>
<li> it has to scale really big &amp; perform really well<br />
- every potential web visitor will hit this service at least once =&gt; this service is one of your first possible bottlenecks<br />
- this hit will probably happen at the first page load =&gt; it has to be fast (so that it doesn&#8217;t affect the page load time)</li>
<li>it should store more than just a latitude/longitude pair<br />
- it would be nice to have more information stored for every IP : city, region, country, weather code, connection speed, etc.<br />
- this should be stored in a document structure that is easy to read and maintain (ie. JSON, etc.)</li>
</ol>
<div><strong>A. <strong>The obvious solution</strong></strong></div>
<div><strong><strong></strong><br />
Storing the information on the filesystem </strong></div>
<p>This would clearly be the most simple and straightforward solution. The IP number can be converted in a directory structure just</p>
<p>by replacing the DOTs with a SLASH, like : the IP 110.111.112.113 would be transformed in the filesystem path /110/111/112/113.txt.</p>
<p>Storing things in this way would us to use the basic filesystem tools  to add/change/remove entries and also we could use the classic</p>
<p>FTP, rsync, etc. tools to replicate changes across multiple servers. As such there is almost no &#8220;fancy&#8221; technology &amp; administrative</p>
<p>skills needed to build &amp; maintain such a system. Also there would be little &#8220;application level overhead&#8221; because we would work directly</p>
<p>with OS level system calls (ie. the POSIX filesystem calls).</p>
<p><strong>The problem</strong> :</p>
<p>There are 2^32 IP addresses out there (assuming you want to resolve good old IPv4 addresses) and that means you would need</p>
<p>to have 4 billion files on your filesystem. And this just doesn&#8217;t work!!! Most advanced filesystems (ie. ext3, xfs) just perform terribly for anything that</p>
<p>goes above 100 million files. And we are almost 2 orders of magnitude above that (we need &gt; 40x that number). Also, if you encounter filesystem corruption (ie. servers loose power, etc.) the filesystem recovery process will just take hours and hours to finish.</p>
<div><strong><br />
B. Let&#8217;s make our solution someone&#8217;s else problem</strong></div>
<p><strong><br />
Storing the IP entries on a CDN</strong><br />
This would be a quite elegant solution, especially for high volume traffic. Every IP entry would be stored as a 500bytes file and the name of the file would be</p>
<p>the IP address itself. As such, an IP adress like 110.111.112.113 would be translated into a CDN file request like : http://mycdn.mydomain.com/ip/110-111-112-113. At the origin we would have a container that stores those entries with a TTL of 1 month. Every month we could run a script that refreshes some of those entries at the origin level and that&#8217;s it. The price would also be extremely low on a CDN with a bandwidth based pricing model. If every geo request takes around 1KB of bandwidth (including the headers and everything) then you would consume 1 GB of traffic in 1 million requests.</p>
<p><strong>The problem :<br />
</strong>No CDN will actually allow you to store more than 10 million of files (for example <a href="http://www.rackspace.com/cloud/cloud_hosting_products/files/" target="_blank">Rackspace Cloudfiles</a> limit you at 5 million files). And we are almost 3 orders of magnitude above that.</p>
<div>
<p><strong>C. Use a noSQL database</strong></p>
<p>I really liked the first solution. Basically I tried to use the filesystem as a huge HashMap, where the key was the path. All I needed here was basic matching between a key and a value. I don&#8217;t need any more advanced query system. As such, the perfect replacement for the first solution would be to use a very simple document based noSQL solution. Why noSQL? Because the data is not relational in any way (ie. no joins). And as such, it scales &amp; performs pretty well.<br />
In this case my tool of choice would be <a href="http://redis.io/" target="_blank">Redis</a>. The reason? It&#8217;s just at the border line between a cache system and a persistence engine. It doesn&#8217;t compromise at all on speed (as some other more advanced noSQL soultions have to do &#8211; ie. MongoDB, Solr, etc. &#8211; ) because it offers just a minimal set of features.<br />
In the end, I actually ended up with the initial solution. But implemented at a different level.</p>
</div>
<br />Filed under: <a href='http://paulsabou.wordpress.com/category/computer-science/'>computer science</a>, <a href='http://paulsabou.wordpress.com/category/computer-science/nosql/'>noSQL</a>, <a href='http://paulsabou.wordpress.com/category/computer-science/nosql/redis/'>Redis</a>, <a href='http://paulsabou.wordpress.com/category/computer-science/ways-to-make-things-work/'>ways to make things work</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/paulsabou.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/paulsabou.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/paulsabou.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/paulsabou.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/paulsabou.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/paulsabou.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/paulsabou.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/paulsabou.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/paulsabou.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/paulsabou.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/paulsabou.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/paulsabou.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/paulsabou.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/paulsabou.wordpress.com/447/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=paulsabou.wordpress.com&amp;blog=4478731&amp;post=447&amp;subd=paulsabou&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://paulsabou.wordpress.com/2011/02/21/making-a-scalable-ip-2-geolocation-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Paul Sabou</media:title>
		</media:content>
	</item>
	</channel>
</rss>
