<?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>Saved for later reference &#187; source</title>
	<atom:link href="http://www.lejordet.com/tag/source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lejordet.com</link>
	<description>online repository of stuff I had to google for hours to figure out</description>
	<lastBuildDate>Fri, 03 Sep 2010 11:46:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>deadbeef random number generator in F#</title>
		<link>http://www.lejordet.com/2009/11/deadbeef-random-number-generator-in-fsharp/</link>
		<comments>http://www.lejordet.com/2009/11/deadbeef-random-number-generator-in-fsharp/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 15:53:24 +0000</pubDate>
		<dc:creator>Lars Erik Jordet</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[fsharp]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://www.lejordet.com/?p=80</guid>
		<description><![CDATA[A quick implementation of the <a href="http://inglorion.net/software/deadbeef_rand/">Deadbeef Random Number Generator</a> in F#.]]></description>
			<content:encoded><![CDATA[<p>I found the 
<a  href="http://inglorion.net/software/deadbeef_rand/" onclick="javascript:pageTracker._trackPageview('/external/inglorion.net/software/deadbeef_rand/');" >Deadbeef Random Number Generator</a> when reading the 
<a  href="http://www.reddit.com/r/programming/comments/a4j4a/whats_the_best_most_interesting_piece_of_code/" onclick="javascript:pageTracker._trackPageview('/external/www.reddit.com/r/programming/comments/a4j4a/whats_the_best_most_interesting_piece_of_code/');" >Reddit thread &#8220;What&#8217;s the best / most interesting piece of code you&#8217;ve ever seen?&#8221;</a> &#8211; and since I&#8217;m trying to learn 
<a  href="http://fsharp.net" onclick="javascript:pageTracker._trackPageview('/external/fsharp.net');" >F#</a>, I figured I could try implementing it, first in an &#8220;imperative&#8221; way, then in a more functional way.</p>
<p>First the imperative way, a kind of naïve translation of the C code presented:</p>
<div class="codecolorer-container fsharp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="fsharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #06c; font-weight: bold;">let</span> <span style="color: #06c; font-weight: bold;">mutable</span> <span style="color: #6c6;">&#40;</span>deadbeef_seed:<span style="color: #06c; font-weight: bold;">uint32</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">=</span> <span style="color: #06c; font-weight: bold;">uint32</span> <span style="color: #c6c;">0</span><span style="color: #a52a2a;">;</span><br />
<span style="color: #06c; font-weight: bold;">let</span> <span style="color: #06c; font-weight: bold;">mutable</span> <span style="color: #6c6;">&#40;</span>deadbeef_beef:<span style="color: #06c; font-weight: bold;">uint32</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">=</span> <span style="color: #06c; font-weight: bold;">uint32</span> 0xdeadbeef<span style="color: #a52a2a;">;</span><br />
<br />
<span style="color: #06c; font-weight: bold;">let</span> deadbeef_srand x <span style="color: #a52a2a;">=</span><br />
&nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">let</span> oldseed <span style="color: #a52a2a;">=</span> deadbeef_seed<br />
&nbsp; &nbsp; deadbeef_seed <span style="color: #a52a2a;">&lt;-</span> x<br />
&nbsp; &nbsp; deadbeef_beef <span style="color: #a52a2a;">&lt;-</span> <span style="color: #06c; font-weight: bold;">uint32</span> 0xdeadbeef<br />
&nbsp; &nbsp; oldseed<br />
<br />
<span style="color: #06c; font-weight: bold;">let</span> deadbeef_rand <span style="color: #6c6;">&#40;</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">=</span><br />
&nbsp; &nbsp; deadbeef_seed <span style="color: #a52a2a;">&lt;-</span> <span style="color: #6c6;">&#40;</span>deadbeef_seed <span style="color: #a52a2a;">&lt;&lt;&lt;</span> <span style="color: #c6c;">7</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">^^^</span> <span style="color: #6c6;">&#40;</span><span style="color: #6c6;">&#40;</span>deadbeef_seed <span style="color: #a52a2a;">&gt;&gt;&gt;</span> <span style="color: #c6c;">25</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">+</span> deadbeef_beef<span style="color: #6c6;">&#41;</span><span style="color: #a52a2a;">;</span><br />
&nbsp; &nbsp; deadbeef_beef <span style="color: #a52a2a;">&lt;-</span> <span style="color: #6c6;">&#40;</span>deadbeef_beef <span style="color: #a52a2a;">&lt;&lt;&lt;</span> <span style="color: #c6c;">7</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">^^^</span> <span style="color: #6c6;">&#40;</span><span style="color: #6c6;">&#40;</span>deadbeef_beef <span style="color: #a52a2a;">&gt;&gt;&gt;</span> <span style="color: #c6c;">25</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">+</span> <span style="color: #6c6;">&#40;</span><span style="color: #06c; font-weight: bold;">uint32</span> 0xdeadbeef<span style="color: #6c6;">&#41;</span><span style="color: #6c6;">&#41;</span><span style="color: #a52a2a;">;</span><br />
&nbsp; &nbsp; deadbeef_seed<span style="color: #a52a2a;">;</span></div></td></tr></tbody></table></div>
<p>This is not very <em>functional</em>, with mutables and all that, so I tried again, with an implementation requiring no mutable variables:</p>
<div class="codecolorer-container fsharp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="fsharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #06c; font-weight: bold;">let</span> deadbeef_rand_seq seed <span style="color: #a52a2a;">=</span> <span style="color: #06c; font-weight: bold;">seq</span> <span style="color: #6c6;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">let</span> <span style="color: #06c; font-weight: bold;">rec</span> db_rand seed beef <span style="color: #a52a2a;">=</span> <span style="color: #06c; font-weight: bold;">seq</span> <span style="color: #6c6;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">let</span> newseed <span style="color: #a52a2a;">=</span> <span style="color: #6c6;">&#40;</span>seed <span style="color: #a52a2a;">&lt;&lt;&lt;</span> <span style="color: #c6c;">7</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">^^^</span> <span style="color: #6c6;">&#40;</span><span style="color: #6c6;">&#40;</span>seed <span style="color: #a52a2a;">&gt;&gt;&gt;</span> <span style="color: #c6c;">25</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">+</span> beef<span style="color: #6c6;">&#41;</span><span style="color: #a52a2a;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">let</span> newbeef <span style="color: #a52a2a;">=</span> <span style="color: #6c6;">&#40;</span>beef <span style="color: #a52a2a;">&lt;&lt;&lt;</span> <span style="color: #c6c;">7</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">^^^</span> <span style="color: #6c6;">&#40;</span><span style="color: #6c6;">&#40;</span>beef <span style="color: #a52a2a;">&gt;&gt;&gt;</span> <span style="color: #c6c;">25</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">+</span> <span style="color: #6c6;">&#40;</span><span style="color: #06c; font-weight: bold;">uint32</span> 0xdeadbeef<span style="color: #6c6;">&#41;</span><span style="color: #6c6;">&#41;</span><span style="color: #a52a2a;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">yield</span> newseed<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">yield!</span> db_rand newseed newbeef<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #6c6;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">yield!</span> db_rand seed <span style="color: #6c6;">&#40;</span><span style="color: #06c; font-weight: bold;">uint32</span> 0xdeadbeef<span style="color: #6c6;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #6c6;">&#125;</span></div></td></tr></tbody></table></div>
<p>&#8230;much better (at least in my opinion); implemented as a sequence of random numbers, <tt>deadbeef_rand_seq(seed).Take(10)</tt> would give you 10 random <tt>uint32</tt>s.<br />
I&#8217;ll bet there are about 1000 other ways to make this more F#-like/more functional, so I&#8217;d love to hear about them!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lejordet.com/2009/11/deadbeef-random-number-generator-in-fsharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Python ctypes Example &#8211; in Windows</title>
		<link>http://www.lejordet.com/2009/04/simple-python-ctypes-example-in-windows/</link>
		<comments>http://www.lejordet.com/2009/04/simple-python-ctypes-example-in-windows/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 08:56:11 +0000</pubDate>
		<dc:creator>Lars Erik Jordet</dc:creator>
				<category><![CDATA[compiling]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[ctypes]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[win32]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.lejordet.com/?p=27</guid>
		<description><![CDATA[I found this blog post, Simple Python ctypes Example, on Reddit, and thought I'd see how different the procedure was for Windows. As it turns out, it was fairly similar.]]></description>
			<content:encoded><![CDATA[<p>I found this blog post, 
<a  href="http://fsckd.com/2009/4/25/simple-python-ctypes-example/" onclick="javascript:pageTracker._trackPageview('/external/fsckd.com/2009/4/25/simple-python-ctypes-example/');" >Simple Python ctypes Example</a>, on 
<a  href="http://www.reddit.com/r/programming/" onclick="javascript:pageTracker._trackPageview('/external/www.reddit.com/r/programming/');" >Reddit</a>, and thought I&#8217;d see how different the procedure was for Windows.</p>
<h2>What you&#8217;ll need:</h2>
<ul>
<li>
<a  href="http://www.microsoft.com/express/vc/" onclick="javascript:pageTracker._trackPageview('/external/www.microsoft.com/express/vc/');" >Visual C# 2008 Express Edition</a> (Visual Studio 2008 will also work &#8211; and is what I used, but will again base this on free downloads)</li>
<li>
<a  href="http://www.python.org" onclick="javascript:pageTracker._trackPageview('/external/www.python.org');" >Python</a> 2.5 or higher (I used Python 2.6.2)</li>
</ul>
<h2>Creating the DLL</h2>
<p>Create a file <tt>dlltest.c</tt> with the following content:</p>
<div class="codecolorer-container c blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">#include &lt;windows.h&gt;</span><br />
<br />
BOOL APIENTRY DllMain<span style="color: #009900;">&#40;</span>HANDLE hModule<span style="color: #339933;">,</span> DWORD dwReason<span style="color: #339933;">,</span> LPVOID lpReserved<span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #b1b100;">return</span> TRUE<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
__declspec<span style="color: #009900;">&#40;</span>dllexport<span style="color: #009900;">&#41;</span> <span style="color: #993333;">int</span><br />
multiply<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> num1<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> num2<span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #b1b100;">return</span> num1 <span style="color: #339933;">*</span> num2<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Start the <strong>Visual Studio 2008 Command Prompt </strong>from the Start Menu (this sets up the path for the compiler and other files, which makes things easier) and go to the directory you saved dlltest.c to.</p>
<p>Compile it with the following command:</p>
<pre>cl -LD dlltest.c -Fetest.dll</pre>
<h2>Testing the DLL</h2>
<p>As in the original Linux example, this DLL is easily tested using similar commands:</p>
<div class="codecolorer-container python blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">from</span> ctypes <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span><br />
<span style="color: #66cc66;">&gt;&gt;&gt;</span> libtest = cdll.<span style="color: black;">LoadLibrary</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'test.dll'</span><span style="color: black;">&#41;</span><br />
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span> libtest.<span style="color: black;">multiply</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><br />
<span style="color: #ff4500;">4</span></div></td></tr></tbody></table></div>
<p>So, that is the simplest DLL possible, I&#8217;ll look at (same as the original blog post) applying it to more complex examples later.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lejordet.com/2009/04/simple-python-ctypes-example-in-windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Patched libgmail for unicode handling</title>
		<link>http://www.lejordet.com/2009/04/patched-libgmail-for-unicode-handling/</link>
		<comments>http://www.lejordet.com/2009/04/patched-libgmail-for-unicode-handling/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 09:28:51 +0000</pubDate>
		<dc:creator>Lars Erik Jordet</dc:creator>
				<category><![CDATA[packages]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[win32]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.lejordet.com/?p=18</guid>
		<description><![CDATA[Packages and Windows installer for patched libgmail-0.1.11 to fix a unicode handling bug]]></description>
			<content:encoded><![CDATA[<p>
<a title="libgmail"  href="http://libgmail.sourceforge.net/" onclick="javascript:pageTracker._trackPageview('/external/libgmail.sourceforge.net/');" >libgmail</a> 0.1.11 has a 
<a title="libgmail unicode bug"  href="http://sourceforge.net/tracker/?func=detail&amp;aid=2643866&amp;group_id=113492&amp;atid=665330" onclick="javascript:pageTracker._trackPageview('/external/sourceforge.net/tracker/');" >bug with unicode handling</a>, when the sender of an email has a name with one or more non-ASCII character in it.</p>
<p>I&#8217;ve applied the patch I described in the link above, adding the function:</p>
<div class="codecolorer-container python blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">def</span> to_unicode<span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span>:<br />
    <span style="color: #483d8b;">''</span><span style="color: #483d8b;">'<br />
    Forces string to unicode<br />
    '</span><span style="color: #483d8b;">''</span><br />
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">type</span><span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span> == <span style="color: #008000;">unicode</span>:<br />
        <span style="color: #ff7700;font-weight:bold;">return</span> xstr<br />
    <span style="color: #ff7700;font-weight:bold;">elif</span> <span style="color: #008000;">type</span><span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span> == <span style="color: #008000;">str</span>:<br />
        <span style="color: #ff7700;font-weight:bold;">return</span> xstr.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf-8'</span><span style="color: black;">&#41;</span><br />
    <span style="color: #ff7700;font-weight:bold;">else</span>:<br />
        <span style="color: #ff7700;font-weight:bold;">return</span> xstr</div></td></tr></tbody></table></div>
<p>And changed all calls to var.decode(&#8216;utf-8&#8242;) to to_unicode(var).</p>
<p>
<a  href="http://vagabonds.info/python/libgmail-0.1.11p1.zip" onclick="javascript:pageTracker._trackPageview('/external/vagabonds.info/python/libgmail-0.1.11p1.zip');" >libgmail-0.1.11p1.zip</a> (source package)<br />

<a  href="http://vagabonds.info/python/libgmail-0.1.11p1.win32.exe" onclick="javascript:pageTracker._trackPageview('/external/vagabonds.info/python/libgmail-0.1.11p1.win32.exe');" >libgmail-0.1.11p1.win32.exe</a> (win32 installer)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lejordet.com/2009/04/patched-libgmail-for-unicode-handling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->