<?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/"
	>

<channel>
	<title>Blog of Anders Rune Jensen &#187; nemo</title>
	<atom:link href="http://people.iola.dk/arj/category/nemo/feed/" rel="self" type="application/rss+xml" />
	<link>http://people.iola.dk/arj</link>
	<description>metalinguistic musings and other related ramblings</description>
	<lastBuildDate>Fri, 18 Nov 2011 19:13:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Nemo 0.2.4 released</title>
		<link>http://people.iola.dk/arj/2009/06/16/nemo-024-released/</link>
		<comments>http://people.iola.dk/arj/2009/06/16/nemo-024-released/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 12:48:05 +0000</pubDate>
		<dc:creator>Anders Rune Jensen</dc:creator>
				<category><![CDATA[nemo]]></category>

		<guid isPermaLink="false">http://people.iola.dk/arj/?p=324</guid>
		<description><![CDATA[<p><a href="http://www.iola.dk/nemo/">Nemo</a> is not quite dead yet. It&#8217;s been a long time since the last release, as I&#8217;ve been super busy with external contracting work at IOLA so I havn&#8217;t really had time to work that much on Nemo. There are some interesting things coming up in the Nemo space in the future, so far I can&#8217;t say much about what they are since they are still quite a bit up in the air, but be sure that Nemo is not dead yet <img src='http://people.iola.dk/arj/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></description>
		<wfw:commentRss>http://people.iola.dk/arj/2009/06/16/nemo-024-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attending the Maemo Summit 08 in Berlin 19-21 Sept.</title>
		<link>http://people.iola.dk/arj/2008/08/28/attending-the-maemo-summit-08-in-berlin-19-21-sept/</link>
		<comments>http://people.iola.dk/arj/2008/08/28/attending-the-maemo-summit-08-in-berlin-19-21-sept/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 09:57:15 +0000</pubDate>
		<dc:creator>Anders Rune Jensen</dc:creator>
				<category><![CDATA[nemo]]></category>
		<category><![CDATA[maemo]]></category>
		<category><![CDATA[nokia]]></category>

		<guid isPermaLink="false">http://people.iola.dk/arj/?p=182</guid>
		<description><![CDATA[<p>I&#8217;ve just booked tickets and will be attending the <a href="http://wiki.maemo.org/Maemo_Summit_2008">Maemo Summit</a>. I&#8217;ll be there for mostly for the <a href="http://wiki.maemo.org/Desktop_Search_Hackfest">Desktop Search Hackfest</a> representing <a href="http://iola.dk/nemo/">Nemo</a>.</p>
]]></description>
		<wfw:commentRss>http://people.iola.dk/arj/2008/08/28/attending-the-maemo-summit-08-in-berlin-19-21-sept/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release time! Nemo 0.2.3 released</title>
		<link>http://people.iola.dk/arj/2008/08/19/release-time-nemo-023-released/</link>
		<comments>http://people.iola.dk/arj/2008/08/19/release-time-nemo-023-released/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 17:18:48 +0000</pubDate>
		<dc:creator>Anders Rune Jensen</dc:creator>
				<category><![CDATA[nemo]]></category>

		<guid isPermaLink="false">http://people.iola.dk/arj/?p=180</guid>
		<description><![CDATA[<p>Had some nice crasher fixes in svn for a while so I thought I would do a release of <a href="http://iola.dk/nemo/">Nemo</a>. The release is very minor, but the changes should be rather welcome for everyone <img src='http://people.iola.dk/arj/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></description>
		<wfw:commentRss>http://people.iola.dk/arj/2008/08/19/release-time-nemo-023-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nemo 0.2.2 released</title>
		<link>http://people.iola.dk/arj/2008/03/25/nemo-022-released/</link>
		<comments>http://people.iola.dk/arj/2008/03/25/nemo-022-released/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 23:00:44 +0000</pubDate>
		<dc:creator>Anders Rune Jensen</dc:creator>
				<category><![CDATA[iola]]></category>
		<category><![CDATA[nemo]]></category>

		<guid isPermaLink="false">http://people.iola.dk/arj/2008/03/25/nemo-022-released/</guid>
		<description><![CDATA[<p>I made a new release of <a href="http://www.iola.dk/nemo/">Nemo</a> 0.2.2 today. It has some nice memory usage improvements and indexing fixes. Plus day view got pagination so that it can handle large number of files on a single day (like an svn update) gracefully. Upgrading is highly recommended.</p>
]]></description>
		<wfw:commentRss>http://people.iola.dk/arj/2008/03/25/nemo-022-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improving latency while keeping your sanity</title>
		<link>http://people.iola.dk/arj/2008/02/15/improving-latency-while-keeping-your-sanity/</link>
		<comments>http://people.iola.dk/arj/2008/02/15/improving-latency-while-keeping-your-sanity/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 18:54:05 +0000</pubDate>
		<dc:creator>Anders Rune Jensen</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[nemo]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://people.iola.dk/arj/2008/02/15/improving-latency-while-keeping-your-sanity/</guid>
		<description><![CDATA[<p>We had this problem in Nemo 0.2.0 that it would use quite a lot of cpu while it was indexing. I kind of knew this could happen but hoped that a transaction optimization to the database could improve the performance enough to make this problem irrelevant. Sadly it did not. The indexing code works by running an event loop in a single thread and then having two queues, one for tasks that needs to be completed fast and one for background tasks. Each of the queues are basically just a list of function pointers that is popped when a new task need to run.</p>
<p>The nice property of the indexing code is that it would put each task into simple function that one could read from start to end. The same property that is usually associated with programming using threads compared to programming using events where the code has to be broken into several parts. I feared that I had to go the event way and break the indexing up into smaller functions and do a lot of tedious book keeping to make sure the code could be resumed.</p>
<p>After thinking about the problem for a little while it dawned on me that this is the a perfect case for yielding. Yielding allows you to suspend the execution of a function and return immediately which is perfect for this problem since the runtime will automatically do all the book keeping for you. Another really nice thing is that it turns out that converting the code was extremely simple.</p>
<p>Instead of storing simple function pointer in the queue, we just store an object of type IEnumerable&lt;bool&gt; which will wrap the function and make sure we can call it multiple times. When the Enumerable is called it will keep returning true as long as there&#8217;s still work to do in the function wrapped. So the function could just return false and it would work the exact same way as it did before. So one can think of the IEnumerable as a sort of higher order function.</p>
<p>So we just need to wrap the normal functions with the following code:</p>
<pre class="prettyprint">
private IEnumerator<bool> TurnEnumerableIntoEnumerator(IEnumerable<bool> enumerable)
{
	IEnumerator &lt; bool &gt; t = enumerable.GetEnumerator();

	while (t.MoveNext()) {
		yield return t.Current;
	}

	// make compiler happy
	yield break;
}
</bool></bool></pre>
<p>And make the function wrapped return IEnumerable<bool> instead of void. Then the function can at any point in the function do a simple yield return true; to signal that the function can be resumed to complete its task. So this way it is also very dynamic since a function can return if it has done X amount of work, or if X amount of time has passed or if it is signalled by some other code that a low latency task has been added to the queue. It really adds a lot of flexibility while still keeping the nice structure of a simple function. The complete code is in nemo 0.2.1 under metadata/MetadataStore.cs.</bool></p>
]]></description>
		<wfw:commentRss>http://people.iola.dk/arj/2008/02/15/improving-latency-while-keeping-your-sanity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nemo 0.2.1 released</title>
		<link>http://people.iola.dk/arj/2008/02/15/nemo-021-released/</link>
		<comments>http://people.iola.dk/arj/2008/02/15/nemo-021-released/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 23:13:52 +0000</pubDate>
		<dc:creator>Anders Rune Jensen</dc:creator>
				<category><![CDATA[iola]]></category>
		<category><![CDATA[nemo]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://people.iola.dk/arj/2008/02/15/nemo-021-released/</guid>
		<description><![CDATA[<p>Did the release of <a href="http://www.iola.dk/nemo/">nemo</a> 0.2.1 today. The release is the result of a large amount of massaging of the nemo code to use less cpu and memory (a garbage collector suddently makes these interlinked in a new one is not usually familiar with when coming from a language like C++). Then some profiling and massaging of GTK# which is sadly still not 100% ready for prime time. And finally some poking at mono code <strike>for which I&#8217;m not ready with a patch yet (tomorrow it will be)</strike>, but I&#8217;ve <a href="https://bugzilla.novell.com/show_bug.cgi?id=362147">improved the performance</a> of the inotify backend of the filesystemwatcher by quite a bit especially when watching a large number of directories.</p>
]]></description>
		<wfw:commentRss>http://people.iola.dk/arj/2008/02/15/nemo-021-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nemo 0.2.0 released</title>
		<link>http://people.iola.dk/arj/2008/01/10/nemo-020-released/</link>
		<comments>http://people.iola.dk/arj/2008/01/10/nemo-020-released/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 16:53:09 +0000</pubDate>
		<dc:creator>Anders Rune Jensen</dc:creator>
				<category><![CDATA[iola]]></category>
		<category><![CDATA[nemo]]></category>

		<guid isPermaLink="false">http://people.iola.dk/arj/2008/01/10/nemo-020-released/</guid>
		<description><![CDATA[<p>Long time since I&#8217;ve blogged about <a href="http://www.iola.dk/nemo">Nemo</a>. Since the initial release a little over a month ago we have had two major releases, the <a href="http://www.iola.dk/nemo/blog/?p=22">first one</a> a bugfix release to fix some of the defects reported and the <a href="http://www.iola.dk/nemo/blog/?p=25">0.2 release</a> which adds support for beagle through Xesam and lots of other nice enhancements like pagination on the search results popup and better indexing performance. The software is still fresh but I consider this to be the first release that I would feel comfortable recommending to a stranger <img src='http://people.iola.dk/arj/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></description>
		<wfw:commentRss>http://people.iola.dk/arj/2008/01/10/nemo-020-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announce Nemo 0.1</title>
		<link>http://people.iola.dk/arj/2007/11/28/announce-nemo-01/</link>
		<comments>http://people.iola.dk/arj/2007/11/28/announce-nemo-01/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 20:16:57 +0000</pubDate>
		<dc:creator>Anders Rune Jensen</dc:creator>
				<category><![CDATA[iola]]></category>
		<category><![CDATA[nemo]]></category>

		<guid isPermaLink="false">http://people.iola.dk/arj/2007/11/28/announce-nemo-01/</guid>
		<description><![CDATA[<p>I&#8217;m very pleased that I can now finally <a href="http://www.iola.dk/nemo/">lift the curtain</a> and show what I&#8217;ve been spending most of my time working at <a href="http://www.iola.dk">iola</a> on.</p>
<p><a href="http://www.iola.dk/nemo/"><img src="http://www.iola.dk/nemo/screenshot1.png" height="254" width="400" /></a></p>
<p>It&#8217;s been a long ride, but now the alpha release is finally ready for public consumption <img src='http://people.iola.dk/arj/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></description>
		<wfw:commentRss>http://people.iola.dk/arj/2007/11/28/announce-nemo-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

