<?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>Yet Another [À Compléter] &#187; English</title>
	<atom:link href="http://blog.neteril.org/category/english/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.neteril.org</link>
	<description>Random thoughts of Jérémie Laval</description>
	<lastBuildDate>Thu, 21 Jan 2010 18:18:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A FOSDEM talk primer</title>
		<link>http://blog.neteril.org/2010/01/21/a-fosdem-talk-primer/</link>
		<comments>http://blog.neteril.org/2010/01/21/a-fosdem-talk-primer/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 18:18:04 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Google Summer of Code 2009]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://blog.neteril.org/?p=776</guid>
		<description><![CDATA[<p>(Shamelessly inspired from <a href="http://blog.reblochon.org/">Stéphane</a>)</p>
<p>Since image processing is both trendy and a good candidate for parallel optimizations, I took the time to implement a little program that compute a part of the <a href="http://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot set</a> (a well known fractal) in a fancy way :</p>
<p style="text-align: center; margin: 1em;"><img class="aligncenter size-medium wp-image-777" title="Lolipop" src="http://blog.neteril.org/wp-content/uploads/2010/01/lolipop-300x300.png" alt="Lolipop" width="300" height="300" /></p>
<p>Now for the facts &amp; numbers :</p>
<blockquote><p>
Sequential generation : <strong>26.5s</strong><br />
Parallel generation : <strong>13.7s</strong><br />
Effective speedup : <strong>2 times faster</strong> (dual core computer)<br />
# changes between sequential and parallel : <strong>3 lines</strong></p></blockquote>
<p>Oh, and this was done using the ParallelFx bundled with Mono 2.6 that you can already use today in your applications.</p>
<p>More informations and tips on Sunday 7th @ FOSDEM in Mono room. Don&#8217;t miss it !</p>
<p>PS: Also, don&#8217;t forget <a href="http://hackerspace.be/Mono_hack-a-day">Mono Hackaday</a> on Monday February 8th.</p>
]]></description>
			<content:encoded><![CDATA[<p>(Shamelessly inspired from <a href="http://blog.reblochon.org/">Stéphane</a>)</p>
<p>Since image processing is both trendy and a good candidate for parallel optimizations, I took the time to implement a little program that compute a part of the <a href="http://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot set</a> (a well known fractal) in a fancy way :</p>
<p style="text-align: center; margin: 1em;"><img class="aligncenter size-medium wp-image-777" title="Lolipop" src="http://blog.neteril.org/wp-content/uploads/2010/01/lolipop-300x300.png" alt="Lolipop" width="300" height="300" /></p>
<p>Now for the facts &amp; numbers :</p>
<blockquote><p>
Sequential generation : <strong>26.5s</strong><br />
Parallel generation : <strong>13.7s</strong><br />
Effective speedup : <strong>2 times faster</strong> (dual core computer)<br />
# changes between sequential and parallel : <strong>3 lines</strong></p></blockquote>
<p>Oh, and this was done using the ParallelFx bundled with Mono 2.6 that you can already use today in your applications.</p>
<p>More informations and tips on Sunday 7th @ FOSDEM in Mono room. Don&#8217;t miss it !</p>
<p>PS: Also, don&#8217;t forget <a href="http://hackerspace.be/Mono_hack-a-day">Mono Hackaday</a> on Monday February 8th.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2010/01/21/a-fosdem-talk-primer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mono happening @ FOSDEM</title>
		<link>http://blog.neteril.org/2009/12/11/mono-happening-fosdem/</link>
		<comments>http://blog.neteril.org/2009/12/11/mono-happening-fosdem/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 12:08:52 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neteril.org/?p=744</guid>
		<description><![CDATA[<h2>Mono room</h2>
<p><img src="http://blog.neteril.org/wp-content/uploads/2009/12/fosdem_brain.png" alt="fosdem_brain" title="fosdem_brain" width="318" height="252" class="aligncenter size-full wp-image-768" /></p>
<p>So if you weren&#8217;t aware of it yet, Mono is going to have <a href="http://weblog.savanne.be/186-fosdem-2010-mono-developer-room-cfp">its own dedicated room</a> at <acronym title="Free and Open Source Software Developers' European Meeting">FOSDEM</acronym>. In order to spread Mono awesomeness, submit talks <a href="http://tinyurl.com/fosdem-2010-mono">here</a> before the 20th. You can even decide yourself how much time you are going to use so don&#8217;t hesitate to speak about a cool software you are working on, a nice hack you have done or a how-to on a library for instance.</p>
<h2>Mono Hackaday</h2>
<p><img src="http://blog.neteril.org/wp-content/uploads/2009/12/banner.png" alt="banner" title="banner" width="256" height="256" class="aligncenter size-full wp-image-754" /></p>
<p>As a side event, there will also be a Mono Hackaday the day after FOSDEM, i.e. Monday 8th, at <a href="http://hackerspace.be/">Hacker Space Brussels (HSB)</a> with all the vital hacker facilities (location details <a href="http://hackerspace.be/Location">here</a>). Everyone is welcome to drop by from 10am to 19pm. There is no precise goal for the hackaday, it&#8217;s just enjoying your normal and random hacking with other Mono fellows.</p>
<h2>Conclusion</h2>
<p>Anyway, in all case :</p>
<p align="center"><a href="http://www.fosdem.org"><img src="http://blog.neteril.org/wp-content/uploads/2009/12/going-to.jpg" alt="FOSDEM, the Free and Open Source Software Developers&#039; European Meeting" title="going-to" width="150" height="89" class="size-full wp-image-746" /></a></p>
<p>See you there (and bring your Rupert too) !</p>
]]></description>
			<content:encoded><![CDATA[<h2>Mono room</h2>
<p><img src="http://blog.neteril.org/wp-content/uploads/2009/12/fosdem_brain.png" alt="fosdem_brain" title="fosdem_brain" width="318" height="252" class="aligncenter size-full wp-image-768" /></p>
<p>So if you weren&#8217;t aware of it yet, Mono is going to have <a href="http://weblog.savanne.be/186-fosdem-2010-mono-developer-room-cfp">its own dedicated room</a> at <acronym title="Free and Open Source Software Developers' European Meeting">FOSDEM</acronym>. In order to spread Mono awesomeness, submit talks <a href="http://tinyurl.com/fosdem-2010-mono">here</a> before the 20th. You can even decide yourself how much time you are going to use so don&#8217;t hesitate to speak about a cool software you are working on, a nice hack you have done or a how-to on a library for instance.</p>
<h2>Mono Hackaday</h2>
<p><img src="http://blog.neteril.org/wp-content/uploads/2009/12/banner.png" alt="banner" title="banner" width="256" height="256" class="aligncenter size-full wp-image-754" /></p>
<p>As a side event, there will also be a Mono Hackaday the day after FOSDEM, i.e. Monday 8th, at <a href="http://hackerspace.be/">Hacker Space Brussels (HSB)</a> with all the vital hacker facilities (location details <a href="http://hackerspace.be/Location">here</a>). Everyone is welcome to drop by from 10am to 19pm. There is no precise goal for the hackaday, it&#8217;s just enjoying your normal and random hacking with other Mono fellows.</p>
<h2>Conclusion</h2>
<p>Anyway, in all case :</p>
<p align="center"><a href="http://www.fosdem.org"><img src="http://blog.neteril.org/wp-content/uploads/2009/12/going-to.jpg" alt="FOSDEM, the Free and Open Source Software Developers&#039; European Meeting" title="going-to" width="150" height="89" class="size-full wp-image-746" /></a></p>
<p>See you there (and bring your Rupert too) !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/12/11/mono-happening-fosdem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WiFi power saving &amp; kernel 2.6.31</title>
		<link>http://blog.neteril.org/2009/10/28/wifi-power-saving-kernel-2-6-31/</link>
		<comments>http://blog.neteril.org/2009/10/28/wifi-power-saving-kernel-2-6-31/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 21:45:15 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neteril.org/?p=708</guid>
		<description><![CDATA[<p>As of Linux kernel 2.6.31 (currently available on <a href="http://www.archlinux.org/">Arch Linux</a> for instance), due to a change in the iwl* drivers, the sysfs entries that were managing power saving on related WiFi chips was removed due to some power management-related bugs.</p>
<p>As such, it&#8217;s impossible to manually set powersaving either using sysfs or via a command like <code>iwconfig power</code>. </p>
<p>Worst part is that the drivers aren&#8217;t even correctly advertising themselves to mac80211 (the underlying layer of the WiFi stack) as able to handle power saving operations thus preventing any event to be propagated back to the driver. You can find more information about the problem <a href="http://patchwork.kernel.org/patch/45225/">on the following thread</a>.</p>
<p>Of course this sucks quite a bit for people who cares about their battery life and who don&#8217;t want to wait for 2.6.32 kernel. That&#8217;s why we decided to try up <a href="http://linuxwireless.org/en/users/Download">compat-wireless</a>.</p>
<p>Compat-wireless is a set of scripts that allows you to install the freshest drivers from the linux-wireless project (list of driver <a href="http://linuxwireless.org/en/users/Drivers">here</a>) in a safe fashion i.e. without messing up your distribution supplied modules and without need for a kernel recompilation. These new modules are also very easy to uninstall and everything is made to prevent you from nuking too much your system.</p>
<p>Turns out that in recent revision of the drivers (>= 2009-10-28), powersave is back in a sort of automated fashion and blocking powersave operations are now limited to the faulty driver/chipset : iwl4965. So if you either use iwlagn or iwl3945 (<code>lsmod</code> will tell you) chances are good that you will get back your nice powertop output (it did for <a href="http://chrooted-universe.org/">a friend</a> and I).</p>
<p>As for installing the beast, the instructions on the official website <a href="http://linuxwireless.org/en/users/Download#Where_to_download_bleeding_edge">starting from here</a> are simple and straightforward. </p>
<p>Of course, if you were using iwl4965 your are still left out. However, if power saving weren&#8217;t breaking up your driver on earlier kernel version, you can simply comment out the <code>.broken_powersave = true</code> configuration statement in iwl-4965.c (line 2282 or so) under <code>drivers/net/wireless/iwlwifi/</code>.</p>
]]></description>
			<content:encoded><![CDATA[<p>As of Linux kernel 2.6.31 (currently available on <a href="http://www.archlinux.org/">Arch Linux</a> for instance), due to a change in the iwl* drivers, the sysfs entries that were managing power saving on related WiFi chips was removed due to some power management-related bugs.</p>
<p>As such, it&#8217;s impossible to manually set powersaving either using sysfs or via a command like <code>iwconfig power</code>. </p>
<p>Worst part is that the drivers aren&#8217;t even correctly advertising themselves to mac80211 (the underlying layer of the WiFi stack) as able to handle power saving operations thus preventing any event to be propagated back to the driver. You can find more information about the problem <a href="http://patchwork.kernel.org/patch/45225/">on the following thread</a>.</p>
<p>Of course this sucks quite a bit for people who cares about their battery life and who don&#8217;t want to wait for 2.6.32 kernel. That&#8217;s why we decided to try up <a href="http://linuxwireless.org/en/users/Download">compat-wireless</a>.</p>
<p>Compat-wireless is a set of scripts that allows you to install the freshest drivers from the linux-wireless project (list of driver <a href="http://linuxwireless.org/en/users/Drivers">here</a>) in a safe fashion i.e. without messing up your distribution supplied modules and without need for a kernel recompilation. These new modules are also very easy to uninstall and everything is made to prevent you from nuking too much your system.</p>
<p>Turns out that in recent revision of the drivers (>= 2009-10-28), powersave is back in a sort of automated fashion and blocking powersave operations are now limited to the faulty driver/chipset : iwl4965. So if you either use iwlagn or iwl3945 (<code>lsmod</code> will tell you) chances are good that you will get back your nice powertop output (it did for <a href="http://chrooted-universe.org/">a friend</a> and I).</p>
<p>As for installing the beast, the instructions on the official website <a href="http://linuxwireless.org/en/users/Download#Where_to_download_bleeding_edge">starting from here</a> are simple and straightforward. </p>
<p>Of course, if you were using iwl4965 your are still left out. However, if power saving weren&#8217;t breaking up your driver on earlier kernel version, you can simply comment out the <code>.broken_powersave = true</code> configuration statement in iwl-4965.c (line 2282 or so) under <code>drivers/net/wireless/iwlwifi/</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/10/28/wifi-power-saving-kernel-2-6-31/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wicd support patch for Banshee</title>
		<link>http://blog.neteril.org/2009/10/06/wicd-support-patch-for-banshee/</link>
		<comments>http://blog.neteril.org/2009/10/06/wicd-support-patch-for-banshee/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:25:38 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neteril.org/?p=700</guid>
		<description><![CDATA[<p>Shameless plug to tell I&#8217;m alive <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</p>
<p>If you are using <a href="http://wicd.sourceforge.net/">Wicd</a> and usually stare at Banshee trying to download cover art or post to last.fm while you are disconnected, <a href="http://neteril.org/mono/wicd-support.patch">the following patch</a> add just the support to fix this.</p>
<p>Here is the associated <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596918">bug report</a> to get the patch integrated.</p>
<p>In other news, school restarted with its bunch of new responsibilities, limiting significantly free hacking time.</p>
]]></description>
			<content:encoded><![CDATA[<p>Shameless plug to tell I&#8217;m alive <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</p>
<p>If you are using <a href="http://wicd.sourceforge.net/">Wicd</a> and usually stare at Banshee trying to download cover art or post to last.fm while you are disconnected, <a href="http://neteril.org/mono/wicd-support.patch">the following patch</a> add just the support to fix this.</p>
<p>Here is the associated <a href="https://bugzilla.gnome.org/show_bug.cgi?id=596918">bug report</a> to get the patch integrated.</p>
<p>In other news, school restarted with its bunch of new responsibilities, limiting significantly free hacking time.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/10/06/wicd-support-patch-for-banshee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get the max out of your PLinq query</title>
		<link>http://blog.neteril.org/2009/08/16/how-to-get-the-max-out-of-your-plinq-query/</link>
		<comments>http://blog.neteril.org/2009/08/16/how-to-get-the-max-out-of-your-plinq-query/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 17:34:15 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Google Summer of Code 2009]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neteril.org/?p=685</guid>
		<description><![CDATA[<p>Here are some tips you should follow if you want to get the maximum performance out of a Linq query parallelized with PLinq (at least with upcoming Mono version) :</p>
<ul>
<li>
<p>Use an indexed data structure as your source like an array, a list or anything which implements the generic IList&lt;T&gt; interface.</p>
<p>You can also use <a href="http://msdn.microsoft.com/en-us/library/dd268181%28VS.100%29.aspx">ParallelEnumerable.Repeat</a> and <a href="http://msdn.microsoft.com/en-us/library/system.linq.parallelenumerable.range%28VS.100%29.aspx">ParallelEnumerable.Range</a> as input. Notice the &#8216;Parallel&#8217; word in front as it&#8217;s not the same as Enumerable.(Range|Repeat)</p>
</li>
<li>
<p>Never use an ordering operator like OrderBy and never assume that the query should be ordered.</p>
<p>The overloads of some operator that provide an index integer are also to avoid.</p>
</li>
<li>
<p>As a general rule, try to stick to the general scheme of <a href="http://msdn.microsoft.com/en-us/library/dd383966%28VS.100%29.aspx">Select</a>-<a href="http://msdn.microsoft.com/en-us/library/dd384150%28VS.100%29.aspx">Where</a>-<a href="http://msdn.microsoft.com/en-us/library/dd383667%28VS.100%29.aspx">Aggregate</a> with any number of Select and Where (like the famous <a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce</a>).</p>
<p>The syntactic sugar operators based on Aggregate like Min, Max, Average, etc&#8230; can also be used.</p>
</li>
<li>
<p>If you can manage it in your code, use the <a href="http://msdn.microsoft.com/en-us/library/dd383744%28VS.100%29.aspx">ForAll</a> method with an action delegate instead of iterating over the query with <code>foreach</code></p>
</li>
<li>
<p>Of course, forbid any synchronization (locks, semaphore, &#8230;) inside the operator selectors/predicates. The purest your lambdas are, the better.</p>
</li>
<li>
<p>The functions used with operators should be predictive and stable i.e. not depend on something uncertain time-wise like a network call and should yield approximately the same execution time with each input.</p>
<p>Sure, this is not always possible but if it is, it does prevent the engine from having to repeatedly balance the query execution itself.</p>
</li>
</ul>
<p>The <a href="http://msdn.microsoft.com/en-us/library/dd460688%28VS.100%29.aspx">PLinq MSDN page</a> contains some additional tricks and explanations if you are interested.</p>
]]></description>
			<content:encoded><![CDATA[<p>Here are some tips you should follow if you want to get the maximum performance out of a Linq query parallelized with PLinq (at least with upcoming Mono version) :</p>
<ul>
<li>
<p>Use an indexed data structure as your source like an array, a list or anything which implements the generic IList&lt;T&gt; interface.</p>
<p>You can also use <a href="http://msdn.microsoft.com/en-us/library/dd268181%28VS.100%29.aspx">ParallelEnumerable.Repeat</a> and <a href="http://msdn.microsoft.com/en-us/library/system.linq.parallelenumerable.range%28VS.100%29.aspx">ParallelEnumerable.Range</a> as input. Notice the &#8216;Parallel&#8217; word in front as it&#8217;s not the same as Enumerable.(Range|Repeat)</p>
</li>
<li>
<p>Never use an ordering operator like OrderBy and never assume that the query should be ordered.</p>
<p>The overloads of some operator that provide an index integer are also to avoid.</p>
</li>
<li>
<p>As a general rule, try to stick to the general scheme of <a href="http://msdn.microsoft.com/en-us/library/dd383966%28VS.100%29.aspx">Select</a>-<a href="http://msdn.microsoft.com/en-us/library/dd384150%28VS.100%29.aspx">Where</a>-<a href="http://msdn.microsoft.com/en-us/library/dd383667%28VS.100%29.aspx">Aggregate</a> with any number of Select and Where (like the famous <a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce</a>).</p>
<p>The syntactic sugar operators based on Aggregate like Min, Max, Average, etc&#8230; can also be used.</p>
</li>
<li>
<p>If you can manage it in your code, use the <a href="http://msdn.microsoft.com/en-us/library/dd383744%28VS.100%29.aspx">ForAll</a> method with an action delegate instead of iterating over the query with <code>foreach</code></p>
</li>
<li>
<p>Of course, forbid any synchronization (locks, semaphore, &#8230;) inside the operator selectors/predicates. The purest your lambdas are, the better.</p>
</li>
<li>
<p>The functions used with operators should be predictive and stable i.e. not depend on something uncertain time-wise like a network call and should yield approximately the same execution time with each input.</p>
<p>Sure, this is not always possible but if it is, it does prevent the engine from having to repeatedly balance the query execution itself.</p>
</li>
</ul>
<p>The <a href="http://msdn.microsoft.com/en-us/library/dd460688%28VS.100%29.aspx">PLinq MSDN page</a> contains some additional tricks and explanations if you are interested.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/08/16/how-to-get-the-max-out-of-your-plinq-query/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#171;&#160;Fundamentalist Functional Programming&#160;&#187;</title>
		<link>http://blog.neteril.org/2009/08/15/fundamentalist-functional-programming/</link>
		<comments>http://blog.neteril.org/2009/08/15/fundamentalist-functional-programming/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 19:46:15 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neteril.org/?p=678</guid>
		<description><![CDATA[<p><a href="http://research.microsoft.com/en-us/um/people/emeijer/">Erik Meijer</a>, guru at MS Research, has recently given a talk at OSCON 2009 introducing functional programming in a funny way. Highly recommended if you have always wondered what all fuss about side effects and purity is about.</p>
<p><embed src="http://blip.tv/play/AYGT6zkC" type="application/x-shockwave-flash" width="480" height="300" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<p>Check it out : <a href="http://blip.tv/file/2402061/">http://blip.tv/file/2402061/</a></p>
<p>He even cite Mono around 4:30 (btw Erik, Mono has supported C# 3.0 for quite a long time now <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</p>
<p>To conclude, &laquo;&nbsp;Go purify yourself because you are all sinners&nbsp;&raquo; <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://research.microsoft.com/en-us/um/people/emeijer/">Erik Meijer</a>, guru at MS Research, has recently given a talk at OSCON 2009 introducing functional programming in a funny way. Highly recommended if you have always wondered what all fuss about side effects and purity is about.</p>
<p><embed src="http://blip.tv/play/AYGT6zkC" type="application/x-shockwave-flash" width="480" height="300" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<p>Check it out : <a href="http://blip.tv/file/2402061/">http://blip.tv/file/2402061/</a></p>
<p>He even cite Mono around 4:30 (btw Erik, Mono has supported C# 3.0 for quite a long time now <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</p>
<p>To conclude, &laquo;&nbsp;Go purify yourself because you are all sinners&nbsp;&raquo; <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/08/15/fundamentalist-functional-programming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Follow-up on OpenVG support for Moonligh</title>
		<link>http://blog.neteril.org/2009/07/27/follow-up-on-openvg-support-for-moonlight/</link>
		<comments>http://blog.neteril.org/2009/07/27/follow-up-on-openvg-support-for-moonlight/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 18:12:52 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://garuma.wordpress.com/?p=666</guid>
		<description><![CDATA[<p>Interested by the stuff I <a href="http://garuma.wordpress.com/2009/07/16/joining-the-moonlight-fun/">demonstrated</a> some weeks ago ?</p>
<p>Check out the following <a href="http://lists.ximian.com/pipermail/moonlight-list/2009-July/000561.html">message</a> on Moonlight mailing-list for instructions on how to get the same thing.</p>
<p>Just to make you salivate :</p>
<p align="center"><!-- Smart Youtube --><span class="youtube"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/Ekfb6jCyDmM&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" /><param name="allowFullScreen" value="true" /><embed wmode="transparent" src="http://www.youtube.com/v/Ekfb6jCyDmM&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355" ></embed><param name="wmode" value="transparent" /></object></span><br />
<br /><em>BubbleMark running at ~50 fps without too much visual glitches</em><br />
(direct link : <a href="http://www.youtube.com/watch?v=Ekfb6jCyDmM">http://www.youtube.com/watch?v=Ekfb6jCyDmM</a>)</p>
]]></description>
			<content:encoded><![CDATA[<p>Interested by the stuff I <a href="http://garuma.wordpress.com/2009/07/16/joining-the-moonlight-fun/">demonstrated</a> some weeks ago ?</p>
<p>Check out the following <a href="http://lists.ximian.com/pipermail/moonlight-list/2009-July/000561.html">message</a> on Moonlight mailing-list for instructions on how to get the same thing.</p>
<p>Just to make you salivate :</p>
<p align="center"><!-- Smart Youtube --><span class="youtube"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/Ekfb6jCyDmM&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" /><param name="allowFullScreen" value="true" /><embed wmode="transparent" src="http://www.youtube.com/v/Ekfb6jCyDmM&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355" ></embed><param name="wmode" value="transparent" /></object></span><br />
<br /><em>BubbleMark running at ~50 fps without too much visual glitches</em><br />
(direct link : <a href="http://www.youtube.com/watch?v=Ekfb6jCyDmM">http://www.youtube.com/watch?v=Ekfb6jCyDmM</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/07/27/follow-up-on-openvg-support-for-moonlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joining the Moonlight fun</title>
		<link>http://blog.neteril.org/2009/07/16/joining-the-moonlight-fun/</link>
		<comments>http://blog.neteril.org/2009/07/16/joining-the-moonlight-fun/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 15:07:17 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://garuma.wordpress.com/?p=660</guid>
		<description><![CDATA[<p>Watching my teammate hacking on moonlight was sure to detain on me someday. So when <a href="http://monotorrent.blogspot.com/">Alan</a> talked about making <a href="http://mono-project.com/Moonlight">Moonlight</a> run on top of <a href="http://en.wikipedia.org/wiki/OpenVG">OpenVG</a> I got pretty hooked.</p>
<p>Two hacking days later, I actually got something to &laquo;&nbsp;work&nbsp;&raquo;. At the moment it&#8217;s quite rough, hacky and it probably kills kitteh too (be careful, it makes shana angry, you wouldn&#8217;t like that).</p>
<p>Basically, what I did is to plug the OpenVG layer inside Moonlight custom version of cairo (using <a href="http://lists.cairographics.org/archives/cairo/2008-January/012833.html">that code</a> as a base) and then tweaked Moonlight to use the new surface (together with some changes in how drawing and caching is done internally).</p>
<p>Following is a screencast of the thing running <a href="http://bubblemark.com/silverlight2.html">Bubble Mark</a> :</p>
<p align="center"><!-- Smart Youtube --><span class="youtube"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/dywInr08ySg&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" /><param name="allowFullScreen" value="true" /><embed wmode="transparent" src="http://www.youtube.com/v/dywInr08ySg&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355" ></embed><param name="wmode" value="transparent" /></object></span><br />
<br />
(Direct link : <a href="http://www.youtube.com/watch?v=dywInr08ySg">http://www.youtube.com/watch?v=dywInr08ySg</a>)</p>
<p>As you can see there are a lot of drawing issues remaining but the basic stuff is here. The code is not terribly faster (+10 fps or so) but that may come either from a bug in my graphic card driver (it already does the bizarre thing of slowing down after some time) or an other part of Moonlight.</p>
<p>It will definitely be better when OpenVG becomes more widespread, has more optimized implementations and can actually run on its own rather than on top of OpenGL (I&#8217;m eager to try that on top of Gallium3D when it will be ready).</p>
<p>As for inclusion in the mainline tree, I don&#8217;t know. I mostly did the thing for fun as a proof-of-concept and it&#8217;s certainly far too crappy to ever get integrated as is, but maybe someone will step up and do it correctly later <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</p>
]]></description>
			<content:encoded><![CDATA[<p>Watching my teammate hacking on moonlight was sure to detain on me someday. So when <a href="http://monotorrent.blogspot.com/">Alan</a> talked about making <a href="http://mono-project.com/Moonlight">Moonlight</a> run on top of <a href="http://en.wikipedia.org/wiki/OpenVG">OpenVG</a> I got pretty hooked.</p>
<p>Two hacking days later, I actually got something to &laquo;&nbsp;work&nbsp;&raquo;. At the moment it&#8217;s quite rough, hacky and it probably kills kitteh too (be careful, it makes shana angry, you wouldn&#8217;t like that).</p>
<p>Basically, what I did is to plug the OpenVG layer inside Moonlight custom version of cairo (using <a href="http://lists.cairographics.org/archives/cairo/2008-January/012833.html">that code</a> as a base) and then tweaked Moonlight to use the new surface (together with some changes in how drawing and caching is done internally).</p>
<p>Following is a screencast of the thing running <a href="http://bubblemark.com/silverlight2.html">Bubble Mark</a> :</p>
<p align="center"><!-- Smart Youtube --><span class="youtube"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/dywInr08ySg&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" /><param name="allowFullScreen" value="true" /><embed wmode="transparent" src="http://www.youtube.com/v/dywInr08ySg&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355" ></embed><param name="wmode" value="transparent" /></object></span><br />
<br />
(Direct link : <a href="http://www.youtube.com/watch?v=dywInr08ySg">http://www.youtube.com/watch?v=dywInr08ySg</a>)</p>
<p>As you can see there are a lot of drawing issues remaining but the basic stuff is here. The code is not terribly faster (+10 fps or so) but that may come either from a bug in my graphic card driver (it already does the bizarre thing of slowing down after some time) or an other part of Moonlight.</p>
<p>It will definitely be better when OpenVG becomes more widespread, has more optimized implementations and can actually run on its own rather than on top of OpenGL (I&#8217;m eager to try that on top of Gallium3D when it will be ready).</p>
<p>As for inclusion in the mainline tree, I don&#8217;t know. I mostly did the thing for fun as a proof-of-concept and it&#8217;s certainly far too crappy to ever get integrated as is, but maybe someone will step up and do it correctly later <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/07/16/joining-the-moonlight-fun/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Obviously,</title>
		<link>http://blog.neteril.org/2009/07/12/obviously/</link>
		<comments>http://blog.neteril.org/2009/07/12/obviously/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 10:00:12 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://garuma.wordpress.com/?p=651</guid>
		<description><![CDATA[<p><img alt="" src="http://desrt.ca/blog-items/on-the-topic-of-mono.png" title="writing-code" class="aligncenter" width="600" height="144" /></p>
<p><cite>Talk is cheap. Show me the code.</cite><br />
&#8212; Torvalds, Linus</p>
]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://desrt.ca/blog-items/on-the-topic-of-mono.png" title="writing-code" class="aligncenter" width="600" height="144" /></p>
<p><cite>Talk is cheap. Show me the code.</cite><br />
&#8212; Torvalds, Linus</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/07/12/obviously/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zencomic 0.2.1 : OH HAI!</title>
		<link>http://blog.neteril.org/2009/07/10/zencomic-0-2-1-oh-hai/</link>
		<comments>http://blog.neteril.org/2009/07/10/zencomic-0-2-1-oh-hai/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 15:22:36 +0000</pubDate>
		<dc:creator>Jérémie Laval</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[comic]]></category>
		<category><![CDATA[webcomic]]></category>
		<category><![CDATA[zencomic]]></category>

		<guid isPermaLink="false">http://garuma.wordpress.com/?p=640</guid>
		<description><![CDATA[<p>After fighting a bit with Gtk# widget styling and MonoDevelop tarball deployment, here is a new Zencomic.</p>
<h2>Summary</h2>
<p>Zencomic is the comic strip-driven productivity enhancer that periodically makes your day funnier by showing comic like Dilbert or XKCD in a bubble.</p>
<h2>What&#8217;s new aka The Cool Stuff &#8482;</h2>
<h3>New, window-based, popup</h3>
<p>Tired of having some comic showing far too small ? This is for you !</p>
<p>Now, if you go to the preference dialog, you will be able to switch to a window-based popup which shows your comics in all their greatness at the expense of taking more window space and making your boss, who was incidentally passing by, angry at you (in that case, a quick click on the popup will close it).</p>
<p><a href="http://garuma.files.wordpress.com/2009/07/new-window-popup.png"><img src="http://garuma.files.wordpress.com/2009/07/new-window-popup.png?w=256" alt="new-window-popup" title="new-window-popup" width="256" height="300" class="aligncenter size-medium wp-image-642" /></a></p>
<h3>Can I haz lolcats ?</h3>
<p>Lolcat greatness is here with the addition of a new addin :</p>
<p><a href="http://garuma.files.wordpress.com/2009/07/zencomic-lolcat.png"><img src="http://garuma.files.wordpress.com/2009/07/zencomic-lolcat.png?w=300" alt="zencomic-lolcat" title="zencomic-lolcat" width="300" height="238" class="aligncenter size-medium wp-image-641" /></a></p>
<h3>The remaining</h3>
<ul>
<li>For the Gnome Do junkie, Zencomic now correctly comes with a .desktop file so that you can launch it from there</li>
<li>Made the preference dialog show in a little saner way i.e. by coming up directly at the front (which apparently wasn&#8217;t the case with some WM).</li>
<li>The traditional round of bugfixes (should you still spot one don&#8217;t hesitate to manifest in the comments)</li>
</ul>
<h2>Downloadz</h2>
<p>Tarball : <a href="http://netherilshade.free.fr/mono/zencomic-0.2.1.tar.gz">http://netherilshade.free.fr/mono/zencomic-0.2.1.tar.gz</a></p>
<p>If by any chance you feel this is an application that should come in your distribution, don&#8217;t hesitate to contribute some packages <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
]]></description>
			<content:encoded><![CDATA[<p>After fighting a bit with Gtk# widget styling and MonoDevelop tarball deployment, here is a new Zencomic.</p>
<h2>Summary</h2>
<p>Zencomic is the comic strip-driven productivity enhancer that periodically makes your day funnier by showing comic like Dilbert or XKCD in a bubble.</p>
<h2>What&#8217;s new aka The Cool Stuff &#8482;</h2>
<h3>New, window-based, popup</h3>
<p>Tired of having some comic showing far too small ? This is for you !</p>
<p>Now, if you go to the preference dialog, you will be able to switch to a window-based popup which shows your comics in all their greatness at the expense of taking more window space and making your boss, who was incidentally passing by, angry at you (in that case, a quick click on the popup will close it).</p>
<p><a href="http://garuma.files.wordpress.com/2009/07/new-window-popup.png"><img src="http://garuma.files.wordpress.com/2009/07/new-window-popup.png?w=256" alt="new-window-popup" title="new-window-popup" width="256" height="300" class="aligncenter size-medium wp-image-642" /></a></p>
<h3>Can I haz lolcats ?</h3>
<p>Lolcat greatness is here with the addition of a new addin :</p>
<p><a href="http://garuma.files.wordpress.com/2009/07/zencomic-lolcat.png"><img src="http://garuma.files.wordpress.com/2009/07/zencomic-lolcat.png?w=300" alt="zencomic-lolcat" title="zencomic-lolcat" width="300" height="238" class="aligncenter size-medium wp-image-641" /></a></p>
<h3>The remaining</h3>
<ul>
<li>For the Gnome Do junkie, Zencomic now correctly comes with a .desktop file so that you can launch it from there</li>
<li>Made the preference dialog show in a little saner way i.e. by coming up directly at the front (which apparently wasn&#8217;t the case with some WM).</li>
<li>The traditional round of bugfixes (should you still spot one don&#8217;t hesitate to manifest in the comments)</li>
</ul>
<h2>Downloadz</h2>
<p>Tarball : <a href="http://netherilshade.free.fr/mono/zencomic-0.2.1.tar.gz">http://netherilshade.free.fr/mono/zencomic-0.2.1.tar.gz</a></p>
<p>If by any chance you feel this is an application that should come in your distribution, don&#8217;t hesitate to contribute some packages <img src='http://blog.neteril.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neteril.org/2009/07/10/zencomic-0-2-1-oh-hai/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
