<?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>invisivel.net</title>
	
	<link>http://blog.invisivel.net</link>
	<description>Personal website of Filipe Figueiredo Correia</description>
	<lastBuildDate>Thu, 03 Nov 2011 18:22:14 +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/Invisivelnet" /><feedburner:info uri="invisivelnet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>Objects have not failed, or have they</title>
		<link>http://blog.invisivel.net/2011/11/03/objects-have-not-failed-or-have-they/</link>
		<comments>http://blog.invisivel.net/2011/11/03/objects-have-not-failed-or-have-they/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 18:21:19 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[engenharia]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[object-oriented]]></category>
		<category><![CDATA[quote]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=478</guid>
		<description><![CDATA[I stumbled on this 2002 essay by Guy Steele, and it felt more current than ever. Definitely, go read it if you&#8217;re interested in the topic. [...] to say that objects have failed because they don&#8217;t solve all possible problems is like saying carbohydrates have failed because you can&#8217;t live on pure sugar. [...]]]></description>
			<content:encoded><![CDATA[<p>I stumbled on this 2002 <a href="http://dreamsongs.com/ObjectsHaveNotFailedNarr.html">essay</a> by <a href="http://en.wikipedia.org/wiki/Guy_L._Steele,_Jr.">Guy Steele</a>, and it felt more current than ever. Definitely, go read it if you&#8217;re interested in the topic.</p>
<blockquote><p> [...] to say that objects have failed because they don&#8217;t solve all possible problems is like saying carbohydrates have failed because you can&#8217;t live on pure sugar. [...]</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2011/11/03/objects-have-not-failed-or-have-they/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Portugal 2011</title>
		<link>http://blog.invisivel.net/2011/06/05/agile-portugal-2011/</link>
		<comments>http://blog.invisivel.net/2011/06/05/agile-portugal-2011/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 14:04:46 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[evento]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agilept]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[porto]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=470</guid>
		<description><![CDATA[Yes, it&#8217;s just around the corner. The second edition of the Portugal-located conference on Agile Software Development is two weeks away. We are going to great lengths to bring you a great program, with huge names in the world of software development. Don&#8217;t miss it, really.]]></description>
			<content:encoded><![CDATA[<p>Yes, it&#8217;s just around the corner. The second edition of the Portugal-located conference on Agile Software Development is two weeks away. We are going to great lengths to bring you <a href="http://2011.agilept.org/program">a great program</a>, with <a href="http://2011.agilept.org/speakers">huge names</a> in the world of software development.</p>
<p>Don&#8217;t miss it, really.</p>
<p><center><br />
<a href="http://2011.agilept.org/" title="Agile Portugal 2011"><img src="http://2011.agilept.org/promotion-resources/agilept-badge-447x256.png" alt="" width="300"/></a><br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2011/06/05/agile-portugal-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django &amp; Domain-driven Development</title>
		<link>http://blog.invisivel.net/2011/05/17/django-domain-driven-development/</link>
		<comments>http://blog.invisivel.net/2011/05/17/django-domain-driven-development/#comments</comments>
		<pubDate>Tue, 17 May 2011 19:05:47 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[domain-driven development]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=378</guid>
		<description><![CDATA[What&#8217;s the relation between these two, you may ask. Django, and other frameworks of the sort, try to provide all that stuff that developers could otherwise need to implement over and over in their web applications. They allow to focus on what really differentiates our web apps from the rest of them. In part, this [...]]]></description>
			<content:encoded><![CDATA[<p>What&#8217;s the relation between these two, you may ask. Django, and other frameworks of the sort, try to provide all that stuff that developers could otherwise need to implement over and over in their web applications. They allow to focus on what really differentiates our web apps from the rest of them. In part, this means letting developers focus on the <strong>domain model</strong>.</p>
<p>Django&#8217;s <a href="http://docs.djangoproject.com/en/dev/topics/db/models/">models</a> do this well<sup class='footnote'><a href='#fn-378-1' id='fnref-378-1'>1</a></sup>, but they are more &#8220;relational&#8221; than they actually needed to be &#8212; we still have to deal with stuff like <a href="http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey">ForeignKeys</a> and the like.</p>
<p>I would rather think exclusively in terms of objects, but, no ORM can fully abstract the relational database underneath. This is a <a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html">leaky abstraction</a> that half of the world would like to see fixed, and the other half as actually tried to fix it but failed to varying degrees. And that&#8217;s why I understand why django&#8217;s approach has converged to what it is today. It reflects a reasonable balance of these forces. </p>
<p>I still think there are better names than <em>ForeignKey</em> to represent one-to-many associations, though.</p>
<h3>Creating and visualizing django models</h3>
<p>Even if not purely object-oriented in their nature, I still think of django models as object-oriented domain entities. And the domain model of a system can really grow beyond the point where it can fit in a single person&#8217;s mind. Django projects are no exception. </p>
<p>So, I&#8217;ve been trying to find a tool that helps me dealing with large django projects. Here are some of my findings:</p>
<ul>
<li><strong><a href="http://code.google.com/p/uml-to-django/">UML-to-Django</a></strong> &#8212;Uses XSL to transform a XMI file, to Django model classes. It has a few limitations at this point. Namely, it works well when the source XMI is created by <a href="http://argouml.tigris.org/">ArgoUML</a>, but I couldn&#8217;t use it successful with class models exported from other tools. I&#8217;m currently using <a href="http://www.visual-paradigm.com/">Visual Paradigm</a>, and the best way I found to bring my model to <em>UML-to-django</em> was to make Visual Paradigm generate Java source-code, and reverse engineer it in ArgoUML. And this still required a little bit of fiddling with the XMI produced by ArgoUML, but it worked in the end.</li>
<li><strong><a href="http://code.djangoproject.com/wiki/Dia2Django">Dia-to-Django</a></strong> &#8212; Didn&#8217;t try it, as the SVN repo seems to have gone the way of the Dodo, but it looks like it could have been a viable alternative to UML-to-Django.</li>
<li><strong><a href="http://code.google.com/p/django-command-extensions/wiki/GraphModels">GraphModels extension</a></strong> &#8212; Rather than allow to generate django models from a UML class diagram, the <em>graphmodels</em> extension allows to visualize a django project as a diagram. Not a bad option; one can definitely understand a django project much quicker than looking at a diagram of the model classes. Unfortunately the notation is much closer to the relational world than to a object oriented one. <a href="http://www.youtube.com/watch?v=dUxS5wEVfGw">Not that there&#8217;s anything wrong with that</a>, but the visual elements of a class diagram convey a richer semantics, and I do take more time to grasp a diagram of this kind than I take to grasp a class diagram.</li>
<li><strong><a href="https://github.com/dzhibas/django-yuml">Django-yuml</a></strong> &#8212; Creates UML class diagrams from django models, using yuml. It&#8217;s obviously limited to <a href="http://yuml.me/diagram/scruffy/class/samples">what yUML can express</a>, and as such it can&#8217;t represent stuff like association classes. Django models can express associative classes using the <a href="http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through"><em>through</em> option</a>. </li>
<li><strong><a href="http://kenai.com/projects/django-uml">DUDE: Django UML Designer</a></strong> &#8212; This one is very different from the previous tools, but interesting nonetheless. Its a django-based UML modeler. It&#8217;s a dead project, apparently, but in case you&#8217;re interested in this kind of stuff, check <a href="http://kenai.com/projects/django-uml/sources/subversion/content/mof/models.py">models.py</a> for a very early implementation of MOF using django model classes.</li>
</ul>
<p>The <em>graphmodels</em> extension is serving me good for now, after <a href="https://github.com/filipefigcorreia/django-extensions/tree/umlish-graphmodels">some hacking</a> to make the generated diagrams closer to UML class diagrams. Here&#8217;s an example of how it looks for the <a href="https://github.com/eldarion/pycon">pycon system</a> source code:</p>
<p><a href="http://www.flickr.com/photos/filipecorreia/5626824909/" title="PyCon Models using the graph_models extension"><img src="http://farm6.static.flickr.com/5185/5626824909_f2855444f3.jpg" width="500" height="160" alt="PyCon Models using the graph_models extension"></a></p>
<p>Here&#8217;s how it looked before the modifications:</p>
<p><a href="http://www.flickr.com/photos/filipecorreia/5627410410/" title="PyCon Models using the graph_models extension"><img src="http://farm6.static.flickr.com/5181/5627410410_8d82f54ea2.jpg" width="500" height="149" alt="PyCon Models using the graph_models extension"></a></p>
<p>This example doesn&#8217;t have generalizations, which also look much nicer with my changes. Here&#8217;s an example of how they look using my patch, <em>before</em> and <em>after</em> respectively:</p>
<p><a href="http://www.flickr.com/photos/filipecorreia/5690968046/" title="A simple example of using the django's graph_models extension."><img style="display:inline;" src="http://farm6.static.flickr.com/5184/5690968046_319bca8b16.jpg" height="300" alt="A simple example of using the django's graph_models extension."></a><a href="http://www.flickr.com/photos/filipecorreia/5690392757/" title="A simple example of using the django's graph_models extension using my patch."><img  style="display:inline;" src="http://farm6.static.flickr.com/5225/5690392757_02c3f948f3.jpg" height="300" alt="A simple example of using the django's graph_models extension using my patch."></a></p>
<p><strong>Update 2011/09/23:</strong> Fixed big mixup with the pictures.</p>
<div class='footnotes'>
<div class='footnotedivider'></div>
<ol>
<li id='fn-378-1'>And I could start another rant right here, as I see a <em>model</em> as a set of classes/domain-entities, and not a single class/domain-entity. But I will try to adopt django&#8217;s terminology for the duration of this post. <span class='footnotereverse'><a href='#fnref-378-1'>&#8617;</a></span></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2011/05/17/django-domain-driven-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Home renewal</title>
		<link>http://blog.invisivel.net/2011/04/10/home-renewal/</link>
		<comments>http://blog.invisivel.net/2011/04/10/home-renewal/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 20:00:28 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=400</guid>
		<description><![CDATA[This website&#8217;s contents and layout just received a well overdue renewal. Namely, you can now find in here some info about my research, and additional contents will eventually find their way here too. Lacking the time to make my own theme, this time I&#8217;m just going with one by someone else, with of course a [...]]]></description>
			<content:encoded><![CDATA[<p>This website&#8217;s contents and layout just received a well overdue renewal. Namely, you can now find in here some info about my <a href="/research">research</a>, and additional contents will eventually find their way here too.</p>
<p>Lacking the time to make my own theme, this time I&#8217;m just going with one by someone else, with of course a couple of customizations of my own. For posterity, this is how the website used to look.<br />
 <img style="border-width:1px;" src="/wp-content/media/invisivel.net-small-201104-300x272.png" alt="" title="Previous layout of the invisivel.net website" width="300" height="272" class="aligncenter size-medium wp-image-401" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2011/04/10/home-renewal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Losts, founds and the agility in between</title>
		<link>http://blog.invisivel.net/2010/05/28/lost-founds-and-the-agility-in-between/</link>
		<comments>http://blog.invisivel.net/2010/05/28/lost-founds-and-the-agility-in-between/#comments</comments>
		<pubDate>Fri, 28 May 2010 19:05:57 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[evento]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agilept]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=362</guid>
		<description><![CDATA[This blog has faded away, and twitter sort of became my voice to the world, but I have no intentions of closing it down just yet. As some say, hope is the last to die, which might explain why I still believe I will manage to post here some thoughts over the next months. What [...]]]></description>
			<content:encoded><![CDATA[<p>This blog has faded away, and <a href="http://twitter.com/filipecorreia">twitter</a> sort of became my voice to the world, but I have no intentions of closing it down just yet. As some say, hope is the last to die, which might explain why I still believe I will manage to post here some thoughts over the next months.</p>
<p>What has been keeping me so busy you ask? My <a href="http://www.paradigmaxis.pt">job</a> and my <a href="http://www.fe.up.pt/~prodei">PhD</a> research are the main culprits. I&#8217;ve lost count on the number times my thesis title has changed, but I&#8217;m pretty confident I&#8217;ve finally reached one with which I can reasonably see where I&#8217;m heading, and with which I am pretty sure to enjoy the ride. I hope I&#8217;ll be ready to give you more details soon :)</p>
<p><a href="http://www.agilept.org/" title="Agile Portugal 2010"><img src="http://www.agilept.org/promotion-resources/agilept-badge-180x103.png" alt="" title="Agile Portugal 2010" style="float:right; margin-left:1em;" /></a> But the last few weeks, my mind has also been somewhere else. I&#8217;ve been organizing an event on Agile Software Development &#8212; <a href="http://www.agilept.org">Agile Portugal 2010</a>. This will be the biggest event of the kind in Portugal that I have memory of, and putting it together has been quite an endeavor, but an incredibly fun one. I&#8217;m very excited about the <a href="http://www.agilept.org/program">program</a> and the invited <a href="http://www.agilept.org/speakers">speakers</a> we already have on board, and it keeps getting better and better. </p>
<p>If you want to be part of this great event, you can do it either as a speaker or a participant. The <a href="http://www.agilept.org/wp-content/uploads/2010/05/AgilePortugal2010-CallForSpeakers.pdf">Call for Speakers</a> and the early registration period will be open until the next <strong>June 5th</strong>. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2010/05/28/lost-founds-and-the-agility-in-between/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Kake Coding Dojo format</title>
		<link>http://blog.invisivel.net/2009/11/15/the-kake-coding-dojo-format/</link>
		<comments>http://blog.invisivel.net/2009/11/15/the-kake-coding-dojo-format/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 01:48:31 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[engenharia]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[agile2009]]></category>
		<category><![CDATA[coding-dojo]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=351</guid>
		<description><![CDATA[I&#8217;ve just stumbled on this post by Danilo Sato and remembered what a great time we had on the Kake Coding Dojo last August, at Agile 2009. Want to know what a Kake Coding Dojo is? Hugo Corbucci explains it on his blog, and so does Danilo (note that this Coding Dojo format was previously [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just stumbled on this <a href="http://www.dtsato.com/blog/2009/08/27/agile-2009-coding-dojo-kake-format-at-open-jam/">post</a> by Danilo Sato and remembered what a great time we had on the Kake Coding Dojo last August, at <a href="http://agile2009.agilealliance.org/">Agile 2009</a>.</p>
<p>Want to know what a Kake Coding Dojo is? Hugo Corbucci <a href="http://codeache.blogspot.com/2008/10/coding-rumors-or-uberdojo.html">explains it</a> on his blog, and <a href="http://www.dtsato.com/blog/2008/10/29/uberdojo-sao-paulo-coding-dojo/">so does</a> Danilo (note that this Coding Dojo format was previously called UberDojo).</p>
<p>I&#8217;m tempted to promote some Kake sessions with fellow co-workers. We&#8217;ve been talking about ways to share knowledge on <acronym title="Test Driven Development">TDD</acronym> and other agile practices across the company, and I found this to be an excellent way to improve one&#8217;s TDD skills, and to have contact with different languages while we&#8217;re at it. Will try to report back on my findings.</p>
<p><strong>Update:</strong> Hugo has just made a <a href="http://codeache.blogspot.com/2009/11/agile-2009-day-3-26th-august-kake.html">post</a> about this too, with some extra info.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2009/11/15/the-kake-coding-dojo-format/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just finished submitting one more paper</title>
		<link>http://blog.invisivel.net/2009/05/19/just-finished-submitting-one-more-paper/</link>
		<comments>http://blog.invisivel.net/2009/05/19/just-finished-submitting-one-more-paper/#comments</comments>
		<pubDate>Tue, 19 May 2009 00:56:45 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[Investigação]]></category>
		<category><![CDATA[lazer]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[plop]]></category>
		<category><![CDATA[song]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=342</guid>
		<description><![CDATA[Today I&#8217;m going go to sleep with this song on my mind (read it thinking on the melody of On the First Day of Christmas). On the first day of EuroPLoP, my workshop said to me: &#8220;Delete everything on page 3&#8243; On the second day of EuroPLoP, my workshop said to me: &#8220;Too many patterns, [...]]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;m going go to sleep with this song on my mind (read it thinking on the melody of <em>On the First Day of Christmas</em>).</p>
<blockquote>
<p>
On the first day of EuroPLoP, my workshop said to me:<br />
&#8220;Delete everything on page 3&#8243;<br/><br />
On the second day of EuroPLoP, my workshop said to me:<br />
&#8220;Too many patterns,<br />
and Delete everything on page 3&#8243;<br/><br />
On the third day of EuroPLoP, my workshop said to me:<br />
&#8220;Three known uses,<br />
too many patterns,<br />
and Delete everything on page 3&#8243;<br/><br />
On the fourth day of EuroPLoP, my workshop said to me:<br />
&#8220;Four forces,<br />
three known uses,<br />
too many patterns,<br />
and Delete everything on page 3&#8243;<br/><br />
On the fifth day of EuroPLoP, my workshop said to me:<br />
&#8220;Five good things,<br />
four forces,<br />
three known uses,<br />
too many patterns,<br />
and Delete everything on page 3&#8243;<br/><br />
On the sixth day of EuroPLoP, my workshop said to me:<br />
&#8220;Six dumb suggestions<br />
five good things,<br />
four forces,<br />
three known uses,<br />
too many patterns,<br />
and Delete everything on page 3&#8243;<br/><br />
On the seventh day of EuroPLoP, my workshop said to me:<br />
&#8220;Seven minor changes,<br />
six dumb suggestions<br />
five good things,<br />
four forces,<br />
three known uses,<br />
too many patterns,<br />
and Delete everything on page 3&#8243;
</p>
</blockquote>
<p>Credits: Not sure who the author is, but Charles Weir has compiled a very fun <a href="http://www.charlesweir.com/Misc/SongSheet2.doc">song sheet of EuroPLoP conferences</a> which I recommend to all the <a href="http://www.hillside.net/plop/">PLoP</a>ers out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2009/05/19/just-finished-submitting-one-more-paper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rankings of european universities</title>
		<link>http://blog.invisivel.net/2009/01/29/rankings-of-european-universities/</link>
		<comments>http://blog.invisivel.net/2009/01/29/rankings-of-european-universities/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 23:27:35 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[formacão]]></category>
		<category><![CDATA[geral]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[university]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=337</guid>
		<description><![CDATA[While helping a friend dealing with a professional crossroad, I started wondering which universities are considered to be the top ones nowadays. I had ran some searches about this matter some time ago, helping one of my brothers to select a school where to apply for the ERASMUS programme, but this was back in 2006, [...]]]></description>
			<content:encoded><![CDATA[<p>While helping a friend dealing with a professional crossroad, I started wondering which universities are considered to be the top ones nowadays. I had ran some searches about this matter <a href="http://blog.invisivel.net/2006/02/05/classificacao-de-universidades-mundiais/">some time ago</a>, helping one of my brothers to select a school where to apply for the <a href="http://en.wikipedia.org/wiki/ERASMUS_programme">ERASMUS programme</a>, but this was back in 2006, and I was hoping more reliable data would exist by now (ie, from independent parties, and using sensible criteria).</p>
<p>Although I still don&#8217;t blindly trust the <a href="http://www.topuniversities.com/worlduniversityrankings/results/2008/regional_rankings/top_european_universities">numbers I&#8217;ve found</a> (<a href="http://www.up.pt">University of Porto</a> isn&#8217;t on the list, so it can&#8217;t be right, can it? ;) they were the most convincing ones I came upon. They do try to explain which was the used <a href="http://www.topuniversities.com/worlduniversityrankings/methodology/">criteria</a>, which is a good thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2009/01/29/rankings-of-european-universities/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing Ubuntu on Eee PC 901</title>
		<link>http://blog.invisivel.net/2008/12/23/installing-ubuntu-on-eee-pc-901/</link>
		<comments>http://blog.invisivel.net/2008/12/23/installing-ubuntu-on-eee-pc-901/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 01:53:50 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[eee-pc]]></category>
		<category><![CDATA[intrepid]]></category>
		<category><![CDATA[network-manager]]></category>
		<category><![CDATA[ssd]]></category>
		<category><![CDATA[tmpfs]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vga]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=315</guid>
		<description><![CDATA[I finally found some time to install Ubuntu on my Eee pc 901, and it&#8217;s a good thing I&#8217;ve waited for the holidays (if I can call them holidays &#8212; despite what some lady friends tell me, hunting for Christmas presents in shopping malls is hard work), because the entire process sure took a lot [...]]]></description>
			<content:encoded><![CDATA[<p>I finally found some time to install <a href="http://www.ubuntu.com/">Ubuntu</a> on my <a href="http://eeepc.asus.com/global/product901.html">Eee pc 901</a>, and it&#8217;s a good thing I&#8217;ve waited for the holidays (if I can call them holidays &#8212; despite what some lady friends tell me, hunting for Christmas presents in shopping malls is hard work), because the entire process sure took a lot more time than I was initially expecting.</p>
<p>I&#8217;ve followed a <a href="http://tombuntu.com/index.php/2008/11/17/installing-ubuntu-810-on-the-eee-pc-901/">a post over on tombuntu</a>, while also referring to <a href="http://the.taoofmac.com/space/blog/2008/11/20/2249">Rui Carmo&#8217;s post on the subject</a> and to a series of other resources that address more specific issues:</p>
<ul>
<li><a href="http://lwn.net/Articles/245002/">Found out</a> that <tt>noatime</tt> is actually a superset of <tt>nodiratime</tt>, so I only ended up adding the first one to fstab.</li>
<li>I hadn&#8217;t fiddled with the kernel&#8217;s I/O scheduler before, so although I&#8217;ve seen a couple of recommendations towards using <tt>elevator=deadline</tt> as a kernel parameter, I&#8217;ve only understood it better by going through <a href="http://blog.alexworld.it/post/60743449/time-to-change-i-o-scheduler-on-eeepc-900-not-only-on">this other post</a>.</li>
<li>I&#8217;ve mounted <tt>/tmp</tt> as a memory filesystem, <a href="http://tombuntu.com/index.php/2008/09/04/four-tweaks-for-using-linux-with-solid-state-drives/">as instructed</a>, but soon found it taking 500MB of memory (even though only 26MB where being effectively being used), which seemed more than reasonable, specially considering I&#8217;m not using a swap partition. So, what I did was to limit the size of <tt>/tmp</tt> using an extra parameter: <tt>tmpfs /tmp tmpfs defaults,noatime,mode=1777,size=250m 0 0</tt>. Got some insights on the use of tempfs <a href="http://www.funtoo.org/en/articles/linux/ffg/3/">on this article</a>.</li>
</ul>
<p>So everything was going great&#8230; that is, until I tried to establish a connection to my wireless router at home. <a href="http://en.wikipedia.org/wiki/NetworkManager">Network Manager</a> refused to cooperate &#8212; it kept asking for authentication credentials, even though he already had the right ones &#8212;  and I took a while to understand I was facing some sort of bug in NM, and not an incompatibility with the Eee hardware (at least, this is my theory for now). This seems to be reproducible with <strong>hidden</strong> WPA networks, like the one I had at home. I just ended up changing the router settings to broadcast the SSID, and all is working fine now. Still, this worries me, I wonder if I won&#8217;t have trouble connecting to <a href="http://www.eduroam.org/">eduroam</a> networks &#8212; will have to try it.</p>
<p>Btw, I have to say I now strongly agree that Network Manager <a href="http://ubuntuforums.org/showthread.php?t=442780">badly needs a <em>refresh</em> feature</a>.</p>
<p>Another difficulty I add was finding a convenient way to quickly configure VGA output, as I frequently need to connect to a projector, either for classes or the occasional presentation. Again, this has nothing to do with the Eee 901 specifically, although the fact that it uses a 16:9 resolution does add a bit to the challenge. I ended up using LXRandR, that is provided by the Ubuntu repositories, but also found two other promising applications that do mostly the same: <a href="http://www.albertomilone.com/urandr.html">uRandR</a> and <a href="http://christian.amsuess.com/tools/arandr/">aRandR</a>.</p>
<p>At this point, I realized I had very little space left on the 4GB SSD, as it was to be expect. I&#8217;ve done two things to get some space back: first, I&#8217;ve used this setting on synaptic packet manager: <tt>Settings -> Preferences -> Files -> Delete Downloaded Packages After Installation</tt>; second, there are loads of pre-installed documentation that typically never get used: <tt>/usr/share/doc</tt> told me what was taking too much space, and I got rid of some of these docs by using apt). I still have 1.1GB free now, which is quite reasonable, since I kept almost everything, including open-office, and installed texlive and several other smaller packages.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2008/12/23/installing-ubuntu-on-eee-pc-901/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JHead usage</title>
		<link>http://blog.invisivel.net/2008/11/30/jhead-usage/</link>
		<comments>http://blog.invisivel.net/2008/11/30/jhead-usage/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 22:17:05 +0000</pubDate>
		<dc:creator>Filipe Correia</dc:creator>
				<category><![CDATA[fotografia]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[exif]]></category>
		<category><![CDATA[jhead]]></category>
		<category><![CDATA[photos]]></category>

		<guid isPermaLink="false">http://blog.invisivel.net/?p=312</guid>
		<description><![CDATA[I find jhead quite useful for keeping some order on my file-system based photos organization &#8220;system&#8221;. For my own reference, here&#8217;s how to rename a bunch of jpegs according to their EXIF information: jhead -n%Y%m%d-%H%M%S *.jpg]]></description>
			<content:encoded><![CDATA[<p>I find <a href="http://www.sentex.net/~mwandel/jhead/">jhead</a> quite useful for keeping some order on my file-system based photos organization &#8220;system&#8221;. For my own reference, here&#8217;s how to rename a bunch of jpegs according to their <a href="http://en.wikipedia.org/wiki/Exchangeable_image_file_format">EXIF</a> information:</p>
<p><code>jhead -n%Y%m%d-%H%M%S *.jpg</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.invisivel.net/2008/11/30/jhead-usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

