<?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/" version="2.0">

<channel>
	<title>SBlog</title>
	
	<link>http://simaomata.com/blog</link>
	<description>Random Written Thoughts</description>
	<lastBuildDate>Mon, 12 Sep 2011 22:01:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/simaom" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="simaom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Use Backbone JS without REST</title>
		<link>http://simaomata.com/blog/2011/09/use-backbone-js-without-rest/</link>
		<comments>http://simaomata.com/blog/2011/09/use-backbone-js-without-rest/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 22:00:02 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[ti]]></category>
		<category><![CDATA[backbone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://simaomata.com/blog/?p=177</guid>
		<description><![CDATA[Backbone.persistence is a simple adapter to use Backbone.js without using the REST persistence layer. Backbone is great, but not only for applications that use a remote persistence mechanism, for example, the demo TODO app uses the HTML5 localStorage instead of the usual REST layer. Sometimes you don&#8217;t even need to use localStorage, for example, when [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://github.com/simao/backbone.nopersistence">Backbone.persistence</a> is a simple adapter to use <a href="https://github.com/documentcloud/backbone">Backbone.js</a> without using the REST persistence layer.</p>

<p>Backbone is great, but not only for applications that use a remote persistence mechanism, for example, the <a href="http://documentcloud.github.com/backbone/examples/todos/index.html">demo TODO app</a> uses the HTML5 <code>localStorage</code> instead of the usual REST layer.</p>

<p>Sometimes you don&#8217;t even need to use <code>localStorage</code>, for example, when you don&#8217;t need to save data between two different sessions for the same user. If you want to run your unit tests using Rhino using <a href="http://jenkins-ci.org/">Jenkins</a>, you can&#8217;t use things like <code>localStorage</code>.</p>

<p>That&#8217;s where <a href="https://github.com/simao/backbone.nopersistence">Backbone.persistance</a> comes in, it overrides <code>Backbone.Sync</code> to persist all the data in memory instead of using a persistence mechanism.</p>

<p>You can download Backbone.persistance at my <a href="https://github.com/simao/backbone.nopersistence">github repository</a>.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2011/09/use-backbone-js-without-rest/&via=simaom&text=Use Backbone JS without REST&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2011/09/use-backbone-js-without-rest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I learned from Whitfield Diffie and Martin Hellman</title>
		<link>http://simaomata.com/blog/2011/01/what-i-learned-from-whitfield-diffie-and-martin-hellman/</link>
		<comments>http://simaomata.com/blog/2011/01/what-i-learned-from-whitfield-diffie-and-martin-hellman/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 23:46:10 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[informação]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[solutions]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://simaomata.com/blog/?p=152</guid>
		<description><![CDATA[A few years ago, while attending a &#8220;Computer Systems and Networks Security&#8221; class, I was talking with a friend of mine. We said to each other: &#8220;There&#8217;s no way in hell that two principals can exchange a key without a pre-shared key of some sort&#8220;. A few minutes later, our professor introduced us to the [...]]]></description>
			<content:encoded><![CDATA[<p>A few years ago, while attending a &#8220;Computer Systems and Networks Security&#8221; class, I was talking with a friend of mine. We said to each other: &#8220;<strong>There&#8217;s no way in hell that two principals can exchange a key without a pre-shared key of some sort</strong>&#8220;.</p>

<p>A few minutes later, our professor introduced us to the <a href="http://en.wikipedia.org/wiki/Diffie_hellman">Diffie-Hellman</a> method for key exchange.</p>

<p>As you may know, the Diffie-Hellman method allows just that, two parties can share a secret key without any prior knowledge of each other. That secret key can then be used to encrypt data or whatever anyone wants to do with a secret key.</p>

<p>This made me think. There we were thinking a problem was plain impossible and a few minutes later we saw a solution that seemed way too simple for such a hard problem. But it works.</p>

<p>Whitfield Diffie and Martin Hellman found an &#8220;impossible&#8221; problem and transformed it in a problem with a solution. They didn&#8217;t say &#8220;That&#8217;s just impossible, let&#8217;s just solve other problem&#8221;.</p>

<p>From that day on, when I find an &#8220;impossible&#8221; problem I remember the day I heard about the D-H method and I think that maybe, just maybe, there&#8217;s a solution hidden somewhere. It motivates me to dig deeper, try harder and never dismiss a problem as &#8220;impossible&#8221;.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2011/01/what-i-learned-from-whitfield-diffie-and-martin-hellman/&via=simaom&text=What I learned from Whitfield Diffie and Martin Hellman&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2011/01/what-i-learned-from-whitfield-diffie-and-martin-hellman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AppEngineLogTz – A User Script to convert timestamps in the Google App Engine logs to the browser’s current timezone</title>
		<link>http://simaomata.com/blog/2010/10/appenginelogtz-a-user-script-to-convert-timestamps-in-the-google-app-engine-logs-to-the-browsers-current-timezone/</link>
		<comments>http://simaomata.com/blog/2010/10/appenginelogtz-a-user-script-to-convert-timestamps-in-the-google-app-engine-logs-to-the-browsers-current-timezone/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 23:17:09 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[app engine]]></category>
		<category><![CDATA[change timezone]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript js]]></category>

		<guid isPermaLink="false">http://simaom.com/blog/?p=138</guid>
		<description><![CDATA[I noticed the time stamps used by the Google App Engine to show the application logs were all in  the Pacific Standard time Timezone. That&#8217;s just not useful for everyone not living in the pacific coast. So I wrote an user script you can use to show the time stamps in your browser&#8217;s timezone. I [...]]]></description>
			<content:encoded><![CDATA[<p>I noticed the time stamps used by the Google App Engine to show the application logs were all in  the Pacific Standard time Timezone. That&#8217;s just not useful for everyone not living in the pacific coast.</p>

<p>So I wrote an user script you can use to show the time stamps in your browser&#8217;s timezone.</p>

<p>I tested my script on Firefox with greasemonkey and google chrome and it seems to work.</p>

<p>You can get it here: <a href="http://github.com/simao/mycode/raw/master/UserScripts/appenginelogtz.user.js" target="_blank">http://github.com/simao/mycode/raw/master/UserScripts/appenginelogtz.user.js</a></p>

<p>You can also fork this script at <a href="http://github.com/simao/mycode/" target="_blank">github</a> and change it. If you do, please push your changes back to the repository. <img src='http://simaomata.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2010/10/appenginelogtz-a-user-script-to-convert-timestamps-in-the-google-app-engine-logs-to-the-browsers-current-timezone/&via=simaom&text=AppEngineLogTz - A User Script to convert timestamps in the Google App Engine logs to the browser's current timezone&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2010/10/appenginelogtz-a-user-script-to-convert-timestamps-in-the-google-app-engine-logs-to-the-browsers-current-timezone/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>LXBus – Obtaining Lisbon bus waiting time information</title>
		<link>http://simaomata.com/blog/2010/10/lxbus-obtaining-lisbon-bus-waiting-time-information/</link>
		<comments>http://simaomata.com/blog/2010/10/lxbus-obtaining-lisbon-bus-waiting-time-information/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 20:23:42 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[informação]]></category>
		<category><![CDATA[portugal]]></category>
		<category><![CDATA[ti]]></category>

		<guid isPermaLink="false">http://simaom.com/blog/?p=127</guid>
		<description><![CDATA[A few months ago I started using a new service provided by carris to check how much time I have to wait for the bus. Problem is, people at Carris never heard about webservices and rest apis, so I had to send an e-mail and wait for an automated reply with information about waiting times [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago I started using a new service provided by carris to check how much time I have to wait for the bus.</p>

<p>Problem is, people at Carris never heard about webservices and rest apis, so I had to send an e-mail and wait for an automated reply with information about waiting times for the stop I was in.</p>

<p>So I wrote an Google App Engine App to wrap this operation and manage this process for me. All I have to do is provide the stop code and wait for the results.</p>

<p>You can check out the app here: <a href="http://lxbusinfo.appspot.com">http://lxbusinfo.appspot.com</a></p>

<p>The app is NOT beautiful  when seen on mobile devices, but it&#8217;s at least usable. I&#8217;ll get around to that as soon as I have some free time, but that is somewhat related with the second part of this post:</p>

<p><strong>Since I developed a REST API to do this, you can also build your own app to check bus waiting times. Quite easily, in fact.</strong></p>

<p>The process of obtaining bus information is of course asynchronous, since my app has to wait for an e-mail from carris.</p>

<p>All your App has to do is send a POST request with the stopcode parameter to <em>http://lxbusinfo.appspot.com/api/newBusRequest</em> You&#8217;ll receive a reply like this one:</p>

<p>newBusRequest
Form data: stopcode:10503</p>

<pre>[
    {
        "requestid": "d71175fc592e4557b76d04f836dae30ef7afcb1d",
        "statuscode": 1
    }
]</pre>

<p>This way, you&#8217;ll receive a requestid you can use to poll the server at <em>http://lxbusinfo.appspot.com/api/updateBusRequest</em> using a GET request. This API call receives a requestid as parameter. Please wait at least 5 seconds between update requests. Here&#8217;s an example of a GET request on updateBusRequest:</p>

<p>updateBusRequest?requestid=d71175fc592e4557b76d04f836dae30ef7afcb1d</p>

<pre>[
    {
        "message": "",
        "payload": [
            {
                "dest": "PORTAS BENFICA",
                "eta_minutes": 4,
                "pt_timestamp": "21:09",
                "last_modified": "2010-10-01T20:04:41.481256",
                "busnr": 758
            },
            {
                "dest": "PR. REAL",
                "eta_minutes": 12,
                "pt_timestamp": "21:17",
                "last_modified": "2010-10-01T20:04:41.556630",
                "busnr": 790
            }
        ],
        "statuscode": 0
    }
]</pre>

<p>As you can see, all replys are json encoded so you can parse them easily with JavaScript.</p>

<p>There are other replies and error codes, leave a comment if you want to implement something and I&#8217;ll send you a nicer specification.</p>

<p>I&#8217;ll open the source and setup a <a href="http://github.com/simao" target="_blank">github</a> repository as soon as I can get around to shape things up a bit.</p>

<p>I want to make this open source not only because I want to share the source but also because probably carris will do something to block my app, but if the source is open anyone can install the app elsewhere and setup a new bus information server. Problem is I don&#8217;t want to share the source with Carris. <img src='http://simaomata.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Any thoughts on this? Lets hear it in the comments.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2010/10/lxbus-obtaining-lisbon-bus-waiting-time-information/&via=simaom&text=LXBus - Obtaining Lisbon bus waiting time information&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2010/10/lxbus-obtaining-lisbon-bus-waiting-time-information/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Browser fingerprinting</title>
		<link>http://simaomata.com/blog/2010/05/browser-fingerprinting/</link>
		<comments>http://simaomata.com/blog/2010/05/browser-fingerprinting/#comments</comments>
		<pubDate>Mon, 31 May 2010 21:56:23 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[informação]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ti]]></category>

		<guid isPermaLink="false">http://simaom.com/blog/?p=121</guid>
		<description><![CDATA[Tomei conhecimento do estudo da Electronic Frontier Foundation intitulado &#8220;Web Browsers Leave &#8216;Fingerprints&#8217; Behind as You Surf the Net&#8221;, através do Miguel Almeida, mas já vi várias opiniões em vários sítios diferentes. Apesar de achar que os resultados do estudo são de facto preocupantes, acho que se está a exagerar bastante. Ao correr o teste [...]]]></description>
			<content:encoded><![CDATA[<p>Tomei conhecimento do estudo da Electronic Frontier Foundation intitulado &#8220;Web Browsers Leave &#8216;Fingerprints&#8217; Behind as You Surf the Net&#8221;, através do <a href="http://miguelalmeida.pt/">Miguel Almeida</a>, mas já vi várias opiniões em vários sítios diferentes.</p>

<p>Apesar de achar que os resultados do estudo são de facto preocupantes, acho que se está a exagerar bastante.</p>

<p>Ao correr o teste disponível <a href="http://panopticlick.eff.org/">aqui</a>, obtive os seguintes resultados:</p>

<blockquote>Your browser fingerprint appears to be unique among the 1,763 tested so far.
Currently, we estimate that your browser has a fingerprint that conveys at least 10.78 bits of identifying information.</blockquote>

<table id="results" style="height: 322px;" width="691">
<tbody>
<tr>
<th>Browser Characteristic</th>
<th>bits of identifying information</th>
<th>one in <em><span style="font-family: times;">x</span></em> browsers have this value</th>
<th>value</th>
</tr>
<tr>
<td>User Agent</td>
<td>-0.84</td>
<td>0.56</td>
<td><span>Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US;  rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3</span></td>
</tr>
<tr>
<td>HTTP_ACCEPT  Headers</td>
<td>-6.98</td>
<td>0.01</td>
<td><span>text/html, */* ISO-8859-1,utf-8;q=0.7,*;q=0.7 gzip,deflate  en-us,en;q=0.5</span></td>
</tr>
<tr>
<td>Browser Plugin Details</td>
<td>10.78+</td>
<td>1763</td>
<td><span>A bunch of them</span></td>
</tr>
<tr>
<td>Time  Zone</td>
<td>-7.13</td>
<td>0.01</td>
<td><span>-60</span></td>
</tr>
<tr>
<td>Screen Size and Color Depth</td>
<td>-5.38</td>
<td>0.02</td>
<td><span>1280x800x24</span></td>
</tr>
<tr>
<td>System Fonts</td>
<td>6.26</td>
<td>76.65</td>
<td><span>A bunch of them
</span></td>
</tr>
<tr>
<td>Are Cookies  Enabled?</td>
<td>-8.89</td>
<td>0</td>
<td><span>Yes</span></td>
</tr>
<tr>
<td>Limited supercookie test</td>
<td>-8.03</td>
<td>0</td>
<td><span>DOM localStorage: Yes, DOM sessionStorage: Yes, IE userData:  No</span></td>
</tr>
</tbody>
</table>

<p>Analisando os resultados linha a linha, podemos ver que o único parâmetro que é verdadeiramente único é o &#8220;Browser Plugin Details&#8221; e em segundo lugar o &#8220;System fonts&#8221;, sendo que 1 em cada 76 browsers testados têm as mesmas fontes que eu. Ou seja, o meu browser é unico entre os 1963 browsers testados, mas apenas pela minha lista de plugins. Ora em 1763 browsers testados, não acho que o problema seja tão grave como se faz parecer, ainda para mais quando é vulnerável ao uso de <a href="http://en.wikipedia.org/wiki/Plausible_deniability">plausible deniability</a>.</p>

<p>Como se pode ver, há um certo exagero nas opiniões que tenho visto sobre o estudo. Na prática, apesar de se provar que de facto o nosso browser está longe de ser comum, e consequentemente garantir qualquer tipo de anonimato, também não é tão particular como se faz parecer.</p>

<p>Just my 2 cents.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2010/05/browser-fingerprinting/&via=simaom&text=Browser fingerprinting&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2010/05/browser-fingerprinting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PrinScreen RSS File – Long live Prt.sc… sort of</title>
		<link>http://simaomata.com/blog/2010/04/prinscreen-rss-file-long-live-prt-sc-sort-of/</link>
		<comments>http://simaomata.com/blog/2010/04/prinscreen-rss-file-long-live-prt-sc-sort-of/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 22:17:48 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[prt.sc]]></category>
		<category><![CDATA[pytho]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://simaom.com/blog/?p=116</guid>
		<description><![CDATA[Recently, one of my favorite blog aggregators died, but left us with a nice OPML file containing all rss feeds from the authors of the aggregator. Yahoo! My pipes couldn&#8217;t parse the opml file, so I built a python script to do it and hosted it in my server. The RSS File is updated every [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, one of my favorite blog <a href="http://www.prt.sc/">aggregators died</a>, but left us with a nice OPML file containing all rss feeds from the authors of the aggregator.</p>

<p>Yahoo! My pipes couldn&#8217;t parse the opml file, so I built a <a href="http://simaom.com/blog/2010/04/opml2rss-py-an-opml-to-rss-converter/">python script</a> to do it and hosted it in my server.</p>

<p>The RSS File is updated every hour and contains all RSS entries from all Prt.Sc authors not older than seven days.</p>

<p>You can get the RSS file at <a href="http://simaom.com/prtsc.xml">http://simaom.com/prtsc.xml</a>.</p>

<p>So prt.sc lives&#8230; well&#8230; sort of&#8230; I won&#8217;t update the opml feed with any authors, we only get access to rss entries from the authors included in the last version of Prt.sc.</p>

<p>Let me know what you think.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2010/04/prinscreen-rss-file-long-live-prt-sc-sort-of/&via=simaom&text=PrinScreen RSS File - Long live Prt.sc... sort of &related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2010/04/prinscreen-rss-file-long-live-prt-sc-sort-of/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>opml2rss.py – An opml to rss converter</title>
		<link>http://simaomata.com/blog/2010/04/opml2rss-py-an-opml-to-rss-converter/</link>
		<comments>http://simaomata.com/blog/2010/04/opml2rss-py-an-opml-to-rss-converter/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 22:08:40 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[syndication]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://simaom.com/blog/?p=111</guid>
		<description><![CDATA[I just uploaded another script to my github repository. It&#8217;s a python script to parse an opml file and generate a rss file with entries from all rss feeds in the rss file not older than a certain number of days. You can get the script here: http://github.com/&#8230;/opml2rss.py The script has a few configuration parameters [...]]]></description>
			<content:encoded><![CDATA[<p>I just uploaded another script to my github repository.</p>

<p>It&#8217;s a python script to parse an opml file and generate a rss file with entries from all rss feeds in the rss file not older than a certain number of days.</p>

<p>You can get the script here: <a href="http://github.com/simao/mycode/blob/master/opml2rss/opml2rss.py">http://github.com/&#8230;/opml2rss.py</a></p>

<p>The script has a few configuration parameters that are pretty self explanatory, should be easy.
You also need to install a few python modules: Feedparser, OPML and PYRSS2Gen.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2010/04/opml2rss-py-an-opml-to-rss-converter/&via=simaom&text=opml2rss.py - An opml to rss converter&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2010/04/opml2rss-py-an-opml-to-rss-converter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New github repository</title>
		<link>http://simaomata.com/blog/2010/02/new-github-repository/</link>
		<comments>http://simaomata.com/blog/2010/02/new-github-repository/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 03:23:03 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[ti]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://simaom.com/blog/?p=109</guid>
		<description><![CDATA[I just set up a github repository to hold my code. Here&#8217;s the link http://github.com/simao/mycode Currently, the repository contains only the code of my latest Python script, rssTorrents.py. Tweet]]></description>
			<content:encoded><![CDATA[<p>I just set up a github repository to hold my code.</p>

<p>Here&#8217;s the link <a href="http://github.com/simao/mycode">http://github.com/simao/mycode</a></p>

<p>Currently, the repository contains only the code of my latest Python script, rssTorrents.py.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2010/02/new-github-repository/&via=simaom&text=New github repository&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2010/02/new-github-repository/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatically download torrent files from a RSS feed</title>
		<link>http://simaomata.com/blog/2010/01/automatically-download-torrent-files-from-a-rss-feed/</link>
		<comments>http://simaomata.com/blog/2010/01/automatically-download-torrent-files-from-a-rss-feed/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 02:37:54 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[ti]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[feeds]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[torrentz]]></category>
		<category><![CDATA[transmission]]></category>

		<guid isPermaLink="false">http://simaom.com/blog/?p=104</guid>
		<description><![CDATA[I was looking for a way to parse a RSS feed I built using yahoo pipes and add new torrents to Transmission to download them automatically. I couldn&#8217;t find anything useful, so I just wrote a python script to do just that. If you want to use it, you&#8217;ll need to configure the first lines [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for a way to parse a RSS feed I built using <a href="http://pipes.yahoo.com/">yahoo pipes</a> and add new torrents to <a href="http://www.transmissionbt.com/">Transmission</a> to download them automatically.
I couldn&#8217;t find anything useful, so I just wrote a python script to do just that.
If you want to use it, you&#8217;ll need to configure the first lines of this file to suit your needs.
The script is pretty self explanatory.</p>

<p>You can always find the latest version of the script at my <a href="https://github.com/simao/rssTorrents">github repo</a></p>

<p>Disclaimer:
I use this script to download legal torrents <img src='http://simaomata.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2010/01/automatically-download-torrent-files-from-a-rss-feed/&via=simaom&text=Automatically download torrent files from a RSS feed&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2010/01/automatically-download-torrent-files-from-a-rss-feed/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Emacs easy window switching</title>
		<link>http://simaomata.com/blog/2010/01/emacs-easy-window-switching/</link>
		<comments>http://simaomata.com/blog/2010/01/emacs-easy-window-switching/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 20:42:37 +0000</pubDate>
		<dc:creator>simaom</dc:creator>
				<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[windmove]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://simaom.com/blog/?p=95</guid>
		<description><![CDATA[I just found out about a another cool emacs plugin: WindMove This packages allows you to switch windows withouth using C-x o. WindMove is included with emacs, just include the following code in your .emacs: (when (fboundp 'windmove-default-keybindings) (windmove-default-keybindings)) More info @ http://www.emacswiki.org/emacs/WindMove Tweet]]></description>
			<content:encoded><![CDATA[<p>I just found out about a another cool emacs plugin: <strong>WindMove</strong></p>

<p>This packages allows you to switch windows withouth using C-x o.<strong>
</strong></p>

<p>WindMove is included with emacs, just include the following code in your .emacs:</p>

<p><code>(when (fboundp 'windmove-default-keybindings)
(windmove-default-keybindings))</code></p>

<p>More info @ <a href="http://www.emacswiki.org/emacs/WindMove" target="_blank">http://www.emacswiki.org/emacs/WindMove</a></p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://simaomata.com/blog/2010/01/emacs-easy-window-switching/&via=simaom&text=Emacs easy window switching&related=simaom:&lang=en&count=none" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://simaomata.com/blog/2010/01/emacs-easy-window-switching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

