<?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:gml="http://www.opengis.net/gml"
>

<channel>
	<title>xyzzy xyzzy... &#187; void</title>
	<atom:link href="http://xyzzyxyzzy.net/topics/void/feed/" rel="self" type="application/rss+xml" />
	<link>http://xyzzyxyzzy.net</link>
	<description>...you are in a grid of twisty, little links, all alike. there's a teleport gate here.</description>
	<lastBuildDate>Fri, 15 Jan 2010 15:49:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>iDon&#8217;t</title>
		<link>http://xyzzyxyzzy.net/2009/10/19/idont/</link>
		<comments>http://xyzzyxyzzy.net/2009/10/19/idont/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 11:59:23 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[void]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[android iphone]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=365</guid>
		<description><![CDATA[sean dague forwarded me this youtube vid: lol&#8230; &#8230;and actually fits quite well to this register story about android going to overtake iDon&#8217;t, err, iPhone in 2012.]]></description>
			<content:encoded><![CDATA[<p><a href="http://dague.net/sean/">sean dague</a> forwarded me this youtube vid:</p>

<p><object class="youtube" width="425" height="344"><param name="movie" value="http://www.youtube.com/v/dPYM-XTqcec&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/dPYM-XTqcec&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>

<p>lol&#8230;</p>

<p>&#8230;and actually fits quite well to <a href="http://www.reghardware.co.uk/2009/10/09/android_2012_gartner/">this register story</a> about android going to overtake <del>iDon&#8217;t</del>, err, iPhone in 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/10/19/idont/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>duden officebib: stay away from the .deb file</title>
		<link>http://xyzzyxyzzy.net/2009/05/24/duden-officebib-stay-away-from-the-deb-file/</link>
		<comments>http://xyzzyxyzzy.net/2009/05/24/duden-officebib-stay-away-from-the-deb-file/#comments</comments>
		<pubDate>Sun, 24 May 2009 12:23:03 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[void]]></category>
		<category><![CDATA[duden]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[officebib]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=291</guid>
		<description><![CDATA[while researching the german word &#8220;wallen&#8221; i bought the universalwörterbuch from duden, a respected and well-known dictionary publisher in german speaking countries. the download page offers a debian&#8211;ubuntu package of officebib, the underlying application for a series of dictionaries from duden and other publishers. running kubuntu i naturally chose that one to install &#8212; and [...]]]></description>
			<content:encoded><![CDATA[<p>while <a href="http://d2h.net/blog/2009/05/08/stumbling-over-words">researching the german word &#8220;wallen&#8221;</a> i bought the <em>universalwörterbuch</em> from <a href="http://www.duden.de/">duden</a>, a respected and well-known dictionary publisher in german speaking countries. the download page offers a debian&#8211;ubuntu package of <em>officebib</em>, the underlying application for a series of dictionaries from duden and other publishers. running kubuntu i naturally chose that one to install &#8212; and it worked&#8230;</p>

<p>&#8230;it worked but in contrast to all other applications was using pixel fonts instead of truetype fonts, rendering all text rather ugly. today i did a bit of searching around whether other folks had encountered this issue and had perhaps found a way around it. eventually i came across <a href="http://qaywsxedcrfv.blogspot.com/2007/10/die-office-bibliothek-warum-einfach.html">a post on the {} blog (sic)</a> which recommended <strong>not</strong> to use the <code>.deb</code> package but instead to one of the <code>.rpm</code> packages:</p>

<pre><code>% sudo apt-get install fakeroot alien
</code></pre>

<p>will install the pre-requisites. then download the SuSE <code>.rpm</code> package and turn it into a debian package like so:</p>

<pre><code>% fakeroot alien officebib-5.0.4-1-suse.rpm
</code></pre>

<p>and install it:</p>

<pre><code>% dpkg -i officebib_5.0.4-2_i386.deb
</code></pre>

<p>voila! no more ugly fonts.</p>

<p>now, why doesn&#8217;t duden do this instead of providing a flawed <code>.deb</code> package? puzzled.</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/05/24/duden-officebib-stay-away-from-the-deb-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
		<item>
		<title>the (few) joys and (mostly) pains of kubuntu 08.10 on newer intel based laptops</title>
		<link>http://xyzzyxyzzy.net/2008/12/27/the-few-joys-and-mostly-pains-of-kubuntu-0810-on-newer-intel-based-laptops/</link>
		<comments>http://xyzzyxyzzy.net/2008/12/27/the-few-joys-and-mostly-pains-of-kubuntu-0810-on-newer-intel-based-laptops/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 21:04:27 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[void]]></category>
		<category><![CDATA[glxgears]]></category>
		<category><![CDATA[hardy]]></category>
		<category><![CDATA[intrepid]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[x200]]></category>
		<category><![CDATA[Xorg]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=192</guid>
		<description><![CDATA[as part of my job i need reasonably good graphics to be able to run virtual world clients (reasonable, i&#8217;m not too greedy). when i recently got an upgrade from my &#8220;old&#8221; thinkpad x60 to a fairly new x200 with an intel GM45 inside, i was really looking forward to it improved graphics performance1. after [...]]]></description>
			<content:encoded><![CDATA[<p>as part of my job i need reasonably good graphics to be able to run virtual world clients (reasonable, i&#8217;m not too greedy). when i recently got an upgrade from my &#8220;old&#8221; <a href="http://www.thinkwiki.org/wiki/Category:X60">thinkpad x60</a> to a fairly new <a href="http://www.thinkwiki.org/wiki/Category:X200">x200</a> with an intel GM45 inside, i was really looking forward to it improved graphics performance<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>. after a bit of research it seemed that only the latest kubuntu 08.10 would fully support the graphics card.</p>

<p>so, after downloading the ISO image of the kubuntu 08.10 alternate boot CD<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> i installed it on the new x200 &#8212; after about 30min or so i had the base system installed and was ready to copy in my backed up home, project and source directories. a first glance and <code>apt-get update; apt-get upgrade</code> revealed: KDE4.1 was running. interesting&#8230;</p>

<p>&#8230;and it quickly transpired: KDE4.1, while all glamorous and flashy (lots of blink here, there, and there, there, and there) was not really <em>on par</em> with the powerful and versatile workhorse KDE 3.5, not at all:</p>

<ul>
<li>no desktop icons</li>
<li>thinkpad keys (fn-f4 et al) not really working (fn returns <code>XF86WakeUp</code> for some strange reason)</li>
<li>trying to change screen setup via system settings was a complete failure: user interface utterly confusing and apparently itself confused about the available displays (i was just trying to enable the 1600&#215;1200 TFT and place it &#8220;next&#8221; to the x200&#8242;s LCD)</li>
<li>trying to accomplish the desired display configuration via <code>xrandr</code> resulted in a nice and ugly crash of <code>kwin</code></li>
</ul>

<p>hmm&#8230;okaayyy. perhaps we can live with this as the intel 5100/5300 WLAN interface is working nicely&#8230;well, kind of: <code>knetwork manager</code> really didn&#8217;t like our company internal WLAN setup and just ignored it. not good. but then, nothing to really blame on kubuntu 08.10: knetwork manager never liked our WLAN, not in kubuntu 08.04 nor in kubuntu 07.04 &#8212; googling around once more for a possible replacement i stumble over <a href="http://wicd.sourceforge.net/"><code>wicd</code></a>.</p>

<p><code>wicd</code> turns out to be quite flexible and we can even add authentication schemes &#8212; it&#8217;s rather simple to add support for our internal WLAN.</p>

<p>next, i check whether on the secondlife client: it somehow seems a bit sluggish&#8230;well, sluggish seems to be a bit of and understatement: it&#8217;s downright jerky. running <code>glxgears</code> it turns out that i&#8217;m getting about 300fps &#8212; just <strong>300fps!</strong> ouch. very ouch. <a href="https://bugs.launchpad.net/bugs/252094">turns out (k)ubuntu 8.10 has a problem with intel based GPUs.</a></p>

<p>the <a href="https://bugs.launchpad.net/bugs/252094">suggested workarounds</a> just don&#8217;t cut it and actually result in a very unstable system: enabling the external monitor still crashes <code>kwin</code>; running the secondlife client sometimes works, sometimes it crashes the X server, sometimes it just causes a frozen system; suspending always kill the X server <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  &#8212; a final attempt at upgrading to KDE 4.2beta just results in keybindings not working across reboots. <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>

<p>so, i decide to try running kubuntu 8.04.01 on the X200:</p>

<ul>
<li>X performance: consistently over 1200fps, sweet <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>intel 5100/5300 WLAN: not working at first, installing the drivers from the <a href="http://www.intellinuxwireless.org/">intel linux wireless</a> at first works, but once i try a suspend i get an ugly kernel crash &#8212; worse: on booting it crashes as well</li>
</ul>

<p>still, WLAN can be worked around by using a USB WLAN &#8212; so, i reboot, remove the WLAN driver from the system, apply a kernel update that just became available (2.6.26-23) and reboot&#8230;</p>

<p>&#8230;and am utterly and completely amazed when i call up <code>wicd</code> to connect to the office ethernet: apparently the latest kernel update brought with it support for the intel 5100/5300 <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>so, the latest kubuntu 08.04.01 works like a charm on the x200.</p>

<ul>
<li>kubuntu 08.10 on x200: keep away from it (in general even)</li>
<li>kubuntu 08.04.01 on X200: <strong>recommended.</strong></li>
</ul>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>especially the fact that it could operate the large screen, 1600&#215;1200 TFT display <strong>and</strong> still support openGL.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>to have the installer encrypt all partitions.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2008/12/27/the-few-joys-and-mostly-pains-of-kubuntu-0810-on-newer-intel-based-laptops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
		<item>
		<title>goodbye steve</title>
		<link>http://xyzzyxyzzy.net/2008/10/15/goodbye-steve/</link>
		<comments>http://xyzzyxyzzy.net/2008/10/15/goodbye-steve/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 21:25:53 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[void]]></category>
		<category><![CDATA[friends]]></category>
		<category><![CDATA[memories]]></category>
		<category><![CDATA[steve wright]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=160</guid>
		<description><![CDATA[this morning i learnt that on monday afternoon my very good friend (and colleague) steve wright died after a motorbike accident in twyford. to say that i&#8217;m devastated and sad is an understatement. all day long pictures of steve keep coming up: our first project together for a UK mobile phone operator, working frantically through [...]]]></description>
			<content:encoded><![CDATA[<div class="g2image_float_left"><a href="http://d2h.net/blog/v/dr_who/remembering/steve_wright/DSCN0960-steve.JPG.html"><img src=http://d2h.net/gallery/d/23016-2/DSCN0960-steve.JPG?g2_GALLERYSID=dc0c1c8d88ee76a9bfbb6afb7efb26eb></a></div>

<p>this morning i learnt that on monday afternoon my very good friend (and colleague) steve wright died after a <a href="http://www.hampshirechronicle.co.uk/news/news/3761170.Twyford_biker_named/">motorbike accident in twyford.</a></p>

<p>to say that i&#8217;m devastated and sad is an understatement.</p>

<p>all day long pictures of steve keep coming up: our first project together for a UK mobile phone operator, working frantically through the night to get the demo running next morning at 9:00 &#8230; steve picking mrs d and me up at the end of our southdowns walk last year and whisking us back to bigpath farm &#8230; steve taking care of their cat bramble &#8230; steve preparing the BBQ &#8230; us having a ridiculously expensive pint of guinness at disneyland paris &#8230; seemingly endless and escalating sametime exchanges of more and more ridiculous icons that we each had found on the internet &#8230; his two words of german &#8220;moin moin&#8221; with which he would start all his sametime sessions with me &#8230; DVDs with those missed topgear or dr who episodes arriving from the UK &#8230; steve taking us on a mini-pub crawl through pubs of hampshire &#8230; URLs with links to fantasticly looking new bikes &#8230; URLs to ridiculous stuff each of us had found on the internet &#8230; our planned trip to the bike exhibition in milano in three weeks, him as the CEO of bigpath enterprise, me as the bigpath enterprise sales director germany and switzerland &#8230; his &#8220;right!&#8221; when he&#8217;d just finished something &#8230; standing in line at the coffee bar in hursley &#8230; his shed full of bikes and bike parts &#8230; his wit &#8230; his humour &#8230; having a laugh with him&#8230;</p>

<div class="g2image_float_right"><a href="http://d2h.net/blog/v/dr_who/remembering/steve_wright/DSC01218-steve.JPG.html"><img src="http://d2h.net/gallery/d/23022-2/DSC01218-steve.JPG?g2_GALLERYSID=dc0c1c8d88ee76a9bfbb6afb7efb26eb"></a></div>

<p>sigh.</p>

<p>we have lost a very good friend and i miss him terribly. our thoughts are with his family who must miss him even more.</p>

<p>here&#8217;s to you, steve! i hope we&#8217;ll see each other again some day!</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2008/10/15/goodbye-steve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
		<item>
		<title>happy birthday GNU!</title>
		<link>http://xyzzyxyzzy.net/2008/09/03/happy-birthday-gnu/</link>
		<comments>http://xyzzyxyzzy.net/2008/09/03/happy-birthday-gnu/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 20:21:04 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[exhibition]]></category>
		<category><![CDATA[from the grid]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[m-health]]></category>
		<category><![CDATA[void]]></category>
		<category><![CDATA[weirdology]]></category>
		<category><![CDATA[birhtday]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[stephen fry]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=149</guid>
		<description><![CDATA[incredible as it is, GNU turns 25! unless you&#8217;ve been hibernating behind a big rock in a remote area almost off our world you must have heard about GNU &#8212; in fact, i think it&#8217;s fair to say that without GNU, without richard stallman and his vision we&#8217;d not have the internet as we know [...]]]></description>
			<content:encoded><![CDATA[<p>incredible as it is, <strong>GNU turns 25!</strong> unless you&#8217;ve been hibernating behind a big rock in a remote area almost off our world you must have heard about <a href="http://www.gnu.org/">GNU</a> &#8212; in fact, i think it&#8217;s fair to say that without GNU, without <a href="http://en.wikipedia.org/wiki/Richard_stallman">richard stallman</a> and his vision we&#8217;d not have the internet as we know it today! not by far! software like <a href="http://en.wikipedia.org/wiki/Linux_kernel">linux</a>, <a href="http://en.wikipedia.org/wiki/Apache_HTTP_Server">apache</a> would not have been possible without GNU tools. even more &#8212; even if you are not aware of it, you might already be using GNU/linux in your mobile phone, your internet router, your set-top box, and so forth.</p>

<p><a href="http://stephenfry.com/blog/?p=52">stephen fry</a>, the <a href="http://en.wikipedia.org/wiki/Stephen_Fry">&#8220;english humorist, writer, wit, actor, novelist, filmmaker and television presenter&#8221;,</a> made a rather nice video for the occassion, entitled <em><a href="http://www.gnu.org/fry/">Freedom Fry — &#8220;Happy birthday to GNU&#8221;</a></em> &#8212; see for yourself:</p>

<p><span class="youtube">
<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/hjFahtRxgd4&amp;rel=1&amp;color1=2b405b&amp;color2=6b8ab6&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/hjFahtRxgd4&amp;rel=1&amp;color1=2b405b&amp;color2=6b8ab6&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=hjFahtRxgd4"><img src="http://img.youtube.com/vi/hjFahtRxgd4/default.jpg" width="130" height="97" border=0></a></p><p><a href="http://www.youtube.com/watch?v=hjFahtRxgd4">www.youtube.com/watch?v=hjFahtRxgd4</a></p></p>

<p>aside from mind-blowing software such as the <a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection">GNU compiler tool chain</a>, <a href="http://en.wikipedia.org/wiki/Emacs">emacs</a>, and lots and lots of other tools and programs, i personally think the <a href="http://en.wikipedia.org/wiki/GNU_General_Public_License">GNU public license (GPL)</a> is one of the most remarkable ideas that happened in software: basically it says</p>

<blockquote>
  <p>here is the software, here is the code, you can do with it what you want, but if you distribute it further you have to make the source available for free and if you make changes to the code you have to distribute those changes as source code for free as well</p>
</blockquote>

<p>brilliant. as stephen fry puts it: that is the good science equivalent of software. we can use it, we can build on it, but so can you and you even have the right under the GPL to demand that we give you the source to our code if we distribute it ourselves.</p>

<p>happy birthday GNU!</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2008/09/03/happy-birthday-gnu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
		<item>
		<title>sametime 3d on opensim!</title>
		<link>http://xyzzyxyzzy.net/2008/09/03/sametime-3d-on-opensim/</link>
		<comments>http://xyzzyxyzzy.net/2008/09/03/sametime-3d-on-opensim/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 16:52:39 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[void]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[sametime]]></category>
		<category><![CDATA[virtualworlds]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=145</guid>
		<description><![CDATA[&#8230;and we are live: IBM Takes Lotus Sametime into 3D with OpenSim nice to see everything coming together and going live have a look yourself: www.youtube.com/watch?v=QzuiEzTah5w and all powered by opensim]]></description>
			<content:encoded><![CDATA[<p>&#8230;and we are live: <em><a href="http://www.virtualworldsnews.com/2008/09/ibm-takes-lotus.html">IBM Takes Lotus Sametime into 3D with OpenSim</a></em> nice to see everything coming together and going live <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  have a look yourself:</p>

<p><span class="youtube">
<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/QzuiEzTah5w&amp;rel=1&amp;color1=2b405b&amp;color2=6b8ab6&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/QzuiEzTah5w&amp;rel=1&amp;color1=2b405b&amp;color2=6b8ab6&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=QzuiEzTah5w"><img src="http://img.youtube.com/vi/QzuiEzTah5w/default.jpg" width="130" height="97" border=0></a></p><p><a href="http://www.youtube.com/watch?v=QzuiEzTah5w">www.youtube.com/watch?v=QzuiEzTah5w</a></p></p>

<p>and all powered by <a href="http://opensimulator.org/wiki/Main_Page">opensim</a> <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2008/09/03/sametime-3d-on-opensim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>splitting opensim&#8217;s chat module</title>
		<link>http://xyzzyxyzzy.net/2008/05/27/splitting-opensims-chat-module/</link>
		<comments>http://xyzzyxyzzy.net/2008/05/27/splitting-opensims-chat-module/#comments</comments>
		<pubDate>Tue, 27 May 2008 09:34:15 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[void]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[opensim]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=112</guid>
		<description><![CDATA[similar to other virtual worlds opensim supports in-world chat (and instant messaging) so that two avatars can &#8220;talk&#8221; to one another. the code that implements that functionality is mostly contained in ChatModule, a region module. OpenSim also supports an IRC bridge: you can tie your OpenSim grid to an IRC channel hosted by an IRC [...]]]></description>
			<content:encoded><![CDATA[<p>similar to other virtual worlds opensim supports in-world chat (and instant messaging) so that two avatars can &#8220;talk&#8221; to one another. the code that implements that functionality is mostly contained in <code>ChatModule</code>, a <a href="http://opensimulator.org/wiki/RegionModules">region module</a>.</p>

<p>OpenSim also supports an IRC bridge: you can tie your OpenSim grid to an <a href="http://en.wikipedia.org/wiki/IRC">IRC channel</a> hosted by an IRC network and everything that&#8217;s being said (chatted) in any of the OpenSim regions is reported by an OpenSim IRC bot on the IRC channel &#8212; and vice versa.</p>

<p>until recently<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> chat traffic and IRC bridging was done by one single region module, <code>ChatModule</code>. as we are thinking about adding an <a href="http://en.wikipedia.org/wiki/Xmpp">XMPP</a> bridge that was sub-optimal and we needed to split <code>ChatModule</code>&#8230;</p>

<p>&#8230;to do that i&#8217;ve basically removed the <code>ISimChat</code> interface through which <code>ChatModule</code> was being called and turned the interface into a set of events in <code>EventManager</code>: OpenSim basically has something that we could virtual information bus that allows region modules to register handlers for certain event types. for each event type we usually have a <em>trigger</em> method in <code>EventManager</code> which a system component can invoke and pass data into to have it distributed via the &#8220;virtual info bus&#8221; to all subscribed region modules. for the chat functionality we now have two new events:</p>

<ul>
<li><code>ChatFromWorldEvent</code> &#8212; which is used to distribute chat from in-world objects</li>
<li><code>ChatBroadcastEvent</code> &#8212; which is used to send a broadcast chat to all logged in users</li>
</ul>

<p>plus, of course, the corresponding <code>TriggerOnChatFromWorld</code> and <code>TriggerOnChatBroadcast</code> methods as well.</p>

<p>the old <code>ChatModule</code> now exists as <code>ChatModule</code> and <code>IRCBridgeModule</code>. the new <code>ChatModule</code> now only takes care of chat traffic, nothing else. <code>IRCBridgeModule</code> is subscribed to <code>ChatFromWorldEvent</code> to receive all chat traffic from in-world and is also subscribed to each user&#8217;s client object to receive all chat traffic from clients (<code>ChatModule</code> does this also).</p>

<p>using the new <code>ChatBroadcastEvent</code> it was now possible to implement the LSL function <a href="http://wiki.secondlife.com/wiki/LlOwnerSay"><code>llOwnerSay()</code></a> as normal chat instead of having instant messages pop up.</p>

<p>also, <code>/me</code> is now properly translated in both directions. typing <code>/me sneezes</code> in the IRC window<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> causes IRC to say:</p>

<p><img src="http://xyzzyxyzzy.net/wp-content/uploads/2008/05/irc-me1.jpg" alt="" title="irc-pigdin" width="500" height="182" class="alignnone size-full wp-image-114" /></p>

<p>&#8230;which is then correctly rendered in OpenSim:</p>

<p><img src="http://xyzzyxyzzy.net/wp-content/uploads/2008/05/irc-me.jpg" alt="" title="IRC-2-OpenSim" width="276" height="170" class="alignnone size-full wp-image-113" /></p>

<p>likewise, typing <code>/me laughs</code> as Dr Scofield in the secondlife™ client shows up as follows in the secondlife client:</p>

<p><img src="http://xyzzyxyzzy.net/wp-content/uploads/2008/05/irc-me2.jpg" alt="" title="opensim-irc" width="247" height="132" class="alignnone size-full wp-image-115" /></p>

<p>and is correctly reported in the IRC channel:</p>

<p><img src="http://xyzzyxyzzy.net/wp-content/uploads/2008/05/irc-me3.jpg" alt="" title="irc-me3" width="487" height="96" class="alignnone size-full wp-image-116" /></p>

<p>another new thing: as you can see</p>

<p><img src="http://xyzzyxyzzy.net/wp-content/uploads/2008/05/irc-me-presence.jpg" alt="" title="irc-me-presence" width="500" height="182" class="alignnone size-full wp-image-117" /></p>

<p><code>IRCBridgeModule</code> now reports more (and correct) presence information as well.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>roughly before subversion release 4850 or thereabouts.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>i&#8217;m using <a href="http://www.pidgin.im/">pidgin</a> for all my IRC, google talk, and sametime chats.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2008/05/27/splitting-opensims-chat-module/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>automatically downloading LindenLab™ account statements</title>
		<link>http://xyzzyxyzzy.net/2008/05/15/automatically-downloading-lindenlab%e2%84%a2-account-statements/</link>
		<comments>http://xyzzyxyzzy.net/2008/05/15/automatically-downloading-lindenlab%e2%84%a2-account-statements/#comments</comments>
		<pubDate>Thu, 15 May 2008 13:14:22 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[void]]></category>
		<category><![CDATA[account statements]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[secondlife]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=106</guid>
		<description><![CDATA[our lab &#8220;owns&#8221; an island on the LindenLab grid and we&#8217;ve created a &#8220;lab&#8221; avatar who is the estate owner. as the island is paid for by the lab, we need to have monthly account statements on file for the bean counters. so far, i had to remember to log in to the lab avatar&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zurich.ibm.com/csc/process/virtualuniverses.html">our lab</a> &#8220;owns&#8221; an island on the LindenLab grid and we&#8217;ve created a &#8220;lab&#8221; avatar who is the estate owner. as the island is paid for by the lab, we need to have monthly account statements on file for the bean counters. so far, i had to remember to log in to the lab avatar&#8217;s account page, copy the account statement and mail it our friendly lady in accounting taking care of these things (yes, we are a small lab)&#8230;</p>

<p>&#8230;the only problem with that is that i tend to forget these things and our friendly accounting lady has to be rather patient and usually ends up sending reminder notes.</p>

<p>so, after another one of these notes and as it was becoming rather embarrassing that i kept forgetting, i decided to tackle it once and for all and write a python script to do this automatically. the very excellent <a href="http://wwwsearch.sourceforge.net/mechanize/"><code>mechanize</code> python package</a> turned out to be an invaluable tool.</p>

<p>here&#8217;s the script in all its glory:</p>

<pre><code><pre class="brush: python;">
#!/usr/bin/python
# -*- encoding: utf-8 -*-

import re
import smtplib
import time

from email.mime.text import MIMEText
from mechanize import Browser
from optparse import OptionParser
from ConfigParser import ConfigParser

class Ooops(Exception):
    def __init__(self, msg):
        self.value = msg

    def __str__(self):
        return msg

if __name__ == '__main__':

    try:
        parser = OptionParser()
        parser.add_option('-c', '--config', dest = 'config', 
                          help = 'path to configuration file', metavar = 'CONFIG-FILE')
        (options, args) = parser.parse_args()

        if not options.config:
            parser.error('--config option mandatory')

        config = ConfigParser()
        config.readfp(open(options.config))

        slURL = config.get('lindenlab', 'url')
        slAvatarFirstname = config.get('lindenlab', 'firstname')
        slAvatarLastname = config.get('lindenlab', 'lastname')
        slAvatarPassword = config.get('lindenlab', 'password')

        browser = Browser()

        # open http://www.secondlife.com/ and select the &amp;quot;resident login&amp;quot; link
        browser.open(slURL)
        browser.follow_link(text_regex = r'Resident\s*Login', nr = 0)

        # fill out the login form
        browser.select_form(nr = 0)
        browser['form[username]'] = slAvatarFirstname
        browser['form[lastname]'] = slAvatarLastname
        browser['form[password]'] = slAvatarPassword
        browser.submit()

        # page title should read: &amp;quot;Second Life | Your Account: WayLate Binder&amp;quot;
        rePageTitle = re.compile(r'Second\s+Life\s+\|\s+Your Account:')
        match = rePageTitle.match(browser.title())
        if not match: raise Ooops('not on account page')

        # select account history link and retrieve the statement
        statement_page = browser.follow_link(text_regex = r'Account\s+History', nr = 0)
        statement = statement_page.get_data()

        reURL = re.compile(r'^(?P&amp;lt;host&amp;gt;https?://[^/]+)')
        match = reURL.match(browser.geturl())
        if not match: raise Ooops('no host URL')
        url = match.groups('host')

        reHref = re.compile(r'href\s*=\s*&amp;quot;/')
        statement = reHref.sub('href=&amp;quot;%s/' % url, statement)

        browser.close()

        msgSubject = config.get('mail', 'subject')
        msgSubject = time.strftime(msgSubject)

        msgTo = config.get('mail', 'to')
        msgFrom = config.get('mail', 'from')
        msgCc = config.get('mail', 'cc')

        msgEnvTo = msgTo.split(',')
        if msgCc: 
            msgEnvTo += msgCc.split(',')

        msg = MIMEText(statement, 'html', 'UTF-8')
        msg['Subject'] = msgSubject
        msg['To'] = msgTo
        msg['Cc'] = msgCc
        msg['From'] = msgFrom

        smtp = smtplib.SMTP('localhost')
        smtp.sendmail(msgFrom, msgEnvTo, msg.as_string())
        smtp.close()

    except Ooops, e:
        print 'oops: failed to retrieve account statement: %s' % e.value

</pre>
</code></pre>

<p>it reads the avatar name, password and so forth from a configuration file:</p>

<pre>
[lindenlab]
url = http://www.secondlife.com
firstname = Foo
lastname = Bar
password = secret

[mail]
subject = %Y-%m LindenLab monthly account statement for Foo Bar
to = accounting@foo.bar.com
cc = me@foo.bar.com
from = me@foo.bar.com
</pre>

<p>adapt the config file to your taste and invoke as follows:</p>

<pre><code>sl-account-statement --config config.cfg
</code></pre>

<p>voila!</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2008/05/15/automatically-downloading-lindenlab%e2%84%a2-account-statements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>RESTful regions</title>
		<link>http://xyzzyxyzzy.net/2008/05/14/restful-regions/</link>
		<comments>http://xyzzyxyzzy.net/2008/05/14/restful-regions/#comments</comments>
		<pubDate>Wed, 14 May 2008 11:49:01 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[void]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=105</guid>
		<description><![CDATA[we are currently trying to figure out what the best approach for a REST &#8220;API&#8221; for regions is and would like to solicit comments currently the idea is to have a scheme as follows: http://opensim.foobar.org:9000/admin/regions &#8212; GET returns an array of (UUID, name, x location, y location, region&#8217;s REST URL) POST would create a region [...]]]></description>
			<content:encoded><![CDATA[<p>we are currently trying to figure out what the best approach for a REST 
&#8220;API&#8221; for regions is and would like to solicit comments  <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>currently the idea is to have a scheme as follows:</p>

<ul>
<li>http://opensim.foobar.org:9000/admin/regions &#8212;

<ul>
<li>GET returns an array of (UUID, name, x location, y location, region&#8217;s REST URL)</li>
<li>POST would create a region</li>
</ul></li>
<li>http://opensim.foobar.org:9000/admin/regions/4b787c46-1e3c-40ae-9494-2c924428f8e5/

<ul>
<li>GET would return detailed information about region</li>
<li>DELETE would delete region</li>
<li>PUT would update region information</li>
</ul></li>
<li>http://opensim.foobar.org:9000/admin/regions/4b787c46-1e3c-40ae-9494-2c924428f8e5/name

<ul>
<li>GET would return name of region</li>
<li>PUT would update name of region</li>
<li>(similar for other region attributes if it makes sense)</li>
</ul></li>
</ul>

<p>current planning is to have this as an ApplicationPlugin level set of 
RestPlugins. an alternative would be to use region modules plus an 
ApplicationPlugin (for GET/POST on /admin/regions).</p>

<p>this applies to region (meta) data. the next question would be how to 
structure this for avatar information and also for stuff like inventory: 
something along the lines below?</p>

<ul>
<li>http://opensim.foobar.org/admin/avatars

<ul>
<li>GET returns list of known avatars?</li>
<li>POST creates account?</li>
</ul></li>
<li>http://opensim.foobar.org/admin/avatars/430f1da7-0e35-4c0f-985d-15046c077967/

<ul>
<li>GET returns detailed information about avatar?</li>
<li>PUT updates?</li>
<li>DELETE deletes?</li>
</ul></li>
<li>http://opensim.foobar.org/admin/avatars/430f1da7-0e35-4c0f-985d-15046c077967/inventory/

<ul>
<li>GET returns inventory listing?</li>
<li>POST adds items to inventory?</li>
<li>DELETE deletes inventory items?</li>
</ul></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2008/05/14/restful-regions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
		<item>
		<title>which serialization format for OpenSim REST services?</title>
		<link>http://xyzzyxyzzy.net/2008/05/14/serialization-format-for-opensim-rest-services/</link>
		<comments>http://xyzzyxyzzy.net/2008/05/14/serialization-format-for-opensim-rest-services/#comments</comments>
		<pubDate>Tue, 13 May 2008 22:04:19 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[void]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[LLSD]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[serialization]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=104</guid>
		<description><![CDATA[we are currently looking at adding REST support to the RemoteAdmin plugin (other stuff to follow) &#8212; the idea being that we can get information about (as well as change state of) a running OpenSim instance not only via XmlRpc but also via REST. looking at the way we currently deal with serialization we either [...]]]></description>
			<content:encoded><![CDATA[<p>we are currently looking at adding <a href="http://en.wikipedia.org/wiki/REST">REST</a> support to the RemoteAdmin 
plugin (other stuff to follow) &#8212; the idea being that we can get 
information about (as well as change state of) a running OpenSim 
instance not only via XmlRpc but also via REST.</p>

<p>looking at the way we currently deal with serialization we either</p>

<ul>
<li>use LLSD where mandated by secondlife (e.g., CAPS)</li>
<li>use .NET&#8217;s <code>System.Xml.XmlSerializer</code></li>
<li>use XmlRpc serialization (which goes back to System.Xml)</li>
</ul>

<p>LLSD is being used by linden lab&#8217;s and is proposed by LL/SLAWG as the 
serialization protocol of choice (IIUC). in my opinion it suffers from 
being a bit verbose and not really easy to parse.</p>

<p>XmlSerializer is &#8220;built in&#8221;. on the other hand it&#8217;s wordy and more 
complex to parse; also, it doesn&#8217;t distinguish between the number 4711 
and the string &#8220;4711&#8243; &#8212; you have to know that a certain tag contains a 
string (or a number).</p>

<p>another alternative that has been suggested is <a href="http://www.json.org/">JSON</a>. 
JSON is lean, and easy to use from AJAX apps as well as python scripts 
(and the likes). it requires an additional DLL. it does however 
distinguish between strings and numbers. using a library like 
<a href="http://code.google.com/p/jsonexserializer/">jsonexserializer</a> &#8212; BSD 
license &#8212; makes it easy to use from C#.</p>

<p>personally, i&#8217;ve started to like JSON because it&#8217;s lean and easy to use 
&#8212; but i&#8217;d like to hear from you guys what you think about this. so, give it a vote!</p>

Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2008/05/14/serialization-format-for-opensim-rest-services/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
	</channel>
</rss>
