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

<channel>
	<title>Experimento imaginário</title>
	<atom:link href="http://joaopizani.hopto.org/en/feed/" rel="self" type="application/rss+xml" />
	<link>http://joaopizani.hopto.org/en/</link>
	<description>joaopizani&#039;s brain dump...</description>
	<lastBuildDate>Mon, 13 May 2013 00:15:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Highlights of the last 100 posts&#8230;</title>
		<link>http://joaopizani.hopto.org/en/2013/05/highlights-100/</link>
		<comments>http://joaopizani.hopto.org/en/2013/05/highlights-100/#comments</comments>
		<pubDate>Mon, 13 May 2013 00:11:33 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Day-to-day]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=2371</guid>
		<description><![CDATA[More than 4 years ago, on February 2009, I &#8220;founded&#8221; this blog, when I was still a young CS bachelor student, having recently joined the Federal University of Santa Catarina (Brazil) :P In these last 4 years, A LOT of &#8230; <a href="http://joaopizani.hopto.org/en/2013/05/highlights-100/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>More than 4 years ago, on February 2009, I &#8220;founded&#8221; this blog, when I was still a young CS bachelor student, having recently joined the Federal University of Santa Catarina (Brazil) :P</p>
<p>In these last 4 years, A LOT of things happened, and 99 (this is the hundredth) posts were written and published here. I still wish to keep writing on this blog for years to come, and to celebrate the mark of 100 posts, I compiled a list of &#8220;the best&#8221; posts until now. Actually, the list consists of posts that I find the most personally memorable, or &#8220;famous&#8221; (by number of readers). There they go (in ascending chronological order):<br />
<span id="more-2371"></span></p>
<ul>
<li>
    Why I DEFEND online piracy:<br />
    <a href="http://joaopizani.hopto.org/2009/04/pirat/">http://joaopizani.hopto.org/2009/04/pirat</a>
</li>
</ul>
<ul>
<li>
    The very beginning of my interest in Haskell (the programming language):<br />
    <a href="http://joaopizani.hopto.org/2009/05/haskell-start/">http://joaopizani.hopto.org/2009/05/haskell-start</a>
</li>
</ul>
<ul>
<li>
    A humble explanation of why I think that the P vs. NP problem is interesting:<br />
    <a href="http://joaopizani.hopto.org/2009/10/p-np/">http://joaopizani.hopto.org/2009/10/p-np</a>
</li>
</ul>
<ul>
<li>
    Just got a scholarship from the german govt. to study German in Germany:<br />
    <a href="http://joaopizani.hopto.org/2009/10/winterkurs-2010-dusseldorf/">http://joaopizani.hopto.org/2009/10/winterkurs-2010-dusseldorf</a>
</li>
</ul>
<ul>
<li>
    Pathetic attempt at writing poetry in German  SOME PEOPLE liked it, though:<br />
    <a href="http://joaopizani.hopto.org/2010/06/deutsch-die-grunde/">http://joaopizani.hopto.org/2010/06/deutsch-die-grunde</a>
</li>
</ul>
<ul>
<li>
    Final project of an elective course taken during my bachelor in Computer Science. One of the coolest project I ever developed:<br />
    <a href="http://joaopizani.hopto.org/2010/07/guitar2midi/">http://joaopizani.hopto.org/2010/07/guitar2midi</a>
</li>
</ul>
<ul>
<li>
    The peak of my enthusiasm about SSH and everything remote-access related. How to work around firewalls:<br />
    <a href="http://joaopizani.hopto.org/2011/02/ssh-over-ssh/">http://joaopizani.hopto.org/2011/02/ssh-over-ssh</a>
</li>
</ul>
<ul>
<li>
    Summary of several very useful &#8220;tricks&#8221; that I use in daily life at the shell:<br />
    <a href="http://joaopizani.hopto.org/2011/04/shell-magic/">http://joaopizani.hopto.org/2011/04/shell-magic</a>
</li>
</ul>
<ul>
<li>
    My B.Sc thesis (for dummies :P):<br />
    <a href="http://joaopizani.hopto.org/2011/04/tcc/">http://joaopizani.hopto.org/2011/04/tcc</a>
</li>
</ul>
<ul>
<li>
    Just got a scholarship to take part in the Utrecht Summer School in Functional Programming &#8211; The Netherlands (my future graduate school):<br />
    <a href="http://joaopizani.hopto.org/2011/05/buitenland/">http://joaopizani.hopto.org/2011/05/buitenland</a>
</li>
</ul>
<ul>
<li>
    Hilarious commit comments in my bachelor thesis&#8217;s SVN repository:<br />
    <a href="http://joaopizani.hopto.org/2011/07/tcc-logs/">http://joaopizani.hopto.org/2011/07/tcc-logs</a>
</li>
</ul>
<ul>
<li>
    How was life during the 3 weeks as a Summer School student in Utrecht, 2011:<br />
    <a href="http://joaopizani.hopto.org/2011/09/utrecht-leven/">http://joaopizani.hopto.org/2011/09/utrecht-leven</a>
</li>
</ul>
<ul>
<li>
    My completely random musical taste (no ordering or explanation):<br />
    <a href="http://joaopizani.hopto.org/2011/09/muziek1/">http://joaopizani.hopto.org/2011/09/muziek1</a>
</li>
</ul>
<ul>
<li>
    Playing with music synthesis &#8220;from scratch&#8221; using Haskell:<br />
    <a href="http://joaopizani.hopto.org/2012/01/haskell-synth/">http://joaopizani.hopto.org/2012/01/haskell-synth</a>
</li>
</ul>
<ul>
<li>
    Conway&#8217;s &#8220;Game of Life&#8221;, with a GRAPHICAL simulation interface, implemented in Haskell:<br />
    <a href="http://joaopizani.hopto.org/2012/01/haskell-kata-game-of-life/">http://joaopizani.hopto.org/2012/01/haskell-kata-game-of-life</a>
</li>
</ul>
<ul>
<li>
    Experimenting with Android x86 inside VirtualBox:<br />
    <a href="http://joaopizani.hopto.org/2012/02/android-ics-virtualbox/">http://joaopizani.hopto.org/2012/02/android-ics-virtualbox</a>
</li>
</ul>
<ul>
<li>
    A completely digital AM transmitter using Arduino:<br />
    <a href="http://joaopizani.hopto.org/2012/04/arduino-am/">http://joaopizani.hopto.org/2012/04/arduino-am</a>
</li>
</ul>
<ul>
<li>
    I am going to study for a master&#8217;s degree in The Netherlands, YEAHHHHH!:<br />
    <a href="http://joaopizani.hopto.org/2012/06/sol-iustitiae-ilustra-nos/">http://joaopizani.hopto.org/2012/06/sol-iustitiae-ilustra-nos</a>
</li>
</ul>
<ul>
<li>
    A thank you note for Alan Mathison Turing, forefather of this science which I study and love so much:<br />
    <a href="http://joaopizani.hopto.org/2012/06/alan-mathison-turing/">http://joaopizani.hopto.org/2012/06/alan-mathison-turing</a>
</li>
</ul>
<ul>
<li>
    A simple-to-use but effective spreadsheet template to manage your personal finances:<br />
    <a href="http://joaopizani.hopto.org/2012/08/personal-finance-spreadsheet/">http://joaopizani.hopto.org/2012/08/personal-finance-spreadsheet</a>
</li>
</ul>
<ul>
<li>
    My humble rtorrent config file, organized and self-contained:<br />
    <a href="http://joaopizani.hopto.org/2012/08/rtorrentrc/">http://joaopizani.hopto.org/2012/08/rtorrentrc</a>
</li>
</ul>
<ul>
<li>
    GNU Screen for the win:<br />
    <a href="http://joaopizani.hopto.org/2013/03/screenrc-ftw/">http://joaopizani.hopto.org/2013/03/screenrc-ftw</a>
</li>
</ul>
<ul>
<li>
    An Embedded Domain-Specific Language for ants in Haskell:<br />
    <a href="http://joaopizani.hopto.org/2013/03/haskell-ants-edsl/">http://joaopizani.hopto.org/2013/03/haskell-ants-edsl</a>
</li>
</ul>
<ul>
<li>
    A great Vim workflow distribution, modular, documented and self-contained:<br />
    <a href="http://joaopizani.hopto.org/2013/03/modular-xplatform-vim-cfg-with-lasers/">http://joaopizani.hopto.org/2013/03/modular-xplatform-vim-cfg-with-lasers</a>
</li>
</ul>
<ul>
<li>
    My master&#8217;s, the &#8220;oficial&#8221; reason of why I came to The Netherlands:<br />
    <a href="http://joaopizani.hopto.org/2013/03/msc/">http://joaopizani.hopto.org/2013/03/msc</a>
</li>
</ul>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=2371&amp;md5=d5fc4814c2051c14fbcc751765cf76a5" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2013/05/highlights-100/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2013%2F05%2Fhighlights-100%2F&amp;language=en_GB&amp;category=text&amp;title=Highlights+of+the+last+100+posts%26%238230%3B&amp;description=More+than+4+years+ago%2C+on+February+2009%2C+I+%26%238220%3Bfounded%26%238221%3B+this+blog%2C+when+I+was+still+a+young+CS+bachelor+student%2C+having+recently+joined+the+Federal+University+of+Santa+Catarina...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>My master&#8217;s degree</title>
		<link>http://joaopizani.hopto.org/en/2013/03/msc/</link>
		<comments>http://joaopizani.hopto.org/en/2013/03/msc/#comments</comments>
		<pubDate>Sun, 05 May 2013 09:49:54 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Academia @en]]></category>
		<category><![CDATA[Day-to-day]]></category>
		<category><![CDATA[Masters @en]]></category>
		<category><![CDATA[Utrecht @en]]></category>
		<category><![CDATA[computing science]]></category>
		<category><![CDATA[functional programming @en]]></category>
		<category><![CDATA[haskell @en]]></category>
		<category><![CDATA[master]]></category>
		<category><![CDATA[msc @en]]></category>
		<category><![CDATA[utrecht @en]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=2355</guid>
		<description><![CDATA[It all began in 2011. By &#8220;it&#8221;, I mean moving to The Netherlands, to study for a master&#8217;s degree in Computing Science at Utrecht University. It started as a dream, a distant and blurred image that each and every day &#8230; <a href="http://joaopizani.hopto.org/en/2013/03/msc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It all began in 2011. By &#8220;it&#8221;, I mean moving to The Netherlands, to study for a master&#8217;s degree in Computing Science at Utrecht University. It started as a dream, a distant and blurred image that each and every day became clearer and closer, up to the point of no return: on September 2nd, 2012, I woke up and my bedroom was practically empty, with nothing left but the <a href="http://joaopizani.hopto.org/2012/09/de-reis" target="_blank">suitcases and bags packed for the trip</a>&#8230; Then at 11:30am I boarded the plane which would take on a <a href="http://joaopizani.hopto.org/2012/09/utrecht-aankomst" target="_blank">fantastic journey</a> (with no return) to the land of the dutch.</p>
<p>Having already written here on the blog about how <a href="http://joaopizani.hopto.org/2012/12/dagelijks-leven" target="_blank">daily life</a> goes around here, and about some nice things I have been doing on my <a href="http://joaopizani.hopto.org/2012/12/dagjes-uit" target="_blank">free time</a>, I feel the time has come to finally talk about why &#8220;officially&#8221; I am here: the time has come to talk about my master&#8217;s degree program in Computing Science at Utrecht University.<br />
<span id="more-2355"></span></p>
<p>More specifically, I will try to explain exactly what the hell I am studying and I intend to do in the (close) future&#8230; The official name of the program I am following is &#8220;M.Sc in Computing Science&#8221;, with a specialization in the &#8220;Programming Technology&#8221; study track. The program takes an average of 2 years to be completed, and is a research master&#8217;s, which means it is supposed to prepare the student for academic research. Here in The Netherlands there is a very clear difference between &#8220;professional&#8221; degree programs (which usually take 1 year) and research programs (taking 2 years). Our study track (Programming Technology) includes courses on topics such as functional programming, the implementation of programming languages and environments, optimization, compilers, etc. That is, everything which &#8220;underlies&#8221; programming languages and the environments on which they run.</p>
<p>To give you a detailed view of what I am studying / will study, nothing better that a diagram showing all the courses I have taken / will take:<br />
<img class="aligncenter size-full wp-image-2306" alt="Disciplinas cursadas durante o mestrado" src="http://joaopizani.hopto.org/wp-content/uploads/2013/03/plan.png" width="827" height="499" /></p>
<p>In the Experimentation Project (INFOEPCS) and during my thesis, my intention is to do research related to massively parallel programming in a functional style, or the high-level synthesis of hardware using a functional approach. At least, that&#8217;s what I WANT. There is, however, still a lot of talking to be done with the concerned professors during the following months&#8230; :)</p>
<p>Now that we are talking about time, I will try to explain how the academic calendar works here in Utrecht: Each course is offered during a period of time called a &#8220;block&#8221;. Each block lasts for (on average) 11 weeks, and each academic year is divided in 4 blocks. And again, an image is worth 1000 words, so there you have it: my academic calendar, with the &#8220;schedule&#8221; of all the 8 blocks that comprise my master&#8217;s program:<br />
<img class="aligncenter size-full wp-image-2307" alt="UU Academic Calendar 2012-2013-2014" src="http://joaopizani.hopto.org/wp-content/uploads/2013/03/master.png" width="927" height="638" /></p>
<p>As you can see, we have <strong>very few</strong> free weeks around here&#8230; :P Of course, there is summer vacation (6 weeks) and a little Christmas break (10 days). But besides that, there is NO BREAK between any two blocks. There are some &#8220;retake&#8221; weeks, in the middle of the blocks, in which you can retake exams you eventually missed in the previous block, but those weeks are in THE MIDDLE of a block, which means that most teachers just keep giving you the normal workload as always&#8230;</p>
<p>Even so, with all this, I can&#8217;t really complain. The work is hard but, at the end of the day, I like what I am doing. The courses and all projects require a lot of effort, but they are also inspiring :) I am keeping a &#8220;repository&#8221; here in the blog with the files of all courses I have already taken in the master&#8217;s program (<a href="http://joaopizani.hopto.org/en/msc/cs1" target="_blank">1st</a> and <a href="http://joaopizani.hopto.org/en/msc/cs2" target="_blank">2nd</a> blocks), exactly as I did with my <a href="http://joaopizani.hopto.org/en/bsc" target="_blank">bachelor&#8217;s</a>.</p>
<p>Among all the work I have done for all courses until now, I can highlight two projects as the most interesting:</p>
<ul>
<li><strong>Generic Pandoc: </strong>Final project of the &#8220;Generic Programming&#8221; course. It involved <a href="http://www.students.science.uu.nl/~3860418/uu/02_infogp/project/report/utf8-lncs-paper.pdf" target="_blank">a case study</a> on how to apply generic programming techniques in Haskell to improve <a href="http://johnmacfarlane.net/pandoc" target="_blank">Pandoc</a>.</li>
<li><strong>Haskell Ants EDSL: </strong>Final project of the course &#8220;Advanced Functional Programming&#8221;, consisted of designing and implementing a Domain-Specific Language (embedded in Haskell), to take part in a Ant Colony Simulation competition. I wrote a <a href="http://joaopizani.hopto.org/en/2013/03/haskell-ants-edsl" target="_blank">post here on the blog</a> about this one.</li>
</ul>
<p>So, that&#8217;s all for now!  Until the next block(s)!</p>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=2355&amp;md5=f76d683db90d55e6b6f25b8b553f93f9" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2013/03/msc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2013%2F03%2Fmsc%2F&amp;language=en_GB&amp;category=text&amp;title=My+master%26%238217%3Bs+degree&amp;description=It+all+began+in+2011.+By+%26%238220%3Bit%26%238221%3B%2C+I+mean+moving+to+The+Netherlands%2C+to+study+for+a+master%26%238217%3Bs+degree+in+Computing+Science+at+Utrecht+University.+It+started+as+a+dream%2C...&amp;tags=computing+science%2Cfunctional+programming%2Chaskell%2Cmaster%2Cmsc%2Cutrecht%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Easy GNU Screen shared session access management</title>
		<link>http://joaopizani.hopto.org/en/2013/03/gnu-screen-shared/</link>
		<comments>http://joaopizani.hopto.org/en/2013/03/gnu-screen-shared/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 00:26:21 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Day-to-day]]></category>
		<category><![CDATA[Linux @en]]></category>
		<category><![CDATA[Tech @en]]></category>
		<category><![CDATA[gnu screen @en]]></category>
		<category><![CDATA[pair programming @en]]></category>
		<category><![CDATA[remote pair programming @en]]></category>
		<category><![CDATA[shared screen @en]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=2301</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><script src="https://gist.github.com/joaopizani/5201352.js"></script></p>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=2301&amp;md5=9b6b7d96cacf56c6367648ab571980d8" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2013/03/gnu-screen-shared/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2013%2F03%2Fgnu-screen-shared%2F&amp;language=en_GB&amp;category=text&amp;title=Easy+GNU+Screen+shared+session+access+management&amp;description=joaopizani%26%23039%3Bs+brain+dump...&amp;tags=gnu+screen%2Cpair+programming%2Cremote+pair+programming%2Cshared+screen%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Computer Science Unplugged</title>
		<link>http://joaopizani.hopto.org/en/2013/03/cs-unplugged/</link>
		<comments>http://joaopizani.hopto.org/en/2013/03/cs-unplugged/#comments</comments>
		<pubDate>Sun, 17 Mar 2013 12:05:16 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Tech @en]]></category>
		<category><![CDATA[cs education @en]]></category>
		<category><![CDATA[cs unplugged @en]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=2294</guid>
		<description><![CDATA[Some time ago I found a video on YouTube that looked pretty interesting, and I decided to watch just a bit of it to see whether I liked it. One hour after, I had watched the WHOLE thing and was &#8230; <a href="http://joaopizani.hopto.org/en/2013/03/cs-unplugged/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Some time ago I found a video on YouTube that looked pretty interesting, and I decided to watch just a bit of it to see whether I liked it. One hour after, I had watched the WHOLE thing and was FACINATED by what I just saw. That video was called &#8220;CS Unplugged&#8221;.</p>
<p>This video is part of a <a href="http://csunplugged.org/" target="_blank">project</a> created by the University if Canterbury (New Zealand) and also sponsored by Carnegie Mellon and Google, and that had as its (initial) goal to show children (around 10-13 years old) <strong>what Computer Science is REALLY all about</strong>. They have developed a nice series of <a href="http://csunplugged.org/activities" target="_blank">activities</a> that instigate the curiosity of the children and make them understand the fundamental concepts of, among others: binary codes, compression, sorting, searching, human-computer interaction, information theory and public-key criptography.</p>
<p>I was VERY enthusiastic about the whole idea, and also a bit jealous of those kids: they had a more deep and INSPIRING class on Computer Science than several CS bachelor students get from their lecturers!  This video also inspired me and reminded me once more of an old dream: teach Computer Science to schoolchildren. So, there you have it, the AWESOME &#8220;CS Unplugged&#8221; video:</p>
<p><iframe width="640" height="480" src="http://www.youtube.com/embed/VpDDPWVn5-Q" frameborder="0" allowfullscreen></iframe></p>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=2294&amp;md5=1b1662bb2fa1f3e67e8bd19bd8fa3441" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2013/03/cs-unplugged/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2013%2F03%2Fcs-unplugged%2F&amp;language=en_GB&amp;category=text&amp;title=Computer+Science+Unplugged&amp;description=Some+time+ago+I+found+a+video+on+YouTube+that+looked+pretty+interesting%2C+and+I+decided+to+watch+just+a+bit+of+it+to+see+whether+I+liked+it.+One...&amp;tags=cs+education%2Ccs+unplugged%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Modular XPlatform Vim Config &#8211; With LASERS!</title>
		<link>http://joaopizani.hopto.org/en/2013/03/modular-xplatform-vim-cfg-with-lasers/</link>
		<comments>http://joaopizani.hopto.org/en/2013/03/modular-xplatform-vim-cfg-with-lasers/#comments</comments>
		<pubDate>Tue, 12 Mar 2013 01:14:49 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Day-to-day]]></category>
		<category><![CDATA[Linux @en]]></category>
		<category><![CDATA[Tech @en]]></category>
		<category><![CDATA[modular vim configs]]></category>
		<category><![CDATA[vim @en]]></category>
		<category><![CDATA[vim configs @en]]></category>
		<category><![CDATA[vimrc @en]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=2276</guid>
		<description><![CDATA[TL;DR: See the README file on the repository Around June 2012 I wrote a post here describing my very own Vim config &#8220;distribution&#8221;, that was the result of several months of DAILY, intensive use (and tuning and refactoring) of this &#8230; <a href="http://joaopizani.hopto.org/en/2013/03/modular-xplatform-vim-cfg-with-lasers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>TL;DR:  See the <a href="https://github.com/joaopizani/modular-xplatform-vim-cfg/blob/master/README.md">README file</a> on the <a href="https://github.com/joaopizani/modular-xplatform-vim-cfg">repository</a></p>
<p>Around June 2012 I <a href="http://joaopizani.hopto.org/en/2012/06/modular-xplatform-vim-cfg">wrote a post here</a> describing my very own Vim config &#8220;distribution&#8221;, that was the result of several months of DAILY, intensive use (and tuning and refactoring) of this editor. This distribution is completely modular and self-contained. Besides, I try to follow closely the principle of &#8220;graceful degradation&#8221;. But, what does that all mean?</p>
<ul>
<li><strong>Self-contained</strong> means that, by using Vim with this config distribution will not &#8220;spill over&#8221; files all over your filesystem. They will ALL be in a SINGLE directory. To clean everything up, just delete that single place. Also, you can move the distro wherever you want, you can put it on a thumbdrive and use it on any computer.</li>
<li><strong>Modular</strong> means easier to understand and adapt/improve, both for me and for other people. The &#8220;distro&#8221; is made of a consistent and small choice of plugins, along with files containing &#8220;reasonable defaults&#8221; for these plugins.</li>
<li><strong>Graceful degradation</strong> means that I try to do the most that I can, but imposing as little requirements on your system as possible. If something can&#8217;t be enabled, it just <em>stays out of the way</em>, with no annoying errors. Also, the defaults try to be as non-invasive as possible. The most frequent an action is, the simplest it should be to perform it.</li>
</ul>
<p>So the good news is that since last summer this vim distribution improved a lot, and I consider it now stable and useful enough to be interesting to the general public of programmers using Vim for work and fun, as well as for beginners who want to see this awesome editor in full glory&#8230;</p>
<p>So without further ado, it&#8217;s pointless to repeat here what is already being said in the <a href="https://github.com/joaopizani/modular-xplatform-vim-cfg/blob/master/README.md">README</a> file, hosted on the <a href="https://github.com/joaopizani/modular-xplatform-vim-cfg">GitHub repository of the project</a>.  Go there, follow the instructions, have some fun, see if you like it and send me some criticism/suggestions :)</p>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=2276&amp;md5=8e6c65acf2314c273c3bd27920753670" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2013/03/modular-xplatform-vim-cfg-with-lasers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2013%2F03%2Fmodular-xplatform-vim-cfg-with-lasers%2F&amp;language=en_GB&amp;category=text&amp;title=Modular+XPlatform+Vim+Config+%26%238211%3B+With+LASERS%21&amp;description=TL%3BDR%3A+See+the+README+file+on+the+repository+Around+June+2012+I+wrote+a+post+here+describing+my+very+own+Vim+config+%26%238220%3Bdistribution%26%238221%3B%2C+that+was+the+result+of+several+months...&amp;tags=modular+vim+configs%2Cvim%2Cvim+configs%2Cvimrc%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Haskell Ants EDSL: Implementation project in the &#8220;Advanced Functional Programming&#8221; course</title>
		<link>http://joaopizani.hopto.org/en/2013/03/haskell-ants-edsl/</link>
		<comments>http://joaopizani.hopto.org/en/2013/03/haskell-ants-edsl/#comments</comments>
		<pubDate>Sat, 02 Mar 2013 15:23:14 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Academia @en]]></category>
		<category><![CDATA[Haskell @en]]></category>
		<category><![CDATA[Masters @en]]></category>
		<category><![CDATA[Tech @en]]></category>
		<category><![CDATA[advanced functional programming]]></category>
		<category><![CDATA[ant simulation @en]]></category>
		<category><![CDATA[haskell @en]]></category>
		<category><![CDATA[haskell edsl @en]]></category>
		<category><![CDATA[utrecht university]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=2170</guid>
		<description><![CDATA[In the second term of my master&#8217;s programme in Computing Science at Utrecht University, I followed (and liked very much) a course called &#8220;Advanced Functional Programming&#8221;. In this course, we study the theory that underpins the inner workings of functional &#8230; <a href="http://joaopizani.hopto.org/en/2013/03/haskell-ants-edsl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In the second term of my master&#8217;s programme in Computing Science at <a href="http://en.wikipedia.org/wiki/Utrecht_university">Utrecht University</a>, I followed (and liked very much) a course called &#8220;Advanced Functional Programming&#8221;. In this course, we study the theory that underpins the inner workings of functional programming languages (and in particular, Haskell). But, theory apart, we also developed a lot of practical assignments, <a href="https://github.com/joaopizani/haskell-ants-edsl-afp2012">the largest of which</a> I describe in this post.</p>
<p>I developed this project together with my colleagues <strong><a href="http://www.linkedin.com/pub/liewe-thomas-van-binsbergen/3a/587/659">Liewe Thomas van Binsbergen</a></strong> and the portuguese guy with the longest name I&#8217;ve ever seen: <strong>João Miguel Queiroz de Ataíde Agorreta de Alpuim</strong>. As a final project for the course, each &#8220;team&#8221; of students had to submit an entry to a competition that involved the simulation of ants searching for food in an environment. This &#8220;task&#8221; was also the one selected for the <a href="https://alliance.seas.upenn.edu/~plclub/cgi-bin/contest/index.php">programming contest of the International Conference on Functional Programming in 2004</a>&#8230;<br />
<span id="more-2170"></span></p>
<p>The <a href="http://joaopizani.hopto.org/wp-content/uploads/2013/03/icfp-contest-2004-rules.pdf">official task description</a> defines an assembly language for the ants, and that the ant colonies of the two teams will fight in &#8220;rounds&#8221; in a championship (with random maps chosen for each round); in each round the goal is to collect the most food possible at your anthill after a certain amount of time. The championship was run in a simulator, and the following animated gif shows how a small part of a simulation might look like:</p>
<p><a href="http://joaopizani.hopto.org/wp-content/uploads/2013/03/ants-edsl-animation.gif"><img class="aligncenter size-full wp-image-2162" alt="Ants Simulator" src="http://joaopizani.hopto.org/wp-content/uploads/2013/03/ants-edsl-animation.gif" width="400" height="360" /></a><br />
In this example, our team is the &#8220;red&#8221; team, and we are competing agains the all-time winner (in blue). Even though in this particular example we are losing by a long shot (there is little food in our hill), we weren&#8217;t so bad when competing with our classmates&#8230;</p>
<p>Anyways, <a href="https://github.com/joaopizani/haskell-ants-edsl-afp2012">the project (uploaded to GitHub)</a> is not about ant assembly, but about Advanced Functional Programming, so you might ask &#8220;What the hell does this all have to do with Haskell?&#8221;. The answer is simple: our real task was to implement an Embedded Domain-Specific Language (EDSL) in Haskell, allowing to express with a <strong>high level of abstraction</strong> the strategies we wanted our ants to follow. The &#8220;deliverables&#8221; of the project, thus, were twofold:</p>
<ul>
<li><strong>Ant EDSL library:</strong> A high-level API, made of fundamental strategies and of combinators allowing the user to build more complex strategies from simpler ones.</li>
<li><strong>The strategies themselves:</strong> Using the developed API, we needed to hand in two strategies (ant assembly files), that would take part in the championship against the rest of the class.</li>
</ul>
<p>Our EDSL was developed with a layered architecture, where the the evaluation of user-accessible functions in the API resulted in a value of type <strong>AntImperative</strong>, that was then converted (compiled) to proper ant assembly. This paradigm of EDSL is called &#8220;deep-embedded&#8221;. In the following figure, you can have an idea of how the project is structured:<br />
<a href="http://joaopizani.hopto.org/wp-content/uploads/2013/03/uu-ant-gen-layers.png"><img class="aligncenter size-full wp-image-2165" alt="uu-ant-gen-layers" src="http://joaopizani.hopto.org/wp-content/uploads/2013/03/uu-ant-gen-layers.png" width="300" height="432" /></a></p>
<p>Also, here it goes one of the basic strategies we submitted for the contest, so that you can have an idea of how it &#8220;feels&#8221; to write strategies in our EDSL:<br />
<script type="text/javascript" src="http://gist-it.appspot.com/github/joaopizani/haskell-ants-edsl-afp2012/blob/master/uu-ant-gen/Game/UUAntGen/Frontend/AntStrategies.hs?slice=158:185&amp;footer=no"></script></p>
<p>This particular strategy was based in the fact that ants born in the hill&#8217;s corners (each anthill had 6 corners) would draw &#8220;highways&#8221; with pheromones, that would mark a quick way for other ants to go back home whenever needed. Besides this, ants that found food would also leave a &#8220;trail&#8221; of pheromones leading to the highways, and these trails would consist a kind of &#8220;local roads&#8221;.</p>
<p>Finally, as a prize for your pacience in reading this post until here :), you can take a look at the slides that we prepared for the presentation of the project (click on the image to start the download):<br />
<a href="http://joaopizani.hopto.org/wp-content/uploads/2013/03/presentation-ants-edsl-afp2012.pdf"><img class="aligncenter size-full wp-image-2167" alt="slides-ants-edsl-afp2012" src="http://joaopizani.hopto.org/wp-content/uploads/2013/03/slides-ants-edsl-afp2012.png" width="664" height="496" /></a> <a href="http://joaopizani.hopto.org/wp-content/uploads/2013/03/presentation-ants-edsl-afp2012.pdf">presentation-ants-edsl-afp2012</a></p>
<p>That&#8217;s it! As soon as I have another cool project to show you guys, I will tell more about it here&#8230; See you soon! :)</p>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=2170&amp;md5=580ec48b222c303ec9c80328d25b297b" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2013/03/haskell-ants-edsl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2013%2F03%2Fhaskell-ants-edsl%2F&amp;language=en_GB&amp;category=text&amp;title=Haskell+Ants+EDSL%3A+Implementation+project+in+the+%26%238220%3BAdvanced+Functional+Programming%26%238221%3B+course&amp;description=In+the+second+term+of+my+master%26%238217%3Bs+programme+in+Computing+Science+at+Utrecht+University%2C+I+followed+%28and+liked+very+much%29+a+course+called+%26%238220%3BAdvanced+Functional+Programming%26%238221%3B.+In+this+course%2C+we...&amp;tags=advanced+functional+programming%2Cant+simulation%2Chaskell%2Chaskell+edsl%2Cutrecht+university%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Updated screenrc: Even more perfect!</title>
		<link>http://joaopizani.hopto.org/en/2013/03/screenrc-ftw/</link>
		<comments>http://joaopizani.hopto.org/en/2013/03/screenrc-ftw/#comments</comments>
		<pubDate>Sat, 02 Mar 2013 00:38:24 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Day-to-day]]></category>
		<category><![CDATA[Linux @en]]></category>
		<category><![CDATA[Tech @en]]></category>
		<category><![CDATA[gnu screen @en]]></category>
		<category><![CDATA[multiuser screen @en]]></category>
		<category><![CDATA[screen @en]]></category>
		<category><![CDATA[screenrc @en]]></category>
		<category><![CDATA[terminal multiplexer @en]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=2152</guid>
		<description><![CDATA[Almost one year ago I wrote a post about GNU Screen, a great terminal multiplexer software with which I was practically in love&#8230; This post was about my screenrc config file, which had accumulated a lot of useful customizations I &#8230; <a href="http://joaopizani.hopto.org/en/2013/03/screenrc-ftw/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Almost one year ago I wrote a <a title="GNU Screen: a configuração dos vencedores" href="http://joaopizani.hopto.org/en/2012/03/killer-screenrc/">post</a> about GNU Screen, a great terminal multiplexer software with which I was practically in love&#8230; This post was about my screenrc config file, which had accumulated a lot of useful customizations I gathered from the net during years of daily usage.</p>
<p>Well, while the &#8220;core&#8221; of these customizations remains the same, some things changed in the last months: I organized and factored the configuration even more, published it on <a href="https://github.com/joaopizani/screenrc-ftw">GitHub</a> with a very nice README file and also added some new functionalities&#8230;</p>
<p>Some of the keyboard shortcuts were improved, some were added, but the biggest additions are related the Screen&#8217;s <strong>multiuser</strong> mode: something which is very useful for remote pair-programming sessions. So, there you have it, take a look at the simple <a title="screenrc-ftw README" href="https://github.com/joaopizani/screenrc-ftw/blob/master/README.md">instruções</a> and start using Screen in a much more efficient and <strong>comfortable </strong>way :)</p>
<p><strong>PS: </strong>To be able to unleash all the power of all the customizations, you need to be running a reasonably recent version of Screen. Unfortunately, most Linux distros are unreasonable, and still ship very old versions of Screen&#8230; If you use some Debian-based distro, you can download <a href="http://packages.debian.org/wheezy/screen">the recent Screen .deb package (from Debian Unstable)</a>. In the case you use Arch Linux, there is a <a href="https://aur.archlinux.org/packages/screen-git">recent Screen package on AUR</a>.</p>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=2152&amp;md5=c6576981780ab9396b0cd6141eb1c03e" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2013/03/screenrc-ftw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2013%2F03%2Fscreenrc-ftw%2F&amp;language=en_GB&amp;category=text&amp;title=Updated+screenrc%3A+Even+more+perfect%21&amp;description=Almost+one+year+ago+I+wrote+a+post+about+GNU+Screen%2C+a+great+terminal+multiplexer+software+with+which+I+was+practically+in+love%26%238230%3B+This+post+was+about+my+screenrc+config...&amp;tags=gnu+screen%2Cmultiuser+screen%2Cscreen%2Cscreenrc%2Cterminal+multiplexer%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Old but good lambdacat</title>
		<link>http://joaopizani.hopto.org/en/2012/11/old-but-good/</link>
		<comments>http://joaopizani.hopto.org/en/2012/11/old-but-good/#comments</comments>
		<pubDate>Fri, 22 Feb 2013 16:30:43 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Day-to-day]]></category>
		<category><![CDATA[Haskell @en]]></category>
		<category><![CDATA[haskell @en]]></category>
		<category><![CDATA[lambdacats]]></category>
		<category><![CDATA[loop]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=1709</guid>
		<description><![CDATA[Só os bons entenderão: Just the smart people will get it: &#160;]]></description>
				<content:encoded><![CDATA[<p>Só os bons entenderão:</p>
<p>Just the smart people will get it:</p>
<div id="attachment_1410" class="wp-caption aligncenter" style="width: 330px"><a href="http://joaopizani.hopto.org/wp-content/uploads/2012/11/recursive_cats.gif"><img class="size-full wp-image-1410" title="Maru can haz boxed recursion" src="http://joaopizani.hopto.org/wp-content/uploads/2012/11/recursive_cats.gif" alt="Maru can haz boxed recursion" width="320" height="205" /></a><p class="wp-caption-text">Just because &#8220;ones = 1 : ones&#8221; was too much of a boring example&#8230;</p></div>
<p>&nbsp;</p>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=1709&amp;md5=f725cd7e81d541763bf7f6ed5e1697a9" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2012/11/old-but-good/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2012%2F11%2Fold-but-good%2F&amp;language=en_GB&amp;category=images&amp;title=Old+but+good+lambdacat&amp;description=S%C3%B3+os+bons+entender%C3%A3o%3A+Just+the+smart+people+will+get+it%3A+%26nbsp%3B&amp;tags=haskell%2Clambdacats%2Cloop%2Cblog" type="text/html" />
	</item>
		<item>
		<title>De reis &#8211; The trip &#8211; A viagem</title>
		<link>http://joaopizani.hopto.org/en/2012/09/de-reis/</link>
		<comments>http://joaopizani.hopto.org/en/2012/09/de-reis/#comments</comments>
		<pubDate>Sun, 12 May 2013 10:19:39 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Academia @en]]></category>
		<category><![CDATA[Masters @en]]></category>
		<category><![CDATA[Utrecht @en]]></category>
		<category><![CDATA[big day]]></category>
		<category><![CDATA[flight @en]]></category>
		<category><![CDATA[masters @en]]></category>
		<category><![CDATA[netherlands @en]]></category>
		<category><![CDATA[trip @en]]></category>
		<category><![CDATA[utrecht @en]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=2360</guid>
		<description><![CDATA[THE TIME HAS COME, finally. In less than an hour I am going to the airport, say goodbye to family and friends and begin the long journey &#8211; full of connections &#8211; that in around 24 hours will bring me &#8230; <a href="http://joaopizani.hopto.org/en/2012/09/de-reis/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>THE TIME HAS COME, finally. In less than an hour I am going to the airport, say goodbye to family and friends and begin the long journey &#8211; full of connections &#8211; that in around 24 hours will bring me to my HOME: the city of Utrecht, in the Kingdom of The Netherlands.</p>
<p>I am VERY excited with the whole experience, as you all probably already know, and can&#8217;t wait to board that plane. On the other hand, however, I am going to miss my family and old friends a lot, I am going to miss everything that we experienced together in Brazil, specially in those last days here.</p>
<p>I will ALWAYS remember fondly all my experiences on this land. I don&#8217;t WANT to forget my roots. Even if I WANTED, though, I could not&#8230; I am what I am because of you, I do what I do and think what I think because of all we lived together and all the ideas we exchanged&#8230;</p>
<p>See you in the next posts, already on dutch land! Au revoir! Até mais! Tot ziens!</p>
<p>PS: This is the result of emptying my room :P</p>
<div id="attachment_1370" class="wp-caption aligncenter" style="width: 1954px"><a href="http://joaopizani.hopto.org/wp-content/uploads/2012/09/2012-09-01-17-00-54.jpg"><img class="size-full wp-image-1370" title="As malas - The suitcases - De Koffers" src="http://joaopizani.hopto.org/wp-content/uploads/2012/09/2012-09-01-17-00-54.jpg" alt="" width="1944" height="2592" /></a><p class="wp-caption-text">As malas &#8211; The suitcases &#8211; De Koffers</p></div>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=2360&amp;md5=6ae336105f450eb97f8f05c3be6a9f6c" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2012/09/de-reis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2012%2F09%2Fde-reis%2F&amp;language=en_GB&amp;category=text&amp;title=De+reis+%26%238211%3B+The+trip+%26%238211%3B+A+viagem&amp;description=THE+TIME+HAS+COME%2C+finally.+In+less+than+an+hour+I+am+going+to+the+airport%2C+say+goodbye+to+family+and+friends+and+begin+the+long+journey+%26%238211%3B+full+of...&amp;tags=big+day%2Cflight%2Cmasters%2Cnetherlands%2Ctrip%2Cutrecht%2Cblog" type="text/html" />
	</item>
		<item>
		<title>A lightweight, fully automatic and elegant torrent setup using RTorrent</title>
		<link>http://joaopizani.hopto.org/en/2012/08/rtorrentrc/</link>
		<comments>http://joaopizani.hopto.org/en/2012/08/rtorrentrc/#comments</comments>
		<pubDate>Tue, 28 Aug 2012 00:53:46 +0000</pubDate>
		<dc:creator>João Paulo</dc:creator>
				<category><![CDATA[Day-to-day]]></category>
		<category><![CDATA[Linux @en]]></category>
		<category><![CDATA[Tech @en]]></category>
		<category><![CDATA[perfect rtorrent]]></category>
		<category><![CDATA[rtorrent @en]]></category>
		<category><![CDATA[rtorrent config]]></category>
		<category><![CDATA[rtorrent seedbox]]></category>
		<category><![CDATA[rtorrent.rc]]></category>
		<category><![CDATA[seedbox]]></category>

		<guid isPermaLink="false">http://joaopizani.hopto.org/?p=1982</guid>
		<description><![CDATA[Some time ago I installed at home a 5Mbps ADSL connection, and so I wanted to have a reliable BitTorrent setup, to enjoy the new bandwidth capacity&#8230; Besides, in the near future I will have a 50Mbps connection, and thus &#8230; <a href="http://joaopizani.hopto.org/en/2012/08/rtorrentrc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Some time ago I installed at home a 5Mbps ADSL connection, and so I wanted to have a reliable BitTorrent setup, to enjoy the new bandwidth capacity&#8230; Besides, in the <strong>near</strong> future I will have a 50Mbps connection, and thus I felt the need for a very &#8220;optimized&#8221; and fully automatic setup for my torrent file-sharing activities :)</p>
<p>My idea is to use an OLD laptop that I have lying around as a dedicated seedbox, running 24/7. So, I was looking for a robust, powerful and configurable torrent client (able to run months without having to reboot), but at the same time, this client needed to use little CPU power and memory. Fortunately, I found this FANTASTIC BitTorrent client: it&#8217;s called <a href="http://libtorrent.rakshasa.no">rTorrent</a>, was developed in pure C++, geared towards performance and reliability, and is a nice console application.</p>
<p>After a lot of googling and a lot of trial-and-error, I was able to come up with a very nice rTorrent config file (.rtorrent.rc), that satisfies all my requirements for an awesome torrenting setup. These requirements are:</p>
<ul>
<li><strong>Periodical speed throttling:</strong> Download and upload speeds are adjusted depending on the time of day, to not overload my work bandwidth</li>
<li><strong>Close after reaching seed ratio:</strong> Removes a torrent download from the active queue after it has reached a certain seed ration (for example, 200%)</li>
<li><strong>Start downloads based on the contents of a directory with torrent files:</strong> Monitors a specified directory looking for the addition of files with the *.torrent extension and starts the corresponding downloads</li>
<li><strong>Separation between active and finished downloads:</strong> Stores files BEING DOWNLOADED in a specific directory (&#8220;content-in-progress&#8221;) and moves finished ones to another (&#8220;content-finished&#8221;)</li>
</ul>
<p>This config file (rtorrent.rc) is available at GitHub, and you can <a href="https://raw.github.com/joaopizani/rtorrentrc/master/rtorrent.rc">download it from here</a>. After downloading the file, do the following to complete the setup:</p>
<pre>mv [where-you-downloaded-rtorrentrc] ~/.rtorrent.rc
mkdir ~/torrent

# Option 1) If you dont have a current download directory structure
mkdir ~/torrent/{session,metafiles-{in-progress,finished},content-{in-progress,finished}}

# Option 2) If you already have favorite places to store in-progress and finished downloads
mkdir ~/torrent/{session,metafiles-{in-progress,finished}}
ln -s [in-progress-path] ~/torrent/content-in-progress
ln -s [finished-path] ~/torrent/content-finished</pre>
<p>Anyways, if you want to know more in-depth what the lines in this file do, I will now make a review of each of this config file&#8217;s &#8220;sections&#8221; :)<br />
<span id="more-1982"></span></p>
<p>THe first line in the file tells us in which directory rTorrent stores its internal &#8220;session&#8221;. This directory should never be deleted while rTorrent is running.<br />
<script src="http://gist-it.appspot.com/github/joaopizani/rtorrentrc/blob/master/rtorrent.rc?slice=0&#038;footer=no"></script></p>
<p>Now we define the directory where rTorrent should keep downloaded data <strong>while it&#8217;s being downloaded</strong>.<br />
<script src="http://gist-it.appspot.com/github/joaopizani/rtorrentrc/blob/master/rtorrent.rc?slice=1&#038;footer=no"></script></p>
<p>The following lines define minimum and maximum limits for the number of peer connections while downloading or seeding. I obtained these numbers by &#8220;emprirical&#8221; observation suring months of usage, and they work very well in my network (with a bandwidth of about 10MB/s).<br />
<script src="http://gist-it.appspot.com/github/joaopizani/rtorrentrc/blob/master/rtorrent.rc?slice=3:9&#038;footer=no"></script></p>
<p>The next configuration establishes that after we reach a certain &#8220;seed ratio&#8221; (in this case, 200%), the torrent should be automatically closed and removed from rTorrent&#8217;s list. This is so that you can collaborate with the spirit of file-sharing, but NOT INDEFINITELY :)  Besides, new downloads are not initiated with too little free disk space:<br />
<script src="http://gist-it.appspot.com/github/joaopizani/rtorrentrc/blob/master/rtorrent.rc?slice=11:19&#038;footer=no"></script></p>
<p>What follows are miscellaneous settings (enables DHT, cryptography, defines port range), and there&#8217;s nothing VERY special about them. The only setting which you should pay attention to is &#8220;port range&#8221;. You must set this option to a range which is open (forwarded) in case you are behind a router nas/firewall.<br />
<script src="http://gist-it.appspot.com/github/joaopizani/rtorrentrc/blob/master/rtorrent.rc?slice=22:28&#038;footer=no"></script></p>
<p>Now for a vey important section in the file: we define an automatic upload/download speed throttling, depending on the time of the day. The settings which follow are the ones which I LIKE THE MOST. In my case, I want the bandwidth occupation to be smaller in the MORNINGS and EVENINGS (that&#8217;s when I am most likely at home and using the computer).<br />
<script src="http://gist-it.appspot.com/github/joaopizani/rtorrentrc/blob/master/rtorrent.rc?slice=31:45&#038;footer=no"></script></p>
<p>Almost done now; we say to rTorrent that it should monitor a certain directory (&#8220;~/torrent/metafiles-in-progress&#8221;) for the addition of files with extension &#8220;*.torrent&#8221;. Files added to this directory will cause the start of a corresponding download in rTorrent:<br />
<script src="http://gist-it.appspot.com/github/joaopizani/rtorrentrc/blob/master/rtorrent.rc?slice=48:49&#038;footer=no"></script></p>
<p>And finally, the last lines in the config file ensure that INCOMPLETE (only incomplete) downloads have their <strong>data files</strong> removed, whenever the corresponding .torrent metafile is removed (or when the download is removed from the list in rTorrent). Besided, finished downloads are moved to a special directory (called &#8220;content-finished&#8221;), while the metafile itself is archived for posterity, under &#8220;metafiles-finished&#8221;.<br />
<script src="http://gist-it.appspot.com/github/joaopizani/rtorrentrc/blob/master/rtorrent.rc?slice=51:56&#038;footer=no"></script></p>
<p>So that&#8217;s all, buddies!  From now on, with rTorrent installed and configured in my seedbox, I just need to throw any .torrent file inside the &#8220;metafiles-in-progress&#8221; directory, and leave all the rest of the work with rTorrent. It will ensure that I keep being <strong>fair</strong> to the community (by ensuring a miniamal seed ratio) and then put all finished downloads in a special folder, ready for me to use them :) </p>
<p>If you want to get, use and adapt this configuraton file I have just shown, go again to the beginning of the post, download the file and follow the instructions&#8230;</p>
 <p><a href="http://joaopizani.hopto.org/?flattrss_redirect&amp;id=1982&amp;md5=f56b3d0692b611ba0734cb46cfc77fef" title="Flattr" target="_blank"><img src="http://joaopizani.hopto.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://joaopizani.hopto.org/en/2012/08/rtorrentrc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=joaopizani&amp;popout=1&amp;url=http%3A%2F%2Fjoaopizani.hopto.org%2Fen%2F2012%2F08%2Frtorrentrc%2F&amp;language=en_GB&amp;category=text&amp;title=A+lightweight%2C+fully+automatic+and+elegant+torrent+setup+using+RTorrent&amp;description=Some+time+ago+I+installed+at+home+a+5Mbps+ADSL+connection%2C+and+so+I+wanted+to+have+a+reliable+BitTorrent+setup%2C+to+enjoy+the+new+bandwidth+capacity%26%238230%3B+Besides%2C+in+the...&amp;tags=perfect+rtorrent%2Crtorrent%2Crtorrent+config%2Crtorrent+seedbox%2Crtorrent.rc%2Cseedbox%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>
