<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>kindman.org</title>
	
	<link>http://kindman.org/blog</link>
	<description>Life and Death, and Linux.</description>
	<lastBuildDate>Sat, 28 Aug 2010 17:46:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kindman" /><feedburner:info uri="kindman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Crazy Touchpad on Linux</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/eRu--GnYrOA/</link>
		<comments>http://kindman.org/blog/2010/08/28/crazy-touchpad-on-linux/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 17:46:42 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=299</guid>
		<description><![CDATA[As of Linux 2.6.35, my laptop&#8217;s touchpad would go haywire for a few seconds after boot. The fix: boot option i8042.nomux=1. There are other similar options [1]. But that one did the trick for me. [1] https://bugzilla.redhat.com/show_bug.cgi?id=427697#c12]]></description>
			<content:encoded><![CDATA[<p>As of Linux 2.6.35,<br />
my laptop&#8217;s touchpad would go haywire for a few seconds after boot.</p>
<p>The fix: boot option <em>i8042.nomux=1.</em></p>
<p>There are other similar options [1].<br />
But that one did the trick for me.</p>
<p>[1] <a href="https://bugzilla.redhat.com/show_bug.cgi?id=427697#c12" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=427697#c12</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/08/28/crazy-touchpad-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/08/28/crazy-touchpad-on-linux/</feedburner:origLink></item>
		<item>
		<title>Did you ever see a she-gator protect her young?</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/f6Po1rBEBkA/</link>
		<comments>http://kindman.org/blog/2010/06/25/she-gator/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 21:52:38 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Life and Death]]></category>
		<category><![CDATA[Quotations]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=294</guid>
		<description><![CDATA[Excerpts from All I Can Do Is Write About It, by Lynyrd Skynyrd. Did you ever see she-gator protect her young, or a fish in a river, swimming free? Did you ever see the beauty of the hills of Carolina, or the sweetness of the grass in Tennessee? Do you like to see a mountain stream [...]]]></description>
			<content:encoded><![CDATA[<p>Excerpts from<br />
<em>All I Can Do Is Write About It</em>,<br />
by <em>Lynyrd Skynyrd</em>.</p>
<blockquote><p>Did you ever see <em>she-gator protect her young</em>,<br />
or a <em>fish</em> in a river, <em>swimming free</em>?</p>
<p>Did you ever see the <em>beauty of the hills</em> of Carolina,<br />
or the <em>sweetness of the grass</em> in Tennessee?</p>
<p>Do you like to see a <em>mountain stream a-flowing</em>?<br />
Do you like to see a <em>youngun with his dog</em>?</p>
<p>Did you ever stop to <em>think</em> about, well, the <em>air you&#8217;re breathing</em>?</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/06/25/she-gator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/06/25/she-gator/</feedburner:origLink></item>
		<item>
		<title>Wii &amp; Projector</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/0pPe6Z5zcUY/</link>
		<comments>http://kindman.org/blog/2010/06/15/wii-projector/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 21:26:25 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Rep. Buscapé]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=280</guid>
		<description><![CDATA[Some days ago, here at Rep. Buscapé, we borrowed a projector and used it to play Mario Kart (we&#8217;re addicted to it) on a Nintendo Wii. It was real fun. For all those who haven&#8217;t played a Wii yet, try it. It&#8217;s fantastic. Now to the pictures. ;-) Unbelievably amazing.. ;-) The blessed projector. Notice our [...]]]></description>
			<content:encoded><![CDATA[<p>Some days ago, here at Rep. Buscapé, we borrowed a projector and<br />
used it to play Mario Kart (we&#8217;re addicted to it) on a Nintendo Wii.</p>
<p>It was <em>real</em> fun.<br />
For all those who haven&#8217;t played a Wii yet, <em>try it</em>. It&#8217;s fantastic.</p>
<p>Now to the <em>pictures</em>. ;-)</p>
<div id="attachment_285" class="wp-caption alignnone" style="width: 490px"><a href="http://kindman.org/blog/wp-content/uploads/2010/06/Wii-Wall.jpeg"><img class="size-full wp-image-285" title="Wii on the Wall" src="http://kindman.org/blog/wp-content/uploads/2010/06/Wii-Wall.jpeg" alt="Wii on the Wall" width="480" height="360" /></a><p class="wp-caption-text">Wii on the Wall</p></div>
<p>Unbelievably amazing.. ;-)</p>
<div id="attachment_283" class="wp-caption alignnone" style="width: 370px"><a href="http://kindman.org/blog/wp-content/uploads/2010/06/Projector_Gilson_John.jpeg"><img class="size-full wp-image-283" title="Projector, Gilson and John" src="http://kindman.org/blog/wp-content/uploads/2010/06/Projector_Gilson_John.jpeg" alt="Projector, Gilson and John" width="360" height="480" /></a><p class="wp-caption-text">Projector, Gilson and John </p></div>
<p>The blessed projector.<br />
Notice our TV sitting on the corner (lol..)</p>
<div id="attachment_284" class="wp-caption alignnone" style="width: 370px"><a href="http://kindman.org/blog/wp-content/uploads/2010/06/Wii-HD.jpeg"><img class="size-full wp-image-284" title="Wii and HD with Games" src="http://kindman.org/blog/wp-content/uploads/2010/06/Wii-HD.jpeg" alt="Wii and HD with Games" width="360" height="480" /></a><p class="wp-caption-text">Wii and HD with Games</p></div>
<p>Check out more pictures at <a href="http://flickr.com/repbuscape" target="_blank">flickr.com/repbuscape</a>.</p>
<p>Until soon, I hope. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/06/15/wii-projector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/06/15/wii-projector/</feedburner:origLink></item>
		<item>
		<title>jsPlot</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/h1rW2WBelT0/</link>
		<comments>http://kindman.org/blog/2010/05/18/jsplot/#comments</comments>
		<pubDate>Wed, 19 May 2010 01:21:35 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=260</guid>
		<description><![CDATA[I&#8217;m working on a library for plotting graphs; check it out in the page jsPlot. jsPlot is a JavaScript library for plotting graphs. It plots graphs into HTML pages, using jQuery and CSS2 (no canvas).]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a library for plotting graphs; check it out in the page <a href="http://kindman.org/blog/jsplot">jsPlot</a>.</p>
<blockquote><p>jsPlot is a JavaScript library for plotting graphs.<br />
It plots graphs into HTML pages, using jQuery and CSS2 (no canvas).</p></blockquote>
<div id="attachment_269" class="wp-caption alignnone" style="width: 310px"><a href="http://kindman.org/blog/wp-content/uploads/2010/05/jsplot-example1.png"><img class="size-medium wp-image-269" title="jsPlot Example" src="http://kindman.org/blog/wp-content/uploads/2010/05/jsplot-example1-300x187.png" alt="jsPlot Example" width="300" height="187" /></a><p class="wp-caption-text">jsPlot Example</p></div>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/05/18/jsplot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/05/18/jsplot/</feedburner:origLink></item>
		<item>
		<title>Boot-loaded ‘Hello World’</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/Nvvpk9gU7LU/</link>
		<comments>http://kindman.org/blog/2010/05/13/bootloadedhelloworld/#comments</comments>
		<pubDate>Fri, 14 May 2010 01:21:59 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=238</guid>
		<description><![CDATA[This morning Gilson and I were talking about the structure of disk&#8217;s partition table/master boot record (mbr)/boot loaders. After reading a bit about it [1] [2], we learned where the boot loader code goes in, and decided to change that code to do something else &#8211; to print &#8216;Hello World&#8217;, of course! Maluta was around [...]]]></description>
			<content:encoded><![CDATA[<p>This morning Gilson and I were talking about the structure of disk&#8217;s partition table/master boot record (mbr)/boot loaders.<br />
After reading a bit about it [1] [2], we learned where the boot loader code goes in, and decided to change that code to do something else &#8211; to print &#8216;Hello World&#8217;, of course!<br />
Maluta was around at the moment and suggested me to post about it. Here it goes :-)</p>
<p>In this post I detail assembly examples (using NASM [3]) printing text on boot, note some points on mbr and testing with QEMU [4].</p>
<p><strong>The Boot Process</strong></p>
<p>When switched on or reset, an x86 processor executes instructions at address FFFFh:0000h.<br />
In IBM PC compatibles, this address is mapped to a ROM chip that contains the computer&#8217;s BIOS code.</p>
<p>After tests and initializations, the BIOS executes the actual boot loading, performing (among other things) the following steps:</p>
<ol>
<li>Choose boot-device (setup-configured priority)</li>
<li>Check for <em>boot-device signature </em>(the value 0xAA55 in the last 2 bytes of device&#8217;s first sector)</li>
<li>Load the <em>first sector</em> (or <em>boot sector</em>) of boot-device into RAM (at address 0000:7C00) and initiate its execution</li>
</ol>
<p><strong>Testing with QEMU</strong></p>
<p>To test the examples, the only thing needed is a <em>virtual disk</em> &#8211; a disk image file.<br />
Actually, the only thing needed is it&#8217;s first sector; a <em>512-byte image file</em>.</p>
<p>One way is to create the image file by using <em>dd</em>:</p>
<p><code>dd if=/dev/zero of=disk.img bs=512 count=1</code></p>
<p>The file is really small, tough.<br />
It is possible to create such a file from the assembler too, <em>allocating bytes in the code</em> so that it end up with a 512-byte file.</p>
<p>Actually the latter is better in this case, as it also provides a simple way to <em>insert the boot-device signature</em> in the image file<em>.</em></p>
<p>The <em>assembly code</em> can be assembled with:<br />
<code>nasm example.asm -o disk.img</code></p>
<p>Then launch QEMU using the image file as primary hard disk.</p>
<p><code>qemu -hda disk.img</code></p>
<p><strong>Examples</strong></p>
<p>The examples use the interrupts [5] [6] 10h (<em>Video BIOS Services</em>) and 16h (<em>Keyboard BIOS Services</em>), respectively used to <em>write a single character</em> to the video screen and <em>read a single character</em> from the keyboard (actually used to <em>pause</em> the program).</p>
<p>In the 2 first examples, for legibility&#8217;s sake, the code for generating a 512-byte file and the boot signature will be omitted; that code is presented in the 3rd example.</p>
<ul>
<li><strong>Printing a single character (&#8216;<em>H</em>&#8216;)</strong></li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="asm" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">; Print Character ('H')</span>
<span style="color: #00007f; font-weight: bold;">mov</span>		<span style="color: #00007f;">ah</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">0Eh</span>
<span style="color: #00007f; font-weight: bold;">mov</span>		<span style="color: #00007f;">al</span><span style="color: #339933;">,</span> <span style="color: #7f007f;">'H'</span>
<span style="color: #00007f; font-weight: bold;">int</span>		<span style="color: #0000ff;">10h</span>
&nbsp;
<span style="color: #666666; font-style: italic;">; Read Character</span>
<span style="color: #00007f; font-weight: bold;">mov</span>		<span style="color: #00007f;">ah</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">00h</span>
<span style="color: #00007f; font-weight: bold;">int</span>		<span style="color: #0000ff;">16h</span></pre></div></div>

<p style="padding-left: 30px;">QEMU Output<br />
<code><br />
Booting from Hard Disk...<br />
H<br />
</code></p>
<ul>
<li><strong>Printing 10 characters (&#8216;<em>ABCDEFGHIJ</em>&#8216;) in a loop</strong></li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="asm" style="font-family:monospace;">start<span style="color: #339933;">:</span>	<span style="color: #00007f; font-weight: bold;">mov</span>	<span style="color: #00007f;">cx</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">0Ah</span>			<span style="color: #666666; font-style: italic;">; Loop Counter: 10 (0Ah) times</span>
&nbsp;
	<span style="color: #00007f; font-weight: bold;">mov</span>	<span style="color: #00007f;">ah</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">0Eh</span>			<span style="color: #666666; font-style: italic;">; Set 'int 10h' Operation</span>
	<span style="color: #00007f; font-weight: bold;">mov</span>	<span style="color: #00007f;">al</span><span style="color: #339933;">,</span> <span style="color: #7f007f;">'A'</span>			<span style="color: #666666; font-style: italic;">; Start with character 'A'</span>
&nbsp;
<span style="color: #00007f; font-weight: bold;">loop</span><span style="color: #339933;">:</span>	<span style="color: #00007f; font-weight: bold;">int</span>	<span style="color: #0000ff;">10h</span>			<span style="color: #666666; font-style: italic;">; Print character</span>
	<span style="color: #00007f; font-weight: bold;">inc</span>	<span style="color: #00007f;">al</span>			<span style="color: #666666; font-style: italic;">; Change to next character</span>
&nbsp;
	<span style="color: #00007f; font-weight: bold;">dec</span>	<span style="color: #00007f;">cx</span>			<span style="color: #666666; font-style: italic;">; Check Loop End</span>
	<span style="color: #00007f; font-weight: bold;">jnz</span>	<span style="color: #00007f; font-weight: bold;">loop</span>			<span style="color: #666666; font-style: italic;">; Loop Again</span>
&nbsp;
done<span style="color: #339933;">:</span>	<span style="color: #00007f; font-weight: bold;">mov</span>	<span style="color: #00007f;">ah</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">00h</span>			<span style="color: #666666; font-style: italic;">; Read Character</span>
	<span style="color: #00007f; font-weight: bold;">int</span>	<span style="color: #0000ff;">16h</span></pre></div></div>

<p style="padding-left: 30px;">QEMU Output<br />
<code><br />
Booting from Hard Disk...<br />
ABCDEFGHIJ<br />
</code></p>
<ul>
<li><strong>Generating a <em>512-byte file</em> with <em>boot signature</em></strong></li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="asm" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">; These lines go after your code.</span>
&nbsp;
zero		times	<span style="color: #0000ff;">512</span> <span style="color: #339933;">-</span><span style="color: #009900; font-weight: bold;">&#40;</span>$<span style="color: #339933;">-</span>$$<span style="color: #009900; font-weight: bold;">&#41;</span> <span style="color: #339933;">-</span><span style="color: #0000ff;">2</span>	<span style="color: #000000; font-weight: bold;">db</span> <span style="color: #0000ff;">0</span>	<span style="color: #666666; font-style: italic;">; zero remaining-to-512 bytes, except the last 2 bytes.</span>
signature	<span style="color: #000000; font-weight: bold;">dw</span>	<span style="color: #0000ff;">0xAA55</span>			<span style="color: #666666; font-style: italic;">; last 2 bytes: boot signature</span></pre></div></div>

<p style="padding-left: 30px;">Try opening <em>disk.img</em> in an hexadecimal editor. ;-)</p>
<ul>
<li><strong>Printing Hello World</strong></li>
</ul>
<p style="padding-left: 30px;">This is the final example, based on [7]. It is a bit more complex, as it is complete and 3 new features were used:</p>
<ol>
<li>Zero-ended String</li>
<li>Pointers</li>
<li>Effective Addresses</li>
</ol>
<p style="padding-left: 30px;">To ease understanding the code, it is commented with a C-style algorithm.</p>

<div class="wp_syntax"><div class="code"><pre class="asm" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">org</span>	<span style="color: #0000ff;">7C00h</span>					<span style="color: #666666; font-style: italic;">; needed as using effective addresses (lea)</span>
start<span style="color: #339933;">:</span>	<span style="color: #00007f; font-weight: bold;">mov</span>	<span style="color: #00007f;">ah</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">0Eh</span>				<span style="color: #666666; font-style: italic;">; operation op = PRINT_CHAR;</span>
&nbsp;
	<span style="color: #00007f; font-weight: bold;">lea</span>	<span style="color: #00007f;">si</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">&#91;</span>message<span style="color: #009900; font-weight: bold;">&#93;</span>			<span style="color: #666666; font-style: italic;">; for (char *currentChar = &amp;amp;message[0]; ...</span>
						<span style="color: #666666; font-style: italic;">; {</span>
print<span style="color: #339933;">:</span>	<span style="color: #00007f; font-weight: bold;">mov</span>	<span style="color: #00007f;">al</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">si</span><span style="color: #009900; font-weight: bold;">&#93;</span>			<span style="color: #666666; font-style: italic;">;	char buffer = *currentChar;</span>
&nbsp;
	<span style="color: #00007f; font-weight: bold;">cmp</span>	<span style="color: #00007f;">al</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">0</span>				<span style="color: #666666; font-style: italic;">; ... *currentChar != 0; ...</span>
	<span style="color: #00007f; font-weight: bold;">jz</span>	done
&nbsp;
	<span style="color: #00007f; font-weight: bold;">int</span>	<span style="color: #0000ff;">10h</span>				<span style="color: #666666; font-style: italic;">; 	executeOperation(VIDEO, op, buffer);</span>
						<span style="color: #666666; font-style: italic;">; }</span>
&nbsp;
	<span style="color: #00007f; font-weight: bold;">inc</span>	<span style="color: #00007f;">si</span>				<span style="color: #666666; font-style: italic;">; ... currentChar++)</span>
	<span style="color: #00007f; font-weight: bold;">jmp</span> 	print
&nbsp;
done<span style="color: #339933;">:</span>	<span style="color: #00007f; font-weight: bold;">mov</span>	<span style="color: #00007f;">ah</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">00h</span>				<span style="color: #666666; font-style: italic;">; op = READ_CHAR;</span>
	<span style="color: #00007f; font-weight: bold;">int</span>	<span style="color: #0000ff;">16h</span>				<span style="color: #666666; font-style: italic;">; executeOperation(KEYBOARD, op, NULL)</span>
&nbsp;
message		<span style="color: #000000; font-weight: bold;">db</span>	<span style="color: #7f007f;">'Hello World!'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">0</span>	<span style="color: #666666; font-style: italic;">; char message[] = &quot;Hello World!&quot;</span>
zero		times	<span style="color: #0000ff;">512</span> <span style="color: #339933;">-</span><span style="color: #009900; font-weight: bold;">&#40;</span>$<span style="color: #339933;">-</span>$$<span style="color: #009900; font-weight: bold;">&#41;</span> <span style="color: #339933;">-</span><span style="color: #0000ff;">2</span>	<span style="color: #000000; font-weight: bold;">db</span> <span style="color: #0000ff;">0</span>	<span style="color: #666666; font-style: italic;">; char empty[512 - bytesUntilHere() - 2] = 0;</span>
signature	<span style="color: #000000; font-weight: bold;">dw</span>	<span style="color: #0000ff;">0xAA55</span>			<span style="color: #666666; font-style: italic;">; char signature[2] = 0xAA55;</span></pre></div></div>

<p style="padding-left: 30px;">QEMU Output<br />
<code><br />
Booting from Hard Disk...<br />
Hello World!<br />
</code></p>
<p><strong>Related Errors</strong></p>
<ul>
<li>Image file smaller than 512-byte</li>
</ul>
<p style="padding-left: 30px;"><em>QEMU Output</em><br />
<code><br />
Booting from Hard Disk...<br />
Boot failed: could not read the boot disk<br />
</code></p>
<p style="padding-left: 30px;"><em>Reason</em><br />
The disk need at least one <em>complete</em> sector, and that is 512 bytes.</p>
<ul>
<li>Image file without boot signature</li>
</ul>
<p style="padding-left: 30px;"><em>QEMU Output</em><br />
<code><br />
Booting from Hard Disk...<br />
Boot failed: not a bootable disk<br />
</code></p>
<p style="padding-left: 30px;"><em>Reason</em><br />
The BIOS checks for the boot signature.</p>
<p><strong><strong>Special Thanks</strong></strong></p>
<ul>
<li>Gilson, for the chatting</li>
<li>John, for joining me in this &#8216;assembly day&#8217;</li>
<li>Maluta, for the post suggestion</li>
<li>Vantuil, for assembly classes that made Hello World really seem easy like Hello Worlds (lol..)</li>
</ul>
<p><strong><strong><strong>Ending</strong></strong></strong></p>
<p>I hope this post may be useful for you.<br />
Until next post. ;-)</p>
<p><span style="font-weight: 900;">References</span></p>
<p>[1] <a href="http://en.wikipedia.org/wiki/Master_boot_record" target="_blank">Wikipedia; Master Boot Record<br />
</a>[2] <a href="http://en.wikibooks.org/wiki/X86_Assembly/Bootloaders" target="_blank">Wikibooks; x86 Assembly/Bootloaders<br />
</a>[3] <a href="http://www.nasm.us/" target="_blank">NASM: The Netwide Assembler<br />
</a>[4] <a href="http://wiki.qemu.org/Main_Page" target="_blank">QEMU; About<br />
</a>[5] <a href="http://www.htl-steyr.ac.at/~morg/pcinfo/hardware/interrupts/inte1at0.htm" target="_blank">Interrupt Services DOS, BIOS, EMS und Mouse<br />
</a>[6] <a href="http://everything2.com/title/Interrupt+10h" target="_blank">Interrupt 10h</a><br />
</a>[7] <a href="http://wiicode.com/make-your-own-operating-system-with-x86-assembly-part-1/" target="_blank">Make your own operating system with x86 assembly (part 1)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/05/13/bootloadedhelloworld/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/05/13/bootloadedhelloworld/</feedburner:origLink></item>
		<item>
		<title>A Funny History of Programming Languages</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/_TIiqRbNMmw/</link>
		<comments>http://kindman.org/blog/2010/05/12/a-funny-history-of-programming-languages/#comments</comments>
		<pubDate>Wed, 12 May 2010 17:01:39 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=236</guid>
		<description><![CDATA[Some excerpts: 1940s &#8211; Various &#8220;computers&#8221; are &#8220;programmed&#8221; using direct wiring and switches. Engineers do this in order to avoid the tabs vs spaces debate. 1964 &#8211; John Kemeny and Thomas Kurtz create BASIC, an unstructured programming language for non-computer scientists. 1965 &#8211; Kemeny and Kurtz go to 1964. 1972 &#8211; Dennis Ritchie invents a [...]]]></description>
			<content:encoded><![CDATA[<p>Some excerpts:</p>
<blockquote><p>1940s &#8211; Various &#8220;computers&#8221; are &#8220;programmed&#8221; using direct wiring and switches. Engineers do this in order to avoid the tabs vs spaces debate.</p>
<p>1964 &#8211; John Kemeny and Thomas Kurtz create BASIC, an unstructured programming language for non-computer scientists.</p>
<p>1965 &#8211; Kemeny and Kurtz go to 1964.</p>
<p>1972 &#8211; Dennis Ritchie invents a powerful gun that shoots both forward and backward simultaneously. Not satisfied with the number of deaths and permanent maimings from that invention he invents C and Unix.</p>
<p>1995 &#8211; Brendan Eich reads up on every mistake ever made in designing a programming language, invents a few more, and creates LiveScript. Later, in an effort to cash in on the popularity of Java the language is renamed JavaScript.</p></blockquote>
<p>Original <a href="http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html" target="_blank">post</a>, via One Div Zero.<br />
Recommended by my great friend Arsinoé Wilche. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/05/12/a-funny-history-of-programming-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/05/12/a-funny-history-of-programming-languages/</feedburner:origLink></item>
		<item>
		<title>Job Scheduler to Network Nodes</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/a3swkzCcTr4/</link>
		<comments>http://kindman.org/blog/2010/04/28/job-scheduler-to-network-nodes/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 15:40:08 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=212</guid>
		<description><![CDATA[Last post I mentioned the topic distributed systems was involved in my new project. Now here it goes. After setting up a small (16-machine) cluster at UNIFEI (will post about it soon) for academic experiments, the time has come for running stuff in it. Since manually submitting and verifying jobs is very inefficient (tedious, sluggish and [...]]]></description>
			<content:encoded><![CDATA[<p>Last <a href="http://kindman.org/blog/2010/04/27/linux-on-8-core/" target="_self">post</a> I mentioned the topic <em>distributed systems</em> was involved in my new project.<br />
Now here it goes.</p>
<p>After setting up a small (16-machine) cluster at UNIFEI (will post about it soon) for academic experiments, the time has come for running stuff in it.<br />
Since manually submitting and verifying jobs is very inefficient (tedious, sluggish and fail-prone), a job scheduler was required.</p>
<p>There are a many tools for cluster management (special thanks to Walbon) featuring job schedulers, but all too sophisticated for this application.<br />
For this reason and 2 more, I decided to create the job scheduler. The other 2 reasons?</p>
<ul>
<li>It is a not a that-difficult task</li>
<li>I&#8217;m a C programmer, and as so I like to recreate everything.. (lol)</li>
<li>It would be so much fun! (Ok. This would be a third <em>reason</em>.. but actually it is <em>emotion</em>. <a href="http://xkcd.com/541/" target="_blank">;-)</a></li>
</ul>
<p>It took between 16 and 20 hours to design, implement and bugfix (see <em>Important</em> in <em>Scheduler</em>).</p>
<p><strong>Design</strong></p>
<ul>
<li>Dispatch a <em>job </em>(shell command) to an available <em>node</em> (using blocking-semantics)</li>
<li>Only shell script (ssh, named pipes)</li>
<li>Monitor nodes&#8217; current activity (start time, job)</li>
</ul>
<p><strong>Usage</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Launch Scheduler</span>
$ <span style="color: #7a0874; font-weight: bold;">cd</span> scheduler<span style="color: #000000; font-weight: bold;">/</span>
$ <span style="color: #c20cb9; font-weight: bold;">mkfifo</span> <span style="color: #7a0874; font-weight: bold;">jobs</span> nodes
$ .<span style="color: #000000; font-weight: bold;">/</span>sched.sh
&nbsp;
<span style="color: #666666; font-style: italic;"># Add nodes to the node pipe</span>
$ <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;10.0.0.1&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; nodes <span style="color: #000000; font-weight: bold;">&amp;</span>amp;
$ <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;10.0.0.2&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; nodes <span style="color: #000000; font-weight: bold;">&amp;</span>amp;
&nbsp;
<span style="color: #666666; font-style: italic;"># Add jobs to the job pipe</span>
$ <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;process /folder/data.txt&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #7a0874; font-weight: bold;">jobs</span> <span style="color: #000000; font-weight: bold;">&amp;</span>amp;
$ <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;make -j9&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #7a0874; font-weight: bold;">jobs</span> <span style="color: #000000; font-weight: bold;">&amp;</span>amp;
&nbsp;
<span style="color: #666666; font-style: italic;"># Watch the scheduler :-)</span></pre></div></div>

<p><strong>Implementation</strong></p>
<ul>
<li><strong>Dispatcher<span style="font-weight: normal;"><br />
</span></strong></li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># dispatch.sh</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This is a job dispatcher to network nodes.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># (C) Copyright 2010, Mauricio Faria de Oliveira</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This program is free software; you can redistribute it and/or modify</span>
<span style="color: #666666; font-style: italic;"># it under the terms of the GNU General Public License version 2</span>
<span style="color: #666666; font-style: italic;"># as published by the Free Software Foundation;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Variables</span>
<span style="color: #007800;">node_pipe</span>=<span style="color: #ff0000;">&quot;nodes&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Parameters</span>
<span style="color: #007800;">node</span>=<span style="color: #ff0000;">&quot;$1&quot;</span>
<span style="color: #7a0874; font-weight: bold;">shift</span>
<span style="color: #007800;">job</span>=<span style="color: #ff0000;">&quot;$@&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Checks</span>
<span style="color: #666666; font-style: italic;">#	1. Parameters.</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$node</span>&quot;</span> == <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$job</span>&quot;</span> == <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: $0 node job&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>;
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Log</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;.. (dispatch) node '<span style="color: #007800;">$node</span>': '<span style="color: #007800;">$job</span>'&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Dispatch job to node via ssh</span>
<span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$node</span>&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$job</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
&nbsp;
<span style="color: #666666; font-style: italic;"># Put node back into nodes named pipe</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$node</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #ff0000;">&quot;<span style="color: #007800;">$node_pipe</span>&quot;</span></pre></div></div>

<ul>
<li><strong>Scheduler</strong></li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># sched.sh</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This is a 2-fifo-blocking job-scheduler to network nodes.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># (C) Copyright 2010, Mauricio Faria de Oliveira</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This program is free software; you can redistribute it and/or modify</span>
<span style="color: #666666; font-style: italic;"># it under the terms of the GNU General Public License version 2</span>
<span style="color: #666666; font-style: italic;"># as published by the Free Software Foundation;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Variables</span>
<span style="color: #007800;">job_pipe</span>=<span style="color: #ff0000;">&quot;jobs&quot;</span>
<span style="color: #007800;">node_pipe</span>=<span style="color: #ff0000;">&quot;nodes&quot;</span>
<span style="color: #007800;">dispatcher</span>=<span style="color: #ff0000;">&quot;./dispatch.sh&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Checks</span>
<span style="color: #666666; font-style: italic;">#	1. Check if named pipes exist.</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-p</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$job_pipe</span>&quot;</span> <span style="color: #660033;">-o</span> \
     <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-p</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$node_pipe</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>;
<span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Check for the fifos 'jobs' and 'nodes' (mkfifo jobs; mkfifo nodes)&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>;
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Algorithm</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#	1. For each available job ('jobs' named pipe, blocking),</span>
<span style="color: #666666; font-style: italic;">#	2. For an available node ('nodes' named pipe, blocking),</span>
<span style="color: #666666; font-style: italic;">#	3. Dispatch job to node (asynchronously).</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Important</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#	1. The named pipes are NOT guaranteed to be 'fifo'.</span>
<span style="color: #666666; font-style: italic;">#		Jobs and nodes are added/return asynchronously.</span>
<span style="color: #666666; font-style: italic;">#		Only the blocking behavior is guaranteed.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#	2. There is no way to remove a single line from a named pipe, [is it?]</span>
<span style="color: #666666; font-style: italic;">#		Then:</span>
<span style="color: #666666; font-style: italic;">#		1. All lines are removed,</span>
<span style="color: #666666; font-style: italic;">#		2. First line is used,</span>
<span style="color: #666666; font-style: italic;">#		3. Other lines are put back (asynchronously).</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#	3. If the 'cat &amp;lt;&amp;gt; jobs' hangs for even a little while</span>
<span style="color: #666666; font-style: italic;">#		jobs in this little while are lost. [why?]</span>
<span style="color: #666666; font-style: italic;">#		So things are asynchronous inside this loop.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#	4. Never use &amp;gt;&amp;gt; (append) asynchronously with named pipes.</span>
<span style="color: #666666; font-style: italic;">#		It _seems_ append on pipes works as follows:</span>
<span style="color: #666666; font-style: italic;">#		1. Buffer contents</span>
<span style="color: #666666; font-style: italic;">#		2. Add new stuff to buffer</span>
<span style="color: #666666; font-style: italic;">#		3. Overwrite contents with buffer</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#		If something is removed (i.e. 'cat') between steps 1 and 3,</span>
<span style="color: #666666; font-style: italic;">#		it will be inserted back on step 3, due to content buffering.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">###############################################################################</span>
<span style="color: #666666; font-style: italic;"># Code                                                                        #</span>
<span style="color: #666666; font-style: italic;">###############################################################################</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#	1.	For each available job ('jobs' named pipe, blocking),</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&amp;</span>lt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #ff0000;">&quot;<span style="color: #007800;">$job_pipe</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #c20cb9; font-weight: bold;">read</span> job; <span style="color: #000000; font-weight: bold;">do</span>
&nbsp;
    <span style="color: #7a0874; font-weight: bold;">echo</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;(job): <span style="color: #007800;">$job</span>&quot;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># 2. For an available node ('nodes' named pipe, blocking),</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># 2.1. All lines are removed,</span>
    <span style="color: #007800;">linecount</span>=<span style="color: #000000;">0</span>
    <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$node_pipe</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #c20cb9; font-weight: bold;">read</span> node; <span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">&quot;.. (node): <span style="color: #007800;">$node</span> (#<span style="color: #007800;">${linecount}</span>) &quot;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># 2.2. First line is used,</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$linecount</span>&quot;</span> == <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
&nbsp;
            <span style="color: #666666; font-style: italic;"># 3. Dispatch job to node (asynchronously).</span>
            <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;(dispatch)&quot;</span>
            <span style="color: #007800;">$dispatcher</span> <span style="color: #007800;">$node</span> <span style="color: #007800;">$job</span> <span style="color: #000000; font-weight: bold;">&amp;</span>amp;
&nbsp;
        <span style="color: #666666; font-style: italic;"># 2.3. Other lines are put back.</span>
        <span style="color: #000000; font-weight: bold;">else</span>
            <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;(put back)&quot;</span>
            <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$node</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; nodes <span style="color: #000000; font-weight: bold;">&amp;</span>amp;
        <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
        <span style="color: #007800;">linecount</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$linecount</span> + <span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
    <span style="color: #7a0874; font-weight: bold;">echo</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<ul>
<li><strong><span style="font-weight: normal;"><strong>Monitor<br />
<span style="font-weight: normal;">Scheduled for a next post.</span> ;-)</strong></span></strong></li>
</ul>
<p>Will be back soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/04/28/job-scheduler-to-network-nodes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/04/28/job-scheduler-to-network-nodes/</feedburner:origLink></item>
		<item>
		<title>Linux on 8-core</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/FxL1kC2lAyE/</link>
		<comments>http://kindman.org/blog/2010/04/27/linux-on-8-core/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 05:20:46 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Unifei]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=172</guid>
		<description><![CDATA[There&#8217;s a new project comin&#8217; on. In advance: linux, data structures, distributed systems. Gonna post about it soon. It rocks.. You bet! :-)]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a new project comin&#8217; on.<br />
In advance: linux, data structures, distributed systems.</p>
<div id="attachment_171" class="wp-caption alignnone" style="width: 412px"><a href="http://kindman.org/blog/wp-content/uploads/2010/04/DSC000731.jpg"><img class="size-large wp-image-171    " title="Linux bootscreen displaying 8 penguins (cores)" src="http://kindman.org/blog/wp-content/uploads/2010/04/DSC000731-1024x636.jpg" alt="Linux bootscreen displaying 8 penguins" width="402" height="250" /></a><p class="wp-caption-text">Linux bootscreen displaying 8 penguins (cores)</p></div>
<p>Gonna post about it soon.<br />
It rocks.. You bet! :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/04/27/linux-on-8-core/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/04/27/linux-on-8-core/</feedburner:origLink></item>
		<item>
		<title>IE for Windows</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/rCe3ICA7b1Q/</link>
		<comments>http://kindman.org/blog/2010/03/05/ie-for-windows/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 13:36:44 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=164</guid>
		<description><![CDATA[[10:31] Marcelo Fantini Xavier: Cara.. preciso ficar com ie7 no windows 7 [10:31] Marcelo Fantini Xavier: rssrsr [10:31] Marcelo Fantini Xavier: tem idéia? [10:31] Marcelo Fantini Xavier: Já procurei mais não achei nada a respeito [10:31] Marcelo Fantini Xavier: Daqui a pouco vou tentar tirar o IE8 por completo e instalar o 7 [10:32] Marcelo [...]]]></description>
			<content:encoded><![CDATA[<p>[10:31]  Marcelo Fantini Xavier: Cara.. preciso ficar com ie7 no windows 7<br />
[10:31]  Marcelo Fantini Xavier: rssrsr<br />
[10:31] Marcelo  Fantini Xavier: tem idéia?<br />
[10:31] Marcelo Fantini  Xavier: Já procurei mais não achei nada a respeito<br />
[10:31]  Marcelo Fantini Xavier: Daqui a pouco vou tentar tirar o IE8 por  completo e instalar o 7<br />
[10:32] Marcelo Fantini Xavier: Mais  aparentemente isso não funciona<br />
[10:32] Mauricio: <span style="font-family: Tahoma;">Pro XP tinha um  programinha que instalava 6 &lt;= IE &lt;= 8 e coloca atalhos pra cada  versão no desktop.</span><br />
[10:32] Mauricio: <span style="font-family: Tahoma;">Multi IE, algo assim</span><br />
[10:32]  Mauricio: <span style="font-family: Tahoma;">usei  na <span style="text-decoration: line-through;"> </span>.</span><br />
[10:33] Mauricio: <span style="font-family: Tahoma;">google multiple ie versions</span><br />
[10:33]  Mauricio: <span style="font-family: Tahoma;">[pensando]  acho que nesse caso nao precisa por &#8216;for windows&#8217;</span><br />
[10:33]  Mauricio: <span style="font-family: Tahoma;">eiauheAIeaiuhea</span></p>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/03/05/ie-for-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/03/05/ie-for-windows/</feedburner:origLink></item>
		<item>
		<title>On God and Portable Software</title>
		<link>http://feedproxy.google.com/~r/kindman/~3/_ynOqWMIwmM/</link>
		<comments>http://kindman.org/blog/2010/02/23/on-god-and-portable-software/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 02:07:55 +0000</pubDate>
		<dc:creator>Mauricio</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Life and Death]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://kindman.org/blog/?p=162</guid>
		<description><![CDATA[If we think of the Spirit as software and the Body as hardware, it&#8217;s clear in Spiritism that God makes portable software.]]></description>
			<content:encoded><![CDATA[<p>If we think of the Spirit as software and the  Body as hardware,<br />
it&#8217;s clear in Spiritism that God makes portable  software.</p>
]]></content:encoded>
			<wfw:commentRss>http://kindman.org/blog/2010/02/23/on-god-and-portable-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kindman.org/blog/2010/02/23/on-god-and-portable-software/</feedburner:origLink></item>
	</channel>
</rss>
