<?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>Miscellaneous</title>
	
	<link>http://blog.andrecardoso.eu</link>
	<description>"adj.,  having various qualities, aspects, or subjects..."</description>
	<lastBuildDate>Thu, 02 Sep 2010 22:46:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/andrecardoso/bYoR" /><feedburner:info uri="andrecardoso/byor" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Func is Funky</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/Ts7B9mdF9Q8/</link>
		<comments>http://blog.andrecardoso.eu/2010/09/func-is-funky/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:31:11 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[func]]></category>
		<category><![CDATA[kickstart]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[shell globs]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=551</guid>
		<description><![CDATA[Func, Fedora Unified Network Controller, allows us to send commands for remote execution in a set of pre-configured hosts. More, it allows us to choose which machines we want to address using shell globs. This, and more, is done securely over SSL. Func facilitates remote administration.]]></description>
			<content:encoded><![CDATA[<h2>Context</h2>
<p><a href="https://fedorahosted.org/func/" target="_blank">Func</a>, <strong>Fedora Unified Network Controller</strong>, allows us to send commands for remote execution in a set of pre-configured hosts. More, it allows us to choose which machines we want to address using <strong>shell globs</strong>. This, and more, is done securely over <strong>SSL</strong>. Func <strong>facilitates</strong> remote <strong>administration</strong>.</p>
<p>Func is a Fedora project whose general architecture is based on two parties: <strong>Func</strong> itself and <a href="https://fedorahosted.org/certmaster/" target="_blank"><strong>Certmaster</strong></a>. Certmaster is responsible for authentication and encryption using SSL certificates. Certificates are identity proofs. And, from my knowledge, (correct me) they are little more than a signature (private key encryption of an hash) attached to a cryptographic public key. Certmaster application is composed by a <strong>client</strong> and a <strong>daemon</strong> capable of requesting and serving SSL certificates. This enables a <strong>master</strong> machine to communicate with a <strong>slave</strong> over SSL.</p>
<p>On top of this comes Func: it is also a built on <strong>client-server style</strong> and enables administrators to build an infrastructure of slave machines running the daemon <strong>funcd</strong>. This daemon listens on a port for requests from a certain master machine. In fact, the SSL scheme behind it lets us sleep tight at night knowing that those slaves will only reply to the master and not some fake.</p>
<p>The master is where the all-powerful sysadmin is logged in <img src='http://blog.andrecardoso.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  From that machine, the sysadmin can issue commands for execution by the slaves at the same time. Even cooler, he can address those machines in the following manner:</p>
<pre class="brush: bash; collapse: false;">
&quot;*fe.up.pt&quot;
</pre>
<p>Meaning <em>all the machines in the &#8220;fe.up.pt&#8221; domain under my control. </em>How cool is that?</p>
<p>Func is <strong>python</strong>, and has a python <strong>API</strong> so, besides using Func directly, we can even build our own customized scripts.</p>
<h2>Installation&#8230;</h2>
<p>I tested this in <strong>CentOS</strong> <strong>5</strong>. I think Func and Certmaster are in the EPEL repo.</p>
<p>This, in fact, little more than what can be found in the official Func page.</p>
<h3>On the master:</h3>
<p>Install Func and Certmaster. Certmaster gets pushed by Func on installation.</p>
<p><strong>Certmaster daemon</strong> will be running on the <strong>master</strong> machine, making it possible for the slaves (called <strong><em>minions</em></strong>) to request certificates.</p>
<pre class="brush: bash; collapse: false;">
$ yum install func
$ /sbin/chkconfig --level 345 certmaster on
$ /sbin/service certmaster start
</pre>
<h3>On the slave machines:</h3>
<p>On the minions, the funcd will be running, accepting requests from func client and running commands. Besides this, func will try to request certificate signing from the master. For this to work, we&#8217;ll need to indicate the master&#8217;s address on the certmaster configuration file.</p>
<pre class="brush: bash; collapse: false;">
$ yum install func
</pre>
<p>Edit the <em>/etc/certmaster/minion.conf</em> file and change the address of your master machine. For example:</p>
<pre class="brush: bash; collapse: false;">
# configuration for minions
[main]
certmaster = master.fe.up.pt
certmaster_port = 51235
log_level = DEBUG
cert_dir = /etc/pki/certmaster
</pre>
<p>Now, put the funcd running at boot and start it.</p>
<pre class="brush: bash; collapse: false;">
$/sbin/chkconfig --level 345 funcd on
$/sbin/service funcd start
</pre>
<p><strong>Also</strong>, you need to open <a href="https://fedorahosted.org/func/wiki/PortInfo" target="_blank">ports</a> on <strong>iptables</strong>. The master machine must have port <strong>51235</strong> open, and the minions must have port <strong>51234</strong> open.</p>
<h2>Working</h2>
<p>Now we have the environment set.</p>
<p>Before starting to send commands to slaves, we need to &#8220;sign&#8221; them first. Issue the following command from the master to list the slave machines. If everything is <strong>ok</strong>, you&#8217;ll see <strong>all the slave machines</strong> where you&#8217;ve just installed func.</p>
<pre class="brush: bash; collapse: false;">
$ certmaster-ca --list
</pre>
<p>Once you&#8217;ve seen the machines <strong>that are ready to be signed</strong>, you can sign them:</p>
<pre class="brush: bash; collapse: false;">
$ certmaster-ca --sign slave1.fe.up.pt
$ certmaster-ca --sign slave2.fe.up.pt
$ ...
</pre>
<h3>Example</h3>
<p>Now, you&#8217;re <strong>ready to send commands</strong>. Let&#8217;s imagine you want to send a message to all logged users on the slaves, <strong>using <em>wall</em> command</strong>:</p>
<pre class="brush: bash; collapse: false;">
$ func &quot;*.fe.up.pt&quot; call command run &quot;wall 'Hello users! Machine will go down for reboot in 1 minute! Save you work!'&quot;
</pre>
<p>This is a simple example. You can use more complex <strong>globbing</strong> to address specific machines. See <a href="https://fedorahosted.org/func/wiki/CommandLineGlobbing" target="_blank">https://fedorahosted.org/func/wiki/CommandLineGlobbing</a>.</p>
<h2>About provisioning</h2>
<p>If you want to integrate minion installation with <strong>kickstart</strong> for example, it&#8217;s fairly simple, as you <strong>only need</strong> to install <strong>packages</strong> and change a line of the <strong>config</strong> file.</p>
<p>You can run into some problems if you happen to kickstart a minion machine, both in the master and slave. This is because in the master there will be a CSR inconsistent with the new machine. And in the minion, because funcd automatically retrieves the certificate at boot, funcd will have a wrong certificate, one referring to the previous state of the machine before re installation. You can solve this by cleaning SSL keys and such in the minion and cleaning the certificate request on the master:</p>
<pre class="brush: bash; collapse: false;">
# on the new, kickstarted machine
$ service funcd stop
$ rm -rf /etc/pki/certmaster/*
# on the master
$ certmaster-ca --clean &lt;hostname_of_the_kickstarted_machine&gt;
# again, on the slave
$ service funcd start
# on the master again
$ certmaster-ca --sign &lt;hostname_of_the_kickstarted_machine&gt;
</pre>
<p>All this is just to clean certificates and certificate requests form both ends.</p>
<p><strong>This can be avoided if, immediately before restarting the minion to a re installation</strong>,  we clean its respective certificate request in the master with:</p>
<pre class="brush: bash; collapse: false;">
$ certmaster-ca --clean &lt;hostname&gt;
</pre>
<p><strong>This way</strong>, when the minion <strong>boots up with the funcd</strong> daemon running, it will reach a <strong>consistent</strong> state.</p>
<p>Still, you&#8217;ll have to issue the <em>&#8211;sign</em> command.</p>
<h2>References</h2>
<ul>
<li><a href="https://fedorahosted.org/func/" target="_blank">https://fedorahosted.org/func/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/09/func-is-funky/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/09/func-is-funky/</feedburner:origLink></item>
		<item>
		<title>I haz Bunny</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/Mk_Oh8D4-Y8/</link>
		<comments>http://blog.andrecardoso.eu/2010/08/i-haz-bunny/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 01:49:46 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bunny]]></category>
		<category><![CDATA[pet]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[rabbit]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=532</guid>
		<description><![CDATA[Rabbit photos]]></description>
			<content:encoded><![CDATA[<p>I haz bunny.</p>
<p>He&#8217;s called <em>Jordão</em> and there&#8217;s a small chance he&#8217;s actually a <em>she</em>&#8230; I don&#8217;t know&#8230; <img src='http://blog.andrecardoso.eu/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
<div id="attachment_534" class="wp-caption aligncenter" style="width: 650px"><a href="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action001.jpg"><img class="size-full wp-image-534" title="The Cage" src="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action001.jpg" alt="" width="640" height="480" /></a><p class="wp-caption-text">The Cage</p></div>
<div id="attachment_538" class="wp-caption aligncenter" style="width: 650px"><a href="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action005.jpg"><img class="size-full wp-image-538" title="Jordão Resting" src="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action005.jpg" alt="" width="640" height="480" /></a><p class="wp-caption-text">Jordão Resting</p></div>
<div id="attachment_537" class="wp-caption aligncenter" style="width: 650px"><a href="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action004.jpg"><img class="size-full wp-image-537" title="Jordão facing me" src="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action004.jpg" alt="" width="640" height="480" /></a><p class="wp-caption-text">Jordão facing me</p></div>
<div id="attachment_541" class="wp-caption aligncenter" style="width: 650px"><a href="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action008.jpg"><img class="size-full wp-image-541" title="Jordão being held...He does not like it...heads will roll...!" src="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action008.jpg" alt="" width="640" height="480" /></a><p class="wp-caption-text">Jordão being held...He does not like it...heads will roll...!</p></div>
<div id="attachment_544" class="wp-caption aligncenter" style="width: 650px"><a href="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action011.jpg"><img class="size-full wp-image-544" title="Jordão dating a gal" src="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/Action011.jpg" alt="" width="640" height="480" /></a><p class="wp-caption-text">Jordão dating a gal</p></div>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/08/i-haz-bunny/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/08/i-haz-bunny/</feedburner:origLink></item>
		<item>
		<title>OpenAFS Encryption and Kerberos V</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/4xsSjyIhRPY/</link>
		<comments>http://blog.andrecardoso.eu/2010/08/openafs-encryption-and-kerberos-v/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 01:41:21 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[fcrypt]]></category>
		<category><![CDATA[kerberos]]></category>
		<category><![CDATA[openafs]]></category>
		<category><![CDATA[µSG]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=513</guid>
		<description><![CDATA[Kerberos. Type of Encryption used in OpenAFS communications.]]></description>
			<content:encoded><![CDATA[<h2>Context</h2>
<p>It was our intention to build a secure network, with single sign-on mechanisms. With &#8216;secure&#8217; we mean secure authentication and transmission of data. <a href="http://web.mit.edu/kerberos/" target="_blank">Kerberos</a> solves the problem of secure authentication using a shared secret key architecture. In fact, while authenticating principals passwords are never sent over the cables. Authentication is based upon the ability of the principal of decrypting some piece of information.</p>
<p>Kerberos also solves the problem of mutual authentication: each service (server) and consumer must  know for sure that they are communicating with authorized parties and not with fakes. This is cleverly solved using the <em>Needham-Schroeder </em>scheme. This algorithm enables two parties to share a session key, securely. The session key can be further used to protect communications between them. In particular, Kerberos introduces the concept of <em>Authenticators</em>. These are, basically, principal identifiers and timestamps. When a client initiates communication with a service, sends him &#8230; well it sends him a butload of things <img src='http://blog.andrecardoso.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  but the important thing is that it sends him a Authenticator encrypted with the session key that both will use. However, the service cannot decrypt it yet, because it has no access to the session key itself. To obtain the session key, he first has to decrypt another part of the message sent by the client, which is the <strong>session key encrypted with the key that only he and the Ticket Granting Service</strong> share. Now, the service is prepared to decrypt the Authenticator sent by the client and reply to him with a new Authenticator which now contains the original timestamp plus 1. This goes, once again, encrypted using the same session key. This can somewhat be seen in the pictures below. They were taken from the course I&#8217;ve attended last year on <a href="https://www.fe.up.pt/si_uk/DISCIPLINAS_GERAL.FORMVIEW?P_ANO_LECTIVO=2010/2011&amp;P_CAD_CODIGO=PRODEI011&amp;P_PERIODO=1S" target="_blank">Computer Systems Security</a>.</p>
<div id="attachment_518" class="wp-caption aligncenter" style="width: 591px"><a href="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/kerberos11.png"><img class="size-large wp-image-518   " title="Kerberos Authentication" src="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/kerberos11-1024x407.png" alt="Kerberos Authentication" width="581" height="231" /></a><p class="wp-caption-text">Authentication protocol used in Kerberos. Simplified. Taken from the lecture notes of Computer Systems Security: http://web.fe.up.pt/~jmcruz/ssi/acetat/4-autentica.pdf</p></div>
<p style="text-align: center;">
<div id="attachment_516" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/kerberos2.png"><img class="size-medium wp-image-516 " title="Kerberos Service Request" src="http://blog.andrecardoso.eu/wp-content/uploads/2010/08/kerberos2-300x110.png" alt="Kerberos Service Request" width="300" height="110" /></a><p class="wp-caption-text">Service request phase. Simplified. Taken from the lecture notes of Computer Systems Security: http://web.fe.up.pt/~jmcruz/ssi/acetat/4-autentica.pdf</p></div>
<p>Wrapping up, mutual authentication is achieved, from the service side, by matching the information found in the Authenticator against the information found in the ticket (crafted by the TGS) and the network information. If everything matches, the client is authenticated. The client authenticates the server when it receives from it the proper authenticator in reply to its own.</p>
<h2>Problem</h2>
<p>By now we have authentication and, as a sub-product of kerberos system, communication encryption. <a href="http://openafs.org/" target="_blank">OpenAFS</a> can now enter here as a means to distribute, for example, the home directories of users over the network (network login facilities&#8230;). OpenAFS has the advantage of being a natively <em>kerberized</em> application. The problem is the type of encryption supported by it.</p>
<p>If I&#8217;m not mistaken, AES is accepted as the strongest encryption algorithm and is also supported by Kerberos. However, by what I know, there are two problems with OpenAFS: it only supports <strong><a href="http://docs.openafs.org/Reference/8/asetkey.html" target="_blank">des-cbc-crc:v4</a> </strong>principal keys, which means authentication is done using a weak encryption protocol. The other problem is that communication between afs clients and servers get encrypted using something even weaker: <a href="http://users.surfvi.com/~ota//fcrypt-paper.txt" target="_blank">fcrypt</a>.</p>
<p>In fact, this is something that confuses me: I thought that encryption of any two parties &#8220;talking&#8221; kerberos was done using the session key given by the TGS. But it seems that applications like OpenAFS bypass this, using their own encryption scheme. Or maybe the session key is used only for the mutual authentication part. In this case, what type of encryption protocol is used those messages? This whole thing about encryption leaves me confused&#8230;<strong>if someone cares to shed some light, it would much appreciated</strong> <img src='http://blog.andrecardoso.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>But as far as I know, in the current network design that we were trying to mount (kerberos, ldap, openafs) <strong>the <em>weak link</em> is OpenAFS</strong>, because all the other principals can use of AES encryption type.</p>
<p>Nonetheless, this whole scheme of Kerberos plus OpenAFS plus OpenLDAP is just great to whom seeks to secure a smaller network within unsecured networks.</p>
<h2>References</h2>
<ul>
<li><a href="http://users.surfvi.com/~ota//fcrypt-paper.txt" target="_blank">http://docs.openafs.org/Reference/8/asetkey.html</a></li>
<li><a href="http://users.surfvi.com/~ota//fcrypt-paper.txt" target="_blank">http://users.surfvi.com/~ota//fcrypt-paper.txt</a></li>
<li><a href="http://docs.openafs.org/Reference/1/fs_setcrypt.html" target="_blank">http://docs.openafs.org/Reference/1/fs_setcrypt.html</a></li>
<li><a href="http://web.mit.edu/kerberos/krb5-1.8/krb5-1.8.3/doc/krb5-admin.html#Supported%20Encryption%20Types" target="_blank">http://web.mit.edu/kerberos/krb5-1.8/krb5-1.8.3/doc/krb5-admin.html#Supported%20Encryption%20Types</a></li>
<li><a href="http://en.wikipedia.org/wiki/Needham-Schroeder_protocol" target="_blank">http://en.wikipedia.org/wiki/Needham-Schroeder_protocol</a></li>
<li><a href="http://en.wikipedia.org/wiki/Kerberos_%28protocol%29#Client_Service_Authorization" target="_blank">http://en.wikipedia.org/wiki/Kerberos_%28protocol%29#Client_Service_Authorization</a></li>
<li><a href="http://web.mit.edu/Kerberos/dialogue.html" target="_blank">http://web.mit.edu/Kerberos/dialogue.html</a></li>
<li><a href="http://openafs.org/" target="_blank">http://openafs.org/</a></li>
<li><a href="http://web.mit.edu/kerberos/" target="_blank">http://web.mit.edu/kerberos/</a></li>
<li><a href="http://web.fe.up.pt/~jmcruz/ssi/acetat/4-autentica.pdf" target="_blank">http://web.fe.up.pt/~jmcruz/ssi/acetat/4-autentica.pdf</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/08/openafs-encryption-and-kerberos-v/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/08/openafs-encryption-and-kerberos-v/</feedburner:origLink></item>
		<item>
		<title>Code Design</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/z5sDBKBCrPM/</link>
		<comments>http://blog.andrecardoso.eu/2010/07/code-design/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 12:11:14 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[good practices]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=504</guid>
		<description><![CDATA[Code Design quotation, by Martin Fowler.]]></description>
			<content:encoded><![CDATA[<p><em>“Any fool can write code that a computer can understand. Good  programmers write code that humans can understand.”<br />
-Martin Fowler et  al, Refactoring: Improving the Design of Existing Code, 1999</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/07/code-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/07/code-design/</feedburner:origLink></item>
		<item>
		<title>Thesis Presentations – DRRs from 3D anatomical models</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/7gxdTizB3IM/</link>
		<comments>http://blog.andrecardoso.eu/2010/07/thesis-presentations-drrs-from-3d-anatomical-models/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 21:21:01 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cuda]]></category>
		<category><![CDATA[drr]]></category>
		<category><![CDATA[feup]]></category>
		<category><![CDATA[glsl]]></category>
		<category><![CDATA[radiographs]]></category>
		<category><![CDATA[thesis]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=499</guid>
		<description><![CDATA[The presentations made by me on the first phase of the thesis. Generation of planar radiographs from 3D anatomical models using the GPU.
Till here, was just about gathering information, reading papers...from now on, I start coding.]]></description>
			<content:encoded><![CDATA[<p>Well, I&#8217;ve made my second presentation about my thesis theme. I was about presenting information gathered about the area.</p>
<p>As the previous post with my first presentation seems to have vanished from my blog (VPS problems :S), I leave here the first presentation as well.</p>
<div id="__ss_4754023" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Generation of planar radiographs from 3D anatomical models using the GPU" href="http://www.slideshare.net/thyandrecardoso/presentation-4754023">Generation of planar radiographs from 3D anatomical models using the GPU &#8211; 14/07/2010</a></strong><object id="__sse4754023" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-100714114159-phpapp01&amp;stripped_title=presentation-4754023" /><param name="name" value="__sse4754023" /><param name="allowfullscreen" value="true" /><embed id="__sse4754023" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-100714114159-phpapp01&amp;stripped_title=presentation-4754023" name="__sse4754023" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/thyandrecardoso">thyandrecardoso</a>.</div>
</div>
<div id="__ss_4056896" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Generation of planar radiographs from 3D anatomical models using the GPU " href="http://www.slideshare.net/thyandrecardoso/presentation-4056896">Generation of planar radiographs from 3D anatomical models using the GPU &#8211; 10/05/2010 </a></strong><object id="__sse4056896" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-100511175011-phpapp02&amp;stripped_title=presentation-4056896" /><param name="name" value="__sse4056896" /><param name="allowfullscreen" value="true" /><embed id="__sse4056896" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-100511175011-phpapp02&amp;stripped_title=presentation-4056896" name="__sse4056896" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/thyandrecardoso">thyandrecardoso</a>.</div>
</div>
<h2>Update (31/07/2010):</h2>
<p>The term has ended, and I&#8217;ve finished the report for the course dedicated to prepare us for the thesis development on the next school term.</p>
<p>So, I leave here the link for the report, to complete the documentation:</p>
<p><a href="ftp://andrecardoso.eu/ftp/PDIS/report.pdf">ftp://andrecardoso.eu/ftp/PDIS/report.pdf</a></p>
<p>(It&#8217;s far from perfect though:)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/07/thesis-presentations-drrs-from-3d-anatomical-models/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/07/thesis-presentations-drrs-from-3d-anatomical-models/</feedburner:origLink></item>
		<item>
		<title>Keyboard Prayer</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/-sl_lquvY0k/</link>
		<comments>http://blog.andrecardoso.eu/2010/06/keyboard-prayer/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 15:52:24 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[keyboard prayer]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=496</guid>
		<description><![CDATA[A prayer :)]]></description>
			<content:encoded><![CDATA[<h2><em>Keyboard Prayer</em></h2>
<p><em>Our program who art in memory, Hello be thy Name. Thy Operating System come, thy Commands be done, at the Printer as it is on the screen. Give us this day our daily data, and forgive us our I/O Errors as we forgive those whose Logic Circuits are faulty. Lead us not into frustration, and deliver us from Power Surges. For Thin is the Algorithm, the Application, and the Solution, looping forever and ever.</em></p>
<p><em>Return.</em></p>
<p>(Credits go to the author, whom I don&#8217;t know. It is a nice prayer though..:P)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/06/keyboard-prayer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/06/keyboard-prayer/</feedburner:origLink></item>
		<item>
		<title>CUDA on Mac OS X 10.6.3</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/TJm-gtDevaQ/</link>
		<comments>http://blog.andrecardoso.eu/2010/06/cuda-on-mac-os-x-10-6-3/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 20:29:48 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[cuda]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[mac os x 10.6.3]]></category>
		<category><![CDATA[no table of contents]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=490</guid>
		<description><![CDATA[Installing and compiling the sample programs throws "no table of contents" when linking against libcutil_i386.a library. This problem has an easy fix, the hard part is the lack of support and information.]]></description>
			<content:encoded><![CDATA[<p>Yesterday I&#8217;ve downloaded the CUDA SDK for Mac OS X, from <a href="http://developer.nvidia.com/object/cuda_3_0_downloads.html" target="_blank">here</a>. I&#8217;ve installed the drivers, toolkit and samples. Everything installs fine.</p>
<p>Then, if you look to the &#8220;<a href="http://developer.download.nvidia.com/compute/cuda/3_0/docs/GettingStartedMacOS.pdf" target="_blank">Getting Started Guide for Mac</a>&#8220;, they tell you to make sure your gpu is supported and then compile the sample code provided in <strong>/Developer/GPU Computing/C/.</strong></p>
<p>This part failed for me, because I kept getting the &#8220;<strong>no table of contents</strong>&#8221; error when the linker tried to link against the libraries, namely the <strong>libcutil_i386.a. </strong></p>
<p>I&#8217;ve managed to compile the samples after googling for this and reading the posts in <a href="http://forums.nvidia.com/index.php?showtopic=105940&amp;st=20&amp;p=989833&amp;#entry989833" target="_blank">this nvidia forum</a>. So, following some recommendations found in the forum I opened the file <strong>common.mk</strong> found in <strong>/Developer/GPU Computing/C/common</strong> and changed lines 39 and 306 to the following:</p>
<pre class="brush: bash; collapse: false;">
39: SNOWLEOPARD = $(strip $(findstring 10.6, $(shell egrep &quot;&lt;string&gt;10\.6\.3&quot; /System/Library/CoreServices/SystemVersion.plist)))
306: LINKLINE  = ar rucvs $(TARGET) $(OBJS)
</pre>
<p>Note the different version number of the OS and the <strong>s</strong> switch in the LINKLINE, which forces the creation of an index.</p>
<p>Then I tried to <strong>make clean</strong> and <strong>make</strong> again, but the error persisted. This time, I read <a href="http://forums.nvidia.com/index.php?showtopic=79189" target="_blank">this</a> and found the solution, which is to run the <strong>ranlib</strong> command in the directories containing the libraries used during the compilation of the samples:</p>
<pre class="brush: bash; collapse: false;">
cd &quot;/Developer/GPU Computing/C/lib&quot;
ranlib *.a
cd &quot;/Developer/GPU Computing/shared/lib&quot;
ranlib *.a
</pre>
<p>By the way, apparently, the ranlib command creates a table of contents&#8230;</p>
<p>This got me rid of the errors.</p>
<p>Hope this helps.</p>
<h2>References</h2>
<ul>
<li><a href="http://developer.nvidia.com/object/cuda_3_0_downloads.html" target="_blank">http://developer.nvidia.com/object/cuda_3_0_downloads.html</a></li>
<li><a href="http://forums.nvidia.com/index.php?showtopic=79189" target="_blank">http://forums.nvidia.com/index.php?showtopic=79189</a></li>
<li><a href="http://forums.nvidia.com/index.php?showtopic=105940&amp;st=20&amp;p=989833&amp;#entry989833" target="_blank">http://forums.nvidia.com/index.php?showtopic=105940&amp;st=20&amp;p=989833&amp;#entry989833</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/06/cuda-on-mac-os-x-10-6-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/06/cuda-on-mac-os-x-10-6-3/</feedburner:origLink></item>
		<item>
		<title>Curriculum Vitae, European style, using LaTeX</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/sEP1Lxiv_Vo/</link>
		<comments>http://blog.andrecardoso.eu/2010/05/curriculum-vitae-european-style-using-latex/#comments</comments>
		<pubDate>Sun, 23 May 2010 20:37:55 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[curriculum]]></category>
		<category><![CDATA[cv]]></category>
		<category><![CDATA[europecv]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=466</guid>
		<description><![CDATA[Using europecv LaTeX package to write your CV in European format.]]></description>
			<content:encoded><![CDATA[<p>The first time I wrote my CV, I used the <a href="http://europass.cedefop.europa.eu/europass/home/vernav/Europass+Documents/Europass+CV.csp" target="_blank">online tool from Europass</a>. However, the flexibility is not great, we are dependent of the availability of the service and the final result is not great&#8230; and I like LaTeX better&#8230; <img src='http://blog.andrecardoso.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So&#8230;there is a fine package which provides a nice style that mimics the Europass style: <a href="http://www.ctan.org/tex-archive/help/Catalogue/entries/europecv.html" target="_blank">http://www.ctan.org/tex-archive/help/Catalogue/entries/europecv.html</a>.</p>
<p>I think TexLive 2009 already has this package, but if not you can just take the style and put it in the directory of the document you&#8217;re creating, and use it when defining the <strong>documentclass. </strong></p>
<p>Next I show you my complete preamble:</p>
<pre class="brush: latex; collapse: false;">
\documentclass[utf8x,helvetica,narrow,english,logo,totpages, booktabs]{europecv}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{graphicx}
\usepackage[english]{babel}
\usepackage{geometry}
\geometry{verbose,a4paper,tmargin=1.27cm,bmargin=2cm,lmargin=1cm,rmargin=1cm}
\usepackage{microtype}
\renewcommand{\ttdefault}{phv}
\ecvname{André dos Santos Cardoso}
\ecvnationality{Portuguese}
\ecvaddress{my address....}
\ecvtelephone[1234567]{1234567}
\ecvemail{email\\&amp;another email}
\ecvdateofbirth{01/10/1987}
\ecvgender{Male}
\ecvpicture[width=90px]{eu_140x200}
\ecvbeforepicture{\ecvspace{-2.7cm}\centering}
\ecvafterpicture{\ecvspace{-1.5cm}}
</pre>
<p>After the usual inclusion of packages and so, I wrote my personal info using the appropriate commands defined in the europass package. All this information can then be printed using another command: <strong>\ecvpersonalinfo.</strong></p>
<p>Depending on your picture (and whether or not you decide to put one) you may have to play with the number in <strong>\ecvafterpicture and \ecvbeforepicture</strong>. More details can be found on the <a href="http://www.ctan.org/tex-archive/macros/latex/contrib/europecv/europecv.pdf" target="_blank">documentation</a>.</p>
<p>Now, I find it easier to update and get around all that I&#8217;ve wrote if I divide my CV in logical sections and different files. So, using the \<strong>include</strong> command, the rest of the <strong>master file gets pretty easy to read</strong>:</p>
<pre class="brush: latex; collapse: false;">
\begin{document}
\begin{europecv}
\ecvpersonalinfo % prints the personal info, defined in the preamble
\input{experience.tex}
\input{education.tex}
\input{skills.tex}
\input{aditional.tex}
\end{europecv}
\end{document}
</pre>
<p>The actual information about us gets thrown into each of those files, and every file uses the same format. It&#8217;s a collection of <strong>sections and items</strong>. For example, let&#8217;s take the file <strong>experience.tex</strong>, it will have only one section, <strong><em>Work Experience</em></strong>, and as many <strong>blocks of items</strong> as jobs you&#8217;ve done:</p>
<pre class="brush: latex; collapse: false;">
\ecvsection{Work Experience} % the section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ecvitem{Dates} %%%%%%%%%%%%%%%%%%%%%%% the first block
{
 bla bla bla date
}
\ecvitem{Occupation or position held}
{
 bla bla you position during the job
}
\ecvitem{Main activities and responsibilities}
{
bla bla what you've done
}
\ecvitem{Name and address of employer}
{
bla bla where you've done it
}
\ecvitem{Type of business or sector}
{
bla bla category of the business
}
\ecvitem{}{} % to give some vertical space before the next block
\ecvitem{}{} % to give some vertical space before the next block
\ecvitem{Dates} %%%%%%%%%%%%%%%%%%%%%%% the second block
{
bla bla bla date
}
\ecvitem{Occupation or position held}
{
 bla bla you position during the job
}
\ecvitem{Main activities and responsibilities}
{
bla bla what you've done
}
\ecvitem{Name and address of employer}
{
bla bla where you've done it
}
\ecvitem{Type of business or sector}
{
bla bla category of the business
}
\ecvitem{}{} % to give some vertical space before the next block
\ecvitem{}{} % to give some vertical space before the next block
% ... and it keeps going while you have jobs <img src='http://blog.andrecardoso.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</pre>
<p>So, you see, the information gets formatted using <strong>\ecvsection </strong>and <strong>\ecvitem</strong>. In fact, it is not quite true (but almost) because the europass has that language table: for this the package has also some special commands to build the table and fill it with the correct values (more on this in the <a href="http://www.ctan.org/tex-archive/macros/latex/contrib/europecv/europecv.pdf" target="_blank">documentation</a>).</p>
<p>I will leave here the blocks and titles I&#8217;ve used for the other files:</p>
<pre class="brush: latex;">
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% file education.tex
\ecvsection{Education and Training} %% the section
\ecvitem{Dates}
{
bla bla
}
\ecvitem{Title of qualification awarded}
{
bla bla
}
\ecvitem{Principal subjects/occupational skills covered}
{
bla bla
}
\ecvitem{Name and type of organisation providing education and training}
{
bla bla
}
\ecvitem{ Level in national or international classification}
{
bla bla
}
\ecvitem{}{} % to give some vertical space before the next block
\ecvitem{}{} % to give some vertical space before the next block
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% file skills.tex
\ecvsection{Personal skills and competences}
\ecvmothertongue{Portuguese} % the language table
\ecvlanguageheader{(*)}
\ecvlanguage{English}{\ecvAOne}{\ecvAOne}{\ecvAOne}{\ecvAOne}{\ecvAOne}
\ecvlastlanguage{French}{\ecvAOne}{\ecvAOne}{\ecvAOne}{\ecvAOne}{\ecvAOne}
\ecvlanguagefooter{(*)}
\ecvitem{}{}
\ecvitem{}{}
\ecvitem{Social skills and competences}
{
bla bla
}
\ecvitem{Social skills and competences}
{
bla bla
}
\ecvitem{Computer skills and competences}
{
bla bla
}
\ecvitem{}{}
\ecvitem{}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% file aditional.tex
\ecvsection{Additional information}
\ecvitem{}
{
}
</pre>
<p>Before closing this post, I&#8217;d like to point out a kind of a trick you can use inside the <strong>\ecvitem</strong> block to build lists. The \ecvitem works like two columns in a tabular environment, so you can do things like these:</p>
<pre class="brush: latex; collapse: false;">
\ecvitem{Bla bla bla bla}
{
\\&amp;-- First item\\
&amp;-- Second item\\
&amp;-- Third item\\
&amp;-- Fourth item
}
</pre>
<p>This puts 4 lines in the second column. I think that in the CV this achieves a visually better style than using an <strong>itemize</strong> environment.</p>
<pre>
</pre>
<p>I have to say thanks to <a href="http://jcazevedo.net/" target="_blank">João Azevedo</a>, because he&#8217;s the one who loaned me his CV in LaTeX format, using the europecv package. Credits go to him.</p>
<p>Hope this is helpful:)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/05/curriculum-vitae-european-style-using-latex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/05/curriculum-vitae-european-style-using-latex/</feedburner:origLink></item>
		<item>
		<title>MIT KerberosV at uSG</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/gu6w1lInSyk/</link>
		<comments>http://blog.andrecardoso.eu/2010/05/mit-kerberosv-at-usg/#comments</comments>
		<pubDate>Sat, 22 May 2010 17:27:47 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[insecure network]]></category>
		<category><![CDATA[kdc]]></category>
		<category><![CDATA[kerberos]]></category>
		<category><![CDATA[µSG]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/?p=471</guid>
		<description><![CDATA[A part time job at Microelectronics Students' Group. I'm working on their network systems, using MIT KerberosV.]]></description>
			<content:encoded><![CDATA[<p>Well, from a few weeks ago till now I&#8217;ve been working, in part-time, at the <a href="http://cmos.fe.up.pt/" target="_blank">Microelectronics Students&#8217; Group</a>. I&#8217;m involved in the IT team that will make the transition of the whole network to <a href="http://www.centos.org/" target="_blank">CentOS</a>.</p>
<p>The transition process encompasses the creation of a single sign-on system using <a href="http://web.mit.edu/kerberos/" target="_blank">MIT KerberosV</a>, although this is not the primary objective: as the network is insecure, built inside the wider network of the College Campus without a router behind it, Kerberos provides a very good authentication and encryption mechanism. The ultimate goal is to encrypt every single communication over the network, thus <em>kerberizing </em>all the network services.</p>
<p>The details of the protocol still evade me a little bit, but the <em>important thing</em> to retain is that the network has a single(or most important) point of failure which is the KDC, <em>Key Distribution Center</em>: this is a server (in fact, it is composed by two, but lets ignore that fact), which shares a <strong>Key</strong> with every user and machine in the network. This is a point of failure because if the machine where the KDC reside gets compromised, <strong>the entire security of the network get compromised as well.</strong></p>
<h2><strong>The protocol<br />
</strong></h2>
<p>So, the authentication of a user is pretty straight-forward: the client enters a pass, hashes it, sends it the the KDC, the KDC compares it to the entry he has in its database. The most interesting part it that if the the authentication is successful, the KDC sends back a <strong>session Key</strong>, duplicated in two messages: <strong>the firs is encrypted with the client&#8217;s own password</strong>, and the <strong>second comes encrypted with another server&#8217;s</strong> (I&#8217;ve skipped a few steps, but let&#8217;s imagine this server is one which the user wants to communicate, securely, with) <strong>key</strong>. Recall that KDC shares secret keys with everyone in the network, so it is capable of creating messages that can only be decrypted by certain machines or users&#8230;.</p>
<p>At this moment, the user, that may want to communicate with a FTP server, has in his possession 2 messages. He can decrypt one, and from that action he get&#8217;s a session key to communicate with the said FTP server. What he is going to do with the second message is simply pass it to the FTP server. Recall, that this server shares a key with KDC, and the message he is about to receive is encrypted with that same key. So, the FTP server can decrypt that message, and gets the <strong>same</strong> session key that the user previously got. At this moment,  <strong>they can both communicate securely over an insecure network, using the session key produced by the KDC</strong>.</p>
<p>Once we get to know a little more about the protocol (we need more than what I just described) we are capable of acknowledging why this provides a single sing-on system.</p>
<p>The <a href="http://en.wikipedia.org/wiki/Kerberos_%28protocol%29" target="_blank">wikipedia page</a> may provide a little help on this.</p>
<p>So, for now, my job is to implement this system in same machines and document the process, so it can be reproducible when the time comes to move everything to CentOS.</p>
<p>I&#8217;m confident that this will let me learn a lot about networks&#8230;:)</p>
<p>Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/05/mit-kerberosv-at-usg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/05/mit-kerberosv-at-usg/</feedburner:origLink></item>
		<item>
		<title>Something to remind</title>
		<link>http://feedproxy.google.com/~r/andrecardoso/bYoR/~3/rPsCCF08frE/</link>
		<comments>http://blog.andrecardoso.eu/2010/04/something-to-remind/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 00:43:52 +0000</pubDate>
		<dc:creator>belerophon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[true]]></category>
		<guid isPermaLink="false">http://blog.andrecardoso.eu/2010/04/something-to-remind/</guid>
		<description><![CDATA[My friend, Bruno Costa (aka Zee), just alerted me, using a known phrase: &#8220;When I wrote that code only God and I knew what it meant. Now only God knows.&#8221; &#8230; It can&#8217;t be good&#8230;]]></description>
			<content:encoded><![CDATA[<p>My friend, Bruno Costa (aka Zee), just alerted me, using a known phrase:<br />
&#8220;When I wrote that code only God and I knew what it meant. Now only God knows.&#8221;</p>
<p>&#8230;</p>
<p>It can&#8217;t be good&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andrecardoso.eu/2010/04/something-to-remind/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.andrecardoso.eu/2010/04/something-to-remind/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.354 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-04 11:00:45 -->
