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

<channel>
	<title>Intuitionistically Uncertain &#187; Technology</title>
	<atom:link href="http://hircus.wordpress.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://hircus.wordpress.com</link>
	<description>Michel explores computing and assorted gadgetries</description>
	<lastBuildDate>Thu, 24 May 2012 11:59:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hircus.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/1bdf5df04841b40a29e5697ed558bd72?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Intuitionistically Uncertain &#187; Technology</title>
		<link>http://hircus.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hircus.wordpress.com/osd.xml" title="Intuitionistically Uncertain" />
	<atom:link rel='hub' href='http://hircus.wordpress.com/?pushpress=hub'/>
		<item>
		<title>0install feeds in transition</title>
		<link>http://hircus.wordpress.com/2012/05/24/0install-feeds-in-transition/</link>
		<comments>http://hircus.wordpress.com/2012/05/24/0install-feeds-in-transition/#comments</comments>
		<pubDate>Thu, 24 May 2012 11:59:46 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=483</guid>
		<description><![CDATA[A heads-up to those who have been using the 0install&#160;application feeds I used to maintain for the OSR group&#160;at mojo.informatik.uni-erlangen.de: as I&#8217;m no longer employed there, the service has been disabled. I&#8217;ve transitioned the feeds to http://hircus.multics.org/interfaces; the Git repository is now on Github. Currently only Skype (and its dependencies) and Eclipse JEE (and its [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=483&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A heads-up to those who have been using the <a href="http://0install.net/">0install</a>&nbsp;application feeds I used to maintain for the <a href="http://osr.cs.fau.de/">OSR group</a>&nbsp;at <tt>mojo.informatik.uni-erlangen.de</tt>: as I&#8217;m no longer employed there, the service has been disabled.
<div></div>
<div>I&#8217;ve transitioned the feeds to <a href="http://hircus.multics.org/interfaces">http://hircus.multics.org/interfaces</a>; the Git repository is now <a href="https://github.com/hircus/0install-interfaces">on Github</a>. Currently only Skype (and its dependencies) and Eclipse JEE (and its Java dependency) have been switched over; the other feeds are still set to the previous hosting site. Please file bugs if you need need a particular application feed fixed, find a problem, or file an enhancement request if you&#8217;d like to see an app packaged!</div>
<div></div>
<div>Oh, and for those who saw the lightning talk at FUDCon:
<pre>$ su -c "yum install 0install-injector" $ 0desktop http://rox.sourceforge.net/2005/interfaces/ROX-Filer # to get the ROX-Filer file manager added to your desktop # or $ 0alias rox http://rox.sourceforge.net/2005/interfaces/ROX-Filer # to get a command-line launcher in your path </pre>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/483/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=483&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2012/05/24/0install-feeds-in-transition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>A guide to Thunderbird for Gmail users</title>
		<link>http://hircus.wordpress.com/2012/05/21/a-guide-to-thunderbird-for-gmail-users/</link>
		<comments>http://hircus.wordpress.com/2012/05/21/a-guide-to-thunderbird-for-gmail-users/#comments</comments>
		<pubDate>Mon, 21 May 2012 04:26:30 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=481</guid>
		<description><![CDATA[James Fallows of The Atlantic &#8212; a highly-recommended journalist and blogger, for those who have not come across his writing yet &#8212; recently re-expressed his dissatisfaction with Gmail&#8217;s new UI; and mulled switching to Thunderbird but worried about memory usage. From Screenshots As someone who did the same transition a while back, I remember going [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=481&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>James Fallows of The Atlantic &#8212; a highly-recommended journalist and blogger, for those who have not come across his writing yet &#8212; recently re-expressed his <a href="http://www.theatlantic.com/technology/archive/2012/05/okay-i-said-i-wouldnt-complain-about-new-look-gmail-any-more/256242/">dissatisfaction with Gmail&#8217;s new UI</a>; and mulled switching to Thunderbird but worried about memory usage.
<div> <br />
<table style="width:auto;position:static;z-index:auto;">
<tbody>
<tr>
<td><a href="https://picasaweb.google.com/lh/photo/3Lln6tdc1zgj5G8CMBhNidMTjNZETYmyPJy0liipFm0?feat=embedwebsite"><img src="https://lh6.googleusercontent.com/-dmrBT91HwLE/T7m77zARa1I/AAAAAAAAHfI/wPZ_FSDrfXg/s400/thunderbird.png" height="263" width="400"/></a></td>
</tr>
<tr>
<td style="font-family:arial, sans-serif;font-size:11px;text-align:right;">From <a href="https://picasaweb.google.com/116869577025154223699/Screenshots?authuser=0&amp;feat=embedwebsite">Screenshots</a></td>
</tr>
</tbody>
</table>
<p>As someone who did the same transition a while back, I remember going through that issue and then some. Memory usage, lack of integration with Google Contacts (exacerbated with the seamless contact sync of Android phones), a UI that makes it hard to manage multiple email accounts, and vertical space being taken up by the menu bar.</p></div>
<div></div>
<div>Thankfully, Thunderbird being extensible, there are setting tweaks and extensions for all of these; as James found them useful, I thought I&#8217;d re-share them here:</div>
<div></div>
<div>
<ul style="position:relative;z-index:0;">
<li><i>Memory usage</i>&nbsp;- a <a href="http://kb.mozillazine.org/Gmail#Troubleshooting_and_Gmail_quirks">well-documented problem</a>; the solution is to not synchronize your All Mail folder.</li>
<li><i>Using Gmail folders</i> &#8211; While you&#8217;re at it, Thunderbird&#8217;s auto-configuration for Gmail accounts does not use the special folders by default; you&#8217;d want to set them in <tt>Copies &amp; Folders</tt> and <tt>Junk Settings</tt>. You&#8217;d probably also want to visit <tt>Server Settings</tt> and disable &#8220;Check for new messages&#8221; (so TB would use Push-IMAP instead of polling) and set the deletion behavior to &#8220;mark it as deleted&#8221; instead of moving it to Trash &#8211; remember that Google would archive your mail instead of deleting it. Optionally disable Message Archives in <tt>Copies &amp; Folders</tt> &#8211; just use the web interface to find old messages </li>
<li><i>Drafts folder&nbsp;</i>- an advantage of using Gmail&#8217;s drafts folder, instead of the local one, is that you can access drafts from other computers. A&nbsp;drawback, though, is that TB auto-saves regularly as you edit your message, and if you use an IMAP folder, it discards old drafts by moving them to trash. The <a href="https://addons.mozilla.org/en-US/thunderbird/addon/auto-save-drafts-folders/">Auto Save Drafts Folders</a>&nbsp;extension let you adjust this behavior (in <tt>Copies &amp; Folders</tt>); just use the local drafts folder for auto-saved copies.</li>
<li><i>Handling multiple inboxes</i>&nbsp;- <tt>View-&gt;Folders-&gt;Unified</tt>. This really ought to be the default&#8230;</li>
<li><i>Contact sync</i> &#8211; <a href="https://addons.mozilla.org/en-US/thunderbird/addon/google-contacts/">there&#8217;s an extension for that</a>. It&#8217;s flawless for reading your Google Contacts; I&#8217;d not use it to edit contacts though, just in case some information gets lost due to mismatches in available fields</li>
<li><i>Compact menu</i>&nbsp;- Firefox&#8217;s main menu has recently been reworked, but Thunderbird&#8217;s has not; you can use&nbsp;<a href="https://addons.mozilla.org/en-US/thunderbird/addon/compact-menu-2/">this extension</a>&nbsp;if, say, you use a widescreen laptop and want to recover vertical space real estate.</li>
</ul>
</div>
<p> Hope that&#8217;s of some use to some folks!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/481/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=481&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2012/05/21/a-guide-to-thunderbird-for-gmail-users/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="https://lh6.googleusercontent.com/-dmrBT91HwLE/T7m77zARa1I/AAAAAAAAHfI/wPZ_FSDrfXg/s400/thunderbird.png" medium="image" />
	</item>
		<item>
		<title>Org-mode syntax highlighting for GtkSourceView</title>
		<link>http://hircus.wordpress.com/2012/02/09/org-mode-syntax-highlighting-for-gtksourceview/</link>
		<comments>http://hircus.wordpress.com/2012/02/09/org-mode-syntax-highlighting-for-gtksourceview/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 17:46:57 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Gnome/GTK+]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2012/02/09/org-mode-syntax-highlighting-for-gtksourceview/</guid>
		<description><![CDATA[If you&#8217;re an old-school Emacs user, and you are into GTD organizers, outliners, or would like a less messy way of generating LaTeX documents (from papers to presentations), you&#8217;re probably already familiar with Org-mode. Org-mode is really quite tightly integrated with Emacs &#8212; so under normal circumstances there&#8217;s no reason to support it elsewhere. But [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=472&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re an old-school Emacs user, and you are into GTD organizers, outliners, or would like a less messy way of generating LaTeX documents (from papers to presentations), you&#8217;re probably already familiar with <a title="Org-mode" href="http://orgmode.org/">Org-mode</a>.</p>
<p>Org-mode is really quite tightly integrated with Emacs &#8212; so under normal circumstances there&#8217;s no reason to support it elsewhere. But at work we&#8217;ve recently had to collaboratively edit Org documents, and alas, Emacs&#8217; <a href="http://emacswiki.org/emacs/Rudel">Rudel</a>&nbsp;no longer work reliably on newer Linux releases. We&#8217;re forced to use <a href="http://gobby.0x539.de/trac/">Gobby</a>, which is a fine collaborative editor but is simply not Emacs. What is one to do?</p>
<p>I&#8217;ve thus started a GitHub project to create a language definition file for <a href="http://projects.gnome.org/gtksourceview/">GtkSourceView</a> (and, by extension, any editors on the <a href="http://www.gnome.org/">GNOME desktop</a>, including <a href="http://projects.gnome.org/gedit/">gedit</a>&nbsp;and Gobby. Do <a href="https://github.com/hircus/gtksourceview-org">check it out here</a> &#8212; I&#8217;m adding support for language elements as I need them, and my schedule is rather busy these days, but feel free to file requests and/or enhancement patches (but if you do the latter, please include a statement licensing your contribution under the same MIT license you can see in the header of <a href="https://github.com/hircus/gtksourceview-org/blob/master/org.lang">org.lang</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/472/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/472/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/472/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=472&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2012/02/09/org-mode-syntax-highlighting-for-gtksourceview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>More cnucnu release monitoring goodness</title>
		<link>http://hircus.wordpress.com/2012/01/31/more-cnucnu-release-monitoring-goodness/</link>
		<comments>http://hircus.wordpress.com/2012/01/31/more-cnucnu-release-monitoring-goodness/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 18:43:52 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=413</guid>
		<description><![CDATA[I just spent a few minutes clearing up Fedora&#8217;s Upstream Release Monitoring&#160;todo list &#8212; more packages will now get bugs filed against them on Bugzilla when a new version comes out, including gnucash, links (3 minor versions behind) and, surprisingly, Xaw3d, which has been resurrected on freedesktop.org after years of inactivity &#8212; we&#8217;re still packaging [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=413&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just spent a few minutes clearing up Fedora&#8217;s <a href="https://fedoraproject.org/wiki/Upstream_release_monitoring">Upstream Release Monitoring</a>&nbsp;todo list &#8212; more packages will now get bugs filed against them on Bugzilla when a new version comes out, including gnucash, links (3 minor versions behind) and, surprisingly, Xaw3d, which has been resurrected on freedesktop.org after years of inactivity &#8212; we&#8217;re still packaging the old unmaintained version.</p>
<p>Note to self &#8212; figure out how to integrate the Python tool used by URM, cnunu, to keep track of non-Fedora software. My 0install feeds could use some release monitoring love&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/413/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=413&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2012/01/31/more-cnucnu-release-monitoring-goodness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>If you have a laptop with Intel graphics and broken backlight control&#8230;</title>
		<link>http://hircus.wordpress.com/2011/07/14/if-you-have-a-laptop-with-intel-graphics-and-broken-backlight-control/</link>
		<comments>http://hircus.wordpress.com/2011/07/14/if-you-have-a-laptop-with-intel-graphics-and-broken-backlight-control/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 07:50:23 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2011/07/14/if-you-have-a-laptop-with-intel-graphics-and-broken-backlight-control/</guid>
		<description><![CDATA[e.g. a Sony Vaio Y-series, where upon seeing the debugging data&#160;kernel developer Matthew Garrett (mjg) pronounced it &#8220;what an awful implementation &#8212; utterly broken&#8221;, there is hope yet. Matthew has been working on native backlight control for a while, and for Intel hardware, there&#8217;s currently only one patch left to merge onto Linus&#8217; kernel tree; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=409&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>e.g. a Sony Vaio Y-series, where upon seeing <a href="https://bugzilla.redhat.com/show_bug.cgi?id=689962">the debugging data</a>&nbsp;kernel developer Matthew Garrett (<a href="http://mjg59.livejournal.com/">mjg</a>) pronounced it <em>&#8220;what an awful implementation &#8212; utterly broken&#8221;</em>, there is hope yet.</p>
<p>Matthew has been working on native backlight control for a while, and for Intel hardware, there&#8217;s currently only one patch left to merge onto Linus&#8217; kernel tree; it applies cleanly onto the most recent kernel release candidate (3.0-rc7).</p>
<p>Unfortunately, by default the ACPI subsystem will still be used if available, which is the sensible default. You do want to use the predefined backlight values whenever possible, not the raw values the graphics card let you set.</p>
<p>Ubuntu users have been resorting to Kamal Mostafa&#8217;s <a href="https://launchpad.net/~kamalmostafa/+archive/linux-kamal-mjgbacklight">linux-kamal-mjgbacklight</a>&nbsp;repository, which enables native backlight control, disable the ACPI video driver, and provide a patched GNOME Power Manager that can interface with the native backlight control.</p>
<p>The <a href="https://gist.github.com/1082058">workaround</a> I came up with is more lightweight &#8212; it just uses&nbsp;<strong>inotify-tools</strong>&nbsp;to monitor the brightness file, and apply an appropriate equivalent value to the native backlight control. Feel free to use this if you&#8217;re affected by a similar problem.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/409/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=409&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2011/07/14/if-you-have-a-laptop-with-intel-graphics-and-broken-backlight-control/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Try Thunderbird 5.0 now &#8212; without hassle</title>
		<link>http://hircus.wordpress.com/2011/06/29/try-thunderbird-5-0-now-without-hassle/</link>
		<comments>http://hircus.wordpress.com/2011/06/29/try-thunderbird-5-0-now-without-hassle/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 11:04:14 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2011/06/29/try-thunderbird-5-0-now-without-hassle/</guid>
		<description><![CDATA[There are cases when getting a specific software from one&#8217;s Linux distribution is not the optimal solution &#8212; and I&#8217;m saying this as a package maintainer myself. The main ones are: the distribution package might be out of date legal reasons prohibiting the software from being packaged (e.g. Skype, Flash, Adobe Reader) Note that the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=407&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are cases when getting a specific software from one&#8217;s Linux distribution is not the optimal solution &#8212; and I&#8217;m saying this as a package maintainer myself. The main ones are:</p>
<ul>
<li>the distribution package might be out of date</li>
<li>legal reasons prohibiting the software from being packaged (e.g. Skype, Flash, Adobe Reader)</li>
</ul>
<p>Note that the first point is not exactly a criticism &#8212; after all, distributors tend to be wary of introducing breaking changes in a stable release. For software in the second category, upstream often provides binary packages, but again, using a tarball requires users to deal with dependency resolution themselves, and even when Debian or RPM packages are provided, the packaging is often sub-par (upstream developers can&#8217;t be expected to be well-versed in the subtleties of each distribution&#8217;s packaging).</p>
<p>Enter <a href="http://0install.net/">0install</a>. Now installing, e.g. Thunderbird 5.0, is a simple process:</p>
<p><code><br />
 yum install zeroinstall-injector<br />
 0alias thunderbird5 http://mojo.informatik.uni-erlangen.de/interfaces/2011/thunderbird.xml<br />
 </code></p>
<p>or use &#8220;Add New Program&#8221; from the application menu and provide it with the URL for the Thunderbird feed. This currently lets you easily select between Thunderbird 5.0 beta 2 and 5.0 final (for both 32-bit and 64-bit builds) as well as the distribution&#8217;s packaging (on RPM-based and Debian-based distributions as well as Gentoo), and will pull in needed dependencies (please report any problem here).</p>
<p>You can browse <a href="http://mojo.informatik.uni-erlangen.de/interfaces/2010/">http://mojo.informatik.uni-erlangen.de/interfaces/2010/</a> and <a href="http://mojo.informatik.uni-erlangen.de/interfaces/2011/">http://mojo.informatik.uni-erlangen.de/interfaces/2011/</a> to see other available feeds that I maintain (and 0install&#8217;s site for even more). Of note: <a href="http://mojo.informatik.uni-erlangen.de/interfaces/2010/eclipse-jee.xml">Eclipse JEE</a>, <a href="http://mojo.informatik.uni-erlangen.de/interfaces/2011/maven.xml">Maven 2.2.1/3.0.3</a>, <a href="http://mojo.informatik.uni-erlangen.de/interfaces/2011/skype.xml">Skype</a> and <a href="http://mojo.informatik.uni-erlangen.de/interfaces/2010/tomcat-controller.xml">Tomcat</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/407/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=407&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2011/06/29/try-thunderbird-5-0-now-without-hassle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>The compat-wireless dance</title>
		<link>http://hircus.wordpress.com/2011/04/05/the-compat-wireless-dance/</link>
		<comments>http://hircus.wordpress.com/2011/04/05/the-compat-wireless-dance/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 14:25:13 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Atheros]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ath9k]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=405</guid>
		<description><![CDATA[At Fedora, our kernels tend to track upstream as much as possible, which sometimes makes for an amusing wireless experience. Here&#8217;s a tale, amusing in hindsight, of my three Sony computers, all using the ath9k module. Firstly acquired is the 15&#8243; Vaio EB I use as a desktop replacement. It works fine with stock drivers [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=405&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At Fedora, our kernels tend to track upstream as much as possible, which sometimes makes for an amusing wireless experience. Here&#8217;s a tale, amusing in hindsight, of my three Sony computers, all using the <code>ath9k</code> module.</p>
<p>Firstly acquired is the 15&#8243; Vaio EB I use as a desktop replacement. It works fine with stock drivers &#8212; at least, no known problem until today. We&#8217;ll get back to it later. Next, the 10.2&#8243; Vaio W netbook. With this the wireless driver would need to be cycled &#8212; unload and reload &#8212; unless it&#8217;s kept active by, say, a continuous <code>ping</code> session. </p>
<p>Now, the EB did not use to work with the experimental <code>compat-wireless</code> drivers &#8212; basically the wireless code not yet merged into the Linux kernel; while the W absolutely requires these to avoid the ping keep-alive workaround.</p>
<p>Then comes the 13&#8243; Vaio Y I got on a closing sale &#8212; at a nice discount price. Both the EB and the Y need to be on Fedora 15 because of graphics quirks (the former Radeon 5650, the latter Intel Arrandale), but that&#8217;s for another article. Everything seems to work fine, until I realized today, attempting to transfer a large-ish (&gt; 100 MB) tarball from the Y to the EB, that the wireless on the Y keeps freezing up if I continuously transmit! It&#8217;s not a regression, or not a recent one, since older kernels do that too.</p>
<p>In goes <code>compat-wireless</code> to the rescue, and lo and behold, the transmission now works fine. Only then I find out that now the EB also acts up when it&#8217;s downloading at maximum speed. Sigh&#8230; funnily, now <code>compat-wireless</code> works fine on it, and fixes the problem.</p>
<p>I don&#8217;t even think I want to file bugs on this &#8212; different issues on different laptops &#8212; I&#8217;m just glad the latest wireless code works uniformly well now, and am just waiting for it to land in the mainline kernel.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/405/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=405&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2011/04/05/the-compat-wireless-dance/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>HOWTO: Unchain Yourself from Proprietary Formats</title>
		<link>http://hircus.wordpress.com/2011/03/30/howto-unchain-yourself-from-proprietary-formats/</link>
		<comments>http://hircus.wordpress.com/2011/03/30/howto-unchain-yourself-from-proprietary-formats/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 20:14:34 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[ORA]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2011/03/30/howto-unchain-yourself-from-proprietary-formats/</guid>
		<description><![CDATA[Today being Document Freedom Day, I&#8217;m taking stock of how unencumbered my digital lifestyle is &#8212; both on the consumption as well as on the production side. I&#8217;ll try and explore alternatives for each category. But before that, one must first explore why proprietary and patent-encumbered formats are bad,&#160; Patents &#8212; if some entity holds [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=390&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today being <a href="http://documentfreedom.org/2011/">Document Freedom Day</a>, I&#8217;m taking stock of how unencumbered my digital lifestyle is &#8212; both on the consumption as well as on the production side. I&#8217;ll try and explore alternatives for each category. But before that, one must first explore why proprietary and patent-encumbered formats are bad,&nbsp;</p>
<ol>
<li><strong>Patents</strong> &#8212; if some entity holds patents that apply to a format, your ability to distribute your files might be compromised by the need to pay patent royalties. Even if the patent holder covenants not to exercise enforcement of the patents, they or the patents could end up being bought, at which point who knows what could happen. Even Microsoft got into trouble with Alcatel Lucent; the case was later <a href="http://en.wikipedia.org/wiki/Alcatel-Lucent_v._Microsoft">thrown out of court</a> but only after a headline-grabbing $1.52 billion award of damages was initially awarded. And Alcatel is not even a patent troll! Best protection is to use software licensed with a retroactive patent retaliation clause (e.g. Apache license, Eclipse Public License, GNU Public License v3) and whose copyright holders and distributors are in a defensive patent pool such as the <a href="http://www.openinventionnetwork.com/">Open Invention Network</a></li>
<li><a href="http://www.openinventionnetwork.com/"></a><strong>Format obsolescence</strong>&nbsp;&#8211; even NASA has had trouble reading precious sensor data from old punch cards and magnetic tapes generated by previous missions, because the documentation for the file formats have been lost!</li>
<li><strong>DRM</strong> &#8212; Digital Rights, or Restrictions, Management, depending on which side of the coin you&#8217;re looking at it from. It&#8217;s not impossible to create a DRM policy that is flexible enough to guarantee you your fair use rights you enjoyed with older analog technologies &#8212; the printed book, the audio CD &#8212; but it&#8217;s not in the interest of (most) publishers and distributors to do so. Unless forced by regulation or unless you vote with your wallets.</li>
<li><strong>Walled gardens</strong> &#8212; remember the pre-Internet days of AOL, CompuServe, etc.? We still have walled networks, they are just built on top of the Internet instead.</li>
</ol>
<p><span id="more-390"></span></p>
<p><strong>Office Documents</strong></p>
<p>Reports, presentations, &#8230; you get the drift. I try and stick to&nbsp;<a href="http://tobi.oetiker.ch/lshort/lshort.pdf">LaTeX</a> for the first two, if possible (generating read-only PDF for dissemination) and <a href="http://en.wikipedia.org/wiki/OpenDocument">OpenDocument Format</a>, authored on <a href="http://en.wikipedia.org/wiki/OpenDocument">LibreOffice</a>, if collaborating with a non-LaTeX-user. And for spreadsheets.</p>
<p>Why, you might ask? Well, LaTeX just typesets much more beautifully than other alternatives I&#8217;ve seen. It&#8217;s a solid, well-understood format, and have very few compatibility problems over the years. Compared to Microsoft Office formats &#8212; Word&#8217;s .DOC being the most notorious, with worms and newer versions not being able to render old files perfectly! Microsoft&#8217;s &#8220;Office OpenXML&#8221;, their new file format, only became a standard after a process as dubious as Japan&#8217;s sponsoring of landlocked countries to join the whaling commission to supplant its voting block. And the standard is not even implemented by Microsoft itself.</p>
<p><strong>Podcasts</strong></p>
<p>Most podcasts are published in MP3; some are available in the patent-free Ogg Vorbis (.ogg / .oga) format &#8212; sadly, mostly limited to free / libre / open source software (FLOSS). A rare few are available in MPEG 4 Audio / AAC (.m4a).</p>
<p>I try to subscribe to the Ogg feeds whenever possible. MP3 is patent-encumbered, and the last patent won&#8217;t expire until 2017; while users of open-source MP3 decoders have not been sued for infringement yet, the situation is legally uncertain enough that, if you look at your favorite large Linux distribution (be it Debian, Fedora, openSUSE or Ubuntu), none of them carry MP3 decoders, let alone encoders, in their main repositories. Even Microsoft has been hit by frivolous MP3 patent infringement lawsuits!</p>
<p>Consuming MP3 even when an Ogg feed exists for the same podcast would perpetuate the use of MP3 &#8220;because that&#8217;s what the customers want&#8221;. Buying a portable music player that cannot play any patent-free, open-standard compressed format (yes, I am talking about Apple&#8217;s iPod here) is even worse. It does not play Ogg Vorbis, it does not play FLAC; instead, apart from MP3 you get non-free formats that Apple is heavily involved with: .m4a, the DRM-locked variant .m4p, and Apple Lossless, which Apple invented for unfathomable reasons instead of using FLAC. It&#8217;s not even because they can then engineer DRM support; you can graft it on top of FLAC as well, if you want.</p>
<p>MP4 situation is similar to MP3, except that given that it&#8217;s a newer technology, the patents will take even longer to expire.</p>
<p><strong>eBooks</strong></p>
<p>I try to buy electronic, rather than paper, books whenever possible. With a semi-nomadic lifestyle, buying more physical books just makes moving more costly! And there&#8217;s the environmental aspect as well. It&#8217;s bad enough that we need to clear forests to grow enough food &#8212; and eating excessive amounts of meat makes the matter worse because of the reduced energy efficiencies involved in adding another layer of intermediary between the sun and ourselves &#8212; it&#8217;s even worse when one unnecessarily gets documents in printed form. Now, used books are another matter altogether.</p>
<p>For eBooks, tech publishers like (in alphabetical order)&nbsp;<a href="http://nostarch.com/">No Starch Press</a>,&nbsp;<a href="http://oreilly.com/">O&#8217;Reilly</a>&nbsp;and <a href="http://pragprog.com/">The Pragmatic Bookshelf</a>&nbsp;gets the nod for providing DRM-free products, with errata updates, in the major formats (ePub, the eBook standard; Mobi, an older format supported because Amazon&#8217;s Kindle uses a DRM-encumbered version if it, .azw, and does not read ePub; and PDF, for faithfull reproduction of the original layout).</p>
<p>Outside of programming references, alas, most publishers are not as enlightened. I must confess to being a heavy Amazon Kindle user, despite its limitations &#8212; not being able to lend my books out without restraints for one, not being able to hand over ownership is another. But at least I get to read the books on all my devices, unlike Apple&#8217;s iBooks with its <a href="http://support.apple.com/kb/HT4059">five devices per book limit</a>. Kind of nice having Amazon backing up the purchased books in case I lose a device, too; they&#8217;re starting to do that for music as well, though only in the US. Hear that, Apple?</p>
<p><strong>Video</strong></p>
<p>For many years, the only patent-unencumbered format available is Ogg Theora (which started its life as On2&#8242;s VP3 codec). On2 has since been bought by Google, and their latest VP8 codec becoming the basis of WebM, which is roughly equivalent in quality to MPEG4.</p>
<p>I try to get my videos from sites that allow videos to be downloaded (if the uploader allows for it) &#8212; e.g. <a href="http://blip.tv/">blip.tv</a>. and <a href="http://vimeo.com/">vimeo</a>. Revvr, another service featuring this, sadly was a commercial flop and is no longer available. These sites allow you to download videos, dating back to the time when YouTube not only does not allow that, as they still does not, but also limit videos to lengths of 10 minutes! There are workarounds to downloading YouTube videos, but officially you&#8217;re not allowed to do that.</p>
<p><strong>Social Networks</strong></p>
<p>i.e. Twitter, Facebook, etc. I have switched to posting mainly to <a href="http://identi.ca/">identi.ca</a>, a Twitter alternative running software from <a href="http://status.net/">Status.net</a>. Unlike Twitter, it supports federated social networking &#8212; you can talk to people running independent Status.net installations, much as in instant messaging, users of XMPP networks (various Jabber networks, Google Talk, LiveJournal, Facebook) can communicate with each other). identi.ca lets you push your updates to Twitter as well (even retweets and favorites) and to Facebook, so I really only post directly to Twitter if replying to a Twitter-only user (or the topic is too mundane and I want to keep identi.ca&#8217;s SNR high).</p>
<p>Facebook alternatives are not as mature yet; see <a href="https://www.eff.org/deeplinks/2011/03/introduction-distributed-social-network">EFF Deeplinks&#8217; post</a> on this topic for more information.</p>
<p><strong>Online file storage</strong></p>
<p>Here&#8217;s a <em>mea culpa</em>&nbsp;&#8211; I&#8217;m a happy Dropbox user (thank you, Dropbox, for supporting Linux clients &#8212; at least on x864 architecture). This is the exception that proves the rule, however: apart from Dropbox, I try to stick to online file storage solutions that at least have open-source clients for communicating with the servers and accessing your data. e.g. Google Apps (including Google Docs) are accessible using <a href="http://code.google.com/p/googlecl/">googlecl</a>, which uses the Google Data APIs; both are open source. If you move to a platform that is unsupported, you can port the software yourself.</p>
<p>With googlecl, if one is paranoid, one could encrypt all one&#8217;s files (with, say, GnuPG) before storing them on Google&#8217;s cloud. Hmm, that would be an interesting project to attempt&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/390/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=390&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2011/03/30/howto-unchain-yourself-from-proprietary-formats/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>A letter to Thomas Jefferson</title>
		<link>http://hircus.wordpress.com/2011/03/29/a-letter-to-thomas-jefferson/</link>
		<comments>http://hircus.wordpress.com/2011/03/29/a-letter-to-thomas-jefferson/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 08:43:21 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[ORA]]></category>
		<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=386</guid>
		<description><![CDATA[&#8230; as portrayed by Clay Jenkins for The Thomas Jefferson Hour, in response to the special edition Silicon Valley episode, with the President being interviewed by Joint Venture&#8217; Russell Hancock, discussing California, technological progress, public education&#160;and governance. Dear Mr. Jefferson, I&#8217;ve been listening to your show for a while, and I&#8217;m glad to report it&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=386&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230; as portrayed by Clay Jenkins for <a href="http://www.jeffersonhour.org/">The Thomas Jefferson Hour</a>, in response to the special edition <a href="http://makochemedia.com/files/Show%20912%20Silicon%20Valley.mp3">Silicon Valley episode</a>, with the President being interviewed by Joint Venture&#8217; Russell Hancock, discussing California, technological progress, public education&nbsp;and governance.<br />
<span id="more-386"></span></p>
<blockquote><p>Dear Mr. Jefferson,</p>
<p>I&#8217;ve been listening to your show for a while, and I&#8217;m glad to report it&#8217;s been a fascinating, refreshing experience to have a humanities scholar presenting a historically-informed portrayal of how you would have reacted to present conditions (and humble enough to follow Wittgenstein&#8217;s dictum, <em>„Wovon man nicht sprechen kann, darüber muss man schweigen.“</em>).</p>
<p>All too often, people who claim to represent a historical figure&#8217;s tradition tend not to have a clue what they are talking about &#8212; witness the &#8220;Jeffersonian&#8221; Tea Party movement (Bachmann didn&#8217;t even know where Concord was!). Or the &#8220;strict constitutionalists&#8221; &#8212; who&#8217;d be aghast at your idea that the constitution be rewritten every generation! I was just thinking a few days ago about the need for better civics education, when <a href="http://fruitsandvotes.com/?p=4993#comment-180425">discussing the lack of awareness</a> of American and Canadian electorates of their own voting systems.</p>
<p>Or the bible-thumping fundamentalists (I do need to listen to your <a href="http://makochemedia.com/files/Show%20794%20Jeffersons%20Bible.mp3">794th episode on T<em>he Life and Morals of Jesus of Nazareth</em></a>! .. but I digress.</p>
<p>What I&#8217;d like to ask is regarding your suggestion that California should be broken up to smaller, less unwieldy pieces. I greatly support the idea &#8212; my favorite books include <a href="http://www.garreau.com/main.cfm?action=book&amp;id=3"><em>The Nine Nations of North America</em></a> (that suggests that north California does not belong, economically and culturally, with the southern parts anyway) and I read blogs like <a href="http://loststates.blogspot.com/"><em>Lost States</em></a> and <a href="http://bigthink.com/blogs/strange-maps"><em>Strange Maps</em></a> with interest.</p>
<p>I do have a concern that it might be politically intractable. Not at the state level, but at the federal level! Now, you also suggest that the entire constitution be rewritten anyway, and I agree there, but isn&#8217;t there a connection between the two? Under the current system for electing the Senate, Republicans would very likely reject a partitioning of California &#8212; it&#8217;s bad enough that they have had two Democratic Senators for a while, but giving them even more? (unless the partitioning is gerrymandered and you create coastal Democratic and landlocked Republican states!).</p>
<p>I wonder what the citizens of Los Angeles would think as well, being cut off from their access to water resources in Northern California&#8230;</p>
<p>PS any chance you would have been a Linux user? Your support for the free citizenry would match well with the public commons of the free software, open source and free culture movements. You&#8217;d find the governance models of, say, the <a href="http://fedoraproject.org/">Fedora Project</a> or <a href="http://www.debian.org">Debian</a> fascinating (disclaimer: I am a contributor with the former).</p>
<p>Yours sincerely,</p>
<p>—<br />
Michel A. Salim</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/386/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=386&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2011/03/29/a-letter-to-thomas-jefferson/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://makochemedia.com/files/Show%20912%20Silicon%20Valley.mp3" length="25715894" type="audio/mpeg" />
<enclosure url="http://makochemedia.com/files/Show%20794%20Jeffersons%20Bible.mp3" length="25357360" type="audio/mpeg" />
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Over at my other blog&#8230;</title>
		<link>http://hircus.wordpress.com/2011/03/27/over-at-my-other-blog/</link>
		<comments>http://hircus.wordpress.com/2011/03/27/over-at-my-other-blog/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 21:58:10 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=384</guid>
		<description><![CDATA[&#8230; some ruminations on using commitment sites acting as anti-charity escrows, and tending the public commons as a spiritual practice. With a plug to MIT quantum complexity theorist and Cory Doctorow! You can find out what they have in common for yourself: On motivational anti-charity, Old Catholics, and secular monasticism<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=384&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230; some ruminations on using commitment sites acting as anti-charity escrows, and tending the public commons as a spiritual practice. With a plug to MIT quantum complexity theorist and Cory Doctorow! You can find out what they have in common for yourself: <a href="http://prayerfulskeptic.wordpress.com/2011/03/27/on-motivational-anti-charity-old-catholics-and-secular-monasticism/"><em>On motivational anti-charity, Old Catholics, and secular monasticism</em></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/384/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=384&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2011/03/27/over-at-my-other-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>HOWTO: Installing Oracle&#8217;s Java plugin on an SELinux-enabled system</title>
		<link>http://hircus.wordpress.com/2011/01/21/howto-installing-oracles-java-plugin-on-an-selinux-enabled-system/</link>
		<comments>http://hircus.wordpress.com/2011/01/21/howto-installing-oracles-java-plugin-on-an-selinux-enabled-system/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 11:32:21 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[selinux]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=380</guid>
		<description><![CDATA[As tested on Fedora 14 x86_64, with Sun JRE 6u23, Firefox 4 and Google Chrome. That this works was a pleasant surprise to a friend and I &#8212; he thought the Java plugin does not work with Chrome, and I did not realize the 64-bit version is out (OpenJDK has had a plugin since it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=380&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As tested on Fedora 14 x86_64, with Sun JRE 6u23, Firefox 4 and Google Chrome.</p>
<p>That this works was a pleasant surprise to a friend and I &#8212; he thought the Java plugin does not work with Chrome, and I did not realize the 64-bit version is out (OpenJDK has had a plugin since it was called IcedTea, but the Java applets I need to use tend to make use of the Sun/Oracle binary blobs not yet reimplemented).</p>
<p>Getting it to work with Chrome is straightforward &#8212; like with Flash, you symlink <tt>$JRE_HOME/lib/amd64/libnpjp2.so</tt> to <tt>/opt/google/chrome/plugins</tt>. With Firefox 4, though, SELinux comes into play. Presumably because while Chrome&#8217;s executable is already marked as requiring an executable stack, Firefox 4&#8242;s (or rather, XULRunner 2&#8242;s) is not.</p>
<p>No big deal, you might think. The SELInux troubleshooter pops up, just follow its suggestions and all shall be well &#8212; pipe the relevant audit log lines to <tt>audit2allow</tt>, load the generated policy modules, close Firefox and try again. Except for&#8230; no cheese.</p>
<p>If this happens to you, save yourself trying to delete the symlink, reload Firefox, closing, recreating the symlink, and trying again. It appears that Firefox tries to cleverly remember which plugins fail to load, and it&#8217;s this cache that you need to purge. Delete <tt>~/.mozilla/firefox/*.default/pluginreg.dat</tt>, and you&#8217;d be set on the next restart.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/380/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=380&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2011/01/21/howto-installing-oracles-java-plugin-on-an-selinux-enabled-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Good bye del.icio.us, hello Xmarks and Firefox 4!</title>
		<link>http://hircus.wordpress.com/2010/12/18/good-bye-del-icio-us-hello-xmarks-and-firefox-4/</link>
		<comments>http://hircus.wordpress.com/2010/12/18/good-bye-del-icio-us-hello-xmarks-and-firefox-4/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 11:01:07 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[LastPass]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Yubikey]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=375</guid>
		<description><![CDATA[How fast the wheel turns. Not too long ago, Xmarks&#8216; public bookmark-syncing service is shutting down, while Yahoo&#8217;s Delicious seems reasonably healthy (despite worrying indicators such as lack of support for the more recent Firefox 4 betas, and lackadaisical support for Chrome that, I think, no longer works either). And now the latter is closing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=375&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>How fast the wheel turns. Not too long ago, <a href="http://xmarks.com/">Xmarks</a>&#8216; public bookmark-syncing service is shutting down, while Yahoo&#8217;s <a href="http://delicious.com/">Delicious</a> seems reasonably healthy (despite worrying indicators such as lack of support for the more recent Firefox 4 betas, and lackadaisical support for Chrome that, I think, no longer works either). And now the latter is closing &#8212; though it&#8217;s ironic that you see no official announcement when logging into Delicious, save the news articles and switching guides bookmarked by users!</p>
<p>Now Xmarks is owned by <a href="http://lastpass.com/">LastPass</a>, and hopefully will be integrated soon with their own offerings &#8212; Xmarks&#8217; password-sync is inferior, for instance, and if they offer a unified SSO with LastPass&#8217; multi-factor authentication then that would be wonderful. I carry a <a href="http://www.yubico.com/yubikey">Yubikey</a> around these days, with the primary key set for Fedora&#8217;s <a href="https://admin.fedoraproject.org/accounts/">Account System</a>, and the second key set for Yubico&#8217;s public server for use with LastPass. If someone were to use a keylogger on a public computer that I use, then by all means; the password they tapped won&#8217;t be enough.</p>
<p>These all mean that I&#8217;m no longer trapped on Firefox 3, since the other extension without official Firefox 4 support, <a href="https://addons.mozilla.org/en-US/firefox/addon/748/">Greasemonkey</a>, supports it in their <a href="https://arantius.com/misc/gm-nightly/">nightly builds</a>. Gmail is really annoying to use without Greasemonkey&#8217;s <a href="http://userscripts.org/scripts/show/17869">Gmail Fixed Font</a> script! Makes one wish that Google integrates its Mail and Groups teams a bit better &#8212; Groups&#8217; interface allows switching between fixed-width and propotional fonts for reading, while Gmail only offers it for composing. Sadly Groups&#8217; new beta interface does not even have this feature implemented &#8212; ah well, there are three feature requests for it already, hopefully they&#8217;ll get it implemented before the new interface goes live.</p>
<p><strong>EDIT</strong> &#8211; looks like <a href="http://hircus.wordpress.com/2010/12/18/good-bye-del-icio-us-hello-xmarks-and-firefox-4/#comment-5420">Delicious will survive</a> but will be spun off. Hope it gets taken over by a company that can give it the attention it needs &#8212; less laggy FFox support, and proper Chrome, iOS, Android support would be nice. Xmarks works well enough for me that I&#8217;ll probably stick with it though. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/375/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=375&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/12/18/good-bye-del-icio-us-hello-xmarks-and-firefox-4/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Welcoming my new sponsoree&#8230;</title>
		<link>http://hircus.wordpress.com/2010/11/14/welcoming-my-new-sponsoree/</link>
		<comments>http://hircus.wordpress.com/2010/11/14/welcoming-my-new-sponsoree/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 22:21:15 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=373</guid>
		<description><![CDATA[A hearty welcome to Viji V Nair and Luca Botti!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=373&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A hearty welcome to <a href="https://admin.fedoraproject.org/pkgdb/users/packages/viji">Viji V Nair</a> and <a href="https://admin.fedoraproject.org/pkgdb/users/packages/lucabotti">Luca Botti</a>!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/373/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=373&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/11/14/welcoming-my-new-sponsoree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>On the separation of license grant and physical artifacts</title>
		<link>http://hircus.wordpress.com/2010/11/10/on-the-separation-of-license-grant-and-physical-artifacts/</link>
		<comments>http://hircus.wordpress.com/2010/11/10/on-the-separation-of-license-grant-and-physical-artifacts/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 14:06:45 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Column responses]]></category>
		<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2010/11/10/on-the-separation-of-license-grant-and-physical-artifacts/</guid>
		<description><![CDATA[I&#8217;ve been pondering the issue for a while, but have yet to put it in writing, until Frédéric Filloux wrote about it on Monday Note: We’re now in 2015. I read books-related contents on a number of different devices: my smartphone, my high definition tablet, and even my PC some times. (I personally do not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=371&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been pondering the issue for a while, but have yet to put it in writing, until Frédéric Filloux <a href="http://www.mondaynote.com/2010/11/08/ebooks-trading-digital-rights-not-files/">wrote about it</a> on <a href="http://www.mondaynote.com/">Monday Note</a>:</p>
<blockquote><p><strong>We’re now in 2015. I read books-related contents on a number of different devices:</strong> my smartphone, my high definition tablet, and even my PC some times. (I personally do not believe in TV for such products). I want spend a long weekend in Rome. Instead of buying a couple of books – one to organize my trip and another to use on location – I will buy rights to both.<br />
&#8230;<br />
<strong>My digital rights are also transferable:</strong> I can loan or give the book by simply transferring the rights attached to the digital files. In retrospect, this feature makes 2010 digital bookstores look primitive. For instance, in the Apple iBooks Store, I was forbidden to offer a book to anyone or even to access to a iBooks in a foreign country – thus negating key advantages of dematerialized contents.</p>
</blockquote>
<p>Some of these are already possible nowadays &#8212; tech-savvy publishers such as <a href="http://www.oreilly.com/">O&#8217;Reilly</a> and <a href="http://www.pragprog.com/">The Pragmatic Bookshelf</a> already let you regenerate your digital content in the format of your choice, though normally limited to PDF, ePub and Mobi/Kindle only. But the ePub format should be flexible enough to display differently based on available screen size and multimedia support. There are free self-publishing options with sites such as <a href="http://www.feedbooks.com/">FeedBooks</a>. There are music sites that sell music files in multiple formats &#8212; though so far, only <a href="http://magnatune.com/">Magnatune</a> (which has shifted entirely to a subscription model) allows redownloading while the others (<a href="http://www.pristineclassical.com/">Pristine Classical</a>, <a href="http://www.hdtracks.com/">HDtracks</a>, <a href="http://www.apple.com/itunes/">iTunes</a>) make you commit to the format of your choice at purchase time.</p>
<p>There are several limitations with these sites that might prevent more widespread adoption, though:</p>
<ul>
<li><strong>Reliance on customers&#8217; ethics:</strong> for example, The Pragmatic Bookshelf uses an easy-to-remove watermark; O&#8217;Reilly does not use any DRM or watermark; likewise with Magnatune, Pristine Classical and HDtracks. While admirable, and I personally find it a moral obligation not to distribute digital products entrusted to me in such a manner, many publishers would likely balk at the idea.</li>
<li><strong>Conversely, overly-restrictive DRM:</strong> the Amazon Kindle, Apple iBooks and B&amp;N nook stores fall in this category. B&amp;N innovated the ability to lend books but in a very restricted fashion: you can only lend to a unique user once, and only for two weeks. Why? Physical books can be passed around without constraints. Amazon, sadly, chose to copy this model without any change. It&#8217;s sad, when public libraries that offer DRMed ePub lending do not have such restrictive conditions; the problem is not technical but commercial motivation.</li>
<li><strong>Inflexible purchasing model:</strong> with the non-DRMed publishers you normally commit in advance to buying the rights to a work in digital-only form, or in a paper+digital bundle. You can&#8217;t &#8220;upgrade&#8221; from digital-only to paper+digital (though upgrading in the reverse direction is sometimes possible). You can&#8217;t order a replacement physical media if yours is damaged (though, again, software games publishers used to offer this). You can&#8217;t, of course, &#8220;upgrade&#8221; from a DVD to a Blu-Ray edition of your favorite movie without paying the full purchase price.</li>
</ul>
<p>The solution, as I see it, is to separate <em>right of use</em> from the <em>physical artifact</em>. Publishers should be able to sell the two independently from each other (though obviously there is a dependency of the latter on the former). You should be able to permanently deactivate your rights license code on an artifact (for reselling), or temporarily deactivate it (for lending), and set a time limit on the latter. After all, in the information age content is getting increasingly Platonic: living in pure digital form, only to be instantiated into tangible physical forms &#8212; we should focus less on the latter and more on the former.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/371/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=371&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/11/10/on-the-separation-of-license-grant-and-physical-artifacts/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>New fedoraproject.org site</title>
		<link>http://hircus.wordpress.com/2010/10/28/new-fedoraproject-org-site/</link>
		<comments>http://hircus.wordpress.com/2010/10/28/new-fedoraproject-org-site/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 07:09:53 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2010/10/28/new-fedoraproject-org-site/</guid>
		<description><![CDATA[Maírín&#8217;s website redesign has gone live! It&#8217;s a gorgeous, user-friendly look &#8212; congrats to her, the design team, and everyone who worked on this.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=369&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Maírín&#8217;s <a href="http://mairin.wordpress.com/2010/09/03/fedoraproject-org-redesign-update/">website redesign</a> has gone <a href="http://fedoraproject.org/">live</a>! It&#8217;s a gorgeous, user-friendly look &#8212; congrats to her, the design team, and everyone who worked on this.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/369/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=369&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/10/28/new-fedoraproject-org-site/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>FUDCon: travel notes</title>
		<link>http://hircus.wordpress.com/2010/09/19/fudcon-travel-notes/</link>
		<comments>http://hircus.wordpress.com/2010/09/19/fudcon-travel-notes/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 15:35:29 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[FUDCon]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=367</guid>
		<description><![CDATA[Typing this on the train coming back from FUDCon. Amazon&#8217;s Kindle has free unrestrained 3G access in Switzerland (though Google curiously geo-located me as being in Ireland), as I discovered on the first day of FUDCon, while killing away time waiting for the bunker to open (I&#8217;m glad to discover, later, that the consensus is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=367&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Typing this on the train coming back from FUDCon. Amazon&#8217;s Kindle has free unrestrained 3G access in Switzerland (though Google curiously geo-located me as being in  Ireland), as I discovered on the first day of FUDCon, while killing away time waiting for the bunker to open (I&#8217;m glad to discover, later, that the consensus is that the Wired Dreams party indeed was a disappointment).</p>
<p>The train just left Switzerland, so I&#8217;m back on my netbook, but data coverage is still a bit spotty. For a while the phone actually picked up Austrian cellular networks!</p>
<p>It&#8217;s the first time I&#8217;ve been to FUDCon, and I&#8217;ll definitely be coming back. Though alas, the next one in Tempe, Arizona would be rather hard to squeeze in, so it might be a full year wait. It&#8217;s a wonderful energizing experience. The north American folks are great presenters (unfortunately I missed out on Jesse&#8217;s dist-git talk), and luckily one of my preferred Barcamp topics (Peter Robinson&#8217;s Fedora Mini Mobility) ended up on the morning slot, since I regrettably had to board the train right after lunch, missing all the afternoon sessions. Some ideas came up that I&#8217;ll try and follow-up on fedora-de{sktop,vel} as soon as I get back.</p>
<p>Oh, and for anyone thinking of visiting Red Hat&#8217;s Czech office &#8212; or Novell&#8217;s Czech office, for that matter, beware: they&#8217;re all party animals! The bunker was well stocked with beer and stronger stuff (including Swiss absinthe, which I was informed has the highest thujone content in the world, Switzerland happily not being part of the EU). &#8217;80s Czech music is awesome, and MIsha regaled me with a Russian narcissus/Father Christmas tale, that surprisingly had a happy ending. Not many photos, unfortunately, but between Maírín and Nicu I think the event was well-covered.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/367/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/367/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/367/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=367&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/09/19/fudcon-travel-notes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Attending FUDCon Zurich for the weekend</title>
		<link>http://hircus.wordpress.com/2010/09/17/attending-fudcon-zurich-for-the-weekend/</link>
		<comments>http://hircus.wordpress.com/2010/09/17/attending-fudcon-zurich-for-the-weekend/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 09:16:29 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Bug-fixing]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[FUDCon]]></category>
		<category><![CDATA[fudcon]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=364</guid>
		<description><![CDATA[Got in here late last night by train &#8212; amusingly, of the three legs of the journey (Erlangen-Nürnberg-Buchloe-Zürich), the only late train was the Swiss train from Buchloe. Uncharacteristic, but hey. Took a detour of 15 minutes walking to the hotel due to mistaking a canal for the river that was shown on the map, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=364&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Got in here late last night by train &#8212; amusingly, of the three legs of the journey (Erlangen-Nürnberg-Buchloe-Zürich), the only late train was the Swiss train from Buchloe. Uncharacteristic, but hey. Took a detour of 15 minutes walking to the hotel due to mistaking a canal for the river that was shown on the map, which afforded some amusing sights: from someone climbing out of the Botanical Gardens, after hours, over the fence, to someone skateboarding backwards&#8230; to a Valley-esque girl outside a bar whose vocabulary appeared to be limited to &#8220;OMG&#8221; which she repeated ad nauseam.</p>
<p>No Internet on the train (I could have used my phone as a modem until the Swiss border, but between a paper, an eBook &#8212; Peter Hamilton&#8217;s <em>Pandora Star</em>), no Internet in the hotel, so I had to wait until I arrive at the conference venue for my Internet diet. Finally got the liboauth/bti EL-5 updates finished.</p>
<p>Adam&#8217;s just starting his talk so it&#8217;s time to sign off now.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/364/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=364&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/09/17/attending-fudcon-zurich-for-the-weekend/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Android : flashing :: programming : ?</title>
		<link>http://hircus.wordpress.com/2010/07/22/android-flashing-programming/</link>
		<comments>http://hircus.wordpress.com/2010/07/22/android-flashing-programming/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 09:21:40 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=355</guid>
		<description><![CDATA[Your editor will confess that he still feels a certain childlike joy at the prospect of reflashing an expensive device that he depends on, possibly bricking it, then painfully restoring all of the settings and discovering all of the new bugs which have been added. It&#8217;s the sort of adrenaline experience that others, perhaps, seek [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=355&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>Your editor will confess that he still feels a certain childlike joy at the prospect of reflashing an expensive device that he depends on, possibly bricking it, then painfully restoring all of the settings and discovering all of the new bugs which have been added. It&#8217;s the sort of adrenaline experience that others, perhaps, seek through horror movies, bungee jumping, investing in equities, <em>or PHP programming</em></p></blockquote>
<p>Jonathan Corbet, <a href="http://lwn.net/Articles/396670/"><em>The end of the road for the Nexus One</em></a>, <a href="http://lwn.net/"><strong>Linux Weekly News</strong></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/355/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=355&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/07/22/android-flashing-programming/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>iTunes feed extractor</title>
		<link>http://hircus.wordpress.com/2010/07/14/itunes-feed-extractor/</link>
		<comments>http://hircus.wordpress.com/2010/07/14/itunes-feed-extractor/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 01:59:18 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=346</guid>
		<description><![CDATA[The downside of Apple&#8217;s iPod/iPhone being so popular is that so many podcasts only publish iTunes links, instead of the more standard RSS/Atom feeds. And I know of OS X and Windows users who detest iTunes &#8212; imagine how Unix users feel! Well, the feeds are still there, but hidden from plain sight &#8212; turns [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=346&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The downside of Apple&#8217;s iPod/iPhone being so popular is that so many podcasts only publish iTunes links, instead of the more standard RSS/Atom feeds. And I know of OS X and Windows users who detest iTunes &#8212; imagine how Unix users feel!</p>
<p>Well, the feeds are still there, but hidden from plain sight &#8212; turns out, though, that if you pretend to be iTunes, you can actually trick the iTMS server into giving you the raw data. And with Python 2.6&#8242;s built-in support for Apple&#8217;s property lists, extracting the feed is a trivial matter.<br />
<span id="more-346"></span><br />
<pre class="brush: plain;">
#!/usr/bin/env python

import plistlib
import urllib2
import sys

ITUNES_VER = '7.4.1'

USER_AGENT = 'iTunes/' + ITUNES_VER

def get_props(url):
    request = urllib2.Request(url)
    request.add_header('User-Agent', USER_AGENT)
    response = urllib2.urlopen(request)
    return plistlib.readPlistFromString(response.read())

def get_feed(url):
    next_url = get_props(url)['action']['url']
    props = get_props(next_url)
    return props['items'][0]['feedURL']
    
if __name__ == '__main__':
    for url in sys.argv[1:]:
        print get_feed(url)
</pre></p>
<p><strong>update (2010-08-27)</strong><br />
Apple removed one level of indirection, and the code above can be simplified. For historicity, I&#8217;m not editing the displayed code, but apply this patch, either by hand or using &#8216;patch&#8217;:<br />
<pre class="brush: plain;">
--- a/itms_extract.py
+++ b/itms_extract.py
@@ -15,8 +15,7 @@ def get_props(url):
     return plistlib.readPlistFromString(response.read())
 
 def get_feed(url):
-    next_url = get_props(url)['action']['url']
-    props = get_props(next_url)
+    props = get_props(url)
     return props['items'][0]['feedURL']
     
 if __name__ == '__main__':
</pre></p>
<p><strong>update (2011-04-05)</strong><br />
The latest code, for your convenience, at <a href="https://gist.github.com/903448">gist.github.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=346&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/07/14/itunes-feed-extractor/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>On (not) reinventing the wheel</title>
		<link>http://hircus.wordpress.com/2010/07/11/on-not-reinventing-the-wheel/</link>
		<comments>http://hircus.wordpress.com/2010/07/11/on-not-reinventing-the-wheel/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 11:45:04 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Gnome/GTK+]]></category>
		<category><![CDATA[Meego]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=342</guid>
		<description><![CDATA[I used to dual-boot Moblin and Fedora on my old netbook &#8212; but when I had it replaced due to battery and SSD failures, I stopped doing it on the new netbook, instead exclusively booting Fedora, and relegating MeeGo to a USB stick with persistent overlay. Thankfully, MeeGo&#8217;s image creation tool (mic2) is derived from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=342&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I used to dual-boot Moblin and Fedora on my old netbook &#8212; but when I had it replaced due to battery and SSD failures, I stopped doing it on the new netbook, instead exclusively booting Fedora, and relegating MeeGo to a USB stick with persistent overlay. Thankfully, MeeGo&#8217;s image creation tool (mic2) is derived from Fedora&#8217;s livecd-tools, so I can simply use the latter to burn the MeeGo image to USB with overlay, without messing with the image by hand.</p>
<p>(as an aside, the only way to flash an image to a partition, instead of wiping the entire disk, is using Fedora&#8217;s tool, and by extension MeeGo&#8217;s &#8212; but with the latter, only if one used the Fedora-derived command-line tool, mic-livecd-iso-to-disk instead of the recommended ones)</p>
<p>There are several reasons for this, in no particular order:</p>
<p><strong>Storage</strong></p>
<p>Moblin supports ext3 but not ext4; MeeGo adds btrfs to this mix but there&#8217;s still no ext4 support. I buy the rationale that ext4 is the SVN of file systems, and that we&#8217;ll eventually all migrate to btrfs anyway. But on the other hand, btrfs is not quite there yet &#8212; I switched back to ext4 after the SSD failure, when I realized that btrfsck does not yet handle bad sectors properly, unlike e2fsck. With other Linux distributions increasingly switching to ext4 &#8212; which can be easily migrated to btrfs later on &#8212; the trade-off (slight disk usage increase vs easy access to other Linux partitions) is surely in favour of supporting ext4.</p>
<p>Moblin/MeeGo also does not support LVM, which is used by default by Fedora&#8217;s installer, but this is a minor issue &#8212; someone deciding to use MeeGo and Fedora can just partition the disk without using LVM.</p>
<p><a href="http://blogs.gnome.org/dcbw/2009/06/25/networkmanager-and-connman/"><strong>connman vs NetworkManager</strong></a></p>
<p>I used to be agnostic as to how my network connections are configured &#8212; as long as it just works. This is why my new netbook is a Sony &#8212; because unlike other vendors (shame on you, especially, Dell) it does not use a Broadcom WLAN chip with a proprietary, badly-documented, buggy Linux driver (<span style="text-decoration:line-through;">shame on you, Canonical, for helping develop it</span> if only had Canonical put its considerable weight to getting specs and firmware released). Instead, it has a nice Atheros chip.</p>
<p>The same is true when it comes to the software stack. At the beginning I did not pay much attention to the connman vs NetworkManager controversy &#8212; prior to version 0.7, NetworkManager had its warts, and connman happened to work just fine on the home wireless networks I tried. This changed when I try connecting to a work network that uses <a href="http://bugs.meego.com/show_bug.cgi?id=2588">802.1X security</a>. The MeeGo GUI does not support this, and the developers don&#8217;t consider this important at all. The command-line tool is badly documented &#8212; documentation is non-existent &#8212; and throw cryptic error messages. Makes one wish Java-style checked exception is more widely used; that way, at least developers have to *think* about the exception propagation, instead of just exposing them by neglect to the users.</p>
<p><strong>GNOME 3.0, Fedora MeeGo stack</strong></p>
<p>Fedora 13 already comes with a preview of GNOME 3.0&#8242;s shell, and work is in progress on having  MeeGo available. There are some annoying integration issues &#8212; the network-manager-netbook applet that integrates the Moblin/MeeGo desktop with NetworkManager is not as well supported as the default connman-based applet, and MeeGo&#8217;s window manager has some incompatible modifications that has not been merged back upstream. But, like NetworkManager&#8217;s Dan Williams, I believe that the way to improve the Linux desktop is to improve the existing tools that work across all sorts of devices, rather than reinventing them to solely target mobile devices, and in the process having to solve the same technical issues over and over again.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/342/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=342&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/07/11/on-not-reinventing-the-wheel/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Worrying trend in open-source graphics drivers</title>
		<link>http://hircus.wordpress.com/2010/06/01/worrying-trend-in-open-source-graphics-drivers/</link>
		<comments>http://hircus.wordpress.com/2010/06/01/worrying-trend-in-open-source-graphics-drivers/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 11:46:11 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[AMD]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[nVidia]]></category>
		<category><![CDATA[Sony]]></category>
		<category><![CDATA[X]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=337</guid>
		<description><![CDATA[It is not so long ago that one could get high-end notebooks with integrated Intel graphics &#8212; not the most performant hardware, but with decent[1] open-source drivers directly supported by the manufacturer. Yet when I did a precautionary replacement purchase for my laptop a few months ago, the situation has changed &#8212; unless you opt [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=337&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It is not so long ago that one could get high-end notebooks with integrated Intel graphics &#8212; not the most performant hardware, but with decent[1] open-source drivers directly supported by the manufacturer. Yet when I did a precautionary replacement purchase for my laptop a few months ago, the situation has changed &#8212; unless you opt for the business laptops, you either get Intel on the low-end (no Core for you) or AMD/nVidia on the higher end. There are exceptions, but not many. Dell, the company that previously allows you to tweak virtually anything, now does not offer graphics card options for its Studio line-up, at least in Germany. The Sony Vaio E-series, which I purchased, is no longer produced with an Intel card.</p>
<p>Open source drivers for AMD (née ATi) and nVidia cards are improving &#8212; and one is grateful for AMD to actually cooperate with open-source developers with documentation and technical help, but at the moment one is caught in a three-way bind: buy Intel and be stuck on the low end (or very limited vendor choices), buy nVidia and get great proprietary drivers and good open source drivers, but supporting the company with the most FLOSS-unfriendly business practices, or buy AMD/ATi and have good-ish proprietary drivers (provided one downgrades one&#8217;s Linux install or at least the X components) and so-so (but improving) open source drivers. Being stuck in the latter camp, I was running the open-source Radeon driver, which currently has no DRI support for the Radeon HD 5400 series (no gnome-shell. Not even gthumb, nowadays!) &#8212; but then noticed that an older problem might be resurfacing itself &#8212; that my graphics card is not being throttled down, contributing to the awful (~ 1 hr) battery life on Linux. That&#8217;s about the last straw one can take: my old netbook has snazzier graphics and better battery life[2] than my new notebook!</p>
<p>Going to try the newly-updated proprietary Catalyst driver, coupled with a downgraded X installation from Fedora 12, and see how it goes. Will report my experience here &#8212; and recuse myself from submitting X and kernel bug reports until the next version of X comes out and hopefully make the situation less painful.</p>
<p>First time in many, many years using proprietary graphics drivers, but I&#8217;m not killing my battery and my hearing (the fans are rather loud) over this.</p>
<p>[1] ports to new APIs tend to introduce periods of instability and performance regressions, but overall the impression is positive<br />
[2] after close to two years, battery capacity just dropped precipitously to ~ 30% of the original, so it&#8217;s now getting a new &#8212; and higher-capacity &#8212; replacement. This is probably the last upgrade &#8212; there better be a dual-core, 2 GHz+ netbook out by the time the new battery fails (or a well-supported, affordable ARM smartbook), and it better has SSD options (Dell, what happened to your great Mini 9 SSD deal?)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/337/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=337&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/06/01/worrying-trend-in-open-source-graphics-drivers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>FSFE and the cross we bear</title>
		<link>http://hircus.wordpress.com/2010/05/23/fsfe-and-the-cross-we-bear/</link>
		<comments>http://hircus.wordpress.com/2010/05/23/fsfe-and-the-cross-we-bear/#comments</comments>
		<pubDate>Sun, 23 May 2010 19:44:16 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Legal]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=335</guid>
		<description><![CDATA[I&#8217;ve been a fellow of the Free Software Foundation Europe for just over a month, and recently a visiting friend commented on a point that, until then, I&#8217;ve only noted to myself: that the fellowship logo is rather similar to the Christian cross. FSFE is certainly not a Christian organization. One could argue that it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=335&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a <a href="http://fellowship.fsfe.org/">fellow</a> of the <a href="http://fsfe.org/">Free Software Foundation Europe </a>for just over a month, and recently a visiting friend commented on a point that, until then, I&#8217;ve only noted to myself: that the fellowship logo is rather similar to the Christian cross.</p>
<p>FSFE is certainly not a Christian organization. One could argue that it is a by-product of a traditionally Christian civilization, but one could equally argue that it traces its heritage to Greco-Roman philosophy! The green cross, with a slit on the bottom so that the entire shape looks like an icon representing a person standing with open arms, is probably closer to the Red Cross in iconography than to Christianity. That being said, being a fellow does have some similarities to being a committed Christian.</p>
<ul>
<li><em>The cross we bear</em>: Joining has a price, whether financial, in time commitment, or other means</li>
<li><em>A mission</em>: we bear this price gladly because we believe in what the respective organizations stand for. In case of the FSFE, it&#8217;s freedom. Freedom to learn. Freedom to innovate. Freedom from unreasonable restrictions imposed on you by software patents (at this point, I&#8217;d like to extend a special welcome to any budding cinematographer who just discovered that by recording your video in H.264, the MPEG-LA consortium owns your soul &#8212; er, I mean your work)</li>
<li><em>Diverse voices</em>: just as Christianity is represented by a myriad denominations, some with higher profile than others, some with a more tarnished reputation than others, yet all based on the same foundation &#8212; no matter how garbled in the transmission (we are all humans!), the same is true of the Free, Libre and Open Source Software (FLOSS) community. There are differences between the free and open source camps, between the copyleft and liberal-license camps, etc. But deep down we believe in sharing our works with others, whichever way we justify it to ourselves and others.</li>
</ul>
<p>The struggle against the anti-commons nature of overly-restrictive intellectual property will be with us for a long time. We have made huge technical leaps &#8212; FLOSS software is competitive in diverse fields including server operating system (Linux, the BSDs, OpenSolaris), instant messaging (Jabber, standardized as XMPP), audio codecs (FLAC, Vorbis, Speex), and are catching up in video (Theora, Dirac, and thanks to Google, WebM, <em>née</em> VP8). Even users still locked into proprietary systems can thank FLOSS, and open standards, for the Web they surf (served mostly by Apache), their web applications (often built on top of the Java platform), and further down, the network protocols they use, all developed in collaboration instead of in proprietary isolation.</p>
<p>Yet the road ahead is a long and winding one. Flash is still omnipresent on the Web, Apple is proving a huge disappointment (after contributing to, and sponsoring, so many open source projects, now they&#8217;re starting to shrilly attack any competitor to their iPhone/iPad lines &#8212; be it Android, Flash, Theora, or WebM). To quote Benjamin Franklin,</p>
<blockquote><p><em>Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety</em></p></blockquote>
<p>I&#8217;m not giving up my liberty, and neither should you. It&#8217;s true that it is hard to completely give up proprietary software &#8212; don&#8217;t be discouraged, many free software advocates are not there yet either. But you can start by following these simple guidelines:</p>
<ul>
<li><em>Favour open standards</em> &#8212; does your calendaring solution support the ICAL format? does your mail provider provide IMAP and POP3 access? is your instant messaging platform XMPP-based (e.g. Google Talk), or are you locked onto a proprietary protocol?</li>
<li><em>Vote with your wallet</em> &#8212; if a company has a history of abusive behavior (sadly, Apple is now there), attempt to discourage this kind of behavior. Don&#8217;t buy the products they&#8217;re trying to protect by this behavior, tell them why you&#8217;re not buying, and tell other people why too.</li>
<li><em>Be aware of your rights</em> &#8212; you have the right to make a personal copy of your music and movie collections. Yet the RIAA and MPAA tries their hardest to make this impossible &#8212; in case of DVDs and Blu-ray, to the point of making it illegal</li>
</ul>
<p>I highly recommend reading <a href="http://www.dklevine.com/general/intellectual/againstfinal.htm">Against Intellectual Monopoly</a> and <a href="http://www.gridlockeconomy.com/">Gridlock Economy</a>; both are accessible and highly illuminating accounts of the damage our current legal IP regime is doing to our societies. The solution is not anarchy &#8212; copyleft licenses *are* legal copyright documents &#8212; but to work for reform; if you agree, consider donating your time &#8212; or money &#8212; to organizations such as the <a href="http://www.fsf.org/">Free Software Foundation</a>, its affiliates &#8212; including FSFE; the <a href="http://www.openinventionnetwork.com/">Open Invention Network</a>; your favourite free/open source project (whether in code, documentation, useful bug reports or donation); or projects that enrich our cultural commons by making public domain information more accessible &#8212; e.g. <a href="http://wikipedia.org/">Wikipedia</a> and <a href="http://www.gutenberg.org/">Project Gutenberg</a>.</p>
<p>I thank you. Future generations will thank us too, for whatever little we can do for them today.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/335/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=335&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/05/23/fsfe-and-the-cross-we-bear/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Discovering Emacs: Org-Mode</title>
		<link>http://hircus.wordpress.com/2010/05/19/discovering-emacs-org-mode/</link>
		<comments>http://hircus.wordpress.com/2010/05/19/discovering-emacs-org-mode/#comments</comments>
		<pubDate>Wed, 19 May 2010 12:26:26 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=331</guid>
		<description><![CDATA[Needing to find a tried-and-tested GTD application, I finally discovered Emacs&#8217; Org-Mode. It&#8217;s a planner, a note-taking application &#8212; and more. I&#8217;ve taken to using it to generate most documents &#8212; whether they&#8217;ll end up as text (for email) or LaTeX (for reports). Amazingly flexible and well-documented. You&#8217;d want to install the latest version, rather [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=331&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Needing to find a tried-and-tested GTD application, I finally discovered Emacs&#8217; <a href="http://orgmode.org/">Org-Mode</a>. It&#8217;s a planner, a note-taking application &#8212; and more. I&#8217;ve taken to using it to generate most documents &#8212; whether they&#8217;ll end up as text (for email) or LaTeX (for reports). Amazingly flexible and well-documented.</p>
<p>You&#8217;d want to install the latest version, rather than relying on the version bundled with Emacs (since version 22) &#8212; otherwise some features described in the documentation simply won&#8217;t work (e.g. quick-selecting the initial state of a TODO item).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/331/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/331/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/331/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=331&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2010/05/19/discovering-emacs-org-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>[Mini Kanren] Benchmarking different substitution data structures</title>
		<link>http://hircus.wordpress.com/2009/10/25/mini-kanren-benchmarking-different-substitution-data-structures/</link>
		<comments>http://hircus.wordpress.com/2009/10/25/mini-kanren-benchmarking-different-substitution-data-structures/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 20:13:07 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[minikanren-scala]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/10/25/mini-kanren-benchmarking-different-substitution-data-structures/</guid>
		<description><![CDATA[In logic programming, a substitution is a mapping from logic variables to values (including other logic variables). Logic programs are composed of goals, with the type signature Subst =&#62; Subst* &#8212; i.e. it might fail (thus generating 0 possible substitution), succeed once, or succeed multiple times, or even an infinite number of times. It is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=305&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In logic programming, a <i>substitution</i> is a mapping from logic variables to values (including other logic variables). Logic programs are composed of <b>goal</b>s, with the type signature <tt>Subst =&gt; Subst*</tt> &#8212; i.e. it might fail (thus generating 0 possible substitution), succeed once, or succeed multiple times, or even an infinite number of times.</p>
<p>It is necessary for substitutions to behave as values &#8212; if you take a substitution, and add a binding, you better get a new substitution, rather than do the modification in place, because that substitution might be used by other goals. In Lisp, the traditional data structure for this is the <b>association list</b>: a list of lists, where the <b>car</b>s (first elements) of each inner list are the keys. Clojure takes Phil Bagwell&#8217;s Hash Array Mapped Trie and adds persistency on top of it, to the effect that you have a copy-on-write trie map, with logarithmic rather than linear lookup times.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/functional" rel="tag">functional</a>, <a class="performancingtags" href="http://technorati.com/tag/logic" rel="tag">logic</a>, <a class="performancingtags" href="http://technorati.com/tag/programming" rel="tag">programming</a>, <a class="performancingtags" href="http://technorati.com/tag/clojure" rel="tag">clojure</a>, <a class="performancingtags" href="http://technorati.com/tag/scala" rel="tag">scala</a>, <a class="performancingtags" href="http://technorati.com/tag/jvm" rel="tag">jvm</a>, <a class="performancingtags" href="http://technorati.com/tag/data-structures" rel="tag">data-structures</a>, <a class="performancingtags" href="http://technorati.com/tag/tries" rel="tag">tries</a></p>
<p><span id="more-305"></span></p>
<p>Using association lists, my Scala code was performing about 3x slower than Petite Chez Scheme. Horrendous results &#8212; interestingly, using linked case objects optimized for storing keys and values reduce the gap, to the point that it was only about 10-15% slower. Still not great, but acceptable. Since my Mini Kanren implementation is written in Scala, not Clojure, I tried using Scala&#8217;s own immutable maps, reasoning that with Bagwell tries, the boost in look-up performance (O(log n) vs O(n)) ought to outweigh the increased cost of extending (O(log n) vs O(1)). Alas, <a href="http://www.nabble.com/Re%3A-Tail-calls-via-trampolining-and-an-explicit-instruction-p20706577.html">Scala&#8217;s maps are not Bagwell tries</a>. One simply gets an OOM error; I&#8217;d have to dig deeper to find out exactly why.</p>
<p>The solution, of course, is to use Clojure&#8217;s maps in Scala. Doable, after patching its Java interface a bit &#8212; Clojure being a Lisp, there is a penchant for short names, and therefore an <tt>IMapEntry</tt> has a getter called <tt>val()</tt>, instead of <tt>value()</tt> &#8212; but <b>val</b> is a keyword in Scala (denoting values, i.e. names, like variables but immutable). Patched code lives in a <a href="http://github.com/hircus/clojure/tree/rename-val">branch</a> on my Clojure fork; hopefully this can get merged in as a stop-gap until Scala gets its own tries.</p>
<p>And with Clojure maps? Scala Kanren is now 2.5 times <b>*faster*</b> than Mini Kanren on Petite Chez. Mind-boggling. Oh, and you&#8217;d want the raw numbers, naturally. Bear in mind that this is used on a desktop system that is running Firefox, etc. at the same time. I&#8217;d need to do longer runs (e.g. 100x) from runlevel S to get better results.</p>
<p>Next speed-up is probably going to be obtained by reimplementing this back in Clojure &#8212; it has a built-in parallel map that works on lazy sequences, unlike Scala.</p>
<table border="1">
<thead>
<tr>
<th>Strategy</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>avg</th>
<th>rel</th>
</tr>
</thead>
<tbody>
<tr>
<td>association list (Scheme)</td>
<td>39312</td>
<td>38853</td>
<td>39207</td>
<td>39124.0</td>
<td>1.0</td>
</tr>
<tr>
<td>association list (Scala)</td>
<td>114562</td>
<td>111629</td>
<td>109939</td>
<td>112043.3.</td>
<td>2.86x</td>
</tr>
<tr>
<td>linked triples (Scala)</td>
<td>47833</td>
<td>44813</td>
<td>44277</td>
<td>45641.0</td>
<td>1.167</td>
</tr>
<tr>
<td>Immutable maps (Scala)</td>
<td colspan="5" align="center">OOM</td>
</tr>
<tr>
<td>Clojure persistent maps (Scala)</td>
<td>17955</td>
<td>15586</td>
<td>13482</td>
<td>15674.3.</td>
<td>0.40</td>
</tr>
</tbody>
</table>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=02e1fa9a-ce9a-81d2-9842-0438dadbdec7" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/305/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=305&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/25/mini-kanren-benchmarking-different-substitution-data-structures/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=02e1fa9a-ce9a-81d2-9842-0438dadbdec7" medium="image" />
	</item>
		<item>
		<title>Gnoetry 1-2-3</title>
		<link>http://hircus.wordpress.com/2009/10/24/gnoetry-1-2-3/</link>
		<comments>http://hircus.wordpress.com/2009/10/24/gnoetry-1-2-3/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 00:23:03 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Gnoetry]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/10/24/gnoetry-1-2-3/</guid>
		<description><![CDATA[I&#8217;ve been fascinated with Jon Trowbridge and Eric Elshtain&#8217;s Gnoetry for quite some time, but have until recently contented myself with watching from the sidelines. There are several reasons &#8212; being busy with other projects, and mostly that the code is rather well-hidden from the public eye; there is a Subversion repository, but one has [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=303&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been fascinated with Jon Trowbridge and Eric Elshtain&#8217;s <a href="http://www.beardofbees.com/gnoetry.html">Gnoetry</a> for quite some time, but have until recently contented myself with watching from the sidelines. There are several reasons &#8212; being busy with other projects, and mostly that the code is rather well-hidden from the public eye; there is a <a href="http://svn.trowbridge.org/gnoetry">Subversion repository</a>, but one has to jump through some hoops to get to it (I forgot how I got to the code; I think I might have emailed Jon about it).</p>
<p>After you get the code, there&#8217;s still the matter of setting things up. And SVN is a rather messy interface to use if one does not have commit access&#8230;</p>
<p>I&#8217;ve decided to take the plunge, though. I used <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git-svn</a> to make a clone of the official repository, committed some usability improvements to a bugfix branch, and pushed the code to GitHub. Get it <a href="http://github.com/hircus/gnoetry">here</a> (the master branch is Jon&#8217;s latest SVN code; the bugfix branch has a Makefile added that let you run Gnoetry by simply running &#8216;make&#8217; &#8212; it does all the setting-up for you. &#8216;make clean&#8217; cleans up the generated files).</p>
<p>Now, time to fix that unreleased-mutex-on-exit bug&#8230;</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/gnoetry" rel="tag">gnoetry</a>, <a class="performancingtags" href="http://technorati.com/tag/linguistics" rel="tag">linguistics</a>, <a class="performancingtags" href="http://technorati.com/tag/python" rel="tag">python</a>, <a class="performancingtags" href="http://technorati.com/tag/poetry" rel="tag">poetry</a>, <a class="performancingtags" href="http://technorati.com/tag/statistics" rel="tag">statistics</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=8c65d562-59b2-88a5-b27a-8d9d3622bebc" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=303&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/24/gnoetry-1-2-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=8c65d562-59b2-88a5-b27a-8d9d3622bebc" medium="image" />
	</item>
		<item>
		<title>Discovering Rosetta Code</title>
		<link>http://hircus.wordpress.com/2009/10/24/discovering-rosetta-code/</link>
		<comments>http://hircus.wordpress.com/2009/10/24/discovering-rosetta-code/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 23:14:36 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Rosetta Code]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=301</guid>
		<description><![CDATA[I discovered Rosetta Code over the weekend. It bills itself as a programming chrestomathy [wp] site, offering a place to learn, compare and contrast different programming languages by reading and writing solutions to different programming tasks. So far, I&#8217;ve been using it to brush up on my Clojure, Pure and Scala fu. I&#8217;ve just added [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=301&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I discovered <a href="http://rosettacode.org/wiki/Main_Page">Rosetta Code</a> over the weekend. It bills itself as a <a href="http://en.wikipedia.org/wiki/programming_chrestomathy">programming chrestomathy</a> [wp] site, offering a place to learn, compare and contrast different programming languages by reading and writing solutions to different programming tasks.</p>
<p>So far, I&#8217;ve been using it <a href="http://rosettacode.org/wiki/Special:Contributions/Hircus">to brush up</a> on my Clojure, Pure and Scala fu. I&#8217;ve just added the <a href="http://rosettacode.org/wiki/Category:Pure">Pure category</a>, so the examples are a bit sparse still. If you want to see the solution to any particular problem in it, just drop me a note.</p>
<p>Also check out the <a href="http://rosettacode.org/wiki/Stair_Climbing">stair climbing</a> exercise I borrowed from Chung-chieh Shan&#8217;s Lambda the Ultimate post.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/301/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=301&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/24/discovering-rosetta-code/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>[Packaging] Ships that pass in the night</title>
		<link>http://hircus.wordpress.com/2009/10/23/packaging-ships-that-pass-in-the-night/</link>
		<comments>http://hircus.wordpress.com/2009/10/23/packaging-ships-that-pass-in-the-night/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 11:24:04 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/10/23/packaging-ships-that-pass-in-the-night/</guid>
		<description><![CDATA[Amusing (or depressing?) trail of bug-hunting: During the package review process for pure, we discovered that a dlsym-ed strcmp does not produce the right result on F-12 The same problem turned out to be the case with avahi-sharp; its dlsym-ed strlen produces incorrect results, causing segmentation faults in Banshee (which uses it through mono-zeroconf) Switching [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=299&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Amusing (or depressing?) trail of bug-hunting:</p>
<ul>
<li>During the package review process for <b>pure</b>, we discovered that a <i>dlsym</i>-ed strcmp does not produce the right result on F-12</li>
<li>The same problem turned out to be the case with <b>avahi-sharp</b>; its <i>dlsym</i>-ed strlen produces incorrect results, causing segmentation faults in Banshee (which uses it through <b>mono-zeroconf</b>)</li>
<li>Switching zeroconf to use avahi through DBUS would fix things, but when poking through the sources, it is discovered that its developer has been bundling a private copy of NDesk.DBus, against Fedora guidelines and the wishes of NDesk.DBus upstream</li>
<li>Said upstream has not released a stable release since January 2008, though the code is still actively developed in Git, and there is a (quiet) bugtracker on Launchpad. Nobody appears to be using the upstream code; even openSUSE Factory is still using 0.6.1 (not even the latest 0.6.1a).</li>
<li>Meanwhile, Fedora&#8217;s ndesk-dbus carries a patch, at the request of <b>sugar-sharp</b>, that <i>changes the public API</i> by adding some public methods. The API version, however, is unchanged.</li>
</ul>
<p>I&#8217;ve <a href="https://bugs.launchpad.net/ndesk-dbus/+bug/458687">notified upstream</a>, as well as the zeroconf developers. The Fedora bugs affected are linked from the upstream bug report as well. Meanwhile, let&#8217;s hope the glibc bug gets fixed soon too. It&#8217;s nice having a seconder, especially as the test case is much smaller than the test case I submitted for pure.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=8014bb5e-4c48-87cb-a3a9-2338baae34fe" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/299/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=299&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/23/packaging-ships-that-pass-in-the-night/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=8014bb5e-4c48-87cb-a3a9-2338baae34fe" medium="image" />
	</item>
		<item>
		<title>Mini Kanren: updates</title>
		<link>http://hircus.wordpress.com/2009/10/21/mini-kanren-updates/</link>
		<comments>http://hircus.wordpress.com/2009/10/21/mini-kanren-updates/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 20:58:48 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[minikanren-scala]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/10/21/mini-kanren-updates/</guid>
		<description><![CDATA[Several updates to Mini Kanren, covering syntax, semantics and documentation. SyntaxImplicit conversions now allow you to write the more idiomatic x === y to mean mkEqual(x,y) . Likewise, you can use x =/= y to mean neverEqual(x,y) (see below for explanation). SemanticsThe =/= (neverEqual) goal has been added, specifying that x and y should never [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=298&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Several updates to Mini Kanren, covering syntax, semantics and documentation.</p>
<p><b>Syntax</b><br />Implicit conversions now allow you to write the more idiomatic <tt>x === y</tt> to mean <tt>mkEqual(x,y)</tt> . Likewise, you can use <tt>x =/= y</tt> to mean <tt>neverEqual(x,y)</tt> (see below for explanation).</p>
<p><span id="more-298"></span><br /><b>Semantics</b><br />The <tt>=/=</tt> (neverEqual) goal has been added, specifying that <tt>x</tt> and <tt>y</tt> should never be unified with each other. This requires reworking the substitution system; previously, a substitution is simply a list of <tt>var -&gt; x</tt> mappings, together with assorted functions.</p>
<p>Supporting neverEqual involves adding more checks to <i>unify</i>; in addition, functions like <i>lookup</i> need different implementations depending on whether they operate on simple or extended substitutions.</p>
<p>The implementation is now more object-oriented, using a pattern similar to Haskell typeclasses:
<ul>
<li><i>Subst</i> specifies the operations available to any substitution, together with default implementations for a simple substitution, whenever possible</li>
<li><i>ConstraintSubst</i> extends <i>Subst</i>. It does not actually add any more methods, but it overrides the implementation of some methods (such as <i>unify</i>)</li>
</ul>
<p>There is a reason both of these provide the same public interface: it allows the same code to run, with either a simple or a constrained substitution, with no change at all (neverEqual-related operations just become no-ops if a simple substitution is used).<br /><b><br />Performance</b><br />Surprisingly, the change to the substitution system actually results in a performance boost. Previously, the <tt>palprod_o</tt> benchmark takes around 110 seconds to run on a Core 2 Duo (single thread), compared with around 40 seconds for Petite Chez Scheme. The new code, using linked case classes instead of linked lists, come in at around 44 seconds. (fastest time with constraints disabled is around 43.5 seconds; with it enabled (but no constraints) the overhead is around a couple of seconds).</p>
<p>More systematic benchmark numbers will be forthcoming.<br /><b><br />Misc<br /></b>The standard prelude and examples are now <a href="http://hircus.multics.org/kanren/api/">better documented</a>. The examples now have their own namespace (<tt>info.hircus.kanren.examples</tt>), and a second example, SendMoreMoney, has been implemented.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/functional" rel="tag">functional</a>, <a class="performancingtags" href="http://technorati.com/tag/logic" rel="tag">logic</a>, <a class="performancingtags" href="http://technorati.com/tag/programming" rel="tag">programming</a>, <a class="performancingtags" href="http://technorati.com/tag/kanren" rel="tag">kanren</a>, <a class="performancingtags" href="http://technorati.com/tag/mini-kanren" rel="tag">mini-kanren</a>, <a class="performancingtags" href="http://technorati.com/tag/scala" rel="tag">scala</a>, <a class="performancingtags" href="http://technorati.com/tag/jvm" rel="tag">jvm</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=c4b279da-131e-81d7-b8e8-10dbefb20016" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/298/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=298&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/21/mini-kanren-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=c4b279da-131e-81d7-b8e8-10dbefb20016" medium="image" />
	</item>
		<item>
		<title>Logic programming on the JVM</title>
		<link>http://hircus.wordpress.com/2009/10/19/logic-programming-on-the-jvm/</link>
		<comments>http://hircus.wordpress.com/2009/10/19/logic-programming-on-the-jvm/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 06:34:19 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Lua]]></category>
		<category><![CDATA[minikanren-scala]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Scheme]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=296</guid>
		<description><![CDATA[Just a quick post (the time is rather late) to note that my port of the Mini Kanren logic programming system to Scala is now available for download (and bug reports) on GitHub; for the scaladoc API documentation and a presentation discussing the porting effort, visit the project homepage. It has an almost-complete numerical stack [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=296&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just a quick post (the time is rather late) to note that my port of the <a href="http://kanren.sourceforge.net/">Mini Kanren</a> logic programming system to <a href="http://scala-lang.org/">Scala</a> is now available for download (and bug reports) on <a href="http://github.com/hircus/minikanren-scala">GitHub</a>; for the scaladoc API documentation and a presentation discussing the porting effort, visit the <a href="http://hircus.multics.org/kanren">project homepage</a>.</p>
<p>It has an almost-complete numerical stack &#8212; the missing arithmetic relations are not coded yet because I was documenting and/or getting larger test cases to work &#8212; and likewise with list-processing support. The years-old stack overflow problem I initially attributed (when taking a programming language course, and having no time to debug thoroughly) to Java&#8217;s lack of TCO turns out to be fixable by some judicious call-by-name optimizations.</p>
<p>Having just discovered <a href="http://metalua.luaforge.net/">metalua</a> and its macro goodness, I&#8217;d say that after bringing Kanren to the JVM, the next step would be to have a C-embeddable Kanren written in metalua. There might be some performance snags, though &#8212; the Scala port is currently about 3x slower than Mini Kanren running on Petite Chez Scheme.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/kanren" rel="tag">kanren</a>, <a class="performancingtags" href="http://technorati.com/tag/mini-kanren" rel="tag">mini-kanren</a>, <a class="performancingtags" href="http://technorati.com/tag/functional" rel="tag">functional</a>, <a class="performancingtags" href="http://technorati.com/tag/logic" rel="tag">logic</a>, <a class="performancingtags" href="http://technorati.com/tag/programming" rel="tag">programming</a>, <a class="performancingtags" href="http://technorati.com/tag/lua" rel="tag">lua</a>, <a class="performancingtags" href="http://technorati.com/tag/scala" rel="tag">scala</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=1f5a4ad7-fe86-8f71-a72a-a3718137c291" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/296/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=296&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/19/logic-programming-on-the-jvm/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=1f5a4ad7-fe86-8f71-a72a-a3718137c291" medium="image" />
	</item>
		<item>
		<title>OOP in Lua: abstract methods</title>
		<link>http://hircus.wordpress.com/2009/10/18/oop-in-lua-abstract-methods/</link>
		<comments>http://hircus.wordpress.com/2009/10/18/oop-in-lua-abstract-methods/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 02:37:21 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[lua-abc]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/10/18/oop-in-lua-abstract-methods/</guid>
		<description><![CDATA[I discovered Python&#8217;s delightful abc module (introduced in PEP 3119) a while back, and have been wondering how a similar functionality could be introduced to other dynamic languages (e.g. Lua and Ruby). Being more familiar with the former, over the weekend I decided to try and write an equivalent module. Two problems came to mind: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=293&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I discovered Python&#8217;s delightful <strong>abc</strong> module (introduced in <a href="http://www.python.org/dev/peps/pep-3119/">PEP 3119</a>) a while back, and have been wondering how a similar functionality could be introduced to other dynamic languages (e.g. Lua and Ruby).</p>
<p>Being more familiar with the former, over the weekend I decided to try and write an equivalent module. Two problems came to mind:</p>
<ul>
<li>Python uses an <strong>@abstractmethod</strong> decorator to mark an otherwise-normal function definition. While a decorator pattern can be used in Lua (though not a standard practice), this Python decorator works by setting an attribute in the function it decorates:<br />
<blockquote><p><tt>funcobj.__isabstractmethod__ = True</tt></p></blockquote>
<p>This is not an option in Lua, because functions don&#8217;t have individual metatables.</li>
<li>Python has a standard way of doing OOP, and the enforcement that an instantiated class does not contain any abstract method is done in the <strong>__new__</strong> method of the ABCMeta metaclass. Contrast to Lua, where OOP is normally done in an ad-hoc manner &#8212; and even the <a href="http://loop.luaforge.net/">LOOP library</a> provides several OOP inheritance mechanisms.</li>
</ul>
<p>The solution I adopted is delightfully simple: the <strong>abc</strong> module provides two functions: an <em>amethod</em> function that throws an exception no matter what arguments it is passed, and a <em>verify</em> function that takes a classname, and reflects on the members (using <em>loop.cached.allmembers</em> if possible, falling back to <em>pairs</em> if loop is not installed) and check if any of them is equal to <em>amethod</em>.</p>
<p>This works even on simple tables, though it shifts the responsibility a bit to the programmer: unit tests should be used to verify each created class. As a fallback, attempts to use the abstract methods will fail at runtime, but that&#8217;s taking dynamism a bit too far&#8230;</p>
<p>Still working out how to get the Pythonic behavior (instantiating a class with some abstract members should fail) when using LOOP. Meanwhile, <a href="http://github.com/hircus/lua-abc">try it out</a> for yourself and make sure to file bug reports!</p>
<p>Technorati Tags: <a class="performancingtags" rel="tag" href="http://technorati.com/tag/lua">lua</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/python">python</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/oop">oop</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/abc">abc</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/abstract-methods">abstract-methods</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/virtual-functions">virtual-functions</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/interfaces">interfaces</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/traits">traits</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=7c6bde0c-b2e3-8cc5-8668-246976b4bf99" alt="" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/293/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=293&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/18/oop-in-lua-abstract-methods/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=7c6bde0c-b2e3-8cc5-8668-246976b4bf99" medium="image" />
	</item>
		<item>
		<title>[PYTHON] Find of the day: B+ Tree-based lists</title>
		<link>http://hircus.wordpress.com/2009/10/10/python-find-of-the-day-b-tree-based-lists/</link>
		<comments>http://hircus.wordpress.com/2009/10/10/python-find-of-the-day-b-tree-based-lists/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 22:43:08 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/10/10/python-find-of-the-day-b-tree-based-lists/</guid>
		<description><![CDATA[I was looking at implementing Clojure&#8217;s persistent data structures on other languages &#8212; being able to assume that collections are immutable make writing concurrent programs much easier, since these collections can be shared without locking. While looking if this has been done before, I came across a rejected Python Enhancement Proposal: The common case for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=291&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was looking at implementing Clojure&#8217;s persistent data structures on other languages &#8212; being able to assume that collections are immutable make writing concurrent programs much easier, since these collections can be shared without locking.</p>
<p>While looking if this has been done before, I came across a rejected <a href="http://www.python.org/dev/peps/pep-3128/">Python Enhancement Proposal</a>:<br />
<blockquote>
<p>The common case for list operations is on small lists.  The current array-based list implementation excels at small lists due to the strong locality of reference and infrequency of memory allocation operations.  However, an array takes O(n) time to insert and delete elements, which can become problematic as the list gets large.</p>
<p>This PEP introduces a new data type, the BList, that has array-like and tree-like aspects.  It enjoys the same good performance on small lists as the existing array-based implementation, but offers superior asymptotic performance for most operations.  This PEP proposes replacing the makes two mutually exclusive proposals for including the BList type in Python:</p>
<ol class="arabic simple">
<li>Add it to the collections module, or</li>
<li>Replace the existing list type</li>
</ol>
</blockquote>
<p>It is currently rejected, but could be added to the collections module if there is sufficient outside interest. This is not quite the immutable vector from Clojure, but close enough: one merely needs to subclass it, and modify the setters (__setitem__, __setslice__, etc.) to first copy the collection and then operate on the copy. Copy-on-write ensures that only the changed leaf is actually copied, plus the internal nodes on the path leading to the leaf.</p>
<p>I&#8217;ve packaged this for Fedora (<a href="https://bugzilla.redhat.com/show_bug.cgi?id=528288">review request</a>). Anyone cares to review it?</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/fedora" rel="tag">fedora</a>, <a class="performancingtags" href="http://technorati.com/tag/linux" rel="tag">linux</a>, <a class="performancingtags" href="http://technorati.com/tag/python" rel="tag">python</a>, <a class="performancingtags" href="http://technorati.com/tag/data-structures" rel="tag">data-structures</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=8746fd35-9208-8e43-9f60-262576171ae3" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/291/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=291&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/10/python-find-of-the-day-b-tree-based-lists/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=8746fd35-9208-8e43-9f60-262576171ae3" medium="image" />
	</item>
		<item>
		<title>Dear Interweb: Incremental improvement to credit/debit card security?</title>
		<link>http://hircus.wordpress.com/2009/10/06/dear-interweb-incremental-improvement-to-creditdebit-card-security/</link>
		<comments>http://hircus.wordpress.com/2009/10/06/dear-interweb-incremental-improvement-to-creditdebit-card-security/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 15:43:10 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Dear Interweb]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/10/06/dear-interweb-incremental-improvement-to-creditdebit-card-security/</guid>
		<description><![CDATA[2009-10-06&#124;11:30:07&#124;12.34Many of us have fallen victim to credit/debit card fraud, either through operators illegally collecting the numbers of the cards they handle (the small fries) or through crackers breaking into credit card databases. The question is: short of totally overhauling the system, is there any way security could be improved? My (preliminary) ruminations on the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=289&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>2009-10-06|11:30:07|12.34Many of us have fallen victim to credit/debit card fraud, either through operators illegally collecting the numbers of the cards they handle (the small fries) or through crackers breaking into credit card databases.</p>
<p>The question is: short of totally overhauling the system, is there any way security could be improved?</p>
<p>My (preliminary) ruminations on the topic yields the following:</p>
<p><b>Pre-authentication</b><br />For customers who opt-in, require texting the transaction amount (optionally +/- a given amount) for transaction (esp. above a certain amount) to be approved. Problem: SMS is not a secure medium. Using a smartphone, one could get around this (but then the proportion of customers covered will be much smaller), but given that data connectivity is not common (esp. in US and Asia), we&#8217;d still be limited to SMS.</p>
<p>If we care only about authentication, the cleartext plus its PGP signature would fit inside 160 chars, but if one wants to encrypt the content as well, it&#8217;s not possible.</p>
<p>e.g. for the cleartext<br />
<blockquote>2009-10-06|11:30:07|12.34</p></blockquote>
<p>(the timestamp is needed to prevent replay attacks. Yes, this is obviously not secure enough still, but the example is to illustrate the transmission size problem).</p>
<p>Signed, the signature takes 104 bytes. Plus the 26 bytes of the message, and a token separator, we get 131 bytes, within the limits. But what if the message is to stay private as well? Using GnuPG, I get a message size of 625 bytes. This could be split into multiple SMSes, but it&#8217;s not convenient.</p>
<p><b>Post-authentication</b><br />Have the card issuer send an SMS *after* an authorization request is received. We still have the transmission size problem above, but the issuer can choose to transmit less sensitive information &#8212; e.g. rather than the amount, transmit the merchant identifier. Still a privacy problem, and this will obviously not be popular on a busy check-out line. Also has the problem that to make it secure, you&#8217;d need a smartphone (to either decode the message, or verify the signature).</p>
<p><b>Secret code</b><br />There already are security mechanisms asking for the CVV/CVC code. Make it ask for a secret number instead, one that is settable by the customer.</p>
<p><b>But above all&#8230;</b><br />Raise the base level of authentication required! Some online vendors like Amazon still do not even verify the billing address (which is convenient, if one&#8217;s card is issued in a country like Indonesia, where for some reason address verification *never* works, but scary. Though, funnily, I haven&#8217;t gotten any card misused on Amazon. I *did* have one stolen card used on iTunes, so Apple&#8217;s authentication is obviously comparably weak).</p>
<p>Any other idea I&#8217;m missing, or any problem with the three schemes above that I have not noticed, let me know (comment or trackback) and I&#8217;ll update the post. Thanks!</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/banking" rel="tag">banking</a>, <a class="performancingtags" href="http://technorati.com/tag/cryptography" rel="tag">cryptography</a>, <a class="performancingtags" href="http://technorati.com/tag/security" rel="tag">security</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=05ac9b5c-af44-8c6f-bfb2-a8fe0e3fc0b8" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/289/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=289&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/06/dear-interweb-incremental-improvement-to-creditdebit-card-security/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=05ac9b5c-af44-8c6f-bfb2-a8fe0e3fc0b8" medium="image" />
	</item>
		<item>
		<title>Wordling this blog</title>
		<link>http://hircus.wordpress.com/2009/10/06/wordling-this-blog/</link>
		<comments>http://hircus.wordpress.com/2009/10/06/wordling-this-blog/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 14:04:53 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=287</guid>
		<description><![CDATA[Technorati Tags: visualization words<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=287&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="Wordle: Intuitionistically Uncertain 2009-10-06" href="http://www.wordle.net/show/wrdl/1198747/Intuitionistically_Uncertain_2009-10-06"><img style="border:1px solid #ddd;padding:4px;" src="http://www.wordle.net/thumb/wrdl/1198747/Intuitionistically_Uncertain_2009-10-06" alt="Wordle: Intuitionistically Uncertain 2009-10-06" /></a></p>
<p>Technorati Tags: <a class="performancingtags" rel="tag" href="http://technorati.com/tag/visualization words">visualization words</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=961c0f92-20ca-823f-9ee5-565cc1f633d5" alt="" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/287/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=287&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/06/wordling-this-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://www.wordle.net/thumb/wrdl/1198747/Intuitionistically_Uncertain_2009-10-06" medium="image">
			<media:title type="html">Wordle: Intuitionistically Uncertain 2009-10-06</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=961c0f92-20ca-823f-9ee5-565cc1f633d5" medium="image" />
	</item>
		<item>
		<title>The business case for authentication</title>
		<link>http://hircus.wordpress.com/2009/10/01/the-business-case-for-authentication/</link>
		<comments>http://hircus.wordpress.com/2009/10/01/the-business-case-for-authentication/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 19:02:06 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/10/01/the-business-case-for-authentication/</guid>
		<description><![CDATA[From LWN&#8217;s coverage [subscription required] of Vincent Rijman&#8217;s[1] BruCON talk: If you use a non-HP cartridge, an HP printer prints with less quality, to make the user think the HP cartridges are better. The same happens with batteries in mobile phones: some phones raise their antenna power to the maximum if you use a battery [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=280&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>From LWN&#8217;s <a href="http://lwn.net/Articles/354012/">coverage</a> [subscription required] of Vincent Rijman&#8217;s[1] BruCON talk:<br />
<blockquote>If you use a non-HP cartridge, an HP printer prints with less quality, to make the user think the HP cartridges are better. The same happens with batteries in mobile phones: some phones raise their antenna power to the maximum if you use a battery from another company, just to drain the battery and make you think the phone&#8217;s own batteries are better.</p></blockquote>
<p>How ironic. Other cases spring to mind &#8212; the infamous Windows 3.1 beta, and Intel&#8217;s icc compiler choosing unoptimized code paths on AMD CPUs, but neither of those involve cryptography, unlike, apparently, the cases above.</p>
<p>[1] He of Rijndael / AES fameTechnorati</p>
<p>Tags: <a class="performancingtags" href="http://technorati.com/tag/anticompetitive" rel="tag">anticompetitive</a>, <a class="performancingtags" href="http://technorati.com/tag/authentication" rel="tag">authentication</a>, <a class="performancingtags" href="http://technorati.com/tag/brucon" rel="tag">brucon</a>, <a class="performancingtags" href="http://technorati.com/tag/lwn" rel="tag">lwn</a>, <a class="performancingtags" href="http://technorati.com/tag/security" rel="tag">security</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=37794b58-363f-86d7-9456-ec74c77cbaff" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/280/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=280&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/10/01/the-business-case-for-authentication/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=37794b58-363f-86d7-9456-ec74c77cbaff" medium="image" />
	</item>
		<item>
		<title>ContactBot: noiselessly telling people where you are</title>
		<link>http://hircus.wordpress.com/2009/09/29/contactbot-noiselessly-telling-people-where-you-are/</link>
		<comments>http://hircus.wordpress.com/2009/09/29/contactbot-noiselessly-telling-people-where-you-are/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 08:46:00 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/09/29/contactbot-noiselessly-telling-people-where-you-are/</guid>
		<description><![CDATA[Ever been in a situation where you are abroad for a short period of time, or you forgot your mobile phone charger, or otherwise not reachable at your normal phone number? I&#8217;ve been there, and it can be annoying to handle, unless you&#8217;re the kind of person who keeps lists (and even then, text messages [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=274&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ever been in a situation where you are abroad for a short period of time, or you forgot your mobile phone charger, or otherwise not reachable at your normal phone number? I&#8217;ve been there, and it can be annoying to handle, unless you&#8217;re the kind of person who keeps lists (and even then, text messages ain&#8217;t free!). Or worse, you have several mobile phones, and you juggle them around, and people don&#8217;t know which one you are on right now&#8230;</p>
<p>There&#8217;s Google Voice, and other forwarding services, but that would require giving people a different number; one whose voice quality is probably not as good. And if the new number is only needed temporarily, that seems like an overkill.</p>
<p>Enter <a href="http://github.com/hircus/contactbot">ContactBot</a>. It provides a Twitter bot; you can tell it your phone number and location, and your friends (people <i>you</i> follow, not people who follow you) can then query the bot for your whereabouts.</p>
<p>The test bot is <a href="http://twitter.com/hircus_contact">@hircus_contact</a>. It is rate-limited at the basic 150 messages per hour, so if you want to heavily test it, or do not want to give me your phone number (I run the bot, after all!), feel free to check out the code and run your own bot!</p>
<p>Note that the bot does not currently add you back, so you&#8217;d have to wait until I personally add you before you can send direct messages. Should take less than a day.</p>
<p>TODO: timezone support, so the bot can warn your tactless friends not to call you at 3 a.m., documentation, and test cases. And online help.</p>
<p>Current command set:
<ul>
<li>D hircus_contact set phone 555-5555</li>
<li>D hircus_contact set location New York, NY</li>
<li>D hircus_contact phone ma_cherie</li>
<li>D hircus_contact location ma_cherie</li>
</ul>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/bots" rel="tag">bots</a>, <a class="performancingtags" href="http://technorati.com/tag/contacts" rel="tag">contacts</a>, <a class="performancingtags" href="http://technorati.com/tag/python" rel="tag">python</a>, <a class="performancingtags" href="http://technorati.com/tag/software" rel="tag">software</a>, <a class="performancingtags" href="http://technorati.com/tag/twitter" rel="tag">twitter</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=9511a794-7ec1-8681-b8d9-12eb0c7cc496" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/274/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=274&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/09/29/contactbot-noiselessly-telling-people-where-you-are/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=9511a794-7ec1-8681-b8d9-12eb0c7cc496" medium="image" />
	</item>
		<item>
		<title>@ /home with btrfs</title>
		<link>http://hircus.wordpress.com/2009/09/14/home-with-btrfs/</link>
		<comments>http://hircus.wordpress.com/2009/09/14/home-with-btrfs/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 07:10:05 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/09/14/home-with-btrfs/</guid>
		<description><![CDATA[One inevitably learns that NTFS-3G, great though it is for exchanging data with Windows users, is not *quite* well-suited to heavy workloads such as serving Bittorrent files. And when one is particularly unlucky, the result is the kind of disk corruption of the kind that results in a lot of recovered directories and files with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=266&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One inevitably learns that NTFS-3G, great though it is for exchanging data with Windows users, is not *quite* well-suited to heavy workloads such as serving Bittorrent files. And when one is particularly unlucky, the result is the kind of disk corruption of the kind that results in a lot of recovered directories and files with generic names. And bogus directory entries-turned-files that point nowhere.</p>
<p>It&#8217;s particularly bitter-sweet when that happens when one &#8212; ok, I &#8212; was in the middle of moving the files to what I figured, as it turns out correctly, is a more stable solution: Btrfs. I might not want to have it on my root partition just yet &#8212; from past experience, running an RPM transaction on it can be rather tediously slow &#8212; but for a relatively small number of large files, it should do OK. And it did &#8212; though during one of the move operations, NTFS-3G gave up the ghost. Ah well.</p>
<p>Sufficiently impressed by Btrfs &#8212; seems to be holding well so far, while I&#8217;m catching up on some of the lost torrents &#8212; the next step is, of course, to run a home directory under it. Not crazy enough to put my main laptop to the test, I volunteered my netbook. Some recent Rawhide update means compositing on it is currently rather buggy &#8212; unusably flickering display with KMS, very slow without &#8212; so while I&#8217;m back on a plain GNOME desktop after having fun with the new GNOME Shell, I figured the netbook will serve as a Btrfs testbed. btrfs-convert happily converted 7G-worth of files from an ext4 partition in a couple of minutes. The conversion is even reversible, though after making sure everything is still there, I nuked the old image file. The important files are synced to the main laptop anyway (thanks, Unison!)</p>
<p>One small niggle &#8212; at the beginning, logging in through the console yields a bizarre error
<pre>
No directory /home/michel!
Logging in with home = "/".
</pre>
<p><tt>ls --lcontext</tt> shows that <tt>/home/michel</tt> is properly labeled &#8212; nice conversion job &#8211;&nbsp; so this was at first puzzling. As it turns out, though, <tt>/home</tt> was not. Restoring it to the proper context fixes matters.</p>
<p>Will update if there are any further issues, but so far, Btrfs looks like it&#8217;s going to stay. Back to tinkering with GNUstep and Étoile&#8230;</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/fedora" rel="tag">fedora</a>, <a class="performancingtags" href="http://technorati.com/tag/linux" rel="tag">linux</a>, <a class="performancingtags" href="http://technorati.com/tag/filesystem" rel="tag">filesystem</a>, <a class="performancingtags" href="http://technorati.com/tag/btrfs" rel="tag">btrfs</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=150a028c-bb92-8a63-be1c-36430979251d" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/266/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=266&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/09/14/home-with-btrfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=150a028c-bb92-8a63-be1c-36430979251d" medium="image" />
	</item>
		<item>
		<title>A new compiler, with static analyzer to boot</title>
		<link>http://hircus.wordpress.com/2009/09/10/a-new-compiler-with-static-analyzer-to-boot/</link>
		<comments>http://hircus.wordpress.com/2009/09/10/a-new-compiler-with-static-analyzer-to-boot/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 19:49:46 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/09/10/a-new-compiler-with-static-analyzer-to-boot/</guid>
		<description><![CDATA[The LLVM Compiler Infrastructure Project is getting ready for their 2.6 release later this month, and for the first time, the Clang compiler front-end is considered ready enough that a snapshot of it is provided, together with the LLVM snapshot itself.This is of great interest for several reasons. Firstly, Obj-C support in GCC has always [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=257&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://llvm.org/">LLVM</a> Compiler Infrastructure Project is getting ready for their 2.6 release later this month, and for the first time, the <a href="http://clang.llvm.org">Clang</a> compiler front-end is considered ready enough that a snapshot of it is provided, together with the LLVM snapshot itself.<br /><span id="more-257"></span><br />This is of great interest for several reasons. Firstly, Obj-C support in GCC has always been rather tenuous: NeXT, and later Apple, rather dislike that compiler suite&#8217;s licensing provision, and as a result the Obj-C runtime is rather neglected. New language features (e.g. Obj-C 2.0, with its garbage collection) will likely not see the light of day.</p>
<p>Secondly, between its support for a myriad of language front-ends, and its venerable age, GCC is not as easily extendable as it could have been. Hard to integrate it with a modern IDE, as Apple is noticing.</p>
<p>And lastly, LLVM IR is a *beautiful* assembly language to write to. Arbitrary-precision integer arithmetic? Check. Functions? Check. Support for various calling conventions? Check. Infinite SSA registers? Check.</p>
<p>Actually, that&#8217;s not even the last point. Clang also comes with a <a href="http://clang-analyzer.llvm.org/">static analyzer</a>, that lets you hook it into a GCC compilation process &#8212; amusingly, it does not seem to work yet when using Clang as the compiler. I&#8217;d be happy to stand corrected on this, though. It provides readable warnings in HTML!</p>
<p>And now all this is yours to test! If you are on Rawhide, install as such:</p>
<pre>
$ yum install llvm   # to install LLVM itself
$ yum install clang  # to install the clang compiler
</pre>
<p>Or get clang and clang-analyzer together by using</p>
<pre>&lt;br /&gt;$ yum install clang-analyzer&lt;br /&gt;</pre>
<p>Fedora 11 users will have to wait until slightly after 2.6 final is out. We are trying to get OpenGTL packaged, and at this point it does not build against LLVM 2.6 due to API changes.Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/compiler" rel="tag">compiler</a>, <a class="performancingtags" href="http://technorati.com/tag/fedora" rel="tag">fedora</a>, <a class="performancingtags" href="http://technorati.com/tag/linux" rel="tag">linux</a>, <a class="performancingtags" href="http://technorati.com/tag/llvm" rel="tag">llvm</a>, <a class="performancingtags" href="http://technorati.com/tag/programming" rel="tag">programming</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=72ec622d-218c-83b9-8504-122c1c73a256" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/257/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=257&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/09/10/a-new-compiler-with-static-analyzer-to-boot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=72ec622d-218c-83b9-8504-122c1c73a256" medium="image" />
	</item>
		<item>
		<title>OLPC is a failure in one aspect, but&#8230;</title>
		<link>http://hircus.wordpress.com/2009/09/10/olpc-is-a-failure-in-one-aspect-but/</link>
		<comments>http://hircus.wordpress.com/2009/09/10/olpc-is-a-failure-in-one-aspect-but/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 18:21:59 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[OLPC]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/09/10/olpc-is-a-failure-in-one-aspect-but/</guid>
		<description><![CDATA[Chris Blattman linked to an Alanna Shaikh post that buries the One Laptop per Child project: It’s time to call a spade a spade. OLPC was a failure. Businessweek called it two years ago. Now, Timothy Ogden, editor-in-chief of Philanthropy Action has made a compelling argument to give up on OLPC. He points out that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=255&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Chris Blattman <a href="http://chrisblattman.com/2009/09/10/links-i-liked-79/comment-page-1/#comment-6806">linked</a> to an Alanna Shaikh post that <a href="http://www.undispatch.com/node/8859">buries</a> the One Laptop per Child project:<br />
<blockquote>
<p class="MsoNormal">It’s time to call a spade a spade. OLPC was a failure. <a href="http://www.businessweek.com/innovate/NussbaumOnDesign/archives/2007/09/its_time_to_cal.html">Businessweek called it two years ago</a>. Now, Timothy Ogden, editor-in-chief of Philanthropy Action has <a href="http://www.miller-mccune.com/business_economics/computer-error-1390?article_page=1">made a compelling argument to give up on OLPC</a>. He points out that supporting de-worming programs has more impact on child learning than the OLPC laptops. <span>&nbsp;</span>The laptops were designed without end-user input, they cost too much both to produce <a href="http://joncamfield.com/blog/2009/08/its_raining_olpc_tcos_1_of_4.html">and to run</a>, and they’re now being outcompeted by commercial laptops. Only about a million OLPCs have shipped so far.</p>
</blockquote>
<p>Meanwhile, a commenter, <b>Gansler</b>, notes Shaikh&#8217;s rhetorical tendency:<br />
<blockquote>Alanna Shaikh and I worked together. I found then, as I do now, that her rhetoric is a bit thick, a bit black and white – all is doom and gloom (though sometimes it’s awesome and bright). I find her “Dream is Over” comment very much in line with that.</p></blockquote>
<p>While I do consider the OLPC laptop project itself rather a failure &#8212; its relentless pursuit of volume, its alienation of the teaching profession (the two are related, in a chicken-and-egg way: OLPC has to sell in spades to achieve low per-unit price; third-world educational budgets are limited; ergo some money has to be diverted from traditional, human-resource-heavy teaching approaches. Rather unethical at the very least, using thirld world students and teachers as human lab rats.</p>
<p>Whether it would have worked better had it targeted educational niches in the developed world &#8212; home-schooled kids, isolated rural kids wanting to collaborate with others across geographical distances, or as a supplement in general for public school education, since after all, studies <i>/do/</i> show that a high proportion of US teachers are not qualified to teach their subject &#8212; is an exercise is uchronia. We&#8217;d simply never know. We do know certain things, though:</p>
<ul>
<li>OLPC single-handedly removes the linkage between ultra-portability and ruggedness on one hand, and price on the other. Remember the pre-netbook days of super-expensive ultra-portables? Intel responded by introducing the Classmate, which begat the netbook, and the rest is history.</li>
<li>The OLPC user interface, Sugar, lives on in <a href="http://wiki.sugarlabs.org/go/Sugar_on_a_Stick">Sugar on a Stick</a>. It&#8217;s bootable from a USB stick, can be installed, and runs on commodity hardware which are aplenty even in underdeveloped countries.</li>
<li>The amazing LCD from OLPC is being commercialized by <a href="http://pixelqi.com/">Pixel Qi</a>, and is coming to a laptop near you within months. Obligatory plug: I maintain a <a href="http://www.facebook.com/home.php#/group.php?gid=7106791739&amp;ref=ts">Facebook group</a> that (attempts to) keep track of Pixel Qi announcements. Some of the videos are just simply delicious.</li>
</ul>
<p>So I guess this is turning into a eulogy. OLPC has failures in abundance, but it is a radical, category-creating product. Negroponte could have managed it better, but he should still be able to take pride of what the project managed to accomplish. You can&#8217;t make an omelette without breaking eggs, after all.</p>
<p>For those of you steeped in Judeo-Christian history, think of OLPC as the John the Baptist to netbooks&#8217; Christ: loud, insistent, un-PC, and martyred, but a success nonetheless.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=2619facf-9390-8047-a029-fd12285175b1" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/255/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=255&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/09/10/olpc-is-a-failure-in-one-aspect-but/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=2619facf-9390-8047-a029-fd12285175b1" medium="image" />
	</item>
		<item>
		<title>Fedora Mono goes on a diet</title>
		<link>http://hircus.wordpress.com/2009/08/25/fedora-mono-goes-on-a-diet/</link>
		<comments>http://hircus.wordpress.com/2009/08/25/fedora-mono-goes-on-a-diet/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 17:38:30 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2009/08/25/fedora-mono-goes-on-a-diet/</guid>
		<description><![CDATA[For a long time, Mono on Fedora has a reputation for being bloated. A lot of it is admittedly due to our packaging: install the most trivial application and hey presto, it pulls in almost the entire stack! Here&#8217;s what happened, at least as of the state-of-the-art on Rawhide, and a similar story on the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=247&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For a long time, Mono on Fedora has a reputation for being bloated. A lot of it is admittedly due to our packaging: install the most trivial application and hey presto, it pulls in almost the entire stack! Here&#8217;s what happened, at least as of the state-of-the-art on Rawhide, and a similar story on the stable releases:</p>
<ul>
<li>mono-core contains some documentation tool, so those pull in monodoc. monodoc alone is 7MB, so plus the tools that are erroneously in mono-core, more than that is wasted at this stage</li>
<li>mono-core also pulls in mono-extras and mono-web (how could mono-extras be extra if you always need to install it, you might ask? Good question! See bug 434709). These are not so bad, about 1.5MB in total</li>
<li><b>*but*</b> mono-web (Mono&#8217;s ASP.NET) is closely coupled with mono-winforms. And that&#8217;s 2MB.</li>
</ul>
<p>This Gordian knot has now be unknotted. As evidenced from the following transcript, below the cut:<br /><span id="more-247"></span>
<pre>$ sudo yum install f-spot
...
Dependencies Resolved

================================================================================
 Package            Arch     Version                            Repository
                                                                           Size
================================================================================
Installing:
 f-spot             x86_64   0.6.0.0-3.fc12                     rawhide   2.0 M
Installing for dependencies:
 gnome-sharp        x86_64   2.24.0-6.fc12                      rawhide   260 k
 gtk-sharp2         x86_64   2.12.7-6.fc12                      rawhide   593 k
 mono-addins        x86_64   0.4-8.20091702svn127062.1.fc12     rawhide   365 k
 mono-core          x86_64   2.4.2.3-1.fc12                     rawhide   8.7 M
 mono-data          x86_64   2.4.2.3-1.fc12                     rawhide   912 k
 mono-data-sqlite   x86_64   2.4.2.3-1.fc12                     rawhide   104 k
 mono-extras        x86_64   2.4.2.3-1.fc12                     rawhide   886 k
 mono-web           x86_64   2.4.2.3-1.fc12                     rawhide   416 k
 mono-winforms      x86_64   2.4.2.3-1.fc12                     rawhide   1.8 M
 monodoc            x86_64   2.4.2.3-1.fc12                     rawhide   6.9 M
 ndesk-dbus         x86_64   0.6.1a-7.fc12                      rawhide    46 k
 ndesk-dbus-glib    x86_64   0.4.1-7.fc12                       rawhide    11 k

Transaction Summary
================================================================================
Install      13 Package(s)
Upgrade       0 Package(s)

Total download size: 23 M
Is this ok [y/N]: n

$ echo Now these are the only packages that are actually needed...
$ du -chs mono*.rpm
6.9M    mono-core-2.4.2.3-2.fc12.x86_64.rpm
912K    mono-data-2.4.2.3-2.fc12.x86_64.rpm
104K    mono-data-sqlite-2.4.2.3-2.fc12.x86_64.rpm
2.0M    mono-web-2.4.2.3-2.fc12.x86_64.rpm
1.9M    mono-winforms-2.4.2.3-2.fc12.x86_64.rpm
12M     total

$ sudo yum install f-spot
...
Dependencies Resolved

================================================================================
 Package           Arch     Version                             Repository
                                                                           Size
================================================================================
Installing:
 f-spot            x86_64   0.6.0.0-3.fc12                      rawhide   2.0 M
Installing for dependencies:
 gnome-sharp       x86_64   2.24.0-6.fc12                       rawhide   260 k
 gtk-sharp2        x86_64   2.12.7-6.fc12                       rawhide   593 k
 mono-addins       x86_64   0.4-8.20091702svn127062.1.fc12      rawhide   365 k
 ndesk-dbus        x86_64   0.6.1a-7.fc12                       rawhide    46 k
 ndesk-dbus-glib   x86_64   0.4.1-7.fc12                        rawhide    11 k

Transaction Summary
================================================================================
Install       6 Package(s)
Upgrade       0 Package(s)

Total download size: 3.2 M
Is this ok [y/N]: y
</pre>
<p><!--more--><br />Download size before: 23 MB<br />Download size after:  15 MB</p>
<p>That&#8217;s roughly a one-third decrease in size &#8212; and that&#8217;s for an application that makes heavy use of the Mono framework. You will get better luck with anything that does not touch mono-web.</p>
<p>These should show up in Rawhide real soon now &#8212; and F-11 after the Mono updates currently percolating their way there have settled down.</p>
<p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=f7de98fe-f272-828b-b9d5-2ee12f7920b3" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/247/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=247&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/08/25/fedora-mono-goes-on-a-diet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=f7de98fe-f272-828b-b9d5-2ee12f7920b3" medium="image" />
	</item>
		<item>
		<title>Social search: Aardvark invitations</title>
		<link>http://hircus.wordpress.com/2009/04/01/social-search-aardvark-invitations/</link>
		<comments>http://hircus.wordpress.com/2009/04/01/social-search-aardvark-invitations/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 02:34:49 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Search]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=244</guid>
		<description><![CDATA[Aardvark is a new, Web 2.0 product aiming to bring social search to the masses: unlike traditional search engines, that crawl and index a massive number of pages, Aardvark acts more like a router: it tries to understand enough of the question to determine its topic (and asks you when it fails), and then offer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=244&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aardvark is a new, Web 2.0 product aiming to bring social search to the masses: unlike traditional search engines, that crawl and index a massive number of pages, Aardvark acts more like a router: it tries to understand enough of the question to determine its topic (and asks you when it fails), and then offer it to online users, starting with those who have declared an expertise in the given topic.</p>
<p>I have several <a href="http://vark.com">Aardvark</a> invitations available. Reply if you&#8217;re interested!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/244/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=244&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/04/01/social-search-aardvark-invitations/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Rawhide on Dell Mini 9</title>
		<link>http://hircus.wordpress.com/2009/03/09/rawhide-on-dell-mini-9/</link>
		<comments>http://hircus.wordpress.com/2009/03/09/rawhide-on-dell-mini-9/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 06:32:25 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=240</guid>
		<description><![CDATA[My new netbook arrived on Thursday, 13 days earlier than expected. Dell really need to work on their delivery estimates, but it&#8217;s better than having it be late&#8230; This was one day after I came down with a really bad cold &#8212; still shrugging it off now. Productivity plummets to no end, but setting up [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=240&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My new netbook arrived on Thursday, 13 days earlier than expected. Dell really need to work on their delivery estimates, but it&#8217;s better than having it be late&#8230;</p>
<p>This was one day after I came down with a really bad cold &#8212; still shrugging it off now. Productivity plummets to no end, but setting up a new computer is a more fun way to while away illness than reading a book (sorry, Orhan Pamuk; I think My Name is Red is your one masterpiece. The others are too meandering, especially when one can&#8217;t concentrate well).</p>
<p>The initial plan was to install Rawhide (ambitious!) over the CS department&#8217;s gigabit network, using the btrfs file system. This turns out to be unworkable &#8212; the r8169 driver mistakes the netbook&#8217;s 8101E as a gigabit adapter, whereas it&#8217;s only Fast Ethernet. I managed to get a DHCP lease once, on Dell&#8217;s Ubuntu installation.</p>
<p>Several network install attempts follow, over a 100 mbps link, using F11 alpha&#8217;s boot.iso. These all mysteriously fail, sometimes maddeningly close to completion. Even with &#8216;maxcpus=0 selinux=0&#8242;.</p>
<p>Giving up on this approach, I opted next for a hard drive install: use livecd-tools to put boot.iso into a thumb drive, and copy the ISO image to the drive&#8217;s root. It appears that this is insufficient &#8212; images/install.img has to be on the drive as well. This allows installation to succeed.</p>
<p>And then disappointment comes.</p>
<ul>
<li>btrfs checksumming makes any RPM transaction mind-numbingly slow</li>
<li>Kernel panics. Even with maxcpus=0. This might actually explain the network install failures</li>
<li>Kernel panic at boot using newer kernels</li>
</ul>
<p>So off with btrfs and on with ext4. Too bad; the SSD optimizations in btrfs look nice. One wonders if it&#8217;s the early production status, or if it does actually impose a certain amount of computational overhead making it unsuitable to netbooks (or any single-core computers, for that matter. No, hyperthreading does not count).</p>
<p>I&#8217;ve had a fully up-to-date Rawhide all of Sunday and it&#8217;s a joy to use. 512 MB is rather usable, albeit forcing a certain discipline when it comes to browser tabs. Will put in the 2GB upgrade when the new wireless card arrives, so I don&#8217;t have to open the hood twice. Ironically, that card shipped promptly but has since been wandering the limbo of Chinese customs&#8230; why is it that the cool electronics products inevitably come from Chinese eBay sellers&#8230;</p>
<p>Remaining bugs:</p>
<ul>
<li>
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=489255">Cannot be used on Gigabit networks</a></li>
<li><a href="https://bugzilla.rpmfusion.org/show_bug.cgi?id=425">Broadcom WL causing hard lock-up with PEAP authentication</a></li>
<li><a href="https://bugzilla.redhat.com/show_bug.cgi?id=484179">Internal mic not working</a>. Same problem on my other Dell laptop. ALSA can be such a nightmare..</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=240&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2009/03/09/rawhide-on-dell-mini-9/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Application bundles: system integration</title>
		<link>http://hircus.wordpress.com/2008/08/02/application-bundles-system-integration/</link>
		<comments>http://hircus.wordpress.com/2008/08/02/application-bundles-system-integration/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 20:46:58 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2008/08/02/application-bundles-system-integration/</guid>
		<description><![CDATA[In my comments on the recent LWN seed &#8220;Will LSB 4 Standardize Linux?&#8221;, I made the argument in favour of application bundles: The advantage of bundles is that it contains more metadata than a simple tarball.Compatibility problems might arise, but at least the application launcher could provide moremeaningful feedback to the user. Or even integrate [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=234&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In my comments on the recent LWN seed <a href="http://lwn.net/Articles/292298/">&#8220;Will LSB 4 Standardize Linux?&#8221;</a>, I made the argument <a href="http://lwn.net/Articles/292489/">in favour of application bundles</a>:<br />
<blockquote>The advantage of bundles is that it contains more metadata than a simple tarball.<br />Compatibility problems might arise, but at least the application launcher could provide more<br />meaningful feedback to the user.</p>
<p>Or even integrate with the OS&#8217; version control system, especially now that Linux has<br />PackageKit, to say &#8220;hey, the user wants to run this new bundle that needs libfoo-x.y, install<br />whatever package is necessary to provide that&#8221;.</p>
<p>You&#8217;d need a package management system that automatically scans built packages for what<br />libraries they provide; RPM does that, not sure whether DPKG does.</p></blockquote>
<p>To provide the context: the discussion was on how application vendors can easily target LSB 4 with a single binary image. My post was in direct response to an argument by another reader, that complicated schemes do not add much real value over tarballs, to which I begged to differ, arguing that the metadata available in bundles make the integration of binary applications much easier.</p>
<p>The issue of binary distribution triggers an allergic reaction from some people in the FLOSS community, a reaction that is, in my opinion, rather unwarranted. Even Debian provides, in their non-free repositories, stub packages that will download binary packages and create a standard .DEB package out of them. There are clear advantages to making binary-only applications more well-behaved, in fact the same argument for having package management systems with graph-based dependency tracking in the first place: dependency, dependency, dependency. When installing/upgrading a package, you&#8217;d want all its dependencies to be pulled in automatically. When upgrading a library, you want to make sure that all its dependents will still work. When there is a security vulnerability, you want a non-techie end-user to be notified, preferably within a fixed period of the vulnerability being made public (through periodic updates), or the next time the user launches the application concerned.</p>
<p>There have been attempts to create a one-size-fits-all universal package format, that&#8217;s distribution-independent and vendor-friendly. This is a red herring, IMHO, for the same reason that the Unix market splintered in the &#8217;70s and &#8217;80s, and that we have a proliferation of Linux distributions &#8212; and multiple independent BSD operating systems, each of them with their own ports tree (DragonFly being an exception in that they share NetBSD&#8217;s pkgsrc system). It&#8217;s nice to control your own packaging format, or if it&#8217;s a shared format (like RPM is), to control the naming conventions, etc.</p>
<p>What application bundles can do is provide the best of both worlds: vendors can ship binary-only bundles that declare dependencies in a least-common denominator format that the LSB can standardize, for example:</p>
<pre>&lt;br /&gt;&lt;Provides&gt;
  &lt;lib&gt;libbaz-a.b&lt;/lib&gt;
&lt;/Provides&gt;
&lt;Requires&gt;
  &lt;lsb-version&gt;4.0&lt;/lsb-version&gt;
  &lt;bin&gt;convert&lt;/bin&gt;
  &lt;lib&gt;libfoo-x.y&lt;/lib&gt;
  &lt;lib&gt;libbar-z.w&lt;/lib&gt;
&lt;/Requires&gt;
</pre>
<p>The first time the bundle is launched, the launcher can add it to its index of available bundles. If any of the dependencies are missing, the system-native package management (or a meta management infrastructure such as PackageKit) is triggered to install the missing dependencies. The bundles themselves can be placed anywhere (though library bundles &#8212; in NextStep/OpenStep/OS X parlance, &#8220;frameworks&#8221; should probably be placed in pre-determined paths, e.g. /Library/Frameworks, /System/Library/Frameworks and ~/Library/Frameworks).</p>
<p>The only problem is that the system-provided libraries might not be ABI-compliant with the specified LSB standard, for example, libraries written in C++ after a compiler ABI change. There would probably be a need for the native packages to declare their compliance, or non-compliance, with LSB standards.</p>
<p>And one last nice thing about bundles: fat binaries. It&#8217;s easy to provide multi-arch bundles, and stripping away unwanted architectures is a simple <tt>rm</tt> operation.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/234/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/234/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/234/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=234&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2008/08/02/application-bundles-system-integration/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Vista: 64-bit usage climbing</title>
		<link>http://hircus.wordpress.com/2008/08/02/vista-64-bit-usage-climbing/</link>
		<comments>http://hircus.wordpress.com/2008/08/02/vista-64-bit-usage-climbing/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 17:01:03 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2008/08/02/vista-64-bit-usage-climbing/</guid>
		<description><![CDATA[We from the multilib-enabled Linux world extend a belated welcome to our Windows-using counterparts clipped from arstechnica.com Unlike Apple, Microsoft does not control the hardware that its software runs on. This means that Apple can more easily move all its users to an x64 operating system: all Macs currently have 64-bit CPUs, and Snow Leopard [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=232&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div> We from the multilib-enabled Linux world extend a belated welcome to our Windows-using counterparts <img src="http://clipmarks.com/images/icons/smilies/happy.gif?r=2" style="margin-bottom:-4px;" alt="" /> </div>
<table cellpadding="0" cellspacing="0" width="100%" style="font-family:arial;color:#333333;background:#ffffff;border:solid 4px #e5e5e5;width:100%;clear:left;margin:12px 0;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" class="CM_CTB_Content_Wrap" style="background-color:#ffffff;margin:0;padding:0;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" style="border-bottom:solid 1px #dcdcdc;white-space:nowrap;margin-bottom:8px;background-color:#eeeeee;background-image:url('http://clipmarks.com/images/source-bg.gif');background-repeat:repeat-x;height:24px;line-height:24px;vertical-align:middle;padding-bottom:4px;color:#666666;font-size:10px;">
<tr>
<td valign="top"><a href="http://clipmarks.com/clipmark/A706D2DD-C35E-41B1-90E7-0388A567F306/" title="go to this clipmark"><img src="http://content.clipmarks.com/blog_icon/49a5b6be-45f5-4bd7-bc1d-bec55df146db/A706D2DD-C35E-41B1-90E7-0388A567F306/" alt="" width="19" height="19" border="0" style="vertical-align:middle;display:inline;border:none;float:none;margin:0 4px;" /></a>clipped from <a title="http://arstechnica.com/journals/microsoft.ars/2008/07/31/microsoft-number-of-64-bit-vista-pcs-doubled-in-three-months" href="http://arstechnica.com/journals/microsoft.ars/2008/07/31/microsoft-number-of-64-bit-vista-pcs-doubled-in-three-months">arstechnica.com</a></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="100%" style="text-align:left;background:transparent;border:none;margin:4px 0 8px;padding:0 8px;">
<tr>
<td valign="top"><!-- CLIPPED FROM: http://arstechnica.com/journals/microsoft.ars/2008/07/31/microsoft-number-of-64-bit-vista-pcs-doubled-in-three-months --><P><br />
<IMG src="http://media.arstechnica.com/journals/microsoft.media/windows_vista.jpg" class="ImageRight Bordered" /><br />
Unlike Apple, Microsoft does not control the hardware that its software runs on. This means that Apple can more easily move all its users to an x64 operating system: all Macs currently have 64-bit CPUs, and Snow Leopard is rumored to be a 64-bit-only release. Windows 7, on the other hand, will still be released in x86 and x64. Microsoft would prefer not to make Windows 7 available on computers with 32-bit CPUs (indeed, Windows 7 <EM>Server</EM> will be x64-only), but the decision is driven by software compatibility demands.<br />
</P></td>
</tr>
</table>
</td>
</tr>
</table>
<div style="margin:0 6px 6px 4px;">
<table style="font-size:11px;border-spacing:0;padding:0;" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="background:transparent;border-width:0;padding:0;">&nbsp;</td>
<td align="right" style="background:transparent;width:107px;border-width:0;padding:0;" width="107"><a href="http://clipmarks.com/share/A706D2DD-C35E-41B1-90E7-0388A567F306/blog/" title="blog or email this clip"><img src="http://content8.clipmarks.com/images/c2b-foot.png" border="0" alt="blog it" width="107" height="17" style="border-width:0;margin:0;padding:0;" /></a></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/232/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/232/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=232&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2008/08/02/vista-64-bit-usage-climbing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://clipmarks.com/images/icons/smilies/happy.gif?r=2" medium="image" />

		<media:content url="http://content.clipmarks.com/blog_icon/49a5b6be-45f5-4bd7-bc1d-bec55df146db/A706D2DD-C35E-41B1-90E7-0388A567F306/" medium="image" />

		<media:content url="http://content8.clipmarks.com/images/c2b-foot.png" medium="image">
			<media:title type="html">blog it</media:title>
		</media:content>
	</item>
		<item>
		<title>ABI breakage and package naming</title>
		<link>http://hircus.wordpress.com/2008/07/15/abi-breakage-and-package-naming/</link>
		<comments>http://hircus.wordpress.com/2008/07/15/abi-breakage-and-package-naming/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 15:03:36 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=230</guid>
		<description><![CDATA[Planète Béranger has raised the ABI issue surrounding Fedora and RHEL&#8217;s recent upgrade to Firefox 3. In short, RHEL 5.2 ships with Firefox updated to the new xulrunner-based Firefox 3, but its Eclipse and libswt3-gtk2 is still at 3.2, which depends on the old gtkmozembed interface. This seems like a good argument in favour of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=230&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Planète Béranger has <a href="http://beranger.org/index.php?page=diary&amp;2008/07/13/20/22/20-sun-fights-to-invalidate-the-fir">raised the ABI issue</a> surrounding Fedora and RHEL&#8217;s recent upgrade to Firefox 3. In short, RHEL 5.2 ships with Firefox updated to the new xulrunner-based Firefox 3, but its Eclipse and libswt3-gtk2 is still at 3.2, which depends on the old gtkmozembed interface.</p>
<p>This seems like a good argument in favour of adopting Debian-style package naming, when it comes to libraries: append the ABI version to the (sub)package name containing libraries that are linked to from other packages. So the old Firefox 1.5 would have a libgtkmozembed18 subpackage, that can be shipped with RHEL 5.2 without shipping the rest of Firefox 1.5 (technically speaking, the ABI version is 1.8.x.y, as prior to XULRunner 1.9 the ABI is ever-changing, but packages already handle this by depending on the specific version and release number anyway)</p>
<p>This is already done from time to time in the RHEL/Fedora world, in the form of compatibility packages, but making it the default would avoid this kind of breakage, where a package <em>/has/</em> to be updated (due to upstream EOL) but parts of it are needed downstream.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/230/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/230/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/230/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=230&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2008/07/15/abi-breakage-and-package-naming/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Midori : NT/Vista :: NT : Win95</title>
		<link>http://hircus.wordpress.com/2008/07/08/midori-ntvista-nt-win95/</link>
		<comments>http://hircus.wordpress.com/2008/07/08/midori-ntvista-nt-win95/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 04:09:55 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2008/07/08/midori-ntvista-nt-win95/</guid>
		<description><![CDATA[Looks like Microsoft is preparing for their next great leap forward in OS design. Just as Windows NT&#8217;s kernel is a clean room without any DOS baggage, Midori is based on the Singularity research kernel, that is written in .NET and utilizes a new compiler backend to output native code. This will be rather interesting [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=229&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div> Looks like Microsoft is preparing for their next great leap forward in OS design. Just as Windows NT&#8217;s kernel is a clean room without any DOS baggage, Midori is based on the Singularity research kernel, that is written in .NET and utilizes a new compiler backend to output native code.</p>
<p>This will be rather interesting to watch. The idea of writing an OS kernel in a strongly-typed language makes sense &#8212; witness House and Singularity. The effort is not expected to be ready for years &#8212; this is not Windows 7, and I&#8217;d guess there will still be a traditional Windows 8, even if Midori is ready by then.</p>
<p>Incidentally, the OSS community already has a strongly-typed virtual machine designed for efficient native code generation: LLVM. If one takes a Unix kernel (or, more practically, microkernel) and get it to compile using LLVM&#8217;s C front-end, one then has the opportunity to gradually rewrite it one module at a time in any language with LLVM front-ends. In the time it will take for Midori to get ready, would there perhaps be an ML-like front-end to LLVM? </div>
<table cellpadding="0" cellspacing="0" width="100%" style="font-family:arial;color:#333333;background:#ffffff;border:solid 4px #e5e5e5;width:100%;clear:left;margin:12px 0;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" class="CM_CTB_Content_Wrap" style="background-color:#ffffff;margin:0;padding:0;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" style="border-bottom:solid 1px #dcdcdc;white-space:nowrap;margin-bottom:8px;background-color:#eeeeee;background-image:url('http://clipmarks.com/images/source-bg.gif');background-repeat:repeat-x;height:24px;line-height:24px;vertical-align:middle;padding-bottom:4px;color:#666666;font-size:10px;">
<tr>
<td valign="top"><a href="http://clipmarks.com/clip-to-blog/" title="clipmarks' clip-to-blog"><img src="http://content.clipmarks.com/blog_icon/43b16aa0-53c8-4dde-82be-1c92e6859880/58FBD3ED-011C-42EE-B540-AB69DD8E34C7/" alt="" width="19" height="19" border="0" style="vertical-align:middle;display:inline;border:none;float:none;margin:0 4px;" /></a>clipped from <a title="http://arstechnica.com/journals/microsoft.ars/2008/07/08/midori-a-non-windows-os-in-the-works-not-just-experimental?bub" href="http://arstechnica.com/journals/microsoft.ars/2008/07/08/midori-a-non-windows-os-in-the-works-not-just-experimental?bub">arstechnica.com</a></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="100%" style="text-align:left;background:transparent;border:none;margin:4px 0 8px;padding:0 8px;">
<tr>
<td valign="top"><!-- CLIPPED FROM: http://arstechnica.com/journals/microsoft.ars/2008/07/08/midori-a-non-windows-os-in-the-works-not-just-experimental?bub --><P>Every once in a while, an article gets posted somewhere in the blogosphere about how Microsoft needs to release a complete Windows rewrite, something along the lines of what Apple did with Mac OS X. Most people realize that Microsoft is in no position to pull a stunt like that at the moment; it&#8217;s hard to see Microsoft phasing out support for a billion-Windows-PC-strong user base, but that day may one day come, perhaps thanks to robust virtualization technology.
</p>
<p> <P><br />
But in the meantime, Microsoft has settled on rewriting bits and parts of the Windows operating system as it sees fit, with Vista being one of the biggest rewrites (a fact which partially explains the many hardware and software compatibility issues XP&#8217;s successor experienced at launch). Speculation around a non-Windows operating system in the works at Microsoft has been present for years, but recent trustworthy tidbits of information have found their way into the hands of Microsoft ZDNet bloggers Mary Jo Foley and Ed Bott.<br />
</P></td>
</tr>
</table>
</td>
</tr>
</table>
<div style="margin:0 6px 6px 4px;">
<table style="font-size:11px;border-spacing:0;padding:0;" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="background:transparent;border-width:0;padding:0;">&nbsp;</td>
<td align="right" style="background:transparent;width:107px;border-width:0;padding:0;" width="107"><a href="http://clipmarks.com/share/58FBD3ED-011C-42EE-B540-AB69DD8E34C7/blog/" title="blog or email this clip"><img src="http://content8.clipmarks.com/images/c2b-foot.png" border="0" alt="blog it" width="107" height="17" style="border-width:0;margin:0;padding:0;" /></a></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/229/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/229/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=229&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2008/07/08/midori-ntvista-nt-win95/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://content.clipmarks.com/blog_icon/43b16aa0-53c8-4dde-82be-1c92e6859880/58FBD3ED-011C-42EE-B540-AB69DD8E34C7/" medium="image" />

		<media:content url="http://content8.clipmarks.com/images/c2b-foot.png" medium="image">
			<media:title type="html">blog it</media:title>
		</media:content>
	</item>
		<item>
		<title>Python tail-call optimization, done right</title>
		<link>http://hircus.wordpress.com/2008/06/21/python-tail-call-optimization-done-right/</link>
		<comments>http://hircus.wordpress.com/2008/06/21/python-tail-call-optimization-done-right/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 18:08:11 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2008/06/21/python-tail-call-optimization-done-right/</guid>
		<description><![CDATA[It occured to me this morning to revisit the issue of tail-call-optmization using function decorators in Python. Last time I checked, the working trick involves stack inspection (works only in CPython) and throwing an exception whenever a tail call is detected. In short: non-portable and slow. I posted an enhancement here that allows for mutual [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=227&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div> It occured to me this morning to revisit the issue of tail-call-optmization using function decorators in Python. Last time I checked, the working trick involves stack inspection (works only in CPython) and throwing an exception whenever a tail call is detected. In short: non-portable and slow. I posted <a href="http://hircus.wordpress.com/2006/03/02/python-tail-call-decorator/">an enhancement</a> here that allows for mutual recursion (function A tail-calling function B tail-calling function A &#8230;), but it did not occur to me that the stack inspection hack, clever as it is, could be improved on.</p>
<p>Improved on it has: Miguel Perez is reporting that his solution runs pretty much as fast as normal looping. Supports mutual recursion and is completely portable too.</p>
</p></div>
<table cellpadding="0" cellspacing="0" width="100%" style="font-family:arial;color:#333333;background:#ffffff;border:solid 4px #e5e5e5;width:100%;clear:left;margin:12px 0;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" class="CM_CTB_Content_Wrap" style="background-color:#ffffff;margin:0;padding:0;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" style="border-bottom:solid 1px #dcdcdc;white-space:nowrap;margin-bottom:8px;background-color:#eeeeee;background-image:url(http://clipmarks.com/images/source-bg.gif);background-repeat:repeat-x;height:24px;line-height:24px;vertical-align:middle;padding-bottom:4px;color:#666666;font-size:10px;">
<tr>
<td valign="top"><a href="http://clipmarks.com/clip-to-blog/" title="clipmarks' clip-to-blog"><img src="http://content.clipmarks.com/blog_icon/5e0b9106-9353-47d8-a185-a9db888200bc/05F53D18-6896-4275-901A-4194F4D18B4C/" alt="" width="19" height="19" border="0" style="vertical-align:middle;display:inline;border:none;float:none;margin:0 4px;" /></a>clipped from <a title="http://groups.google.com/group/comp.lang.python/msg/9b047d1392f2b8ec" href="http://groups.google.com/group/comp.lang.python/msg/9b047d1392f2b8ec">groups.google.com</a></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="100%" style="text-align:left;background:transparent;border:none;margin:4px 0 8px;padding:0 8px;">
<tr>
<td valign="top"><!-- CLIPPED FROM: http://groups.google.com/group/comp.lang.python/msg/9b047d1392f2b8ec --><FONT face="Courier, Monospaced">Please critique this tail call optimizing decorator I&#8217;ve written. I&#8217;ve tried to fix the pitfalls of other proposed decorators, and the result is this one that supports mutual recursion, does not use exceptions, stack inspection or any implementation-dependent hack, and is pretty short and fast &#8211; the fastest out of the ones I could find and try. In fact, in tail-recursive environments I tested the impact of using the decorator is difficult to even measure, as the extra time the decorator takes to run is probably saved by the better use of cache memory. The only caveat is that if used in a function that&#8217;s not called in a tail-recursive fashion, bad things will happen.</FONT></td>
</tr>
</table>
</td>
</tr>
</table>
<div style="margin:0 6px 6px 4px;">
<table style="font-size:11px;border-spacing:0;padding:0;" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="background:transparent;border-width:0;padding:0;">&nbsp;</td>
<td align="right" style="background:transparent;width:107px;border-width:0;padding:0;" width="107"><a href="http://clipmarks.com/share/05F53D18-6896-4275-901A-4194F4D18B4C/blog/" title="blog or email this clip"><img src="http://content8.clipmarks.com/images/c2b-foot.png" border="0" alt="blog it" width="107" height="17" style="border-width:0;margin:0;padding:0;" /></a></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/227/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/227/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/227/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=227&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2008/06/21/python-tail-call-optimization-done-right/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://content.clipmarks.com/blog_icon/5e0b9106-9353-47d8-a185-a9db888200bc/05F53D18-6896-4275-901A-4194F4D18B4C/" medium="image" />

		<media:content url="http://content8.clipmarks.com/images/c2b-foot.png" medium="image">
			<media:title type="html">blog it</media:title>
		</media:content>
	</item>
		<item>
		<title>Wide Finder: take 2</title>
		<link>http://hircus.wordpress.com/2008/06/15/wide-finder-take-2/</link>
		<comments>http://hircus.wordpress.com/2008/06/15/wide-finder-take-2/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 04:05:05 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=226</guid>
		<description><![CDATA[Tim Bray&#8217;s revised Wide Finder project [ongoing.org] has been ongoing for a few weeks now, and I&#8217;ve finally took the time to design and prototype an implementation. What The goal is to evaluate the performance of middle-of-the-road, not embarrassingly parralelizable tasks on modern-day multi-core hardware. Such as the Sun T2000 servers. Fittingly, the task is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=226&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tim Bray&#8217;s <a href="http://www.tbray.org/ongoing/When/200x/2008/05/01/Wide-Finder-2">revised Wide Finder project</a> [ongoing.org] has been ongoing for a few weeks now, and I&#8217;ve finally took the time to design and prototype an implementation.</p>
<p><strong>What</strong><br />
The goal is to evaluate the performance of middle-of-the-road, not embarrassingly parralelizable tasks on modern-day multi-core hardware. Such as the Sun T2000 servers. Fittingly, the task is to parse a multi-gigabyte web server log file and compile some aggregate statistics.</p>
<p><strong>Design</strong><br />
The solution I came up with for the earlier iteration of the contest, coded in different versions (C++, OCaml and JoCaml) is fundamentally sound, though rather unoptimized (picking up two-and-a-half different languages in one weekend is a good way to find out how much there is to know about, say, C++ stream buffering). With the benefit of hindsight, and given that we are several weeks into the project and there are <a href="http://wikis.sun.com/display/WideFinder/Results">strong implementations already</a> [wikis.sun.com], the idea is to find an unexplored niche.</p>
<p>Short recap of the main implementations:</p>
<ul>
<li>OCaml: Fernandez is ahead of the pack again, the only solution in the 7 minutes</li>
<li>make+C+awk+sh: Perl is dead, but shell scripting is enjoying a renaissance with parallelizable tasks. 8 minutes</li>
<li>Java-based solutions: in the 13-17 minutes range are the various JVM solutions, from Java, Groovy and Scala to Fan, an interesting Ruby-like language for the JVM. Reminds me of .NET&#8217;s Boo.
</li>
<li>Python, Ruby: in the 20+ minutes range. Python multiprocessing is not that efficient yet; I believe an improved Stackless Python solution might be forthcoming</li>
</ul>
<p>I dabbled with a Common Lisp solution; it works and appears to be competitive, when tried on a partial log file. Exploring the available options for parallelism, however, revealed the disconcerting fact: no freely-available Common Lisp compilers have good multi-threading, or even multi-processing (without shared memory) on Solaris! Even worse, the SBCL incompatibility with GCC 4.3 means that even the Linux version on my Fedora machine is several months old, and does not have the threading library.</p>
<p>So it&#8217;s back to Java. Perusing the blogs of the Java and Scala programmers, it appears that the common complain is .. regular expressions. So the hunt was on for a good regular expression library. Joni, a port of the Ruby Oniguruma regex library to the JVM used by the JRuby project, appears ideal: low-level and supposedly very fast. Until one hits the total lack of documentation. So that&#8217;s off the table. Ended up using <a href="http://www.brics.dk/automaton/">dk.brics.automaton</a>, which appears to perform well enough, even when parsing Unicode strings.</p>
<p>The nice thing about using Java is that, if you hit a performance brick wall, chances are that many other people have been there before you. The problem I have, the need to have random access within a file (so different threads can start at different offsets (Java&#8217;s RandomAccessFile is good for this) combined with the need for buffered I/O (BufferedReader is good, but there is no RandomAccessReader !) is solved by the nice folks at Biojava.com. Great!</p>
<p>On my system (2 GHz Core 2, 2 GB RAM, 5400 rpm HDD, Fedora 9 x64), Ruby takes about 2.2 seconds, while my Java implementation running on OpenJDK 1.6 (64-bit) takes about 1.6-1.7 seconds with 1 thread and 1.4-1.5 seconds with 2 threads. Close to <a href="http://grep.ro/blog/2008/05/wide_finder_going_parallel">the 1.2+ seconds time</a> that Alex reported for Python, but hey, we&#8217;re paying the Java start-up cost here.</p>
<p>Will update when I get an account on the test server. 40GB dataset, here I come! In the meantime, time to look for opportunities to use a JVM-based language better suited for the task. The Java code is a tad bit verbose.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/226/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/226/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/226/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=226&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2008/06/15/wide-finder-take-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>C types 101</title>
		<link>http://hircus.wordpress.com/2008/06/08/c-types-101/</link>
		<comments>http://hircus.wordpress.com/2008/06/08/c-types-101/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 01:12:17 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2008/06/08/c-types-101/</guid>
		<description><![CDATA[I was cleaning up the code of an application that I&#8217;m packaging for Fedora, and was Googling for information on size_t (in the code, a size_t variable was being printed as a normal integer (%d), which triggered a compiler warning, and I forgot what the relevant option is. Ended up finding it in printf&#8217;s manpage) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=223&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div> I was cleaning up the code of an application that I&#8217;m packaging for Fedora, and was Googling for information on <strong>size_t</strong> (in the code, a size_t variable was being printed as a normal integer (<tt>%d</tt>), which triggered a compiler warning, and I forgot what the relevant option is. Ended up finding it in printf&#8217;s manpage) when I discovered this rather well-written gem. </div>
<table cellpadding="0" cellspacing="0" width="100%" style="font-family:arial;color:#333333;background:#ffffff;border:solid 4px #e5e5e5;width:100%;clear:left;margin:12px 0;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" class="CM_CTB_Content_Wrap" style="background-color:#ffffff;margin:0;padding:0;">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" width="100%" style="border-bottom:solid 1px #dcdcdc;white-space:nowrap;margin-bottom:8px;background-color:#eeeeee;background-image:url('http://clipmarks.com/images/source-bg.gif');background-repeat:repeat-x;height:24px;line-height:24px;vertical-align:middle;padding-bottom:4px;color:#666666;font-size:10px;">
<tr>
<td valign="top"><a href="http://clipmarks.com/clip-to-blog/" title="clipmarks' clip-to-blog"><img src="http://content.clipmarks.com/blog_icon/fb0e31ea-247b-4396-b879-55723cb0754c/7AF356FF-F474-45F5-AE3E-808FDE1D80F8/" alt="" width="19" height="19" border="0" style="vertical-align:middle;display:inline;border:none;float:none;margin:0 4px;" /></a>clipped from <a title="http://www.embedded.com/columns/programmingpointers/200900195" href="http://www.embedded.com/columns/programmingpointers/200900195">www.embedded.com</a></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="100%" style="text-align:left;background:transparent;border:none;margin:4px 0 8px;padding:0 8px;">
<tr>
<td valign="top"><!-- CLIPPED FROM: http://www.embedded.com/columns/programmingpointers/200900195 --><P><FONT size="3" face="Verdana" color="#003366"><B>Using size_t appropriately can improve the portability, efficiency, or readability of your code. Maybe even all three.</B></FONT></p>
<p> <P><br />
</P><P><br />
Numerous functions in the Standard C library accept arguments or return values that represent object sizes in bytes. For example, the lone argument in <FONT size="2" face="Courier"><B>malloc(n)</B></FONT> specifies the size of the object to be allocated, and the last argument in <FONT size="2" face="Courier"><B>memcpy(s1, s2, n)</B></FONT> specifies the size of the object to be copied. The return value of <FONT size="2" face="Courier"><B>strlen(s)</B></FONT> yields the length of (the number of characters in) null-terminated character array s excluding the null character, which isn&#8217;t exactly the size of <FONT size="2" face="Courier"><B>s</B></FONT>, but it&#8217;s in the ballpark.</p>
<p> <P><br />
</P><P><br />
You might reasonably expect these parameters and return types that represent sizes to be declared with type <FONT size="2" face="Courier"><B>int</B></FONT> (possibly <FONT size="2" face="Courier"><B>long</B></FONT> and/or <FONT size="2" face="Courier"><B>unsigned</B></FONT>), but they aren&#8217;t. Rather, the C standard declares them as type <FONT size="2" face="Courier"><B>size_t</B></FONT>. According to the standard, the declaration for <FONT size="2" face="Courier"><B>malloc</B></FONT> should appear in <FONT size="2" face="Courier"><B>&lt;stdlib.h&gt;</B></FONT> as something equivalent to:</p>
<p> <P><br />
</P><P><br />
</P><PRE><CODE><FONT size="2" face="Courier"><B>void *malloc(<SPAN>size_t</SPAN> n);</B></FONT></CODE></PRE></td>
</tr>
</table>
</td>
</tr>
</table>
<div style="margin:0 6px 6px 4px;">
<table style="font-size:11px;border-spacing:0;padding:0;" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="background:transparent;border-width:0;padding:0;">&nbsp;</td>
<td align="right" style="background:transparent;width:107px;border-width:0;padding:0;" width="107"><a href="http://clipmarks.com/share/7AF356FF-F474-45F5-AE3E-808FDE1D80F8/blog/" title="blog or email this clip"><img src="http://content9.clipmarks.com/images/c2b-foot.png" border="0" alt="blog it" width="107" height="17" style="border-width:0;margin:0;padding:0;" /></a></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/223/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/223/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=223&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2008/06/08/c-types-101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://content.clipmarks.com/blog_icon/fb0e31ea-247b-4396-b879-55723cb0754c/7AF356FF-F474-45F5-AE3E-808FDE1D80F8/" medium="image" />

		<media:content url="http://content9.clipmarks.com/images/c2b-foot.png" medium="image">
			<media:title type="html">blog it</media:title>
		</media:content>
	</item>
		<item>
		<title>The ultimate Fedora 9 setup: Part 1 &#8211; UI</title>
		<link>http://hircus.wordpress.com/2008/06/02/the-ultimate-fedora-9-setup-part-1-ui/</link>
		<comments>http://hircus.wordpress.com/2008/06/02/the-ultimate-fedora-9-setup-part-1-ui/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 20:55:24 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/?p=221</guid>
		<description><![CDATA[Unlike the commercial OSes (and commercially-supported Linux distributions), community Linux distributions tend to have fast-paced release cycles. Notably, Fedora and Ubuntu releases every 6 months. Every OS upgrade entails several decision: do you do a clean install, or upgrade your current installation? Do you start with a clean home directory, or re-use your previous one? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=221&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Unlike the commercial OSes (and commercially-supported  Linux distributions), community Linux distributions tend to have fast-paced release cycles. Notably, Fedora and Ubuntu releases every 6 months.</p>
<p>Every OS upgrade entails several decision: do you do a clean install, or upgrade your current installation? Do you start with a clean home directory, or re-use your previous one? Any combination works fine, though my personal preference is to do a clean install and use a clean home directory, having archived the older directory. I think of it as house-cleaning &#8212; and it&#8217;s nice to experience the desktop as it ships out of the box, before customization (naturally, I then restore my music database, my address books, browser and e-mail client profiles, etc. This is not <em>Memento</em>!)</p>
<p>So, now that Fedora 9 has been released, what needs to be added to / changed from the base setup? As it turns out, not that many:</p>
<p><strong>Compositing</strong><br />
Some people swear by Compiz; I personally find Metacity much more usable (Compiz does not support cycling through all windows of a given application &#8212; Ctrl+F6 in Metacity; Cmd+~ in OS X). Metacity now has a compositing manager that&#8217;s turned off by default; turning it on involves either using <tt>gconftool-2</tt> (only for advanced users) or <tt>gconf-editor</tt>, and setting the <tt>/apps/metacity/general/compositing_manager</tt> key to <tt>true</tt>.</p>
<p>The support in the stable version is a bit flaky still; the metacity package in Rawhide is much better behaved and appears quite stable. Upgrade by issuing <tt>yum --enablerepo=rawhide update metacity</tt>. As of the moment it does not pull in any other Rawhide package so you can rest easy.</p>
<p>Try pressing the volume up/down/mute keys on your keyboard (if you don&#8217;t have a multimedia keyboard, change the bindings in <tt>System-&gt;Preferences-&gt;Personal-&gt;Keyboard Shortcuts</tt>) and be amazed at the translucency coolness (no, this is not bling). The brightness pop-up windows have not been changed yet, alas.</p>
<p><strong>Firefox</strong><br />
Ever cursed Firefox&#8217;s font rendering in silence? Type <tt>about:config</tt> in the address bar, and add the following boolean keys:</p>
<p><tt>font.FreeType2.autohinted = true<br />
font.FreeType2.enable = true</tt></p>
<p><strong>Keyboard</strong><br />
For the English-speakers among us specifically, and those who use the US keyboard layout in general (it&#8217;s the standard layout in Indonesia, for instance), the occasional times when one has to type an accented character is rather annoying.</p>
<p>There are various work-arounds &#8212; launch the character map (under <tt>Accessories</tt>), add the Character Palette applet to the panel (so that it consumes RAM even when you don&#8217;t use it!)&#8230;<strong>*or*</strong> you can just fix your keyboard layout. The die-hard command-line junkie would be able to tell you what option to pass to <tt>setxkbmap</tt> to achieve this. The rest of us can just use <tt>System-&gt;Preferences-&gt;Hardware-&gt;Keyboard</tt>. In the &#8220;Layouts&#8221; tab, select &#8220;Layout Options&#8221;. The option you want is &#8220;Compose key position&#8221;; I use Right Alt, but Caps Lock haters will rejoice to know that, yes, you can use that dreaded key as your compose key as well. To type an accented character, now the only thing you need to do is hit the Compose+accent followed by the letter you want to accent (using shift as necessary, e.g. for ^).</p>
<p>While you&#8217;re here, you might want to change the Alt/Win key behavior, and map either Meta, Super or Hyper to one of your Win-keys. The GNOME default is inexplicably for the Win-key to be a normal key and not a modifier (so it cannot be combined with other keys).</p>
<p><strong>Coming up: Applications</strong><br />
<em>Et voilà!</em> You should have a nice-looking, and more importantly, functional desktop right now. In the next instalment, I&#8217;ll comment on the applications I use. Until then, <em>à bientôt!</em></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/221/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/221/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/221/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=221&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2008/06/02/the-ultimate-fedora-9-setup-part-1-ui/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Programming languages, in a nutshell</title>
		<link>http://hircus.wordpress.com/2007/12/04/programming-languages-in-a-nutshell/</link>
		<comments>http://hircus.wordpress.com/2007/12/04/programming-languages-in-a-nutshell/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 08:21:22 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/12/04/programming-languages-in-a-nutshell/</guid>
		<description><![CDATA[Task: List the programming languages you consider important or interesting. Describe each of them in one sentence. C High-level assembler Lua Table-based, functional and embeddable Python Great RAD language crippled by dogma Scala Java done (almost) right, with Erlang- and Haskell-inspired features Posting this from the new N810 using its built-in keyboard. Typing those tags [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=216&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Task: <span style='font-style:italic;'>List the programming languages you consider important or interesting. Describe each of them in one sentence.</span></p>
<table>
<tr>
<td>C</td>
<td>High-level assembler</td>
</tr>
<tr>
<td>Lua</td>
<td>Table-based, functional and embeddable</td>
</tr>
<tr>
<td>Python</td>
<td>Great RAD language crippled by dogma</td>
</tr>
<tr>
<td>Scala</td>
<td>Java done (almost) right, with Erlang- and Haskell-inspired features</td>
</tr>
</table>
<p>Posting this from the new N810 using its built-in keyboard. Typing those tags was painful, and as a result, more languages will be added to the table tomorrow &#8212; from the workstation.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/216/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/216/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/216/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=216&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/12/04/programming-languages-in-a-nutshell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Why you should conditionally promise to buy the upcoming Nokia N810 tablet</title>
		<link>http://hircus.wordpress.com/2007/10/17/why-you-should-conditionally-promise-to-buy-the-upcoming-nokia-n810-tablet/</link>
		<comments>http://hircus.wordpress.com/2007/10/17/why-you-should-conditionally-promise-to-buy-the-upcoming-nokia-n810-tablet/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 03:57:22 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[maemo]]></category>
		<category><![CDATA[multimedia]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[ogg-vorbis]]></category>
		<category><![CDATA[petitions]]></category>
		<category><![CDATA[pledges]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/10/17/why-you-should-conditionally-promise-to-buy-the-upcoming-nokia-n810-tablet/</guid>
		<description><![CDATA[It looks gorgeous It runs Linux, and showcases what can be done with more vertical integration Nokia has been improving their interaction with the developer community Video camera and Skype (no Skype video support yet, though) Rhapsody subscription service New: Now with GPS, spacious internal storage, and sliding keyboard built-in! New: More video codecs, Flash [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=215&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm3.static.flickr.com/2301/1599334793_fcb8a41497.jpg" alt="Nokia N810 tablet" /></p>
<ul>
<li>It looks gorgeous</li>
<li>It runs Linux, and showcases what can be done with more vertical integration</li>
<li>Nokia has been improving their interaction with the developer community</li>
<li>Video camera and Skype (no Skype video support yet, though)</li>
<li>Rhapsody subscription service</li>
<li>New: Now with GPS, spacious internal storage, and sliding keyboard built-in!</li>
<li>New: More video codecs, Flash 9, Mozilla-based browser</li>
</ul>
<p>So commercial software providers (Skype, Real Networks) will provide Linux ports if they judge that the userbase is big enough. Which is good news.</p>
<p>The same thing applies to Nokia itself, naturally, and sadly in this case, <a href="http://jaaksi.blogspot.com/2007/10/nokia-n810-announced.html#5850386669965110378">they do not think there is demand for Ogg Vorbis playback</a>.</p>
<p>So if, like me, you find the product attractive, but have a personal collection of Ogg Vorbis files (or FLAC, which transcodes seamlessly to Vorbis), then this is what you can do:</p>
<ul>
<li>E-mail Nokia about it</li>
<li>Inform outlets that stock the tablet (e.g. Best Buy, CompUSA)</li>
<li>Sign <a href="http://www.pledgebank.com/nokia-ogg">this pledge</a> and pass it around</li>
</ul>
<p>All the software for the new device (minus GPS &#8212; though perhaps it&#8217;s the same software that comes with the GPS kit for N800? Oh, and the ambient light sensor) will run on the N800, so holding back won&#8217;t be <strong>that</strong> painful.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/215/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/215/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/215/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=215&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/10/17/why-you-should-conditionally-promise-to-buy-the-upcoming-nokia-n810-tablet/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2301/1599334793_fcb8a41497.jpg" medium="image">
			<media:title type="html">Nokia N810 tablet</media:title>
		</media:content>
	</item>
		<item>
		<title>Wide Finder: OCaml and JoCaml</title>
		<link>http://hircus.wordpress.com/2007/10/17/wide-finder-ocaml-and-jocaml/</link>
		<comments>http://hircus.wordpress.com/2007/10/17/wide-finder-ocaml-and-jocaml/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 17:40:48 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[ML]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/10/17/wide-finder-ocaml-and-jocaml/</guid>
		<description><![CDATA[Spent last night getting a crash course in using OCaml to do non-functional things (hash tables, file I/O, regular expressions) and the result is now up. The JoCaml version does the file-partitioning trick used in the C++ implementation, with each finder workers being run inside a JoCaml channel; the channels share a single lock so [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=214&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Spent last night getting a crash course in using OCaml to do non-functional things (hash tables, file I/O, regular expressions) and the result <a href="http://hircus.org/widefinder/widefinder-ml.tar.bz2">is now up</a>.</p>
<p>The JoCaml version does the file-partitioning trick used in the C++ implementation, with each finder workers being run inside a JoCaml channel; the channels share a single lock so they can update the hash table serially.</p>
<p>Interestingly, current implementation does not get a speed-up from the input file being cached (Ilmari&#8217;s <a href="http://fhtr.blogspot.com/2007/10/wide-finder-ocaml.html">wf.ml</a> does). Will have to peruse his to see what&#8217;s slowing things down.</p>
<p>Lesson: not all techniques for processing a file line-wise are equally good!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/214/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/214/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/214/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=214&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/10/17/wide-finder-ocaml-and-jocaml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Wide Finder: C++ update</title>
		<link>http://hircus.wordpress.com/2007/10/16/wide-finder-c-update/</link>
		<comments>http://hircus.wordpress.com/2007/10/16/wide-finder-c-update/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 21:15:21 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/10/16/wide-finder-c-update/</guid>
		<description><![CDATA[Talked with a colleague about the slow single-threaded performance of my Wide Finder implementation, and we narrowed it down to two possibilities: Boost regular expression is not compiled? C++ strings have higher overhead than null-terminated c_str First point can be ruled out: Boost compiles regular expressions when you assign them. Second point &#8212; well, reading [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=213&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Talked with a colleague about the slow single-threaded performance of my Wide Finder implementation, and we narrowed it down to two possibilities:</p>
<ul>
<li>Boost regular expression is not compiled?</li>
<li>C++ strings have higher overhead than null-terminated <tt>c_str</tt></li>
</ul>
<p>First point can be ruled out: Boost compiles regular expressions when you assign them. Second point &#8212; well, reading in the file using <tt>std::getline</tt> turns out to consume the bulk of time.</p>
<p>I&#8217;ve reorganized the code a bit, using a multimap rather than a vector to rank the URLs by count, with no effect on speed. With two and four threads on a dual-core Intel notebook, the performance is at least on par with Ruby.</p>
<p><a href="http://girtby.net/archives/2007/10/9/wide-finder-in-c">Alastair Rankine</a> has a C++ implementation that is slightly faster, but uses Boost memory-mapped IO that I avoided for the same reason he put as caveat: that it will not scale to files that are too large. Which Tim&#8217;s log file might well be. Again, that is not significantly faster than the Ruby code.</p>
<p>Moral of the question: Perl and Ruby can be faster than C++! The C implementations out there are blindingly fast, but the way they do regular expression handling are really painful.</p>
<p>Will turn my (limited) spare time to doing a clean JoCaml implementation &#8212; it might not be faster but it definitely will look cleaner!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/213/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/213/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=213&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/10/16/wide-finder-c-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>JoCaml</title>
		<link>http://hircus.wordpress.com/2007/10/15/jocaml/</link>
		<comments>http://hircus.wordpress.com/2007/10/15/jocaml/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 23:36:20 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[ML]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/10/15/jocaml/</guid>
		<description><![CDATA[After turning in the C/C++ monster (cleanest C code I reckon it is possible to write, thus the total lack of memory-mapped I/O and other optimizations), I turned my attention to picking a better implementation language. Requirements: Functional Good support for threading If possible, support for distributed computing As it turns out, JoCaml fits the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=212&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After turning in the C/C++ monster (cleanest C code I reckon it is possible to write, thus the total lack of memory-mapped I/O and other optimizations), I turned my attention to picking a better implementation language.</p>
<p>Requirements:</p>
<ul>
<li>Functional</li>
<li>Good support for threading</li>
<li>If possible, support for distributed computing</li>
</ul>
<p>As it turns out, JoCaml fits the bill perfectly. It&#8217;s an extension of Ocaml, so it combines a rich library with a familiar syntax (not to me, but having used both Scheme and Haskell, how different can it be) &#8212; and a very nice process calculus!</p>
<p>Example: this is a concurrent stack that blocks if there is no input available</p>
<blockquote><p>
let new_stack () =<br />
  def state (s) &amp; push (v) = state (v::s) &amp; reply to push<br />
    or state (x::s) &amp; pop () = state s &amp; reply x to pop in<br />
  spawn state([]);<br />
  pop, push<br />
;;
</p></blockquote>
<p>This defines a private <tt>state</tt> channel, and then export the <tt>pop</tt> and <tt>push</tt> synchronous channels (that to the user behave just like ordinary functions)</p>
<p>and this is how you use it:</p>
<blockquote><p>
let pop, push = new_stack ();;<br />
spawn echo(pop());;<br />
push(1);;
</p></blockquote>
<p>Note that the <tt>echo</tt> channel will block, since pop can&#8217;t return a value until the stack contains something! This value is then pushed into the stack and &#8217;1&#8242; printed.</p>
<p>More of this at the <a href="http://jocaml.infria.fr/">JoCaml site</a>. And, as it turns out, there already is <a href="http://fhtr.blogspot.com/2007/10/wide-finder-ocaml.html">a JoCaml implementation of the Wide Finder</a>, by Ilmari Heikkinen. Will have to grok the finer details from him.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/212/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/212/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/212/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=212&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/10/15/jocaml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Tim Bray&#8217;s Wide Finder: a minimalist implementation</title>
		<link>http://hircus.wordpress.com/2007/10/12/tim-brays-wide-finder-a-minimalist-implementation/</link>
		<comments>http://hircus.wordpress.com/2007/10/12/tim-brays-wide-finder-a-minimalist-implementation/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 23:45:21 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[pthreads]]></category>
		<category><![CDATA[tim-bray]]></category>
		<category><![CDATA[wide-finder]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/10/12/tim-brays-wide-finder-a-minimalist-implementation/</guid>
		<description><![CDATA[Several weeks ago, Tim Bray posted his Wide Finder project: take the Ruby script that parses an Apache log file and report the top 10 hits, and parallelize it in your language of choice. It occurred to me a while back that this is a perfect job for a C multi-process program, taking advantage of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=211&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Several weeks ago, Tim Bray posted his Wide Finder project: take the Ruby script that parses an Apache log file and report the top 10 hits, and parallelize it in your language of choice.</p>
<p>It occurred to me a while back that this is a perfect job for a C multi-process program, taking advantage of Linux&#8217;s cheap copy-on-write <tt>fork</tt>, if not for the need to merge the result. So it would probably be easier to write it using the <tt>pthreads</tt> library instead. One would want to reduce inter-thread communication as much as possible, though.</p>
<p>I did not have time to touch the code until today, but now it&#8217;s done. Two key insights:</p>
<ul>
<li>The input file can be partitioned cleanly into multiple chunks of roughly identical sizes without communication, as long as each thread follows the same protocol. i.e. a common chunk size is used, and all but the first thread needs to check if the character before their starting offset is the end-of-line. If not, they need to skip until the end of line, yielding that line to the previous thread.</li>
<li>When merging the hash maps, the first thread to acquire the lock does not need to insert its items one by one, but can just set the main hash map to point to its own</li>
</ul>
<p>On a data set size of 200MB, with a single thread, performs slightly slower as Ruby by wall clock:</p>
<p>Ruby timing<br />
<code><br />
2.99user 1.88system 0:05.26elapsed 92%CPU (0avgtext+0avgdata 0maxresident)k<br />
152inputs+0outputs (3major+853minor)pagefaults 0swaps<br />
3.04user 1.84system 0:05.33elapsed 91%CPU (0avgtext+0avgdata 0maxresident)k<br />
0inputs+0outputs (0major+856minor)pagefaults 0swaps<br />
2.84user 2.01system 0:05.19elapsed 93%CPU (0avgtext+0avgdata 0maxresident)k<br />
0inputs+0outputs (0major+856minor)pagefaults 0swaps<br />
</code></p>
<p>C++ timing, one thread<br />
<code><br />
2.70user 5.21system 0:07.95elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k<br />
0inputs+0outputs (0major+655minor)pagefaults 0swaps<br />
2.78user 5.14system 0:07.96elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k<br />
0inputs+0outputs (0major+655minor)pagefaults 0swaps<br />
2.72user 5.12system 0:07.90elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k<br />
0inputs+0outputs (0major+654minor)pagefaults 0swaps<br />
</code></p>
<p>With two threads, though, it runs faster, almost at Ruby speed.</p>
<p>C++ timing, two threads<br />
<code><br />
3.33user 5.40system 0:05.51elapsed 158%CPU (0avgtext+0avgdata 0maxresident)k<br />
0inputs+0outputs (0major+675minor)pagefaults 0swaps<br />
3.40user 5.33system 0:05.86elapsed 148%CPU (0avgtext+0avgdata 0maxresident)k<br />
0inputs+0outputs (0major+672minor)pagefaults 0swaps<br />
3.41user 5.36system 0:05.60elapsed 156%CPU (0avgtext+0avgdata 0maxresident)k<br />
0inputs+0outputs (0major+674minor)pagefaults 0swaps<br />
</code></p>
<p>So, as Tim observed, the problem is not entirely IO-bound. More testing is needed, but will probably need to be done on a machine with faster IO (and more CPUs). Like Tim&#8217;s new Niagara T2 testbed.</p>
<p>Will edit this post later &#8212; need to run now, and wanted to get this out as soon as possible. Code is available  <a href="http://hircus.org/widefinder/">here</a>&#8230; now I just need to find Tim&#8217;s email, since his blog is down. Argh!</p>
<p><b>Update:</b> switched to the new <tt>std::tr1::unsorted_map</tt>. Performance seems identical with a single thread, but slightly higher (within margin of error) on two threads &#8212; which makes sense: a multithreaded run exercises the map more, because each thread&#8217;s map has to be merged into the final map.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/211/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/211/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/211/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=211&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/10/12/tim-brays-wide-finder-a-minimalist-implementation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Silverlight for Linux. And it&#8217;s open source!</title>
		<link>http://hircus.wordpress.com/2007/09/07/silverlight-for-linux-and-its-open-source/</link>
		<comments>http://hircus.wordpress.com/2007/09/07/silverlight-for-linux-and-its-open-source/#comments</comments>
		<pubDate>Fri, 07 Sep 2007 14:28:27 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Browsing]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Novell]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/09/07/silverlight-for-linux-and-its-open-source/</guid>
		<description><![CDATA[As reported by Linux Weekly News, Microsoft has just announced version 1.0 of their Adobe Flash competitor, Silverlight. An interesting development is that they are also working with Novell to bring the technology to Linux (to be known as Moonlight). Moonlight supposedly will be GPL&#8217;ed, with the exception of the binary codecs needed for playback [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=210&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://lwn.net/Articles/248198/">reported</a> by Linux Weekly News, Microsoft has just <a href="http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&amp;STORY=/www/story/09-05-2007/0004656397&amp;EDATE=">announced</a> version 1.0 of their Adobe Flash competitor, Silverlight.</p>
<p>An interesting development is that they are also working with Novell to bring the technology to Linux (to be known as Moonlight). Moonlight supposedly <a href="http://lwn.net/Articles/248685/">will be GPL&#8217;ed</a>, with the exception of the binary codecs needed for playback of proprietary Windows Media formats.</p>
<p>So Linux is still a second-hand citizen (version 1.0 is out, and development on the Linux port is just announced?), but this might be interesting for those of us (read: most Linux desktop users) that have been waiting for a decent Flash playback (forget authoring) solutions. Still no x86_64 support after all these years, forcing people to stick to 32-bit browsers (or use nspluginwrapper). And unless Adobe has changed things since acquiring Macromedia, anyone who has merely used the Flash plugin is tainted and can&#8217;t work on Flash reimplementations!</p>
<p>(From this <a href="http://lwn.net/Articles/228637/">interview</a> [lwn.net] with principal developers of Swfdec and Gnash)</p>
<blockquote><p>Rob: The Adobe EULA for Flash forbids anyone who has installed their Flash tools or plugin from working on Flash technologies. This has had a chilling effect on the development of free Flash players, since a developer must either choose to decide that Adobe won&#8217;t sue them over this, or to do what Gnash does, which is a slow and inefficient, clean room, reverse engineering project.</p></blockquote>
<p>As I <a href="http://lwn.net/Articles/248748/">argued</a>, Novell would most likely require copyright assignments on contributions to Moonlight, and thus the use of GPL is not going to hinder Microsoft benefiting from community contribution (interesting, from a once anti-GPL company). The framework is conveniently written in C# as well, so it&#8217;s not going to directly benefit the Gnash and Swfdec projects (Flash), but depending on how clearly Novell marks up their code for patent-encumbrance, it could still either benefit or act as a time bomb for Flash projects..</p>
<p>Naturally, I&#8217;d still advise anyone to refrain from using Silverlight/Moonlight unless it&#8217;s being used as a container for standard (H.263/4)  codecs. WMV is an abomination dating back to the AVI days &#8212; note how most HD- and BD-DVDs are encoded in H.264, not VC-1 which is basically WMV.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/210/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/210/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/210/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=210&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/09/07/silverlight-for-linux-and-its-open-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>The death of Salon Audiofile</title>
		<link>http://hircus.wordpress.com/2007/08/20/the-death-of-salon-audiofile/</link>
		<comments>http://hircus.wordpress.com/2007/08/20/the-death-of-salon-audiofile/#comments</comments>
		<pubDate>Tue, 21 Aug 2007 03:41:49 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/08/20/the-death-of-salon-audiofile/</guid>
		<description><![CDATA[Salon.com&#8217;s Audiofile, a remarkable music blog that provides regular song reviews, complete with downloads of the reviewed songs in MP3 format, closed its door last month. The archives, thankfully, are still (largely) available. But how, pray, would you download hundreds of songs scattered over 26 pages? (one per each letter in the alphabet) If you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=208&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Salon.com&#8217;s <a href="http://www.salon.com/ent/audiofile/">Audiofile</a>, a remarkable music blog that provides regular song reviews, complete with downloads of the reviewed songs in MP3 format, <a href="http://www.salon.com/opinion/walsh/salon/2007/07/13/audiofile/index.html">closed its door</a> last month.</p>
<p>The archives, thankfully, are still (largely) available. But how, pray, would you download hundreds of songs <a href="http://www.salon.com/ent/audiofile/archive_by_alpha/index.html">scattered over 26 pages</a>? (one per each letter in the alphabet)</p>
<p>If you use Firefox (and if not, you should. Not because it&#8217;s the best browser, but becaue of the add-ons), then it&#8217;s simple &#8212; look up <a href="https://addons.mozilla.org/en-US/firefox/addon/220">FlashGot</a> or <a href="https://addons.mozilla.org/en-US/firefox/addon/201">DownThemAll!</a>. The former is more configurable, I believe (you get to use your own download manager), but the latter is probably simpler to use.</p>
<p><em>Caveat lector</em>: the (rough guess) 70% or so of the songs that still have functional links total up to more than 2GB&#8217;s worth. Will probably post a Torrent link on Mininova once I tidy them up a bit.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/208/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/208/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=208&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/08/20/the-death-of-salon-audiofile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>USPTO and Microsoft&#8217;s patent FUD: an incentives-based solution</title>
		<link>http://hircus.wordpress.com/2007/05/13/uspto-and-microsofts-patent-fud-an-incentives-based-solution/</link>
		<comments>http://hircus.wordpress.com/2007/05/13/uspto-and-microsofts-patent-fud-an-incentives-based-solution/#comments</comments>
		<pubDate>Mon, 14 May 2007 04:47:47 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Legal]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/05/13/uspto-and-microsofts-patent-fud-an-incentives-based-solution/</guid>
		<description><![CDATA[As Linux Weekly News reports, Microsoft&#8217;s general counsel has intensified the company&#8217;s sabre-rattling against Open Source projects, this time putting numbers on the alleged patent infringements in the Linux kernel, desktop projects and Open Office. Conveniently left out is the one-sidedness of this smear campaign. Microsoft could take all their time to look at open-sourced [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=206&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://lwn.net/Articles/234150/">Linux Weekly News</a> reports, Microsoft&#8217;s general counsel has intensified the company&#8217;s sabre-rattling against Open Source projects, this time putting numbers on the alleged patent infringements in the Linux kernel, desktop projects and Open Office.</p>
<p>Conveniently left out is the one-sidedness of this smear campaign. Microsoft could take all their time to look at open-sourced code, but on the other hand, Microsoft&#8217;s code is sacrosanct. One wonders if Microsoft&#8217;s &#8220;Shared Source&#8221; licenses and EULAs allows the licensee to sue Microsoft for patent violation? One would suspect otherwise.</p>
<p>The patent system is broken. And it&#8217;s a matter of incentives. As I <a href="http://lwn.net/Articles/234164/">wrote in response</a>, <a href="http://www.uspto.gov/">the US Patent and Trademark Office</a> grants overly-broad patents without checking carefully for prior art. Thus Microsoft&#8217;s claim is probably true in a very twisted way: nobody can write anything meaningful without violating some patent that one of the big tech companies (IBM, Sun, Microsoft, etc.) holds. Any company with a legal team worth their salt would play the system and file for as many patents as they can, no matter how dubious. Some even <a href="http://www.unwiredview.com/2007/01/16/apples-iphone-is-it-really-well-protected-by-patents/">boast about it</a> (Steve Jobs, about Apple&#8217;s iPhone). The culprit is thus the patent system, not the owners of the dubious patents (who are ethically responsible to their shareholders only. Corporate law is also very flawed, but that&#8217;s the subject of another post), and certainly not the authors of the infringing software.</p>
<p>Regardless of whether software patents is a good idea or not (I personally think it&#8217;s not), the USPTO and Congress have a serious conflict-of-interest problem here. Granting more patents earn them more money, and examining patent applications carefully cost them money. Plus, they don&#8217;t lose anything for patents that are overturned. The Justice department should charge USPTO for the time wasted by patent challenges, if the patent ends up overturned because of USPTO&#8217;s fault. That way they&#8217;d have an incentive to be more careful.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/206/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/206/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=206&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/05/13/uspto-and-microsofts-patent-fud-an-incentives-based-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft-Yahoo rumours resurface</title>
		<link>http://hircus.wordpress.com/2007/05/04/microsoft-yahoo-rumours-resurface/</link>
		<comments>http://hircus.wordpress.com/2007/05/04/microsoft-yahoo-rumours-resurface/#comments</comments>
		<pubDate>Fri, 04 May 2007 22:50:52 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Companies]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/05/04/microsoft-yahoo-rumours-resurface/</guid>
		<description><![CDATA[From New York Post, via Monsters and Critics: According to the New York Post, Microsoft is asking Yahoo to re-enter formal talks in order to finalize a merger of the two companies. This move was attempted in the past just shortly after Google emerged, but in the end went nowhere. After the huge loss last [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=205&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>From <em>New York Post</em>, via <a href="http://tech.monstersandcritics.com/news/article_1300361.php/Microsoft_looks_to_enter_formal_talks_in_order_to_buy_Yahoo">Monsters and Critics</a>:</p>
<blockquote><p>According to the New York Post, Microsoft is asking Yahoo to re-enter formal talks in order to finalize a merger of the two companies. This move was attempted in the past just shortly after Google emerged, but in the end went nowhere. After the huge loss last month to Google over the DoubleClick purchase, Microsoft is intensifying their plans to acquire Yahoo.
</p></blockquote>
<p>This is disturbing. Yahoo has traditionally been quite open-source friendly (Yahoo! Toolbar is available for Firefox, their AJAX library is open-sourced, and they even produced a Linux client of Yahoo Messenger, long time ago &#8212; it still works, though not updated), or at any rate, more platform-agnostic.</p>
<p>Of the three companies, Yahoo Messenger supports OS X on par with Windows, with Linux being an afterthought, while Microsoft&#8217;s Messenger client is a joke on a Mac, and GTalk .. is currently Windows-only (Google employs a key Pidgin developer, so now that the dispute with AOL over their old name, Gaim, has been settled, hopefully audio chat support will be coming to the free Unices (and OS X) soon.</p>
<p>What will a Microsoft buy-out entail? First of all, presumably the downgrading of Mac support (look at Virtual PC, or IE for Mac). Microsoft would cancel a product that&#8217;s making them money (VPC), and forbid the use of home editions of Vista under virtualization, to sabotage Mac interoperability, while at the same time <a href="http://www.macrumors.com/2007/05/01/microsoft-silverlight-supports-ie-safari-and-firefox/">offer (read: promise) a free version of their Flash competitor Silverlight</a> for the platform (not authoring tools, naturally. Everyone knows digital artists &lt;<em>prefers</em>&gt; working in Windows). Imagine the fate of Yahoo Messenger, what with Apple aggressively pushing iChat into the corporate market. Microsoft will probably calculate that they are better served undermining OS X&#8217;s viability as a business platform, at the expense of a miniscule loss of marketshare.</p>
<p>So we in the FLOSS world are in this unconfortable situation of hitching our wagons to Google as the lesser of the two evils (despite privacy concerns). I&#8217;m personally using GTalk (through Pidgin) at least until Jabber becomes the established IM protocol standard, but if anyone has a suggestion for a good non-big-3 search engine, I&#8217;m definitely considering putting my eggs in more baskets.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/205/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/205/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/205/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=205&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/05/04/microsoft-yahoo-rumours-resurface/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Vista is a failure, but is Microsoft doomed?</title>
		<link>http://hircus.wordpress.com/2007/04/23/vista-is-a-failure-but-is-microsoft-doomed/</link>
		<comments>http://hircus.wordpress.com/2007/04/23/vista-is-a-failure-but-is-microsoft-doomed/#comments</comments>
		<pubDate>Mon, 23 Apr 2007 15:27:49 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Companies]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/04/23/vista-is-a-failure-but-is-microsoft-doomed/</guid>
		<description><![CDATA[The Inquirer would have you think so (Microsoft admits Vista failure). Dell has bowed to the lack of consumer enthusiasm about Vista (especially those laptop users dismayed at power management issues, but people whose applications suddenly break won&#8217;t be amused either), reinstating Windows XP availability on their customer line-ups. This is, at best, a grace [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=204&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The Inquirer would have you think so (<a href="http://www.theinquirer.net/default.aspx?article=39087">Microsoft admits Vista failure</a>). Dell has bowed to the lack of consumer enthusiasm about Vista (especially those laptop users dismayed at power management issues, but people whose applications suddenly break won&#8217;t be amused either), reinstating Windows XP availability on their customer line-ups. This is, at best, a grace period of one year, since Microsoft currently plans to stop XP sales entirely in 2008.</p>
<p>They have a point there. I have a problem with their assertion that <a href="http://news.com.com/Microsoft+aims+to+reach+next+billion+PC+users/2100-1003_3-6177431.html">the $3 Windows edition</a>&nbsp;is another admission of failure. True, the stronger anti-piracy controls on Vista means that Microsoft&#8217;s closing one eye on piracy no longer reduces Linux&#8217;s price advantage as much. But there&#8217;s the point of government tie-in: to be eligible for the cheap Windows licenses, governments have to step in and subsidize the hardware!</p>
<p>So Microsoft might have a weakened hold on its current OEMs, but it is hoping to gain <em>entire countries</em> as new clients. In which case the price drop cannot be compared against the full price of Windows, but what Dell, HP etc. gets charged (less than $50 a piece, I&#8217;m sure). An order of magnitude less. Which is a side issue &#8212; Microsoft is not currently gaining anything from those pirated copies anyway (apart from mindshare). The main worry is that another generation will be locked into Microsoft products, and want to bet there&#8217;s a clause in the fine print promoting the so-called Open XML over Open Doc?</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/204/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/204/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/204/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=204&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/04/23/vista-is-a-failure-but-is-microsoft-doomed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>HP, HP, lama sabachthani?</title>
		<link>http://hircus.wordpress.com/2007/04/14/hp-hp-lama-sabachthani/</link>
		<comments>http://hircus.wordpress.com/2007/04/14/hp-hp-lama-sabachthani/#comments</comments>
		<pubDate>Sun, 15 Apr 2007 00:41:29 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Companies]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/04/14/hp-hp-lama-sabachthani/</guid>
		<description><![CDATA[There was a Slashdot story a few weeks ago, on HP voiding your warranty if you install Linux. Linux geeks responded with an outrage, predictably, claiming that ever since CRT monitors come with safeguards that prevent the screen being fried through out-of-range settings, there is no way that a piece of software could destroy a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=203&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There was a Slashdot story a few weeks ago, on <a href="http://linux.slashdot.org/article.pl?sid=07/03/27/1753218">HP voiding your warranty if you install Linux</a>. Linux geeks responded with an outrage, predictably, claiming that ever since CRT monitors come with safeguards that prevent the screen being fried through out-of-range settings, there is no way that a piece of software could destroy a hardware, and even if that&#8217;s the case, then it&#8217;s a bug in the hardware design itself.</p>
<p>In the case of the woman mentioned in the story, Linux is clearly not at fault &#8212; the keyboard was just broken, and the tech support person was too clueless (or the support regulations structured in such a way) to notice. However, there could be valid cases where the combination of crappy hardware and running Linux *would* ruin your hardware. I know, because it just happened to me.</p>
<p>The recipe is as such:</p>
<ol>
<li>Broken ACPI implementation (hello, HP! To be fair, the most recent dv2000, dv6000 and equivalent Compaq lines are probably fixed; by the lack of complaints), so that Linux&#8217;s ACPI subsystem cannot control the fan and CPU voltage properly
<li>A CPU that runs hot (first-generation &#8220;mobile&#8221; Turion 64)
<li>2 years of frequent use, tolerating occasional crashes due to overheating
<li>OMG!!! LINUKS KILLZ ME PC!!</li>
</ol>
<p>I guess the writing is on the wall when I had to remove my second memory module to keep the laptop running at all. The poor fans must be getting to&nbsp;their end of life. And today, after a&nbsp;freeze while the laptop was on battery power (previously&nbsp;almost unheard-of, it&#8217;s normally stable if running at 800 MHz, which it does when unplugged), it just never woke up again. The&nbsp;power indicators would be on,&nbsp;the optical drive would operate properly, and the AC indicator too, but apart from that, zilch. Nothing displayed to the screen, no error&nbsp;beep, nothing.</p>
<p>One begins to wonder whether&nbsp;the&nbsp;buggy Microsoft ACPI AML compiler&nbsp;was actually intentionally buggy. After all, if you load Windows onto your machine&nbsp;&#8221;as it is intended&#8221;, you&#8217;ll be using a Microsoft-written AML interpreter, and everything would be just fine. If you use the Intel reference AML interpreter, well, &#8230; Very disturbing indeed. The same way Microsoft abused its IE market share by intentionally not making it standards-compliant, making life a nightmare for web designers and thus the easy way out is to only support IE ..</p>
<p>RIP, HP L2000 &#8220;Lance Armstrong special edition&#8221;. It&#8217;s ironic that a record winner of an endurance cycling race, who also happens to be a cancer survivor, would lend his name to a buggy laptop with poor noise insulation and heat issues that didn&#8217;t even last two years. I was planning to replace it with an HP dv2000t once the Santa Rosa models are out (late April &#8212; early May), but after this, I wonder. I&#8217;ve never had a laptop dying on me before; my previous write-offs are either due to inexpert disassembly (Vaio C1) or drop damage (Vaio C140). Perhaps I&#8217;ll get a Macbook after all, though my Apple purchasing track record is notoriously bad (I&#8217;d buy just before a new model is launched &#8211;&nbsp;I&nbsp;barely managed to cancel a Dell laptop purchase when the Powerbook G4 12&#8243; was released, and I jumped the gun and bought the Sony C140 &#8212; now with a broken LCD &#8212; and before it even arrived, the Core 2 Macbooks came out).</p>
<p>Could I wait this time for the don&#8217;t-know-when Santa Rosa? Come on, Apple, update the line before Leopard comes out!</p>
<p><b>Update</b> &#8211; <i>2007/04/16</i> &#8211; OSnews has an article on <a href="http://www.osnews.com/story.php/17689/Bill-Gates-on-Making-ACPI-Not-Work-with-Linux/">a Bill Gates memo showing Microsoft&#8217;s intention to cripple ACPI</a>. You&#8217;re not paranoid if people really are out to get you! And shame on that abusive monopolist &#8212; this is straight out of The Corporate, folks. It figures that after screwing over DR-DOS in a very similar way, they&#8217;d try the same trick again.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/203/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/203/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/203/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=203&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/04/14/hp-hp-lama-sabachthani/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Les médias français, qui ne comprennent pas la compatibilité de croix-plateforme</title>
		<link>http://hircus.wordpress.com/2007/04/01/les-medias-francais-qui-ne-comprennent-pas-la-compatibilite-de-croix-plateforme/</link>
		<comments>http://hircus.wordpress.com/2007/04/01/les-medias-francais-qui-ne-comprennent-pas-la-compatibilite-de-croix-plateforme/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 01:07:21 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2007/04/01/les-medias-francais-qui-ne-comprennent-pas-la-compatibilite-de-croix-plateforme/</guid>
		<description><![CDATA[Periodically, I&#8217;d scour the Internet for French-language streaming media broadcast. Unfortunately, despite the European Commission&#8217;s much-publicized anti-trust case against Microsoft, and the French&#8217;s famously anti-American attitude, when it comes to Internet broadcasting they are all in hock to Microsoft. Case in point: France 24, the French answer to CNN and BBC. While most Anglo-American site [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=201&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Periodically, I&#8217;d scour the Internet for French-language streaming media broadcast. Unfortunately, despite the European Commission&#8217;s much-publicized anti-trust case against Microsoft, and the French&#8217;s famously anti-American attitude, when it comes to Internet broadcasting they are all in hock to Microsoft.</p>
<p>Case in point: <a href="http://www.france24.com/">France 24</a>, the French answer to CNN and BBC. While most Anglo-American site would at least offer you a choice between Real and Windows Media (I don&#8217;t see QuickTime used much), most French sites, including the aforementioned, serves only WMV. This, at a time where the BBC is even sponsoring the development of an open-source video codec, <a href="http://en.wikipedia.org/wiki/Dirac_(codec)">Dirac</a> [wikipedia.org].</p>
<p>The site&#8217;s design also feels rather sluggish, and the aspect ratio is wrong unless you go full-screen. <i>Alors&#8230; <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </i></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/201/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/201/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=201&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2007/04/01/les-medias-francais-qui-ne-comprennent-pas-la-compatibilite-de-croix-plateforme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Application bundles coming to Linux!</title>
		<link>http://hircus.wordpress.com/2006/11/25/application-bundles-coming-to-linux/</link>
		<comments>http://hircus.wordpress.com/2006/11/25/application-bundles-coming-to-linux/#comments</comments>
		<pubDate>Sun, 26 Nov 2006 00:04:28 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OLPC]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/11/25/application-bundles-coming-to-linux/</guid>
		<description><![CDATA[Those using Mac OS X or ROX Desktop might wonder what all the fuss is about. After all, they have had application bundles since the beginning. Everyone else will probably be wondering &#8220;what are application bundles anyway?&#8221;. First, then, a primer. If you think of an application as an object, a thing, then you want [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=197&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Those using Mac OS X or <a href="http://rox.sourceforge.net/">ROX Desktop</a> might wonder what all the fuss is about. After all, they have had application bundles since the beginning. Everyone else will probably be wondering <i>&#8220;what <b>are</b> application bundles anyway?&#8221;</i>. First, then, a primer.</p>
<p>If you think of an application as an object, a <i>thing</i>, then you want to be able to treat it like any other object (say, a document): you can copy it by drag-and-drop, move it to another location, run it by double-clicking, and when you don&#8217;t need it anymore, drag it to the trash. This works if you&#8217;re on the aforementioned system, but not for everyone else:</p>
<p>- Windows applications write to system directories, and the default Registry setting is normally set up only once, during installation<br />
- Unix applications are installed all over the file system</p>
<p>Even with package management (e.g. RPM+yum, DEB+apt, Smart, emerge) the situation is far from ideal:<br />
- application still cannot be dragged-and-dropped<br />
- can&#8217;t run an application without installing (for trying it out, for example)<br />
- if you don&#8217;t have the original package you can&#8217;t recover it from the installed files (I don&#8217;t believe the package database holds the pre-/post-install scripts, only the pre- and post-uninstall ones)</p>
<p>And even OS X&#8217;s implementation is not ideal: there&#8217;s no way to declare dependencies, so a lot of applications just bundle all the libraries they can&#8217;t expect the user to have installed already. ROX is ahead here with their integration of the <a href="http://0install.net">0install</a> system: you first download an almost-empty application bundle, and the first time you run it it triggers 0install, which can pull in the main body of the application, and install the dependencies too.</p>
<p>For some reason ROX&#8217;s installation system has not caught on yet with the major desktops (neither Nautilus nor Konqueror, the two main desktops&#8217; file managers, handle launching ROX AppDirs, the most basic prerequisite for interoperability; for some reason the talks with the XFCE project did not go anywhere either). But now at least another project is picking up the idea, and were it to be successful, would see application bundles available to <i>millions</i> of users. Who? Why, the <a href="http://laptop.org/">One Laptop per Child project</a>.</p>
<p>(J5 <a href="http://www.j5live.com/?p=278">blogged about it</a> several weeks ago, but I didn&#8217;t get to that post until now. <i>Mea culpa</i>.)</p>
<p>I don&#8217;t know how it&#8217;s implemented there, but as I commented, it could possibly go like this:</p>
<blockquote><pre>
App.xo
|– deps.xml
|– info.xml
|– binary
|– icons/
|– libs/
|– share/
</pre>
</blockquote>
<p>with the application directory monitored for changes; drop a new application in and Nautilus will scan deps.xml for any prerequisites that’s not yet installed and offer to install it.</p>
<p>That way we can have OS X-style ease-of-use without their application bloat (since a lot of the .app bundles there just ship all the libraries they can’t assume the use.</p>
<p>2006-11-25 19:09 EST <b>Update</b>: Here is <a href="http://wiki.laptop.org/go/Activity_Bundles">the specification</a> for the bundles. No dependency tracking yet, unfortunately.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/197/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/197/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=197&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/11/25/application-bundles-coming-to-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Beware of machines bearing votes</title>
		<link>http://hircus.wordpress.com/2006/11/24/beware-of-machines-bearing-votes/</link>
		<comments>http://hircus.wordpress.com/2006/11/24/beware-of-machines-bearing-votes/#comments</comments>
		<pubDate>Fri, 24 Nov 2006 17:40:01 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Elections]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/11/24/beware-of-machines-bearing-votes/</guid>
		<description><![CDATA[Johannes Schmid forwarded this very disturbing video from YouTube: Why a company with shady political connections and a disreputable security track record continues to be contracted to supply voting machines, I don&#8217;t know. Technology is neutral. But belief in the infallibility of it is irresponsible, misguided, and .. perhaps actively encouraged by people with vested [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=196&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Johannes Schmid <a href="http://www.bogenschneller.de/jsschmid/blog/?p=39">forwarded</a> this very disturbing video from YouTube:</p>
<span style="text-align:center; display: block;"><a href="http://hircus.wordpress.com/2006/11/24/beware-of-machines-bearing-votes/"><img src="http://img.youtube.com/vi/kDEBMp6uwdc/2.jpg" alt="" /></a></span>
<p>Why a company with <a href="http://www.google.com/search?num=20&amp;hs=5Kz&amp;hl=en&amp;lr=&amp;safe=off&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-GB%3Aofficial&amp;q=diebold+ceo+deliver+for+bush&amp;btnG=Search">shady political connections</a> and a <a href="http://www.google.com/search?q=diebold+known+security+flaws&amp;ie=utf-8&amp;oe=utf-8&amp;rls=org.mozilla:en-GB:official&amp;client=firefox-a">disreputable security track record</a> continues to be contracted to supply voting machines, I don&#8217;t know.</p>
<p>Technology is neutral. But belief in the infallibility of it is irresponsible, misguided, and .. perhaps actively encouraged by people with vested interest. Big Brother is watching YOU!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/196/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/196/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=196&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/11/24/beware-of-machines-bearing-votes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>One patch a day&#8230;</title>
		<link>http://hircus.wordpress.com/2006/11/19/one-patch-a-day/</link>
		<comments>http://hircus.wordpress.com/2006/11/19/one-patch-a-day/#comments</comments>
		<pubDate>Sun, 19 Nov 2006 19:37:59 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Bug-fixing]]></category>
		<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Gnome/GTK+]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/11/19/one-patch-a-day/</guid>
		<description><![CDATA[&#8230; keeps the bugs away. And what&#8217;s this patch, you might ask? Why, it fixes Liferea&#8217;s font selection (Liferea&#8217;s a feed reader for the GNOME desktop). Previously it would use the application font setting for its HTML viewer, with this patch it uses the document font setting instead, bringing it in line with other applications. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=193&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230; keeps the bugs away. And what&#8217;s this patch, you might ask? Why, it fixes Liferea&#8217;s font selection (Liferea&#8217;s a feed reader for the GNOME desktop). Previously it would use the application font setting for its HTML viewer, with this patch it uses the document font setting instead, bringing it in line with other applications.</p>
<p>No more squinting when looking at small text, or finding your desktop space taken up by extra-large application menus!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/193/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/193/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/193/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=193&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/11/19/one-patch-a-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Stream module for Lua</title>
		<link>http://hircus.wordpress.com/2006/11/18/stream-module-for-lua/</link>
		<comments>http://hircus.wordpress.com/2006/11/18/stream-module-for-lua/#comments</comments>
		<pubDate>Sat, 18 Nov 2006 18:06:41 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Lua]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/11/18/stream-module-for-lua/</guid>
		<description><![CDATA[&#8220;Be not afraid of greatness: some are born great, some achieve greatness and some have greatness thrust upon them&#8221;. - (Shakespeare, W., Twelfth Night, Quote Act II, Scene V). &#8220;Some men are born mediocre, some men achieve mediocrity, and some men have mediocrity thrust upon them. With Major Major it had been all three&#8221;. - [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=192&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>&#8220;Be not afraid of greatness: some are born great, some achieve greatness and some have greatness thrust upon them&#8221;.</em><br />
- (<strong>Shakespeare, W.</strong>, <em>Twelfth Night</em>, Quote Act II, Scene V).</p></blockquote>
<blockquote><p><em>&#8220;Some men are born mediocre, some men achieve mediocrity, and some men have mediocrity thrust upon them. With Major Major it had been all three&#8221;.</em><br />
- (<strong>Heller, J.</strong>, <em>Catch-22</em>, Quote Page 94 (paperback)).</p></blockquote>
<blockquote><p><em>&#8220;Some languages are born lazy, some languages achieve laziness, and some languages have laziness thrust upon them&#8221;.</em><br />
- (<strong>Salim, M.</strong>, unpublished)</p>
<p>So you can probably guess what this is about. A stream library for Lua, that allows you to do things like running the Sieve of Eratosthenes without specifying an upper bound, lazily filtering the set of <em>all</em> positive integers as you go along.</p>
<p><span id="more-192"></span><br />
Witness the use of the library:</p>
<blockquote>
<pre>
require("stream")

function ints(n)
   return {
      head = function () return n end,
      tail = function () return ints(n+1) end }
end

function primes (sints)
   local curprime = false
   local tailthunk = false
   local fhead =
      function ()
	 if curprime then return curprime
	 else
	    curprime = sints.head()
	    tailthunk = sints.tail
	    return curprime
	 end
      end
   local ftail =
      function ()
	 if (not tailthunk) then
	    fhead()
	 end
	 return primes(
		 stream.filter(function(n) return not (n%curprime == 0) end,
			       tailthunk() ))
      end
   return {head=fhead, tail=ftail}
end

-- print the first 100 primes
stream.print(100, primes(ints(2)))</pre>
</blockquote>
<p>A stream is a table containing a head and a tail; both are thunks, so you call them with no arguments to obtain the value. Note the caching that avoids recomputation, similar caching is done in the functions provided by the stream library (like stream.filter)</p>
<p>Code available <a href="http://hircus.org/lua/stream.lua">on hircus.org</a>.</p>
<p>And some benchmarks:</p>
<table border="1">
<tr align="center">
<th></th>
<th width="35%">Lua</th>
<th width="35%">Haskell</th>
</tr>
</table>
<p>The Haskell code was run using GHC&#8217;s &#8216;runhaskell&#8217;, which does not precompile the code, to be fair to Lua which is interpreted. Not bad when put up against a language that is lazy by design (and thus optimized for it)! Timing taken using the &#8216;time&#8217; utility on an Intel Core 2 Duo 1.66 GHz laptop which was mostly idle.</p></blockquote>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/192/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/192/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/192/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=192&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/11/18/stream-module-for-lua/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Of Nokia and Apple: it must be Tuesday&#8230;</title>
		<link>http://hircus.wordpress.com/2006/05/16/of-nokia-and-apple-it-must-be-tuesday/</link>
		<comments>http://hircus.wordpress.com/2006/05/16/of-nokia-and-apple-it-must-be-tuesday/#comments</comments>
		<pubDate>Tue, 16 May 2006 13:50:00 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nokia]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/05/16/of-nokia-and-apple-it-must-be-tuesday/</guid>
		<description><![CDATA[The Tuesday after E3 Expo, we get not one but two much-awaited announcements. Nokia finally demonstrated the OS 2006 upgrade for the Nokia 770 tablet, and Apple came out with the MacBook (sorry, Mac OS Rumors). Alas, the Nokia announcement is still vaporware (I&#8217;d happily beta test the new firmware, since the latest update actually [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=191&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The Tuesday after <a href="http://www.e3expo.com/default.aspx">E<sup>3</sup> Expo</a>, we get not one but two much-awaited announcements. Nokia finally <a href="http://press.nokia.com/PR/200605/1051308_5.html">demonstrated</a> the OS 2006 upgrade for the Nokia 770 tablet, and Apple came out with the MacBook (sorry, <a href="http://www.macosrumors.com">Mac OS Rumors</a>).</p>
<p>Alas, the Nokia announcement is still vaporware (I&#8217;d happily beta test the new firmware, since the latest update actually broke timezone support, and the full-screen virtual keyboard sounds like a nice improvement over the half-sized version one has to carefully peck with a stylus right now). And to make matter worse my tablet&#8217;s wireless actually died yesterday! Thankfully it&#8217;s still under warranty, and Nokia didn&#8217;t actually announce a hardware upgrade, as was speculated.</p>
<p>The Apple announcement, on the other hand, is welcome. There are concerns about the integrated video (can&#8217;t be worse than the also-integrated, 700-fps-in-glxgears ATi in my HP right now), and the price premium charged for the black case, but so far it&#8217;s looking good. I&#8217;ll let the early adopters work out all the issues with this and get the next model with OS X 10.5 and 64-bit Merom CPUs..</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/191/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/191/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=191&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/05/16/of-nokia-and-apple-it-must-be-tuesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Syncing your Bluetooth phone with Evolution on Ubuntu</title>
		<link>http://hircus.wordpress.com/2006/04/22/syncing-your-bluetooth-phone-with-evolution-on-ubuntu/</link>
		<comments>http://hircus.wordpress.com/2006/04/22/syncing-your-bluetooth-phone-with-evolution-on-ubuntu/#comments</comments>
		<pubDate>Sat, 22 Apr 2006 16:22:59 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/04/22/syncing-your-bluetooth-phone-with-evolution-on-ubuntu/</guid>
		<description><![CDATA[I finally got fed up of my Sony Ericsson K700i losing random phone numbers (well, not random &#8211; it&#8217;s always the phone numbers I&#8217;ve used recently, which thankfully means that most of the time, searching for unrecognized phone numbers in the call history list works) to do something about it. There are some HOWTOs and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=190&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I finally got fed up of my Sony Ericsson K700i losing random phone numbers (well, not random &#8211; it&#8217;s always the phone numbers I&#8217;ve used recently, which thankfully means that most of the time, searching for unrecognized phone numbers in the call history list works) to do something about it.</p>
<p>There are some HOWTOs and forum discussions out there, but most of the ones that refer to Ubuntu refer to earlier versions, and a lot of the steps mentioned are probably not needed anymore.</p>
<p>As it turns out, these are all you need:</p>
<p><tt>apt-get install multisync libmultisync-plugin-irmc-bluetooth libmultisync-plugin-evolution</tt></p>
<p>Modify <tt>/etc/bluetooth/hid.conf</tt> . This is the crucial step! In /etc/bluetooth/hcid.conf, change the local device class from</p>
<p><tt>class 0x3e0100;</tt></p>
<p>to</p>
<p><tt>class 0x100100;</tt></p>
<p>Now set up multisync and follow the instructions &#8211; should be quite straightforward. The only thing to note is that by default, Multisync does not preselect any calendar, address books etc., since you can have more than one. Make sure to pick the ones you want to sync.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/190/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/190/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/190/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=190&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/04/22/syncing-your-bluetooth-phone-with-evolution-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Effectively functional: swapping tree leaves with streams</title>
		<link>http://hircus.wordpress.com/2006/04/18/effectively-functional-swapping-tree-leaves-with-streams/</link>
		<comments>http://hircus.wordpress.com/2006/04/18/effectively-functional-swapping-tree-leaves-with-streams/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 20:40:00 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Scheme]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/04/18/effectively-functional-swapping-tree-leaves-with-streams/</guid>
		<description><![CDATA[(Thanks to Roshan for posing the task) Given two binary trees, and a depth-first-search traversal ordering of the leaf nodes, produce two new trees with the same structures as the originals, but with the leaf nodes swapped. If there are more leaf nodes in one tree than the other, the remaining leaf nodes are copied [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=189&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>(Thanks to <a href="http://www.thinkingms.com/pensieve">Roshan</a> for posing the task)</p>
<p>Given two binary trees, and a depth-first-search traversal ordering of the leaf nodes, produce two new trees with the same structures as the originals, but with the leaf nodes swapped. If there are more leaf nodes in one tree than the other, the remaining leaf nodes are copied unchanged.</p>
<p>So (swap-leaves &#8216;(1 . (2 . 3)) &#8216;(a . ((b . c) . d)))<br />
=&gt; &#8216;((a . (b . c)) &#8216;(1 . ((2 . 3) . d))</p>
<p><span id="more-189"></span><br />
Waiving the requirement that the program be completely functional, my original thought was <em>I could probably just modify my tree walker to do this</em>. This <tt>treewalk</tt> procedure takes a tree and produces a stream of leaf node values. Changing it so that it returns a pair of the value, and a setter procedure that can modify the value in place, is trivial: the recursive auxiliary procedure for treewalk is given the parent node, so it can use <tt>set-car!</tt> or <tt>set-cdr!</tt> (depending on which side of the parent node this leaf node is) to update the parent:</p>
<blockquote>
<pre>
(define treewalk
  (lambda (t)
    (if (not (pair? t))
        (stream-cons
          `(t . (lambda (v)
                  (error "Cannot modify singleton")))
          empty-stream)
        (stream-append (treewalk^ (car t) #t t)
                       (treewalk^ (cdr t) #f t)))))

(define treewalk^
  (lambda (t left? parent)
    (if (not (pair? t))
        (stream-cons `(,t . ,(if left?
                               (lambda (v)
                                 (set-car! parent v))
                               (lambda (v)
                                 (set-cdr! parent v))))
                     empty-stream)
        (stream-append (treewalk^ (car t) #t t)
                       (treewalk^ (cdr t) #f t)))))</pre>
</blockquote>
<p>The swapping is then just a matter of calling the setter for node1 with the value of node2, and vice-versa; this generalizes to swapping between multiple trees as well.</p>
<blockquote>
<pre>(define treewalk
  (lambda (t)
    (if (not (pair? t))
        (stream-cons `(t . (lambda (v)
                             (error "Cannot modify singleton")))
                     empty-stream)
        (stream-append (treewalk^ (car t) #t t)
                       (treewalk^ (cdr t) #f t)))))

(define treewalk^
  (lambda (t left? parent)
    (if (not (pair? t))
        (stream-cons `(,t . ,(if left?
                               (lambda (v)
                                 (set-car! parent v))
                               (lambda (v)
                                 (set-cdr! parent v))))
                     empty-stream)
        (stream-append (treewalk^ (car t) #t t)
                       (treewalk^ (cdr t) #f t)))))</pre>
</blockquote>
<p>But this modifies existing trees in place, a big no-no in functional programming land (though imperative programmers live with this every day). Is there a way to do this in, if not a fully functional way, then in a way that the side-effects are confined? (I mentioned to Roshan that this is a dual of Haskell&#8217;s monads: it <em>behaves functionally</em> even though it is imperative; monads gave the illusion of imperative behaviour even though they are fully functional. He pointed out that internally the state monad is optimized into imperative calls as well, so the comparison is even more interesting)</p>
<p>Instead of modifying existing trees in place, we want to copy the trees. But copying, naively done, would involve traversing the trees again, and that would be inefficient. The copying should be done <em>Lazily</em> as needed, and with streams, that means doing it while you&#8217;re walking the tree and collecting the nodes!</p>
<p>In short, at every internal node,<br />
- create a new node, which has as its children the children of the original node;<br />
- update the <em>clone</em> of the parent, instead of the parent, so that its car or cdr points to this new node<br />
- the setter procedures for each leaf nodes modify these cloned nodes instead of the originals</p>
<blockquote>
<pre>...
(let ([copy (cons (car t) (cdr t))])
  (if left?
    (set-car! copy-parent copy)
    (set-cdr! copy-parent copy))
  (stream-append (treewalk-copy^ (car t) #t copy)
                 (treewalk-copy^ (cdr t) #f copy))
...</pre>
</blockquote>
<p>The main <tt>treewalk</tt> procedure now has to return the cloned tree as well, since at each subsequent stage of the walk only the direct parent is known, not the entire tree.</p>
<blockquote>
<pre>...
(let ([copy (cons (car t) (cdr t))])
       (if left?
           (set-car! copy-parent copy)
           (set-cdr! copy-parent copy))
  (stream-append (treewalk-copy^ (car t) #t copy)
                 (treewalk-copy^ (cdr t) #f copy))
...</pre>
</blockquote>
<p>Code, including stream implementation, available <a href="http://www.cs.indiana.edu/~msalim/scheme/swap-leaves.scm">here</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/189/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/189/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=189&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/04/18/effectively-functional-swapping-tree-leaves-with-streams/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>LiteratePrograms</title>
		<link>http://hircus.wordpress.com/2006/03/04/literateprograms/</link>
		<comments>http://hircus.wordpress.com/2006/03/04/literateprograms/#comments</comments>
		<pubDate>Sat, 04 Mar 2006 11:55:00 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Pedagogy]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/03/04/literateprograms/</guid>
		<description><![CDATA[This being mid-term week for course I am a TA for, the lab sections I taught yesterday were made optional, and so apart from handling several questions on exam questions and assignments, I had some free time. That time was spent reading Lambda the Ultimate, which was how I noticed the LiteratePrograms wiki. Based on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=188&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This being mid-term week for course I am a TA for, the lab sections I taught yesterday were made optional, and so apart from handling several questions on exam questions and assignments, I had some free time.</p>
<p>That time was spent reading <a href="http://lambda-the-ultimate.org/">Lambda the Ultimate</a>, which was how I <a href="http://lambda-the-ultimate.org/node/1336">noticed</a> the <a href="http://literateprograms.org/LiteratePrograms:Welcome">LiteratePrograms</a> wiki. Based on Wikipedia&#8217;s MediaWiki, with added feature from the noweb literate programming system, it is to collaborative programming what other wikis are to collaborative writing. You can declare code blocks, and if the language is supported get syntax highlighting for free; the code is automatically packaged into a zip archive everytime someone hits the download link.</p>
<p>Check it out. But if you&#8217;re teaching a programming course, don&#8217;t mention it to your students <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/188/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/188/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=188&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/03/04/literateprograms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Python tail-call decorator</title>
		<link>http://hircus.wordpress.com/2006/03/02/python-tail-call-decorator/</link>
		<comments>http://hircus.wordpress.com/2006/03/02/python-tail-call-decorator/#comments</comments>
		<pubDate>Thu, 02 Mar 2006 22:36:00 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/03/02/python-tail-call-decorator/</guid>
		<description><![CDATA[Two days ago, this tail call decorator by Crutcher Dunnavant was mentioned on LtU. It&#8217;s a clever little trick: the decorator returns a new function that, when called, checks if its grandparent is itself. This would mean that a function declared to be tail-call-optimized is called from another tail-called-optimized function, and so the caller&#8217;s frame [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=187&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Two days ago, this <a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/474088">tail call decorator<br />
</a> by Crutcher Dunnavant was <a href="http://lambda-the-ultimate.org/node/1331">mentioned</a> on LtU. It&#8217;s a clever little trick: the decorator returns a new function that, when called, checks if its <em>grandparent</em><br />
is itself. This would mean that a function declared to be tail-call-optimized is called from another tail-called-optimized function, and so the caller&#8217;s frame in the stack can be wiped. How does it do this? The function <em>throws</em> an exception. This is caught by the grandparent, which then calls the saved function with the arguments passed in the exception.</p>
<p>This is the <a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/474088">original </a>implementation:</p>
<blockquote>
<pre>

#!/usr/bin/env python2.4
# This program shows off a python decorator(
# which implements tail call optimization. It
# does this by throwing an exception if it is
# it's own grandparent, and catching such
# exceptions to recall the stack.

import sys

class TailRecurseException:
  def __init__(self, args, kwargs):
    self.args = args
    self.kwargs = kwargs

def tail_call_optimized(g):
  """
  This function decorates a function with tail call
  optimization. It does this by throwing an exception
  if it is it's own grandparent, and catching such
  exceptions to fake the tail call optimization.

  This function fails if the decorated
  function recurses in a non-tail context.
  """
  def func(*args, **kwargs):
    f = sys._getframe()
    if f.f_back and f.f_back.f_back         and f.f_back.f_back.f_code == f.f_code:
      raise TailRecurseException(args, kwargs)
    else:
      while 1:
        try:
          return g(*args, **kwargs)
        except TailRecurseException, e:
          args = e.args
          kwargs = e.kwargs
  func.__doc__ = g.__doc__
  return func

@tail_call_optimized
def factorial(n, acc=1):
  "calculate a factorial"
  if n == 0:
    return acc
  return factorial(n-1, n*acc)

print factorial(10000)
# prints a big, big number,
# but doesn't hit the recursion limit.

@tail_call_optimized
def fib(i, current = 0, next = 1):
  if i == 0:
    return current
  else:
    return fib(i - 1, next, current + next)

print fib(10000)
# also prints a big number,
# but doesn't hit the recursion limit.</pre>
</blockquote>
<p>There is a subtle bug: after handling the exception, <em>func</em> then calls its own saved version of  <em>g</em>, not the <em>g</em> of the <em>func</em> that throws the exception. Modifying <em>func</em> and the <strong>TailRecurseException</strong> class so that the function to be called can be passed in the exception solves this nicely:</p>
<blockquote>
<pre>
class TailRecurseException:
  def __init__(self, g, args, kwargs):
    self.g = g
    self.args = args
    self.kwargs = kwargs

  ...
  def func(*args, **kwargs):
    f = sys._getframe()
    if f.f_back and f.f_back.f_back         and f.f_back.f_back.f_code == f.f_code:
      raise TailRecurseException(g, args, kwargs)
    else:
      newg = g
      while 1:
        try:
          return newg(*args, **kwargs)
        except TailRecurseException, e:
          newg = e.g
          args = e.args
          kwargs = e.kwargs
  ...</pre>
</blockquote>
<p>Throwing an exception just to handle the required stack manipulation because the interpreter won&#8217;t handle it is grossly inefficient, granted, and requiring the programmer to declare functions as optimizable is not be ideal, but still a really neat trick.</p>
<p>As a side note, if a function can be called in tail and non-tail position, a non-decorated version should be made available, otherwise bad things can happen:</p>
<blockquote>
<pre>
@tail_call_optimized
def add1(n):
  return (n+1)

@tail_call_optimized
def add2(n):
  return add1(add1(n))</pre>
</blockquote>
<p>This returns 41.</p>
<p>Modified version, and test cases, available <a href="http://www.cs.indiana.edu/%7Emsalim/python/tailcall2.py">here</a> [IUCS] (backup copy <a href="http://hircus.org/python/tailcall2_py.txt">here</a>).</p>
<p><span style="font-weight:bold;">Update</span>: added <a href="http://lambda-the-ultimate.org/node/1331#comment-15183">isTailCall</a> by jorend. Now it is safe to optimize every function (though for efficiency reason you&#8217;d only optimize the ones that make tail calls).</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/187/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/187/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/187/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=187&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/03/02/python-tail-call-decorator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Whorfianism in PL design</title>
		<link>http://hircus.wordpress.com/2006/02/12/whorfianism-in-pl-design/</link>
		<comments>http://hircus.wordpress.com/2006/02/12/whorfianism-in-pl-design/#comments</comments>
		<pubDate>Sun, 12 Feb 2006 19:34:00 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Linguistics]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2006/02/12/whorfianism-in-pl-design/</guid>
		<description><![CDATA[While the aptness of the Whorfian hypothesis is still a highly-contentious issue when it comes to natural languages, the hypothesis more or less confirms itself again and again in the realms of programming languages. Certain programming styles are simply more suited to certain languages: you don&#8217;t try to use higher-order functions in C, after all; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=186&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While the aptness of the Whorfian hypothesis is still a highly-contentious issue when it comes to natural languages, the hypothesis more or less confirms itself again and again in the realms of programming languages. Certain programming styles are simply more suited to certain languages: you don&#8217;t try to use higher-order functions in C, after all; the lack of nested functions make this idea unworkable.</p>
<p>Which makes languages like <a href="http://scala.epfl.ch/">Scala</a> exciting. It&#8217;s fully functional, and also fully object-oriented.Integers are objects. Functions? Also objects. The List ADT familiar to functional programmer is now an Object, with methods such as fold and filter defined on it (which makes the syntax a bit confusing, but not if you come from Ruby. Or your first language is japanese. But I digress)</p>
<p>Best of both worlds? Well, not quite. The new Scala compiler looks promising, but it still trips up on this simple mutual-recursion example:</p>
<blockquote>
<pre>
object RecEvenOdd {
  def rec_oddp(n: Int): Boolean =
    { if (n == 0) false else rec_evenp(n-1) }
  def rec_evenp(n: Int): Boolean =
    { if (n == 0 ) true else rec_oddp(n-1) }
  def rec_oddevenp(flag: Boolean, n: Int): Boolean = {
    if (n == 0) flag else rec_oddevenp(!flag, n-1)
  }

  def main(args: Array[String]): unit = {
    val n: Int = Integer.parseInt(args(0));
    System.out.println("recursive: " + n + ": " +       rec_oddevenp(true, n));
    System.out.println("mutual rec: " + n + ": " +       rec_evenp(n));
  }
}</pre>
</blockquote>
<p>The former gets detected as a tail call and optimized. The second? No such luck.. yet.</p>
<p>Of further note is the implementation of streams: Scala implements the &#8220;odd&#8221; style of lazy programming (Wadler et al., <a href="http://cm.bell-labs.com/who/wadler/papers/lazyinstrict/lazyinstrict.ps.gz"><em>How to add laziness to a strict language without even being odd</em></a>); the provided implementation is very similar to the reference implementation of streams for Scheme in <a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html">SICP</a>. The following program will thus unnecessarily compute the square root of -1:</p>
<blockquote>
<pre>
object WadlerTest {
  def countdown(n: Int): Stream[Int] =
    Stream.cons(n, countdown(n-1));
  def sqrt(n: Double): Double = {
    System.out.println("sqrt: called with " + n);
    Math.sqrt(n);
  }
  def main(args: Array[String]): unit = {
    countdown(4) map { n =&gt; sqrt(n) } take(5) print
  }
}</pre>
</blockquote>
<p>The syntax can also be bizarre at times, a motley of Java-isms and proper FP style. For example,</p>
<pre>{ n =&gt; sqrt(n) }</pre>
<p>is η-reducible to sqrt, but Scala would not compile it with this definition of sqrt. Rewriting  sqrt thus:</p>
<blockquote>
<pre>
  def sqrt = { n: Double =&gt;
  ...</pre>
</blockquote>
<p>now sqrt can be passed to map &#8211; but the automatic cast from Int to Double is no longer performed.  Eek.</p>
<p>Moral of the story? I&#8217;m learning Haskell.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/186/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/186/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/186/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=186&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2006/02/12/whorfianism-in-pl-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Nokia 770</title>
		<link>http://hircus.wordpress.com/2005/12/17/nokia-770/</link>
		<comments>http://hircus.wordpress.com/2005/12/17/nokia-770/#comments</comments>
		<pubDate>Sat, 17 Dec 2005 18:48:00 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Gnome/GTK+]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nokia]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2005/12/17/nokia-770/</guid>
		<description><![CDATA[My Nokia 770, pre-ordered on Nov 14th, finally arrived this Thursday, shipping after exactly one month (to FedEx&#8217;s credit, the 3-day shipping ended up taking 1 day). I had an exam in the morning and a paper due later that day, so it wasn&#8217;t until Friday that I laid my hand on it. First impression? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=183&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My Nokia 770, pre-ordered on Nov 14th, finally arrived this Thursday, shipping after exactly one month (to FedEx&#8217;s credit, the 3-day shipping ended up taking 1 day). I had an exam in the morning and a paper due later that day, so it wasn&#8217;t until Friday that I laid my hand on it.</p>
<p>First impression? It&#8217;s smaller than expected &#8211; about the same dimension as a PDA, rotated 90&deg; and stretched slightly along the width. And the screen is crystal-sharp!</p>
<p>On the downside, application load times are on the sluggish side, and the OOM killer kicks in a bit too often, wspecially when browsing Flash-heavy sites.</p>
<p>Some third-party applications are on the unstable side &#8211; the WebCore-based mini browser crashes whenever one types into a password field; the ScummVM game Beneath a Steel Sky does not display an icon in the task bar, making it impossible to kill without first installing X Terminal. Hail <tt>killall</tt>!</p>
<p>Need to set up my Linux box for Maemo development over the break, so I could start porting <a href="http://home.gna.org/quarry/">Quarry</a>. Chess is great, but sometimes one feels like Go or Reversi&#8230;</p>
<p>This post typed on a <a href="http://www.nokiausa.com/770">770</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/183/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/183/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/183/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=183&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2005/12/17/nokia-770/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Static (lexical) vs dynamic scoping</title>
		<link>http://hircus.wordpress.com/2005/06/02/static-lexical-vs-dynamic-scoping/</link>
		<comments>http://hircus.wordpress.com/2005/06/02/static-lexical-vs-dynamic-scoping/#comments</comments>
		<pubDate>Thu, 02 Jun 2005 22:20:00 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scheme]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2005/06/02/static-lexical-vs-dynamic-scoping/</guid>
		<description><![CDATA[Eric and I were discussing scoping in Scheme and Python earlier today, our third over the past few weeks &#8211; and we finally nailed it shut. The first time he brought up dynamic scoping in Common Lisp and how Prof. Friedman dislikes it; the second was on how Python appears to have dynamic scoping (which [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=180&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Eric and I were discussing scoping in Scheme and Python earlier today, our third over the past few weeks &#8211; and we finally nailed it shut. The first time he brought up dynamic scoping in Common Lisp and how Prof. Friedman dislikes it; the second was on how Python appears to have dynamic scoping (which turns out to be true, pre-Python 2.2), and now, thanks to Wikipedia, I think we have it right.</p>
<p>Provided Eric gets the H211 Introduction to Programming (Honors) class, which is in Python, and I get the C211 Introduction to Programming (Scheme), our discussion should stand us in good steed, though funnily today I played the Python guy and he played the Scheme one.</p>
<p>I&#8217;m going to show the examples, both in Scheme and Python; the first one in each section would appear to show that the language in question features dynamic scoping, which is incorrect as both actually do lexical scoping.</p>
<p>Scheme:<br />
Bad:</p>
<pre>
(let ((pi 3.1415))
 (define area
  (lambda (r)
   (* pi r r)))
 (display (area 10))
 (newline)
 (set! pi 3)
 (display (area 10)))</pre>
<p>Good:</p>
<pre>
(let ((pi 3.1415))
 (define area
  (lambda (r)
   (* pi r r)))
 (display (area 10))
 (newline)
 (let ((pi 3))
  (display (area 10))))</pre>
<p>Python:<br />
Bad:</p>
<pre>
pi = 3.1415
def area(r):
 return pi*r*r
area(10)
pi = 3
area(10)</pre>
<p>Good:</p>
<pre>
pi = 3.1415
pi_holder = 10
def create_area():
 pi_holder = pi  # local pi_holder, different from pi_holder outside
 def area(r):
  return pi_holder*r*r
 return area
area = create_area()
area(10)    # 314.15
pi_holder    # Still 10
pi_holder = 3
area(10)    # Still 314.15</pre>
<p>The above works, but is a bit problematic. I introduced <tt>pi_holder=10</tt> to show that, (1), pi_holder inside of <tt>create_area()</tt> is a local variable; (2), that this local pi_holder is the one that is in <tt>area</tt>&#8216;s scope, and thus changing the value of pi_holder does not affect it.</p>
<p>Isn&#8217;t it easier to just do pi = pi ? Well, that does not work. My initial hunch was that Python reads the LHS of the expression, decided pi has been redeclared as a local variable, and thus since it&#8217;s not been initialized it got confused trying to assign it the value of itself. But it&#8217;s actually worse; this code does not work either:</p>
<pre>
x = 42
def local_var_test():
 temp = x
 print temp  # 42
 x = temp
 print x   # 42?</pre>
<p>Surprise! Python won&#8217;t let you do that either. Take out the last two lines and the code works, though. Basically, if in the block a variable is declared <em>anywhere</em>, it is a local variable everywhere in that block, and trying to refer to a variable declared in the surrounding scope, even before the local declaration, will fail.</p>
<p>But this is where default parameters come in handy. A better way to rewrite the clunky code above is as follows:</p>
<pre>
pi = 3.1415
def create_area(pi = pi):
 def area(r):
  return pi*r*r
 return area
area = create_area()
area(10)    #314.15
pi = 3
area(10)    #314.15</pre>
<p>So Python has static scoping after all. The thing to bear in mind is that Scheme functions are named closures, while Python functions inherit the surrounding scope, so to freeze the variables you depend on you have to wrap your function definition inside another function that copies in the values you need into its local variables.</p>
<p>References:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Python_programming_language#Closures">Python programming language (Wikipedia): Closures</a></li>
<li><a href="http://en.wikipedia.org/wiki/Scope_%28programming%29">Scope (Wikipedia)</a></li>
</ul>
<p>And the funny thing is, I started the day trying to find good dynamic languages that run on the Java platform (platform envy, I guess, since .NET more prominently touts its language neutrality). Sun&#8217;s finally catching up, though &#8211; Tim Bray <a href="http://www.tbray.org/ongoing/When/200x/2005/03/15/Coyote">wrote</a> a few months back about the <a href="https://coyote.dev.java.net/">Coyote</a> project to support dynamic languages in Sun&#8217;s open source IDE, NetBeans, and pointed to an interesting Sun-developed scripting language, <a href="https://pnuts.dev.java.net/">Pnuts</a>. Which reminded me of Groovy and Boo.</p>
<p>Googling for <em>groovy boo .net</em> &#8211; Groovy being a Ruby-like scripting language for Java that received a lot of attention a few months ago, and then taken some flak over its development model, and Boo being the Python-like language for .NET &#8211; yields this <a href="http://developers.slashdot.org/article.pl?sid=05/03/30/1932209&amp;tid=156&amp;tid=8">very interesting Slashdot discussion</a> that led me to such intriguing functional OO languages as <a href="http://scala.epfl.ch/">Scala</a> and <a href="http://nice.sourceforge.net">Nice</a>. .NET fans do not get to have all the fun!</p>
<p>Groovy, on the other hand, seems <a href="http://www.pyrasun.com/mike/mt/archives/2005/01/09/20.57.06/">rather</a> <a href="http://www.manageability.org/blog/stuff/what-is-wrong-with-groovy/view">disappointing</a>. Oh well. Scala looks more like Haskell, but with dynamic type inference (like Boo).. yay!</p>
<p><strong>Update</strong> &#8211; <em>2005/06/06</em></p>
<p>Realized a few days ago, but haven&#8217;t gotten round to posting about it, that I was unfairly comparing Scheme and Python, and that Python methods <em>are</em> closures in themselves. Note:</p>
<pre>
pi = 3.1415
def area(r):
 return pi*r*r
print area(10)  # 314.15
def test():
 pi = 3
 print area(10) # 314.15
test()</pre>
<p>In the earlier example, overriding the value of pi with <tt>pi = 3</tt> is the equivalent of doing <tt>(set! pi 3)</tt> in Scheme, i.e. it will change the value of the variable that both the top-level pi, which is the one that area knows. In a dynamic scope, which uses a stack to figure out which value assignment should apply, <tt>pi = 3</tt> would affect the call to <tt>area</tt> just after it.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/180/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/180/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=180&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2005/06/02/static-lexical-vs-dynamic-scoping/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
		<item>
		<title>Ubuntu Hoary</title>
		<link>http://hircus.wordpress.com/2005/03/26/ubuntu-hoary/</link>
		<comments>http://hircus.wordpress.com/2005/03/26/ubuntu-hoary/#comments</comments>
		<pubDate>Sat, 26 Mar 2005 14:04:06 +0000</pubDate>
		<dc:creator>Michel S.</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://hircus.wordpress.com/2005/03/26/ubuntu-hoary/</guid>
		<description><![CDATA[&#8230; is the first release of a Linux distribution in a long time that I could cheer until my voice becomes hoarse (ha!) without going to very technical explanations. In other words, a lot of things Just Works™ Software installs/updates and power management.. the latter is probably an eye-popper to a veteran Linux laptop user, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=172&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230; is the first release of a Linux distribution in a <em>long</em> time that I could cheer until my voice becomes hoarse (ha!) without going to very technical explanations. In other words, a lot of things Just Works™</p>
<p><a href="http://www.gnomejournal.org/article/19/simplified-package-management-in-ubuntu-hoary">Software installs/updates</a> and <a href="http://www.ubuntulinux.org/wiki/HoaryPM">power management</a>.. the latter is probably an eye-popper to a veteran Linux laptop user, and the former, even Red Hat never managed to get right out of the box (while Debian never managed to get pretty-looking). The thing that prompted me to write this, though, is removable media support. Plug in a USB drive (in my case, the <a href="http://www.magnatune.com/info/tuneplug">TunePlug</a> from Magnatune, with 10 MP3 rock albums bundled) and up it pops on your desktop, <em>with the correct volume label</em>. Naturally suspicious, I did a quick directory listing of <strong>/media</strong> and, to my pleasant surprise, the mount-point was dynamically created with the same name.</p>
<p>I was impressed enough to start looking at fixing my desktop&#8217;s loud fans (to no avail, but I chanced upon Shuttle&#8217;s new BTX line, the <a href="http://sys.us.shuttle.com/ModelsI.aspx">XPC i-series</a>. Gorgeous, alas, it&#8217;s for Intel CPUs.. and I&#8217;m not a fan (pun intended) of the Pentium 4&#8242;s design, even with the bolt-on 64-bit support). And looking at the notebook situation in Intel land.. which led me to humbly revise my opinion of Dell. Their <a href="http://reviews.cnet.com/Dell_Inspiron_700m/4535-3121_7-30975241.html?tag=top">Inspiron 700m</a> is.. ooh!</p>
<p>Pity about the battery life though. Let&#8217;s see what Fujitsu could do with the new AMD Turion..</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hircus.wordpress.com/172/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hircus.wordpress.com/172/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hircus.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hircus.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hircus.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hircus.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hircus.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hircus.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hircus.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hircus.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hircus.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hircus.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hircus.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hircus.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hircus.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hircus.wordpress.com/172/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hircus.wordpress.com&#038;blog=561873&#038;post=172&#038;subd=hircus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hircus.wordpress.com/2005/03/26/ubuntu-hoary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ac78be5e356078c3d5a126840934538?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michel S.</media:title>
		</media:content>
	</item>
	</channel>
</rss>
