<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>porges &#187; Reference</title>
	<atom:link href="http://porg.es/blog/tag/reference/feed" rel="self" type="application/rss+xml" />
	<link>http://porg.es/blog</link>
	<description></description>
	<lastBuildDate>Thu, 12 Jan 2012 23:45:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Symbols used to represent functions</title>
		<link>http://porg.es/blog/symbols-used-to-represent-functions</link>
		<comments>http://porg.es/blog/symbols-used-to-represent-functions#comments</comments>
		<pubDate>Mon, 22 Jun 2009 03:51:22 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[utility]]></category>
		<category><![CDATA[9995]]></category>
		<category><![CDATA[iec]]></category>
		<category><![CDATA[iso]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[symbols]]></category>
		<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://porg.es/blog/?p=356</guid>
		<description><![CDATA[I was looking for some standard symbols to represent the Control key and the Alt key, and couldn&#8217;t find one until I came across ISO/IEC 9995-7. Because I had much trouble finding a free copy of the document on the ’Net, I have made a table of the symbols and their functions below. I have [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for some standard symbols to represent the Control key and the Alt key, and couldn&#8217;t find one until I came across ISO/IEC 9995-7. <img src="http://porg.es/blog/wp-content/plugins/wp-smiley-switcher/noktahhitam/icon_smile.gif" alt="" /></p>
<p>Because I had much trouble finding a free copy of the document on the ’Net, I have made a table of the symbols and their functions below. I have marked those not present in Unicode as �.</p>
<p>Some examples: copy is usually [⎈ + C] and close is usually [⎇ + F4].</p>
<table>
<thead>
<tr>
<th style="text-align:right;padding:3px">Symbol</th>
<th>Meaning/Summary</th>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇧</td>
<td>Select level 2 (AKA Shift)</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇫</td>
<td>Lock level 2 (AKA Shift-Lock)</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇬</td>
<td>Caps lock</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇭</td>
<td>Num lock</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇮</td>
<td>Select level 3</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇯</td>
<td>Lock level 3</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇨</td>
<td>Group select</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇰</td>
<td>Group lock</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">␣</td>
<td>Space</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⍽</td>
<td>No-break space</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎀</td>
<td>Insert</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎁</td>
<td>Underline (continuous)</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎂</td>
<td>Underline (discontinuous)</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎃</td>
<td>Emphasize</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎄</td>
<td>Compose characters</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎅</td>
<td>Center</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⌫</td>
<td>Delete backwards</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">␥</td>
<td>Delete</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎚</td>
<td>Clear screen</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇳</td>
<td>Scrolling (I assume this means Scroll lock)</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Help</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎙</td>
<td>Print Screen</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⏎</td>
<td>Return</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎆</td>
<td>Enter</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎇</td>
<td>Alternate (Alt key)</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎈</td>
<td>Control (Ctrl key)</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎉</td>
<td>Pause</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎊</td>
<td>Break/Interrupt</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎋</td>
<td>Escape</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎌</td>
<td>Undo</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">↑</td>
<td>Cursor up</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">↓</td>
<td>Cursor down</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">←</td>
<td>Cursor left</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">→</td>
<td>Cursor right</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">↟</td>
<td>Fast cursor up</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">↡</td>
<td>Fast cursor down</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">↞</td>
<td>Fast cursor left</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">↠</td>
<td>Fast cursor right</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇱</td>
<td>Home (Beginning)</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇲</td>
<td>End</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎗</td>
<td>Previous page</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎘</td>
<td>Next page</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇤</td>
<td>Tab left</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⇥</td>
<td>Tab right</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Line up</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Line down</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Backspace</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Partial line up</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Partial line down</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Partial space left</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Partial space right</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Set margin left</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Set margin right</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Release margin left</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Release margin right</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">�</td>
<td>Release both margins</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">+</td>
<td>Addition</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">−</td>
<td>Subtraction</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">×</td>
<td>Multiplication</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">÷</td>
<td>Division</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">=</td>
<td>Equals</td>
</tr>
<tr>
<td style="font-size:2em;text-align:right;padding:3px">⎖</td>
<td>Decimal separator</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/symbols-used-to-represent-functions/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing futures in C#</title>
		<link>http://porg.es/blog/implementing-futures-in-c</link>
		<comments>http://porg.es/blog/implementing-futures-in-c#comments</comments>
		<pubDate>Tue, 13 Feb 2007 08:03:15 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Reference]]></category>

		<guid isPermaLink="false">http://porg.es/blog/implementing-futures-in-c</guid>
		<description><![CDATA[Why? I was bored, and it didn&#8217;t seem to have been done before, so here&#8217;s some Future action in C#. The Code using System; using System.IO; using System.Reflection; using System.Threading; &#160; public class Future&#60;T&#62; &#123; public delegate R FutureDelegate&#60;R&#62;&#40;&#41;; public Future &#40;FutureDelegate&#60;T&#62; del&#41; &#123; Del = del; Result = del.BeginInvoke&#40;null,null&#41;; &#125; private FutureDelegate&#60;T&#62; Del; private [...]]]></description>
			<content:encoded><![CDATA[<h3>Why?</h3>
<p>I was bored, and it didn&#8217;t seem to have been done before, so here&#8217;s some <a href="http://en.wikipedia.org/wiki/Future_(programming)">Future</a> action in C#.</p>
<h3>The Code</h3>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.IO</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Reflection</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Threading</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Future<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">delegate</span> R FutureDelegate<span style="color: #008000;">&lt;</span>R<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Future <span style="color: #008000;">&#40;</span>FutureDelegate<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> del<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                Del <span style="color: #008000;">=</span> del<span style="color: #008000;">;</span>
                Result <span style="color: #008000;">=</span> del<span style="color: #008000;">.</span><span style="color: #0000FF;">BeginInvoke</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">null</span>,<span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> FutureDelegate<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> Del<span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> IAsyncResult Result<span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> T PValue<span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">bool</span> HasValue <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> T Value <span style="color: #008000;">&#123;</span>
                get <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>HasValue<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>Result<span style="color: #008000;">.</span><span style="color: #0000FF;">IsCompleted</span><span style="color: #008000;">&#41;</span>
                                        Result<span style="color: #008000;">.</span><span style="color: #0000FF;">AsyncWaitHandle</span><span style="color: #008000;">.</span><span style="color: #0000FF;">WaitOne</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                                PValue <span style="color: #008000;">=</span> Del<span style="color: #008000;">.</span><span style="color: #0000FF;">EndInvoke</span><span style="color: #008000;">&#40;</span>Result<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                                HasValue <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">return</span> PValue<span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #0600FF; font-weight: bold;">implicit</span> <span style="color: #0600FF; font-weight: bold;">operator</span> T<span style="color: #008000;">&#40;</span>Future<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> f<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> f<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">class</span> MainClass <span style="color: #008000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">//This is purposely wasteful!</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">ulong</span> Fib<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">ulong</span> n<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>n <span style="color: #008000;">&gt;</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">return</span> Fib<span style="color: #008000;">&#40;</span>n<span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">+</span>Fib<span style="color: #008000;">&#40;</span>n<span style="color: #008000;">-</span><span style="color: #FF0000;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0600FF; font-weight: bold;">else</span> <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>n <span style="color: #008000;">==</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span>
                        <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">else</span> <span style="color: #008080; font-style: italic;">//n == 0</span>
                        <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #008080; font-style: italic;">//Demo using futures.</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> Main<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> args<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;First, call synchronously.&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span>Fib<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">40</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Thread<span style="color: #008000;">.</span><span style="color: #0000FF;">Sleep</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1000</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Next, call asynchronously.&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Future<span style="color: #008000;">&lt;</span><span style="color: #6666cc; font-weight: bold;">ulong</span><span style="color: #008000;">&gt;</span> fib40 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Future<span style="color: #008000;">&lt;</span><span style="color: #6666cc; font-weight: bold;">ulong</span><span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">delegate</span><span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">return</span> Fib<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">40</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Begins computing Fib(40) at this point...</span>
                Thread<span style="color: #008000;">.</span><span style="color: #0000FF;">Sleep</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1500</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Note that we can do other things in the mean time, and that the thread only blocks when we ask for the value.&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span>fib40<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Need it now!</span>
                Thread<span style="color: #008000;">.</span><span style="color: #0000FF;">Sleep</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">2000</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;We can then ask for the computed value as many times as we like.&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span>fib40<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Already computed.</span>
        <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<h3>Caveats</h3>
<p>Most notably, this doesn&#8217;t do <a href="http://c2.com/cgi/wiki?PromisePipelining">promise pipelining</a> (and I doubt I could without some compiler magicking), so instead of nesting futures, you&#8217;ll want to seperate them out. That is; instead of:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">t3 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Future<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">delegate</span><span style="color: #008000;">&#123;</span><span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #008000;">new</span> Future<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">delegate</span><span style="color: #008000;">&#123;</span><span style="color: #0600FF; font-weight: bold;">return</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">a</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">c</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Future<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">delegate</span><span style="color: #008000;">&#123;</span><span style="color: #0600FF; font-weight: bold;">return</span> y<span style="color: #008000;">.</span><span style="color: #0000FF;">b</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>&#8230;you&#8217;ll want to do:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">t1 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Future<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">delegate</span><span style="color: #008000;">&#123;</span><span style="color: #0600FF; font-weight: bold;">return</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">a</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
t2 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Future<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">delegate</span><span style="color: #008000;">&#123;</span><span style="color: #0600FF; font-weight: bold;">return</span> y<span style="color: #008000;">.</span><span style="color: #0000FF;">b</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
t3 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Future<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">delegate</span><span style="color: #008000;">&#123;</span><span style="color: #0600FF; font-weight: bold;">return</span> t1<span style="color: #008000;">.</span><span style="color: #0000FF;">c</span><span style="color: #008000;">&#40;</span>t2<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>&#8230;although you&#8217;d probably want to do this anyway if you don&#8217;t want to wander into The LispZone.</p>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/implementing-futures-in-c/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Using OpenDNS servers with bind9 easily</title>
		<link>http://porg.es/blog/using-opendns-servers-with-bind9-easily</link>
		<comments>http://porg.es/blog/using-opendns-servers-with-bind9-easily#comments</comments>
		<pubDate>Mon, 09 Oct 2006 07:25:46 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[bind9]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenDNS]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://porg.es/blog/using-opendns-servers-with-bind9-easily</guid>
		<description><![CDATA[The OpenDNS FAQ purports to have a solution to this problem, but it does something obscure to a file I don&#8217;t have on my system. So I quickly checked the man page and came up with this: /etc/bind/named.conf.options //Add this somewhere inside the options{}; section... forward only; forwarders { //OpenDNS 208.67.222.222; 208.67.220.220; };]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.opendns.com/faq/">OpenDNS <abbr title="Frequently Asked Questions">FAQ</abbr></a> purports to have a solution to this problem, but it does something obscure to a file I don&#8217;t have on my system. So I quickly checked the man page and came up with this:</p>
<h3>/etc/bind/named.conf.options</h3>
<pre><code>//Add this somewhere inside the options{}; section...
        forward only;
        forwarders {
                //OpenDNS
                208.67.222.222;
                208.67.220.220;
        };
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/using-opendns-servers-with-bind9-easily/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Easier local DNS cache</title>
		<link>http://porg.es/blog/easier-local-dns-cache</link>
		<comments>http://porg.es/blog/easier-local-dns-cache#comments</comments>
		<pubDate>Mon, 09 Oct 2006 06:59:24 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[bind9]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://porg.es/blog/easier-local-dns-cache</guid>
		<description><![CDATA[After a while pdnsd stopped working for me, and try as I might I can&#8217;t fix it. So I purged pdnsd and found an easier method, with no configuration this time!apt-get install bind9 resolvconf]]></description>
			<content:encoded><![CDATA[<p>After a while <a href="http://porg.es/blog/easy-persistent-local-dns-cache-to-reduce-lookup-times-2">pdnsd</a> stopped working for me, and try as I might I can&#8217;t fix it. So I purged <code>pdnsd</code> and found an easier method, with no configuration this time!<code>apt-get install bind9 resolvconf</code></p>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/easier-local-dns-cache/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Easy, persistent, local DNS cache to reduce lookup times</title>
		<link>http://porg.es/blog/easy-persistent-local-dns-cache-to-reduce-lookup-times-2</link>
		<comments>http://porg.es/blog/easy-persistent-local-dns-cache-to-reduce-lookup-times-2#comments</comments>
		<pubDate>Thu, 05 Oct 2006 02:26:15 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[Broken]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://porg.es/blog/easy-persistent-local-dns-cache-to-reduce-lookup-times-2</guid>
		<description><![CDATA[Important Update! Don&#8217;t use this method any more! I have a much easier way to do it in a more recent post. But for posterity&#8230; First install resolvconf and pdnsd: sudo apt-get install pdnsd resolvconf. Resolvconf handles the messy interaction between different programs fighting over the /etc/resolv.conf file, and pdnsd provides a persistent DNS daemon, [...]]]></description>
			<content:encoded><![CDATA[<h3>Important Update!</h3>
<p>Don&#8217;t use this method any more! I have a much easier way to do it in a <a href="http://porg.es/blog/easier-local-dns-cache">more recent post</a>.</p>
<h3>But for posterity&#8230;</h3>
<p>First install resolvconf and pdnsd: <code>sudo apt-get install pdnsd resolvconf</code>. Resolvconf handles the messy interaction between different programs fighting over the <code>/etc/resolv.conf</code> file, and pdnsd provides a <b>p</b>ersistent <b>DNS</b> <b>d</b>aemon, which will cache the DNS lookups on your machine in order to make browsing faster.</p>
<p>Next, you just need to edit pdnsd&#8217;s configuration file, <code>/etc/pdnsd.conf</code> as root. Edit it to look like this:</p>
<pre><code>global {
        perm_cache=512;
        cache_dir="/var/cache/pdnsd";
        max_ttl=604800;
        run_as="pdnsd";
        paranoid=on;
#       next setting allows ppp/ip-up update the name servers -- ABa / 20040213
        status_ctl=on;
        server_port=53;
        server_ip="127.0.0.1";
}

#Edit these to be your own servers if wished:
server {
        label = "OpenDNS";
        ip=208.67.222.222,208.67.220.220;
        proxy_only=on;
        timeout=10;
}

# if you installed resolvconf, and status_ctl=on
server {
    label="resolvconf";
}

source {
        ttl=86400;
        owner="localhost.";
#       serve_aliases=on;
        file="/etc/hosts";
}</pre>
<p></code></p>
<p>And finally, restart pdnsd with <code>sudo /etc/init.d/pdnsd restart</code> to use the new settings. In the example above, I've used OpenDNS's servers, but you can change these to whatever you want. As far as actual results go:</p>
<blockquote><p><code>~$ dig example.com</p>
<p>; <<>> DiG 9.3.2 <<>> example.com<br />
;; global options:  printcmd<br />
;; Got answer:<br />
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17447<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0</p>
<p>;; QUESTION SECTION:<br />
;example.com.                   IN      A</p>
<p>;; ANSWER SECTION:<br />
example.com.            172800  IN      A       192.0.34.166</p>
<p><b>;; Query time: 513 msec</b><br />
;; SERVER: 127.0.0.1#53(127.0.0.1)<br />
;; WHEN: Thu Oct  5 15:24:19 2006<br />
;; MSG SIZE  rcvd: 45</p>
<p>$ dig example.com</p>
<p>; <<>> DiG 9.3.2 <<>> example.com<br />
;; global options:  printcmd<br />
;; Got answer:<br />
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19338<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0</p>
<p>;; QUESTION SECTION:<br />
;example.com.                   IN      A</p>
<p>;; ANSWER SECTION:<br />
example.com.            172799  IN      A       192.0.34.166</p>
<p><b>;; Query time: 0 msec</b><br />
;; SERVER: 127.0.0.1#53(127.0.0.1)<br />
;; WHEN: Thu Oct  5 15:24:20 2006<br />
;; MSG SIZE  rcvd: 45<br />
</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/easy-persistent-local-dns-cache-to-reduce-lookup-times-2/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Normalizing your MP3 collection with mp3gain</title>
		<link>http://porg.es/blog/normalizing-your-mp3-collection-with-mp3gain</link>
		<comments>http://porg.es/blog/normalizing-your-mp3-collection-with-mp3gain#comments</comments>
		<pubDate>Wed, 20 Sep 2006 02:36:32 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://porg.es/blog/normalizing-your-mp3-collection-with-mp3gain</guid>
		<description><![CDATA[Carthik Sharma from Ubuntu Blog suggests the following method to normalize all the MP3 files in your collection: find . -type f -iname &apos;*.mp3&apos; -print0 &#124; xargs -0 mp3gain -r -k Unfortunately, this seems to have problems with very large collections (I suspect that the command line is being filled up), so here&#8217;s what I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ubuntu.wordpress.com/2006/09/11/normalize-the-gain-playback-volume-of-your-mp3s/">Carthik Sharma from Ubuntu Blog suggests the following method to normalize all the MP3 files in your collection</a>:</p>
<pre><code>find . -type f -iname &apos;*.mp3&apos; -print0 | xargs -0 mp3gain -r -k</code></pre>
<p>Unfortunately, this seems to have problems with very large collections (I suspect that the command line is being filled up), so here&#8217;s what I came up with:</p>
<pre><code>find . -iname &apos;*.mp3&apos; -execdir mp3gain -r -k &quot;{}&quot; &#x5C;; &#038;</code></pre>
<p>If you&#8217;d rather use album normalization (and you have your files separated by album such as &#8220;~/Music/David Bowie/Hunky Dory&#8221;/):</p>
<pre><code>find . -iname &apos;*.mp3&apos; -execdir mp3gain -r -k <u>-a</u> &quot;{}&quot; <u>+</u> &#038;</code></pre>
<h3>How to use it</h3>
<p>Simply open a terminal, browse to your music directory (using <code>cd</code>), and type it in.</p>
<h3>Break it down</h3>
<p>What the command does:</p>
<ol>
<li><code>find . -iname &apos;*.mp3&apos;</code> finds all MP3 files in the current directory and all subdirectories.</li>
<li><code>-execdir mp3gain -r -k &quot;{}&quot; \; &#038;</code> executes &#8220;mp3gain -r -k&#8221; on each file (the filename goes where {} is found). The semi-colon indicates to execute the command once per file, but since ; is also a significant character for bash, you need to escape it with a backslash. The final &#8216;&#038;&#8217; tells bash to run the command in the background.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/normalizing-your-mp3-collection-with-mp3gain/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Toilets and Thread Synchronization in C#</title>
		<link>http://porg.es/blog/toilets-and-thread-synchronization-in-c</link>
		<comments>http://porg.es/blog/toilets-and-thread-synchronization-in-c#comments</comments>
		<pubDate>Sat, 16 Sep 2006 07:15:15 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://porg.es/blog/toilets-and-thread-synchronization-in-c</guid>
		<description><![CDATA[It dates from 2003, but this is still the best explanation of thread synchronization using Monitors that I&#8217;ve read.]]></description>
			<content:encoded><![CDATA[<p>It dates from 2003, but <a href="http://pluralsight.com/blogs/mike/archive/2004/12/13/3905.aspx">this is still the best explanation of thread synchronization using Monitors that I&#8217;ve read</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/toilets-and-thread-synchronization-in-c/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Ur-Quan Masters on Ubuntu AMD64</title>
		<link>http://porg.es/blog/the-ur-quan-masters-on-ubuntu-amd64</link>
		<comments>http://porg.es/blog/the-ur-quan-masters-on-ubuntu-amd64#comments</comments>
		<pubDate>Thu, 14 Sep 2006 20:41:31 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://porg.es/blog/the-ur-quan-masters-on-ubuntu-amd64</guid>
		<description><![CDATA[At the moment, The Ur-Quan Masters doesn&#8217;t work on AMD64. This is a shame, because I just found it and realised Star Control II was the game that I had played on my friend-down-the-road&#8217;s computer so many years ago. Attempting to fix this by forcing the install of the 32-bit version of uqm doesn&#8217;t work, [...]]]></description>
			<content:encoded><![CDATA[<p>At the moment, <a href="http://sc2.sourceforge.net/">The Ur-Quan Masters</a> doesn&#8217;t work on AMD64. This is a shame, because I just found it and realised Star Control II was the game that I had played on my friend-down-the-road&#8217;s computer so many years ago.</p>
<p>Attempting to fix this by forcing the install of the 32-bit version of <code>uqm</code> doesn&#8217;t work, because for some reason then apt won&#8217;t recognise that it is installed and complain that <code>uqm-content</code> has unmet dependencies. So here&#8217;s the official recommendation from me:</p>
<ol>
<li>Install <code>uqm</code> normally with the package manager.</li>
<li>Download the i386 .debs, extract them and overwrite the binary files from <code>uqm</code> (there are two of them).</li>
<li>Install <code>ia32-libs-sdl</code> for the 32-bit versions of the libraries it depends on.</li>
</ol>
<p>&#8230; and it should work perfectly. If you want voice-overs and music (yes!), head to <a href="http://sc2.sourceforge.net/downloads.php">the UQM download page</a>, and download the second two files listed under &#8220;Content&#8221; (you already have the first). These are in fact just renamed zip files, so unzip them to <code>/usr/share/games/uqm/content/</code> and you&#8217;re good to go.</p>
<p>And the game? Excellent. This is much better than the last game I bought&mdash;Civilization IV.</p>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/the-ur-quan-masters-on-ubuntu-amd64/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Neat little Linux tool</title>
		<link>http://porg.es/blog/neat-little-linux-tool</link>
		<comments>http://porg.es/blog/neat-little-linux-tool#comments</comments>
		<pubDate>Tue, 12 Sep 2006 08:14:45 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[Cool]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://porg.es/blog/neat-little-linux-tool</guid>
		<description><![CDATA[Command Not Found is a great little utility for Linux. If you&#8217;ve ever tried to follow a set of instructions only to find that you don&#8217;t have some of the CLI programs needed, this will come to your rescue. Install command-not-found then add this to your ~/.bashrc: function command_not_found_handle { /usr/bin/command-not-found $1 return $? } [...]]]></description>
			<content:encoded><![CDATA[<p>Command Not Found is a great little utility for Linux. If you&#8217;ve ever tried to follow a set of instructions only to find that you don&#8217;t have some of the <abbr title="command line interface">CLI</abbr> programs needed, this will come to your rescue.</p>
<p>Install <code>command-not-found</code> then add this to your <code>~/.bashrc</code>:</p>
<pre><code>function command_not_found_handle {
        /usr/bin/command-not-found $1
        return $?
}</code></pre>
<p>And you&#8217;re all done:</p>
<blockquote><p><code>~$ ssed<br />
The program 'ssed' is currently not installed, you can install it by typing:<br />
sudo apt-get install ssed<br />
</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/neat-little-linux-tool/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opera 9 on Ubuntu Dapper with AMD64</title>
		<link>http://porg.es/blog/opera-9-on-ubuntu-dapper-with-amd64</link>
		<comments>http://porg.es/blog/opera-9-on-ubuntu-dapper-with-amd64#comments</comments>
		<pubDate>Tue, 11 Jul 2006 00:36:51 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reference]]></category>

		<guid isPermaLink="false">http://porg.es/blog/opera-9-on-ubuntu-dapper-with-amd64</guid>
		<description><![CDATA[The process used for this is the same as used for the previous post. Download the version of Opera 9 for i386 Linux from the official site. Go to the Ubuntu package site and download these packages (also for i386): libqt3-mt libaudio2 libxcursor1 libxft2 libxfixes3 Open each package in turn (don&#8217;t install!) and copy the [...]]]></description>
			<content:encoded><![CDATA[<p>The process used for this is the same as used for the <a href="http://porg.es/blog/wine-on-ubuntu-with-amd64">previous post</a>.</p>
<ol>
<li>Download the version of Opera 9 for i386 Linux from the official site.</li>
<li>Go to the Ubuntu package site and download these packages (also for i386):
<ul>
<li>libqt3-mt</li>
<li>libaudio2</li>
<li>libxcursor1</li>
<li>libxft2</li>
<li>libxfixes3</li>
</ul>
</li>
<li>Open each package in turn (don&#8217;t install!) and copy the libraries to the <code>/lib32</code> folder as root. Open the package, then open &#8220;data.tar.gz&#8221;, then find the <code>/lib</code> folder. You don&#8217;t need to worry about copying anything under the <code>/usr/share</code> folder, these are just docs and some unneeded symlinks.</li>
<li>Install Opera by browsing to the folder where you downloaded it to and entering <code>sudo dpkg -i --force-all opera*.deb</code>.</li>
</ol>
<p>All done!</p>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/opera-9-on-ubuntu-dapper-with-amd64/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Wine on Ubuntu with AMD64</title>
		<link>http://porg.es/blog/wine-on-ubuntu-with-amd64</link>
		<comments>http://porg.es/blog/wine-on-ubuntu-with-amd64#comments</comments>
		<pubDate>Mon, 26 Jun 2006 07:01:35 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reference]]></category>

		<guid isPermaLink="false">http://porg.es/blog/wine-on-ubuntu-with-amd64</guid>
		<description><![CDATA[First, go get the latest version of Wine (for i386). Ensure that you have the correct version (6.06 is Dapper). Open up a terminal in the folder you saved it to: sudo apt-get install ia32-libs sudo dpkg -i --force-architecture wine*.deb Next, head to the Ubuntu repository and download both libXx86dga1 and libXx86vm1 (for i386). Extract [...]]]></description>
			<content:encoded><![CDATA[<p>First, go get the <a href="http://wine.budgetdedicated.com/apt/pool/main/w/wine/">latest version of Wine</a> (for i386). Ensure that you have the correct version (6.06 is Dapper).</p>
<p>Open up a terminal in the folder you saved it to:</p>
<pre><code>sudo apt-get install ia32-libs
sudo dpkg -i --force-architecture wine*.deb</code></pre>
<p>Next, head to the <a href="http://packages.ubuntulinux.org/dapper/libs/">Ubuntu repository</a> and download both <code>libXx86dga1</code> and <code>libXx86vm1</code> (for i386). Extract them (don&#8217;t install!) and then extract the data.tar.gz files inside of them. Browse to the <code>/usr/lib32</code> subfolder, then copy both the symlink and the shared library to your <code>/lib32</code> folder (you&#8217;ll need to do this as root). Make sure you do this for both these packages.</p>
<p>I&#8217;m currently testing this with the <a href="http://www.tatanka.com.br/ies4linux/index-en.html">IEs for Linux</a> script, and everything seems to be working so far. IE6 runs perfectly (it may not show up correctly the first time you open it but it&#8217;s fine after that).</p>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/wine-on-ubuntu-with-amd64/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Baleegal!</title>
		<link>http://porg.es/blog/baleegal</link>
		<comments>http://porg.es/blog/baleegal#comments</comments>
		<pubDate>Sat, 24 Jun 2006 11:37:45 +0000</pubDate>
		<dc:creator>Porges</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://porg.es/blog/baleegal</guid>
		<description><![CDATA[XML 1.0 allows you to insert characters from the C1 control code range, whilst those from the C0 range are outright forbidden. XML 1.1 allows you to insert characters from the C0 range as long as they are escaped as character entity references, and mandates that you do the same for those from the C1 [...]]]></description>
			<content:encoded><![CDATA[<p>XML 1.0 allows you to insert characters from the C1 control code range, whilst those from the C0 range are outright forbidden.</p>
<p>XML 1.1 allows you to insert characters from the C0 range <em>as long as they are escaped as character entity references</em>, and mandates that you do the same for those from the C1 range.</p>
<p>This little fact is the reason why not all XML 1.0-valid documents are valid under XML 1.1. Nasty.</p>
]]></content:encoded>
			<wfw:commentRss>http://porg.es/blog/baleegal/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

