<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.2.1" --><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/" version="2.0">

<channel>
	<title>Kiv's Weblog</title>
	<link>http://k-i-v.com</link>
	<description>The grand stuff holder place of Josef Nankivell</description>
	<pubDate>Thu, 24 Apr 2008 14:43:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/KivsWeblog" type="application/rss+xml" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FKivsWeblog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FKivsWeblog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FKivsWeblog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/KivsWeblog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FKivsWeblog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FKivsWeblog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FKivsWeblog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>Ubuntu 8.04 Hardy Heron fast server download</title>
		<link>http://k-i-v.com/2008/04/24/ubuntu-804-hardy-heron-fast-server-download/</link>
		<comments>http://k-i-v.com/2008/04/24/ubuntu-804-hardy-heron-fast-server-download/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 14:43:08 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/04/24/ubuntu-804-hardy-heron-fast-server-download/</guid>
		<description><![CDATA[Finally Ubuntu Hardy Heron 8.04 has been officially released!
All the download servers are crawling along at the moment except for the following server which is not listed on the website.
http://mirrors.rit.edu/ubuntu-releases/

http://mirrors.rit.edu/ubuntu-releases/8.04/
Ubutnu downloads at full speed from this server.. it only took me 7 minutes to download.
Enjoy!
]]></description>
			<content:encoded><![CDATA[<p>Finally Ubuntu Hardy Heron 8.04 has been officially released!</p>
<p>All the download servers are crawling along at the moment except for the following server which is not listed on the website.</p>
<p><a href="http://mirrors.rit.edu/ubuntu-releases/">http://mirrors.rit.edu/ubuntu-releases/</a><br />
<a href="http://mirrors.rit.edu/ubuntu-releases/8.04/"><br />
http://mirrors.rit.edu/ubuntu-releases/8.04/</a></p>
<p>Ubutnu downloads at full speed from this server.. it only took me 7 minutes to download.</p>
<p>Enjoy!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=oA1yfLG"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=oA1yfLG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=tq6yrvg"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=tq6yrvg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=4mC035G"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=4mC035G" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=Y1L0nXg"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=Y1L0nXg" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/04/24/ubuntu-804-hardy-heron-fast-server-download/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Music</title>
		<link>http://k-i-v.com/2008/03/20/google-music/</link>
		<comments>http://k-i-v.com/2008/03/20/google-music/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 23:30:45 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Music]]></category>

		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/20/google-music/</guid>
		<description><![CDATA[Found this one by accident this afternoon, thought I&#8217;d share.
Running Linux?  Is there a song you like?
Google the song in Google Video; who cares what the homebrew video is, just go looking for good audio.
Pull the movie up in Firefox; when the movie finishes buffering, do :
ls -lh /tmp/Flash*
.. and copy the newest file [...]]]></description>
			<content:encoded><![CDATA[<p>Found this one by accident this afternoon, thought I&#8217;d share.<br />
Running Linux?  Is there a song you like?</p>
<p>Google the song in Google Video; who cares what the homebrew video is, just go looking for good audio.<br />
Pull the movie up in Firefox; when the movie finishes buffering, do :</p>
<p><span style="font-weight: bold">ls -lh /tmp/Flash*</span></p>
<p>.. and copy the newest file somewhere else, say yer desktop.  Now you have a copy of the video.</p>
<p>We just want the audio, so using ffmpeg (<span style="font-weight: bold">sudo apt-get install ffmpeg</span> if you don&#8217;t have it), do:</p>
<p><span style="font-weight: bold">ffmpeg -i [Flash File] [song name]<flash> <song>.mp3</song></flash></span></p>
<p>And that&#8217;s it; one MP3.  Use your favourite id3 tool to add tags, and enjoy!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=h2sCGxF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=h2sCGxF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=K76A7af"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=K76A7af" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=MlHylfF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=MlHylfF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=uJK6Zif"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=uJK6Zif" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/20/google-music/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Breadth and depth first search</title>
		<link>http://k-i-v.com/2008/03/18/breadth-and-depth-first-search/</link>
		<comments>http://k-i-v.com/2008/03/18/breadth-and-depth-first-search/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 22:00:46 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/18/breadth-and-depth-first-search/</guid>
		<description><![CDATA[Search algorithms
The idea behind search algorithms is to simulate the exploration of a space of states or search space through the generation of successor states already explored.
Tree based search algorithms
Tree search algorithms are the heart of searching techniques. The basic principle is that a node is taken from a data structure, its successors examined and [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold">Search alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithms</span><br />
The idea behind search alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithms is to simulate the expl<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ation of a space of states <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> search space through the generation of success<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> states already expl<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ed.</p>
<p><span style="font-weight: bold">Tree based search alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithms</span><br />
Tree search alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithms are the heart of searching techniques. The basic principle is that a node is taken from a data structure, its success<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>s examined and added to the data structure. By manipulating the data structure, the tree is expl<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ed in different <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ders f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> instance level by level (<a href="http://en.wikipedia.org/wiki/Breadth-first_search" target="_Blank">breadth-first search</a>) <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> reaching a leaf node first and backtracking (<a href="http://en.wikipedia.org/wiki/Depth-first_search" target="_Blank">depth-first search</a>).</p>
<p><span style="font-weight: bold">Definitions</span></p>
<ul>
<li>State - a representation of a physical configuration.</li>
<li>Node - a data structure part of a search tree. A node has the following properties: father, sons, depth and path cost.</li>
</ul>
<p>States don&#8217;t have father, sons, depth and path cost.</p>
<p><span style="font-weight: bold"></span><span style="font-weight: bold">Types of problems</span></p>
<ul>
<li>Deterministic accessible -  simple states problem.</li>
<li>Deterministic inaccessible -  multiple states problem.</li>
<li>Non deterministic inaccessible - contingency problem (maybe) - sens<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>s must be used during the execution process. The solution is a tree <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> a policy. Many times alternates between search and execution.</li>
<li>Unknown search space - expl<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ation problem (online).</li>
</ul>
<p><span style="font-weight: bold">Selecting a search space</span><br />
The real w<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ld is extremely complex. The search space must be abstracted from the solution process.</p>
<p>Abstracting we have:</p>
<ul>
<li>Abstract state - the set of real states.</li>
<li>Abstract operat<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> - combination of real actions.</li>
<li>Abstract solution - set of real paths that represents a solution in the real w<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ld.</li>
</ul>
<p>Each abstract action must be easier than the action in the real problem.</p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: Courier New; font-size: 10pt; color: black">&nbsp;</p>
<p><span style="font-weight: bold">A simple alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithm</span></p>
<pre style="margin: 0px">function GeneralSearch(problem, strategy)</pre>
<pre style="margin: 0px">  <span style="color: blue">return</span> a solution <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> failure</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">Initialise the search tree <span style="color: #000000">using</span> the initial state of the problem</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px"><span style="color: #3333ff">loop</span> <span style="color: blue">do
</span></pre>
<pre style="margin: 0px">  <span style="color: blue">if</span> there are no candidates <span style="color: #000000">f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span></span> expansion <span style="color: #3333ff">then</span></pre>
<pre style="margin: 0px">    <span style="color: blue">return</span> failure</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">Choose a leaf node <span style="color: #000000">f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span></span> expansion acc<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ding to strategy</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px"><span style="color: blue">if</span> the node contains a goal state <span style="color: #3333ff">then</span></pre>
<pre style="margin: 0px">  <span style="color: blue">return</span> the c<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>responding solution</pre>
<pre style="margin: 0px"><span style="color: blue">else</span></pre>
<pre style="margin: 0px">  expand the node and add the resulting nodes to the tree</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px; color: #3333ff">end</pre>
<pre style="margin: 0px; color: #3333ff"></pre>
<p><span style="font-weight: bold">Alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithm implementation</span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: Courier New; font-size: 10pt; color: black">&nbsp;</p>
<pre style="margin: 0px">function GeneralSearch(problem, QueueingFunction)</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">nodes &lt;- MakeQueue(MakeNode(InitialState[problem]))</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px"><span style="color: #3333ff">loop</span> <span style="color: blue">do</span></pre>
<pre style="margin: 0px">  <span style="color: blue">if</span> nodes <span style="color: blue">is</span> empty <span style="color: #3333ff">then</span></pre>
<pre style="margin: 0px">    <span style="color: blue">return</span> failure</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">  node &lt;- RemoveFront(nodes) a leaf node <span style="color: #000000">f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span></span> expansion acc<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ding
to strategy</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">  <span style="color: blue">if</span> GoalTest[problem] applied to State(node) succeeds <span style="color: #3333ff">then</span></pre>
<pre style="margin: 0px">    <span style="color: blue">return</span> node</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">  nodes &lt;- QueueingFunction(nodes, Expand(node,
Operat<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>s[problem]))</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px"><span style="color: #3333ff">end</span></pre>
<p><span style="font-weight: bold">Search strategies</span><br />
A search strategy is a choice made between the methods used to expand the nodes. Each method has its proper <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>der of expansion.</p>
<p>Strategies are evaluated acc<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ding to following parameters:</p>
<ul>
<li>Time complexity - the number of generated <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> expanded nodes.</li>
<li>Space complexity - maximum number of nodes presented in the mem<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>y.</li>
<li>Optimality - the solution found has the minimum cost?</li>
</ul>
<p>Complexities in time and space are measured in terms of:</p>
<ul>
<li>b - maximum ramification fact<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> of the search tree.</li>
<li>d - depth of the solution that has the minimum cost.</li>
<li>m - maximum depth of the search space (can be ∞) infinite.</li>
</ul>
<p>The two strategies presented in this post (breadth and depth first search) are considered uninf<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>med strategies because they only use the inf<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>mation available in the problem definition.</p>
<p><span style="font-weight: bold"></span><span style="font-weight: bold">Breadth first search</span><br />
The breadth first search expands the less deep node.</p>
<p>The data structured used to implement this search alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithm is a queue.</p>
<p><span style="font-weight: bold">Breadth first search properties</span><br />
Is complete? Yes, if (b is finite).<br />
Time: 1 + b<sup>2</sup> + b<sup>3</sup> + … + b<sup>d</sup> = O(b<sup>d</sup>). e.g.: exponential in d<br />
Space: O(b<sup>d</sup>) (maintains all the nodes in mem<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>y)<br />
Optimal? Yes, if cost per step is 1; in general is not optimal.</p>
<p>Space is the big problem f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> can generate nodes at a rate of 1 MB / sec. 24 hours = 86 GB.</p>
<p><span style="font-weight: bold">Depth first search</span><br />
The depth first search expands the deepest node.</p>
<p>The data structure used to implement this search alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithm is a stack.</p>
<p>An imp<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>tant note about the depth first search is that it can execute infinite cycles so it’s mandat<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>y to check the states already visited to avoid such infinite cycles.</p>
<p><span style="font-weight: bold">Depth first search properties</span><br />
Is complete? No. It is imperfect in spaces of infinite depth <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> in cyclic paths. Is complete only in a finite search space.<br />
Time: O(bm). Is very bad if m is a lot greater than d. If solutions are dense can be fastest than the breadth first search.<br />
Space: O(bm) e.g.: linear in space<br />
Optimal? No.</p>
<p><span style="font-weight: bold">W<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>king problem: vacation in Romania</span><br />
In this post let&#8217;s expl<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>e a simple states problem as shown in the following picture:</p>
<p><a href="http://k-i-v.com/wp-content/romaniamap.png" title="map"><img src="http://k-i-v.com/wp-content/romaniamap.thumbnail.png" alt="map" /></a></p>
<p>Suppose we are going on holiday in Romania. M<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>e specifically we are in the city called Arad. We want to go to Bucharest the capital city of Romania and our flight takes off tom<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>row.</p>
<p>Breaking down our problem, we have:</p>
<ul>
<li>Objective - go to Bucharest.</li>
<li>Search space - several cities to get to Bucharest.</li>
<li>Operat<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> - drive through the cities.</li>
</ul>
<p>In this case a solution is a sequence of cities so that the last city is Bucharest. A valid path could be: Arad, Sibiu, Fagaras, Bucharest.</p>
<p>e.g.: Arad -&gt; Zerind represents a complex set of possible paths, returns, pauses f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> resting, etc.<br />
To guarantee the realisability, any real state in “Arad” must take us to some real state in “Zerind”.</p>
<p>The problem&#8217;s f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>mulation can be:</p>
<ul>
<li>Initial state - Arad</li>
<li>Operat<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> (<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> success<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> function S(x)) - eg.: Arad -&gt; Zerind, Arad -&gt; Sibiu, etc.</li>
<li>Goal test - can be explicit <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> implicit as x = Bucharest <span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> NoDirty(x).</li>
<li>Path cost (additive) - can be the sum of distances, used operat<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>s etc.</li>
</ul>
<p>The solution is a sequence of operat<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>s that takes from the initial state to the goal state.</p>
<p><span style="font-weight: bold">Implementing the breadth and depth first search in C#</span><br />
The following methods use two classes implemented by Scott Mitchell [1]. The classes are: Node and EdgeToNeighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>.</p>
<p>I just added a new property called PathParent in the node class.</p>
<pre style="margin: 0px"><span style="color: blue">public</span> <span style="color: blue">static</span> <span style="color: blue">void</span> BreadthFirstSearch(<span style="color: #2b91af">Node</span> start, <span style="color: #2b91af">Node</span> end)</pre>
<pre style="margin: 0px">{</pre>
<pre style="margin: 0px">  <span style="color: #2b91af">Queue</span>&lt;<span style="color: #2b91af">Node</span>&gt; queue = <span style="color: blue">new</span> <span style="color: #2b91af">Queue</span>&lt;<span style="color: #2b91af">Node</span>&gt;();</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">  queue.Enqueue(start);</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">  <span style="color: blue">while</span>(queue.Count != 0)</pre>
<pre style="margin: 0px">  {</pre>
<pre style="margin: 0px">    <span style="color: #2b91af">Node</span> u = queue.Dequeue();</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">    <span style="color: green">// Check if node is the end</span></pre>
<pre style="margin: 0px">    <span style="color: blue">if</span>(u == end)</pre>
<pre style="margin: 0px">    {</pre>
<pre style="margin: 0px">      <span style="color: #2b91af">Console</span>.Write(<span style="color: #a31515">&#8220;Path found.&#8221;</span>);</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">      <span style="color: blue">break</span>;</pre>
<pre style="margin: 0px">    }</pre>
<pre style="margin: 0px">    <span style="color: blue">else</span></pre>
<pre style="margin: 0px">    {</pre>
<pre style="margin: 0px">      u.Data = <span style="color: #a31515">&#8220;Visited&#8221;</span>;</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">      <span style="color: green">// Expands u&#8217;s neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>s in the queue</span></pre>
<pre style="margin: 0px">      <span style="color: blue">f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>each</span>(<span style="color: #2b91af">EdgeToNeighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span></span> edge <span style="color: blue">in</span> u.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>s)</pre>
<pre style="margin: 0px">      {</pre>
<pre style="margin: 0px">        <span style="color: blue">if</span>(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.Data == <span style="color: blue">null</span>)</pre>
<pre style="margin: 0px">        {</pre>
<pre style="margin: 0px">          edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.Data = <span style="color: #a31515">&#8220;Visited&#8221;</span>;</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">          <span style="color: blue">if</span>(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span> != end)</pre>
<pre style="margin: 0px">          {</pre>
<pre style="margin: 0px">            edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.PathParent = u;</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">            PrintPath(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>);</pre>
<pre style="margin: 0px">          }</pre>
<pre style="margin: 0px">          <span style="color: blue">else</span></pre>
<pre style="margin: 0px">          {</pre>
<pre style="margin: 0px">            edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.PathParent = u;</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">            PrintPath(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>);</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">            <span style="color: blue">return</span>;</pre>
<pre style="margin: 0px">          }</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">          <span style="color: #2b91af">Console</span>.WriteLine();</pre>
<pre style="margin: 0px">        }</pre>
<pre style="margin: 0px">        <span style="color: green">/* shows the repeated nodes</span></pre>
<pre style="margin: 0px"><span style="color: green">        else</span></pre>
<pre style="margin: 0px"><span style="color: green">        {</span></pre>
<pre style="margin: 0px"><span style="color: green">          Console.Write(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.Key);</span></pre>
<pre style="margin: 0px"><span style="color: green">        } */</span></pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">        queue.Enqueue(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>);</pre>
<pre style="margin: 0px">      }</pre>
<pre style="margin: 0px">    }</pre>
<pre style="margin: 0px">  }</pre>
<pre style="margin: 0px">}</pre>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: Courier New; font-size: 10pt; color: black">&nbsp;</p>
<pre style="margin: 0px"><span style="color: blue">public</span> <span style="color: blue">static</span> <span style="color: blue">void</span> DepthFirstSearch(<span style="color: #2b91af">Node</span> start, <span style="color: #2b91af">Node</span> end)</pre>
<pre style="margin: 0px">{</pre>
<pre style="margin: 0px">  <span style="color: #2b91af">Stack</span>&lt;<span style="color: #2b91af">Node</span>&gt; stack = <span style="color: blue">new</span> <span style="color: #2b91af">Stack</span>&lt;<span style="color: #2b91af">Node</span>&gt;();</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">  stack.Push(start);</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">  <span style="color: blue">while</span>(stack.Count != 0)</pre>
<pre style="margin: 0px">  {</pre>
<pre style="margin: 0px">    <span style="color: #2b91af">Node</span> u = stack.Pop();</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">    <span style="color: green">// Check if node is the end</span></pre>
<pre style="margin: 0px">    <span style="color: blue">if</span>(u == end)</pre>
<pre style="margin: 0px">    {</pre>
<pre style="margin: 0px">      <span style="color: #2b91af">Console</span>.WriteLine(<span style="color: #a31515">&#8220;Path found&#8221;</span>);</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">      <span style="color: blue">break</span>;</pre>
<pre style="margin: 0px">    }</pre>
<pre style="margin: 0px">    <span style="color: blue">else</span></pre>
<pre style="margin: 0px">    {</pre>
<pre style="margin: 0px">      u.Data = <span style="color: #a31515">&#8220;Visited&#8221;</span>;</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">      <span style="color: green">// St<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>e n&#8217;s neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>s in the stack</span></pre>
<pre style="margin: 0px">      <span style="color: blue">f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>each</span>(<span style="color: #2b91af">EdgeToNeighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span></span> edge <span style="color: blue">in</span> u.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>s)</pre>
<pre style="margin: 0px">      {</pre>
<pre style="margin: 0px">        <span style="color: blue">if</span>(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.Data == <span style="color: blue">null</span>)</pre>
<pre style="margin: 0px">        {</pre>
<pre style="margin: 0px">          edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.Data = <span style="color: #a31515">&#8220;Visited&#8221;</span>;</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">          <span style="color: blue">if</span>(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span> != end)</pre>
<pre style="margin: 0px">          {</pre>
<pre style="margin: 0px">            edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.PathParent = u;</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">            PrintPath(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>);</pre>
<pre style="margin: 0px">          }</pre>
<pre style="margin: 0px">          <span style="color: blue">else</span></pre>
<pre style="margin: 0px">          {</pre>
<pre style="margin: 0px">            edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.PathParent = u;</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">            PrintPath(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>);</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">            <span style="color: blue">return</span>;</pre>
<pre style="margin: 0px">          }</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">          <span style="color: #2b91af">Console</span>.WriteLine();</pre>
<pre style="margin: 0px"></pre>
<pre style="margin: 0px">          stack.Push(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>);</pre>
<pre style="margin: 0px">        }</pre>
<pre style="margin: 0px">        <span style="color: green">/* shows the repeated nodes</span></pre>
<pre style="margin: 0px"><span style="color: green">        else</span></pre>
<pre style="margin: 0px"><span style="color: green">        {</span></pre>
<pre style="margin: 0px"><span style="color: green">          Console.Write(edge.Neighb<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">our</span>.Key);</span></pre>
<pre style="margin: 0px"><span style="color: green">        } */</span></pre>
<pre style="margin: 0px">      }</pre>
<pre style="margin: 0px">    }</pre>
<pre style="margin: 0px">  }</pre>
<pre style="margin: 0px">}</pre>
<p><span style="font-weight: bold">Summary</span><br />
The f<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>mulation of a problem requires abstraction to avoid irrelevant details of the real w<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ld so that a search space can be defined and expl<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ed.</p>
<p>Later, I&#8217;ll dive in m<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>e details and explain how to use the breadth and depth search methods. We&#8217;ll execute a test case using the Romania map shown in the picture above, print the traveled paths in the screen, calculate the sh<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>test path possible between two cities using <a href="http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" target="_Blank">Dijkstra&#8217;s alg<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ithm</a> and print such a path in the screen.</p>
<p>Bef<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>e that I recommend the reading of the excellent revision about data structures written by Scott Mitchell [1]. Although I only use the facts exposed in part 5 of Scott&#8217;s article: From Trees to Graphs, it&#8217;s w<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>th to read starting in part 1.</p>
<p>F<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span> now, look and think about the <span>breadth and depth first search implementation in C#</span>.</p>
<p><span style="font-weight: bold">References<br />
</span>[1] Mitchell, Scott. <span style="font-weight: bold">An Extensive Examination of Data Structures.</span> 2004. Available at  &lt;<a href="http://msdn2.microsoft.com/en-us/library/aa289152%28VS.71%29.aspx" title="bdfsref1" name="bdfsref1" target="_Blank"><span style="font-weight: bold">http://msdn2.microsoft.com/en-us/library/aa289152(VS.71).aspx</span></a>&gt;.<span style="font-weight: bold"></span></p>
<p>[2] Artificial Intelligence Depot. <span style="font-weight: bold">Blind search.</span> Available at  &lt;<a href="http://ai-depot.com/Tutorial/PathFinding-Blind.html" target="_Blank"><span style="font-weight: bold">http://ai-depot.com/Tut<span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit">or</span>ial/PathFinding-Blind.html</span></a>&gt;.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=fvKoLSF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=fvKoLSF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=TwylDuf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=TwylDuf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=Ax5X6aF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=Ax5X6aF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=aK8dwAf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=aK8dwAf" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/18/breadth-and-depth-first-search/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Get Things Done with Bi-Modal Work Styles</title>
		<link>http://k-i-v.com/2008/03/18/get-things-done-with-bi-modal-work-styles/</link>
		<comments>http://k-i-v.com/2008/03/18/get-things-done-with-bi-modal-work-styles/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 21:20:20 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Lifestyle]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/18/get-things-done-with-bi-modal-work-styles/</guid>
		<description><![CDATA[ A big part of staying productive at work involves making conscious decisions about when you&#8217;re focusing on a task to the exclusion of everything else and when you&#8217;re open to interruptions. Author Tim Ferriss interviewed me recently about my bi-modal work style, which can apply to anyone who&#8217;s online and at a computer all [...]]]></description>
			<content:encoded><![CDATA[<p> A big part of staying productive at work involves making conscious decisions about when you&#8217;re focusing on a task to the exclusion of everything else and when you&#8217;re open to interruptions. Author Tim Ferriss interviewed me recently about my bi-modal work style, which can apply to anyone who&#8217;s online and at a computer all day long:</p>
<p>Basically, I&#8217;ve got two modes of work: loose/open, and focused/closed. When I&#8217;m in &#8220;open&#8221; mode, my instant messenger status is set to available, I&#8217;m surfing, writing, checking email, coding, listening to music with lyrics—getting things done, but in a multitasking way, open to interruptions and tangents.</p>
<p>When I&#8217;m in focused/closed mode, I shut down IM, stop checking email, close any windows I&#8217;m not using, switch to my ambient music playlist, set a timer, and plow through whatever I&#8217;ve got to get done. Typically I go into closed mode when I&#8217;m on deadline, or feel like too much time has passed since I checked off something really important on my list.</p>
<p>If you can forgive that shamelessly self-referential act of quoting myself, tell me: what different modes of work are you in during the day? How and when do you move between them? Give it up in the comments.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=bfiKDAF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=bfiKDAF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=p3p6saf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=p3p6saf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=hhAFjIF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=hhAFjIF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=OON8Z7f"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=OON8Z7f" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/18/get-things-done-with-bi-modal-work-styles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Happy St Patrick’s Day!</title>
		<link>http://k-i-v.com/2008/03/17/happy-st-patricks-day/</link>
		<comments>http://k-i-v.com/2008/03/17/happy-st-patricks-day/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 11:15:35 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Gibberish]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/17/happy-st-patricks-day/</guid>
		<description><![CDATA[Paddy was driving down the street in a sweat because he had an important meeting and couldn&#8217;t find a parking place.   Looking up to heaven he said, &#8220;Lord take pity on me.   If you find me a parking place, I will go to Mass every Sunday for the rest of me life and give up [...]]]></description>
			<content:encoded><![CDATA[<p>Paddy was driving down the street in a sweat because he had an important meeting and couldn&#8217;t find a parking place.   Looking up to heaven he said, &#8220;Lord take pity on me.   If you find me a parking place, I will go to Mass every Sunday for the rest of me life and give up me Irish Whiskey!&#8221;</p>
<p>Miraculously, a parking place appeared.</p>
<p>Paddy looked up again and said, &#8220;Never mind, I found one.&#8221;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=DQzUiCF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=DQzUiCF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=cx5Jjcf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=cx5Jjcf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=9seaKqF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=9seaKqF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=Netx67f"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=Netx67f" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/17/happy-st-patricks-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Burn an ISO in 3 clicks</title>
		<link>http://k-i-v.com/2008/03/16/burn-an-iso-in-3-clicks/</link>
		<comments>http://k-i-v.com/2008/03/16/burn-an-iso-in-3-clicks/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 20:14:53 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/16/burn-an-iso-in-3-clicks/</guid>
		<description><![CDATA[I was working on a project the other day with a friend and he was having some trouble burning an .iso image of one of the Ubuntu 7.04 Herd releases. He asked me about installing gnomebaker or K3B for burning the image. While I have used both of those programs I found that a disk [...]]]></description>
			<content:encoded><![CDATA[<p>I was working on a project the other day with a friend and he was having some trouble burning an .iso image of one of the Ubuntu 7.04 Herd releases. He asked me about installing gnomebaker or K3B for burning the image. While I have used both of those programs I found that a disk image can be burned very easily directly from the the file location. Here are a few steps to burning a disk image in three clicks.</p>
<ol>
<li> First, you’ll need to have a .iso image available for burning. This could be located on your desktop, home folder or I’ve even burned an image using this method over on NFS connection. You’ll also need a blank CD or DVD in the drive.</li>
<li>Once you’ve selected your disk image you can right-click the .iso file and select “Write to disk…” (two clicks)</li>
<li>This will open a dialog box letting you verify the disk type, size and burn speed. If all is correct (which it normally is) you can click Burn. Sit back and relax. Your disk will be finished in just a few minutes. (one click)</li>
</ol>
<p>Done.  When finished it’ll ask if you’d like to <em>Eject</em>, <em>Burn Another Copy</em> or if you’re just <em>Done</em>.  So very easy.</p>
<p>I find this method much faster and a little more intuitive than the other cd / dvd burning applications. Not to say they aren’t great apps, but if you’re just burning a simple disk image this should be a bit faster. I’ve also had far fewer coasters using this method than I have with the others.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=LWNDbnF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=LWNDbnF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=JUhXwSf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=JUhXwSf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=C2XJe6F"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=C2XJe6F" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=wVCEhcf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=wVCEhcf" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/16/burn-an-iso-in-3-clicks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Command line basics for beginners</title>
		<link>http://k-i-v.com/2008/03/16/command-line-basics-for-beginners/</link>
		<comments>http://k-i-v.com/2008/03/16/command-line-basics-for-beginners/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 19:34:53 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/16/command-line-basics-for-beginners/</guid>
		<description><![CDATA[For many of you the command line may be intimidating, especially if you’re more accustomed to the Windows standard GUI. I want to tell you the command line can be a VERY powerful tool if you just learn a few basic things. Please don’t consider the command line a crutch or “Linux is hard because [...]]]></description>
			<content:encoded><![CDATA[<p>For many of you the command line may be intimidating, especially if you’re more accustomed to the Windows standard GUI. I want to tell you the command line can be a VERY powerful tool if you just learn a few basic things. Please don’t consider the command line a crutch or “Linux is hard because you have to type commands”. You can do everything via a GUI that you can do via the command line, it is simply easier or quicker to do it the latter way.</p>
<p>Below are a few basic command for those of you new to the command line:</p>
<blockquote><p><code>ls - list contents of a directory<br />
sudo - "super-user do" (grants administrator rights)<br />
cd - change directory<br />
aptitude - APT package management system (update, install, remove, search)<br />
clear - clear screen<br />
chmod - change file access permissions<br />
chown - change file  and group ownership<br />
cp - copy<br />
mv - move<br />
rm - remove<br />
cat - concatenate files (dump to screen)<br />
nano - basic text editor<br />
vi - advanced text editor<br />
fdisk - partition table manipulator<br />
df - disk free (remaining / used disk space)<br />
users - users currently logged in<br />
useradd - add a user<br />
usermod - modify existing user<br />
uname - show system data (try uname -a)<br />
mount - mount a file system, cd or removable drive<br />
umount - un-mount a file system, cd or removable drive<br />
top - show current running processes<br />
touch - create new, empty, file<br />
reboot - reboot your system<br />
shutdown - shutdown your system<br />
passwd - change user password<br />
ping - ping a network device or location (ping google.com)<br />
more - show output one screen at a time<br />
exit - logout of the terminal<br />
eject - eject a cdrom or removable device</code></p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=uXzwybF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=uXzwybF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=iymOMKf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=iymOMKf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=n9wy4JF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=n9wy4JF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=WL3e7Kf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=WL3e7Kf" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/16/command-line-basics-for-beginners/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nerve tapping neckband used in “telepathic” chat</title>
		<link>http://k-i-v.com/2008/03/13/nerve-tapping-neckband-used-in-telepathic-chat/</link>
		<comments>http://k-i-v.com/2008/03/13/nerve-tapping-neckband-used-in-telepathic-chat/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 21:00:08 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/13/nerve-tapping-neckband-used-in-telepathic-chat/</guid>
		<description><![CDATA[


A neckband that translates thought into speech by picking up nerve signals has been used to demonstrate a &#8220;voiceless&#8221; phone call for the first time.
With careful training a person can send nerve signals to their vocal cords without making a sound. These signals are picked up by the neckband and relayed wirelessly to a computer [...]]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/xyN4ViZ21N0&#038;rel=1&#038;border=0"></param>
<param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/xyN4ViZ21N0&#038;rel=1&#038;border=0" type="application/x-shockwave-flash" wmode="transparent"width="425" height="355"></embed></object></p>
<p>A neckband that translates thought into speech by picking up nerve signals has been used to demonstrate a &#8220;voiceless&#8221; phone call for the first time.</p>
<p>With careful training a person can send nerve signals to their vocal cords without making a sound. These signals are picked up by the neckband and relayed wirelessly to a computer that converts them into words spoken by a computerised voice.</p>
<p>A video (right) shows the system being used to place the first public voiceless phone call on stage at a recent <a href="http://focus.ti.com/general/docs/tidc/general.tsp?templateId=6180&amp;path=templatedata/cm/tidcgeneral/data/portal/global_portal" target="ns">conference held by microchip manufacturer Texas Instruments</a>. Michael Callahan, co-founder of <a href="http://www.theaudeo.com/" target="ns">Ambient Corporation</a>, which developed the neckband, demonstrates the device, called the Audeo.</p>
<p>Users needn&#8217;t worry about that the system voicing their inner thoughts though. Callahan says producing signals for the Audeo to decipher requires &#8220;a level above thinking&#8221;. Users must think specifically about voicing words for them to be picked up by the equipment.</p>
<p>The Audeo has previously been used to let people control wheelchairs using their thoughts. <a href="http://technology.newscientist.com/channel/tech/dn12602-thinking-of-words-can-guide-your-wheelchair-.html"><em>Watch a video demonstrating thought control of wheelchairs</em></a></p>
<p>&#8220;I can still talk verbally at the same time,&#8221; Callahan told <strong>New Scientist</strong>. &#8220;We can differentiate between when you want to talk silently, and when you want to talk out loud.&#8221; That could be useful in certain situations, he says, for example when making a private call while out in public.</p>
<p>The system demonstrated at the TI conference can recognise only a limited set of about 150 words and phrases, says Callahan, who likens this to the early days of speech recognition software.</p>
<p>At the end of the year Ambient plans to release an improved version, without a vocabulary limit. Instead of recognising whole words or phrases, it should identify the individual <a href="http://en.wikipedia.org/wiki/Phoneme" target="ns">phonemes</a> that make up complete words.</p>
<p>This version will be slower, because users will need to build up what they want to say one phoneme at a time, but it will let them say whatever they want. The phoneme-based system will be aimed at people who have lost the ability to speak due to neurological diseases like ALS – also known as motor neurone disease.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=Rph3jDF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=Rph3jDF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=tfneb2f"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=tfneb2f" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=5qIuWnF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=5qIuWnF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=nNE6TTf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=nNE6TTf" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/13/nerve-tapping-neckband-used-in-telepathic-chat/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Universe is 13.73 +/- 0.12 billion years old!</title>
		<link>http://k-i-v.com/2008/03/06/the-universe-is-1373-012-billion-years-old/</link>
		<comments>http://k-i-v.com/2008/03/06/the-universe-is-1373-012-billion-years-old/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 19:37:03 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/06/the-universe-is-1373-012-billion-years-old/</guid>
		<description><![CDATA[Happy birthday, Universe!
Kinda. It’s not really the Universe’s birthday, but now we do know to high accuracy just how old it is.
How?
NASA’s WMAP is the Wilkinson Microwave Anisotropy Probe (which is a mouthful, and why we just call it WMAP). It was designed to map the Universe with exquisite precision, detecting microwaves coming from the [...]]]></description>
			<content:encoded><![CDATA[<p>Happy birthday, Universe!</p>
<p>Kinda. It’s not really the Universe’s birthday, but now we do know to high accuracy just how old it is.</p>
<p>How?</p>
<p>NASA’s <a href="http://wmap.gsfc.nasa.gov/" target="_blank">WMAP</a> is the Wilkinson Microwave Anisotropy Probe (which is a mouthful, and why we just call it WMAP). It was designed to map the Universe with exquisite precision, detecting microwaves coming from the most distant source there is: the cooling fireball of the Big Bang itself.</p>
<p><a href="http://wmap.gsfc.nasa.gov/news/index.html" target="_blank">New results just released from WMAP</a> have nailed down lots of cool stuff — literally — about the Universe.</p>
<p>I am about to explain the early Universe to you. I’ll be brief, but if you want to skip to the results, <a href="http://www.badastronomy.com/bablog/2008/03/05/the-universe-is-1373-12-billion-years-old/#results">then go ahead</a>.</p>
<p>Here’s the quick version: the Big Bang was hot. The Universe itself expanded <del datetime="2008-03-06T04:51:02+00:00">outward from a single point</del> — actually, <a href="http://en.wikipedia.org/wiki/Metric_expansion_of_space" target="_blank">it’s <em>space itself</em> that expands</a>, not the objects in it — and like any expanding gas it cooled. After about a microsecond, it had cooled enough for protons and neutrons to form. Three minutes later (yes, just three minutes) it had cooled enough for protons and neutrons to stick together. Hydrogen, helium, and just a dash of lithium were created, and these would be the only elements for some time (hundreds of millions of years, in fact). The Universe was a thick soup of matter and energy.</p>
<p>It kept expanding and cooling. At this point, it was opaque to light. A photon couldn’t travel an inch without smacking into an electron and then getting sent off in some other random direction. However, after a few hundred thousand years, an amazing thing happened: neutral hydrogen could form. Before this point, the Universe was still too hot; as soon as an electron bonded with a proton, some ultraviolet photon would come along and whack it off. But at that golden moment the cosmos had cooled off enough that a lasting atomic relationship was in the offing. Neutral hydrogen was born. At that moment — astronomers call it <em>recombination</em>, which is a misnomer, since it was the first time electrons and protons could combine — the Universe became transparent; without all those pesky electrons floating around, photons found themselves free to travel long distances.</p>
<p>It’s those photons WMAP sees. After 13.7 billion years, the expansion of the Universe has cooled the light, stretched its wavelength from ultraviolet to microwave. Another way to think about it is that the temperature associated with each photon went from thousands of Kelvins down to just a few, less than 3, in fact. That’s -270 Celsius, and -454 Fahrenheit.</p>
<p>Brrrr.</p>
<p>That light emitted just after recombination tells us a vast amount about the Universe at that time. By carefully mapping the exact wavelength of the light and the direction from where it came, we can tell the density and temperature of the matter at that time. Incredibly we can also tell how much dark energy there was, and even the geometry of the Universe: whether it is flat, open, or closed.</p>
<p>All this, from the dying glow of the Big Bang itself.</p>
<p><a name="results"></a><strong>WMAP Results</strong></p>
<p>A lot of this information was determined a while back, just a couple of years after WMAP launched. But now they have released the Five Year Data, a comprehensive analysis of what all that data means. Here’s a quick rundown:</p>
<p>1) The age of the Universe is 13.73 billion years, plus or minus 120 million years. Some people might say it doesn’t look a day over 6000 years. They’re wrong.</p>
<p>2) The image above shows the temperature difference between different parts of the sky. Red is hotter, blue is cooler. However, the difference is incredibly small: the entire temperature range from cold to hot is only <em>0.0002 degrees Celsius</em>. The average temperature is 2.725 Kelvin, so you’re seeing temperatures from 2.7248 to 2.7252 Kelvins.</p>
<p>3) The age of the Universe when recombination occurred was 375,938 years, +/- about 3100 years. Wow.</p>
<p>4) <a href="http://map.gsfc.nasa.gov/m_uni/uni_101shape.html" target="_blank">The Universe is flat</a>.</p>
<p>5) The energy budget of the Universe is the total amount of energy and matter in the whole cosmos added up. Together with some other observations, WMAP has been able to determine just how much of that budget is occupied by dark energy, dark matter, and normal matter. What they got was: the Universe is 72.1% dark energy, 23.3% dark matter, and 4.62% normal matter. You read that right: everything you can see, taste, hear, touch, just sense in any way… <em>is less than 5% of the whole Universe.</em></p>
<p><strong>We occupy a razor thin slice of reality.</strong></p>
<p>There are other important things that have come from the WMAP data, and if you’re interested, you can read all about them <a href="http://wmap.gsfc.nasa.gov/news/index.html" target="_blank">on the WMAP</a> site and <a href="http://lambda.gsfc.nasa.gov/product/map/dr3/map_bibliography.cfm" target="_blank">in the professional journal papers</a>.</p>
<p>But if you only want to peruse the results I’ve highlighted here, that’s fine too. But remember this, and remember it well: you are living in a unique time. For the first time in all of human history, we can look up at the sky, and when it looks back down on us it reveals its secrets. We are the very first humans to be able to do this… and we have the entire future of the Universe ahead of us.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=MtvCXhF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=MtvCXhF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=dycbpZf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=dycbpZf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=TTJ5sgF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=TTJ5sgF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=PRdQx1f"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=PRdQx1f" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/06/the-universe-is-1373-012-billion-years-old/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Linux needs standarisation</title>
		<link>http://k-i-v.com/2008/03/04/linux-needs-standarisation/</link>
		<comments>http://k-i-v.com/2008/03/04/linux-needs-standarisation/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 18:06:55 +0000</pubDate>
		<dc:creator>kiv</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Free Software]]></category>

		<guid isPermaLink="false">http://k-i-v.com/2008/03/04/linux-needs-standarisation/</guid>
		<description><![CDATA[Okay, here&#8217;s something that&#8217;s been going through my mind lately and I think it needs to be brought to the forefront, I think we need to discuss standardisation. Yes, that dreaded word.
While this seems like a bit of a non-subject, or even a mundane one, I still feel it should be discussed. First off, there [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, here&#8217;s something that&#8217;s been going through my mind lately and I think it needs to be brought to the forefront, I think we need to discuss standardisation. Yes, that dreaded word.</p>
<p>While this seems like a bit of a non-subject, or even a mundane one, I still feel it should be discussed. First off, there are over thirty five different package distribution systems available out there. Thirty five! Just like the excess of Linux distributions, that&#8217;s just too many. I&#8217;m not saying we should suddenly end choice in the Linux world. I&#8217;m all for choice. But I&#8217;m also a realist. You can&#8217;t expect Linux to succeed in the world if there isn&#8217;t standardisation at least in this area.</p>
<p>It seems every Linux distro has its own way of configuring network access. For example:</p>
<p>Fedora: /etc/sysconfig/networking/devices/ifcfg-eth0<br />
Archlinux: /etc/rc.conf<br />
Ubuntu: /etc/network/interfaces</p>
<p>And that&#8217;s just the tip of the iceberg. I won&#8217;t even go into all the nuttiness that exists out there. Sure, there&#8217;s some standardisation across all the distributions, but it&#8217;s so little as to be difficult to spot. That shouldn&#8217;t be the case, ever. Because of that, each distribution, or distribution group has to have their own custom built version of a given application for their own version of Linux.</p>
<p>I feel sorry for the application developers who want to supply binary packages, and need to build sometimes dosens of packages for all the different distros and their  various incompatible versions. Of course in real life they seldom do - so the poor user is faced with having to try and compile the application from source if a binary package does not exist for their distro.</p>
<p>Even the package systems are too diversified. As I said before, choice is good, but not on the core system, and packages are part of the core system. Sure, choice is important and choice is good. I very strongly support choice. But I&#8217;m a realist and reality says that sometimes choice can also be your own worst enemy. You can standardise the core of Linux, yet still leave users with all the choice they could ever want. And if we don&#8217;t start standardising at least the important things, Microsoft is going to beat us over the head. One of their biggest clubs against us is that we&#8217;ve got such a wide range of diversity, while they have a standardised one stop shop.</p>
<p>Really, seriously. Think about it. Who needs fifteen different ways to do network configuration? Or how about hardware detection? Why do we need some 100 different systems for hardware detection? Everyone should get together, pool their resources, and come up with one, two, maybe even three really, really good hardware detection systems and then have everyone use them. Or how about the directory file tree? I absolutely hate it when each distribution has its own unique way to do the directory structure for system and user files. Everyone pick one thing that works, and run with it. Don&#8217;t create a thousand unique ways to do things.</p>
<p>People shouldn&#8217;t be forced to do something ten different ways across ten different distributions. If you think it drives some of us nuts, imagine what it does in the corporate world. If Linux is ever going to become properly mainstream, some of our choice has to be surrendered. Why do you think Microsoft succeeded so well in the market?</p>
<p>All conspiracy theories aside, they provided end users with a consolidated, single platform which was universal and provided a one stop shop for corporations where other previous operating systems didn&#8217;t, preferring to each stick to their own unique and proprietary OS&#8217;s, formats, file systems, and more. People loved how Microsoft was consistent and compatible no matter where you went and which version you had. (Yes, they actually believed in cross program and cross OS compatibility at one time) But it wasn&#8217;t the home user that ended up making Microsoft so big. Microsoft targeted the corporate workplace. Apple went after the home and school market. You can see who won that war.</p>
<p>So if Linux ever wants to truly become mainstream, some level of standardisation needs to occur. Incompatibilities between distributions, the multiplicity in the ways applications need to be compiled to work on each distribution, and the variance of features across different versions is going to do more harm than good for us in the long term. I&#8217;m not saying we need to throw out all we&#8217;ve worked so hard for. But sometimes we have to give up a little to gain a lot. Isn&#8217;t sacrificing a little choice in the underlying system to gain the victory in the world market better than keeping the tangled mess we have now and ultimately loosing the war?</p>
<p>If we don&#8217;t standardise at least the core of every Linux distro, we&#8217;re going to find ourselves in a rather nasty place in the near future. Now before you pick up your guns and start shooting (figuratively I hope) at me or each other, let&#8217;s stop for a moment. All pride and egos aside, our enemy is not each other. Our enemy is a Redmond, Washington company who would like nothing more than to see choice wiped out of existence. If for no other reason, isn&#8217;t that enough to make you want to lay down the sword with your fellow Linux geek and try working together towards Linux standardisation? Or do you actually enjoy the idea of eventually having no choice in what you do on your computer? Think about it. If we don&#8217;t start working together and standardising things, that&#8217;s all we&#8217;ll have. One big bloated monster of an OS, a monopoly hellbent on telling you what you can and can&#8217;t do, and more headaches than all the aspirin in the world can cure. So let&#8217;s get moving.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/KivsWeblog?a=OYeMArF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=OYeMArF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=zWOMTCf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=zWOMTCf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=ep7a0LF"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=ep7a0LF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/KivsWeblog?a=AzYnlzf"><img src="http://feeds.feedburner.com/~f/KivsWeblog?i=AzYnlzf" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://k-i-v.com/2008/03/04/linux-needs-standarisation/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
