<?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>Ricardo Lopes</title>
	
	<link>http://ricardolopes.net/blog</link>
	<description>personal blog</description>
	<lastBuildDate>Sat, 15 Dec 2012 15:15:23 +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>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ricardolopes/blog" /><feedburner:info uri="ricardolopes/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>What Windows 8 could have been</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/fmoVjmvERQE/</link>
		<comments>http://ricardolopes.net/blog/what-windows-8-could-have-been/#comments</comments>
		<pubDate>Sat, 15 Dec 2012 15:15:23 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[tablets]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=376</guid>
		<description><![CDATA[This post was supposed to be yet another Windows 8 review but, as I've gained experience with the latest Microsoft OS, I saw the potential for something a little more interesting. I've been using Windows 8 as the only OS in my main computer since it was officially released by Microsoft, so I might say I have some experience, now, to tell you a thing or two about it that you probably missed in other reviews. I've already used Windows, Mac and Linux as my primary OS (and I tend to change it quite frequently), and I find advantages and disadvantages in all of them. I'm pretty "agnostic" in most technology debates, and OSs aren't an exception, so these thoughts aren't distorted by fanboy opinions. I didn't do a simple review not only because the Internet is full of it (really, I'm not even posting any links), but because my continuous usage of this new OS kept bugging me more and more about very specific details. So I'll skip the typical suspense and just tell you my quick opinion about it, so I can discuss what I see as the most pressing issue: what Windows 8 could have been.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-full wp-image-390" alt="Windows 8" src="http://ricardolopes.net/blog/wp-content/uploads/2012/12/w8.png" width="450" height="253" /></p>
<p>This post was supposed to be yet another Windows 8 review but, as I&#8217;ve gained experience with the latest Microsoft OS, I saw the potential for something a little more interesting. I&#8217;ve been using Windows 8 as the only OS in my main computer since it was officially released by Microsoft, so I might say I have some experience, now, to tell you a thing or two about it that you probably missed in other reviews. I&#8217;ve already used Windows, Mac and Linux as my primary OS (and I tend to change it quite frequently), and I find advantages and disadvantages in all of them. I&#8217;m pretty &#8220;agnostic&#8221; in most technology debates, and OSs aren&#8217;t an exception, so these thoughts aren&#8217;t distorted by fanboy opinions. I didn&#8217;t do a simple review not only because the Internet is full of it (really, I&#8217;m not even posting any links), but because my continuous usage of this new OS kept bugging me more and more about very specific details. So I&#8217;ll skip the typical suspense and just tell you my quick opinion about it, so I can discuss what I see as the most pressing issue: what Windows 8 could have been.</p>
<p>Firstly, I know many people don&#8217;t agree with me, but I actually think Microsoft changed the game with Windows 8 and the Surface. The notion of converging the laptop and tablet experience seems almost intuitive to me. As you might already know, tablets are the latest revolution in computing and are slowly throwing laptops to oblivion as once laptops did to desktop PCs (OK, I know it&#8217;s not that simple, but when we look at market shares there&#8217;s no doubt the landscape is changing). Tablets are also more portable than the thinnest ultrabooks, have a more intuitive and friendly input, don&#8217;t have the dreaded noisy fans, have better communication options and so on (I could go on listing the advantages of tablets over any laptop, but I guess I made my point already). So isn&#8217;t it silly that we&#8217;re still using them just as consumption devices (read: overpriced toys)? Is the great revolution in computing really only worth it for browsing Facebook and throwing some birds at evil pigs?</p>
<p>The answer, of course, is no. If these devices are so much better than their ancestors, then we must be able to switch and leave the old laptops behind. Some power users might not be able to do it, but that&#8217;s exactly what happened in the transition from desktop PCs to laptops anyway. Apple has been very careful in this matter: they have slowly improved iOS to meet more demands and updated Mac OS to be more iOS-like. They&#8217;re basically doing baby steps for converging the two OSs, cautious not to make a very risky move. I&#8217;m still very curious about what the conclusion of that convergence might look like. Microsoft, on the other hand, went all-in about the matter and evolved from a pure PC OS to a completely hybrid, both tablet-friendly and &#8220;traditional&#8221;.</p>
<p>In my opinion, and this might be controversial, Microsoft decided, for a change, to be the innovator and to push to the market a concept that is probably ahead of its time. They were so proud of their concept, they even build their own tablet/laptop hybrid just so they could show the full picture of their envisioned game changer product. This move is as refreshing as it is unexpected. So, as you can see by now, Windows 8 and the tablet/laptop hybrids approach have really caught my eye and promise to be a welcome revolution brought by an unexpected player.</p>
<p>So&#8230; what could possibly go wrong? Here are some of the details I&#8217;ve been struggling with lately.</p>
<h3>Affordances</h3>
<p>In interaction design, affordance is the quality of an element to display to a user how it is supposed to be used. Imagine a door with no signs and with equal handles on both sides. That&#8217;s an example of poor affordance, since you don&#8217;t know if you&#8217;re supposed to push it or pull it. A door with better affordance would have the handle only in the side where you needed to pull and probably a sign in each side displaying the correct action.</p>
<p>The Modern UI design aka Windows Store design aka Metro style design is, in my opinion, a nice UI that makes Windows Phone 7 and 8 look much more fresh and lively than the big guys iOS and Android. However, I&#8217;m not so sure about it in tablets and specially on regular PCs. One of its major advantages, the flat UI that strips down the unnecessary and focuses on content, is also one of its major flaws, because you&#8217;re also losing some important elements that weren&#8217;t just there for decoration. Don&#8217;t agree?</p>
<p><img class="size-full wp-image-379 aligncenter" title="settings" alt="" src="http://ricardolopes.net/blog/wp-content/uploads/2012/12/w8_settings.png" width="202" height="106" /></p>
<p>This image is showing two different elements from the same screen (not in their actual position, just next to each other in this picture for comparison). The one on the top is just a title with no action on click, and the one in the bottom is a button to a settings page (although we&#8217;re already in a settings panel, and another button in the same panel already points us to the Control Panel, another settings tool).</p>
<p>I could add more examples, but I hope you got the idea. Cleaning the UI is a very good idea, but you must do it with caution. &#8220;Make it as simple as possible, but not simpler&#8221;.</p>
<h3>The best of two worlds?</h3>
<p>One of Windows 8&#8242;s most ambitious promises is the convergence of desktop and tablet experiences. As I said, I&#8217;m a big fan of that concept and I believe that&#8217;s a trend to follow. But a concept is one thing, execution is another. My ideal use case would be something like:</p>
<blockquote><p>I pick my tablet for working on the go. Since I don&#8217;t have paperwork nor a cumbersome laptop to carry, travelling with everything I need for work (just a tablet) is easier than ever. In those free times I can just turn on my tablet and browse my favourite websites, check my email and so on. When I get to my office I just link the Bluetooth keyboard and mouse and the HDMI display, start the traditional environment and fire up the MS Office suite, the IDE, etc.</p>
<p>Next day I decide to do some work at a coffee shop, so I just bring the tablet and a keyboard (a Surface keyboard would add no bulk to the pack, and a keyboard dock like what we see in Asus&#8217;s offerings would, in a worst case scenario, make me feel like I&#8217;m carrying a thin netbook).</p>
<p>When going to meetings, presentations or others I simply carry the tablet and use it with the onscreen keyboard, since I won&#8217;t be typing long sequences of text. In between, I think about my laptop and wonder when was the last time I used that heavy, noisy and awkward machine.</p></blockquote>
<p>This use case is what I think when I see new hybrids in the market running full-blown OSs in a tablet form and when I hear Microsoft state how Windows 8 promises to deliver the best of both worlds. Unfortunately, that&#8217;s not what&#8217;s happening.</p>
<p>Firstly, Windows RT, a dumbed-down version of Windows 8 developed to run on ARM processors, miserably fails to live up to that promise, as you won&#8217;t be able to run legacy apps in it (read: you can&#8217;t install typical desktop applications, like the ones you absolutely must have for your job).</p>
<p>Also, when using a tablet with no mouse or keyboard, this ideal vision means not interacting with the traditional desktop and its windows, as they&#8217;re not the most touch friendly interfaces you&#8217;ll see. So it&#8217;s too bad that actions such as file management and configuring some settings have to be done in the desktop environment. I can&#8217;t help but think that Microsoft&#8217;s tight schedule for Windows 8 left many holes in the OS, and this lack of support for the continuous use of the tablet environment shows many of them.</p>
<p>These holes in the OS aren&#8217;t an exclusive of the tablet interface. As an example, in the desktop mode hitting the Networks taskbar icon brings a panel in line with the new design, but hitting the Sound or Power taskbar icons still brings the old style popup. Also, when using the desktop environment, the Charms bar has close to no functionality (but it still shows up when hitting non-configurable hot corners). There are many more rough corners that still need to be polished if this is to look like a finished product.</p>
<p>Finally, the integration of these two poorly-implemented worlds is nothing but disappointment. If you like a Metro application, you can&#8217;t run it as a window in the desktop environment (nor can you go full-screen in most desktop applications). If you open a file in one of the environments, the only way to move it to the other environment is to open it again manually using another application. The only way to see two Metro apps at once (or any Metro app while using the desktop interface) is by snapping one of them to the left or right of the screen. However, you have no control of the size of each app, and you can&#8217;t have two documents side by side, since the distributed space isn&#8217;t 50%-50%, but more like 75%-25%.</p>
<h3>Apps, apps, apps</h3>
<p>At the end of the day, what really matters is the applications. That&#8217;s why most users prefer Mac OS or Linux over Windows, but when you look at market shares that&#8217;s not what it looks like. However, with this new OS Microsoft seems to be trying to get rid of its huge market advantage.</p>
<p>As I&#8217;ve stated before, there&#8217;s not much integration between the two different environments of Windows 8. So, while you have a huge collection of legacy apps in the traditional one, you&#8217;ll feel the emptiness of options in the newest one. If desktop apps could integrate with the tablet mode this wouldn&#8217;t be such a big issue, because we&#8217;d have something to cover that emptiness while the new apps ecosystem was being developed. But we don&#8217;t, so if you&#8217;re like me you&#8217;ll probably want to make use of that awesome new environment, but will find no reason for it and eventually give up.</p>
<p>Things get pretty ugly if you consider Windows RT instead of 8, because it also has a desktop mode but lacks the support for legacy apps. So yes, the market leader that has built its success on top of its huge apps ecosystem has just started a new one from scratch and one of the versions of its newest OS doesn&#8217;t even support the old one.</p>
<p>Also, if this new desktop/tablet mix in the same OS serves as a &#8220;bridge&#8221; from the old ecosystem to the new, I can&#8217;t figure a simple reason for Microsoft to launch the Surface with RT before launching the Surface with 8. They basically launched a device with virtually no ecosystem and waited to later launch a similar device with support for all Windows applications. That&#8217;s like trying to build a whole village in a desert island and only later building a bridge to it. I wonder how much has Microsoft lost with this new, unpopulated village already.</p>
<p>Finally, if we look to the Metro apps that come with the OS, there&#8217;s also some aspects that make me think this could have gone a totally different way. The built-in calendar app couldn&#8217;t import all calendars from my Google account (in fact, it could only import the personal one), so it&#8217;s useless for me. The messaging app can&#8217;t send new messages if I&#8217;m set as invisible, and can&#8217;t get them from contacts that show up as offline, so this one&#8217;s also useless for me. Thanks to the poor integration between the two environments, I can&#8217;t get a mini player of the XBox Music app (only a snapped panel from top to bottom that shrinks my horizontal desktop area). These are just some examples of the poor job that leave us early adopters with little incentive to keep trying the new environment.</p>
<h3>To sum up</h3>
<p>Please don&#8217;t get me wrong: I love Windows 8&#8242;s concept and I share (more or less) Microsoft&#8217;s vision for the future of computers. If this was the typical review, I&#8217;d spend more time highlighting some good implementations and how I believe it&#8217;s the right direction. I might even have recommended the upgrade. However, my goal is to highlight what I find poorly implemented in such a great concept.</p>
<p>Thanks to this whole notebook/tablet hybrid concept, I&#8217;ve started to look at the latest ultrabooks as kind of obsolete devices. They don&#8217;t have touch screens, it&#8217;s impossible to use them while walking without looking awkward, and so forth. The same goes for all Apple&#8217;s notebook options (that&#8217;s probably the reason why most Apple fans don&#8217;t agree with this vision). However, after quite some time with Windows 8, I fear we don&#8217;t have a strong alternative yet.  Yes, this is definitely an important step in that direction, but it&#8217;s still looking too immature, for now. Windows 8 seems to have suffered a lot from its tight schedule and, thanks to this incomplete effort, we now have a vision of what&#8217;s to come, but are left with a poor demo of it.</p>
<p>All in all, this could have been a new revolution in the way we use our computers. As it stands, it&#8217;s nothing but a glimpse of what that revolution might look like. Maybe they&#8217;ll get it right in an hypothetical Windows 9. After all, Microsoft is known for releasing great versions of Windows after disappointing ones, and disappointing versions after great ones (and so far, this pattern seems unchanged). Or maybe Apple will get it right first.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=fmoVjmvERQE:TlZnhJS4dbA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=fmoVjmvERQE:TlZnhJS4dbA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=fmoVjmvERQE:TlZnhJS4dbA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=fmoVjmvERQE:TlZnhJS4dbA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/fmoVjmvERQE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/what-windows-8-could-have-been/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/what-windows-8-could-have-been/</feedburner:origLink></item>
		<item>
		<title>Limpar a feed do Facebook e outras histórias do Sapo Codebits VI</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/XOC1mxrLrEc/</link>
		<comments>http://ricardolopes.net/blog/limpar-a-feed-do-facebook-e-outras-historias-do-sapo-codebits-vi/#comments</comments>
		<pubDate>Tue, 27 Nov 2012 21:00:17 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[Português]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=369</guid>
		<description><![CDATA[Decorreu de 15 a 17 de Novembro a sexta edição do<a href="https://codebits.eu/" target="_blank"> Sapo Codebits</a>, um dos eventos de tecnologia mais populares do país. Foi um evento tão imersivo que só passado este tempo é que arranjei tempo no meio de tanto trabalho que atrasou para poder escrever alguma coisa sobre o assunto. Para quem não conhece, o Sapo Codebits é um evento de e para programadores, engenheiros informáticos ou electrotécnicos, ou aficionados de tecnologia no geral. Nesse evento incluem-se actividades como palestras, workshops, exposições de tecnologia e vários concursos, com especial destaque para o já famoso concurso de 48 horas seguidas de programação.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-large wp-image-371" title="Sapo Codebits VI" src="http://ricardolopes.net/blog/wp-content/uploads/2012/11/2002-12-08-12.00.00-1-1024x768.jpg" alt="" width="450" /></p>
<p>Decorreu de 15 a 17 de Novembro a sexta edição do<a href="https://codebits.eu/" target="_blank"> Sapo Codebits</a>, um dos eventos de tecnologia mais populares do país. Foi um evento tão imersivo que só passado este tempo é que arranjei tempo no meio de tanto trabalho que atrasou para poder escrever alguma coisa sobre o assunto. Para quem não conhece, o Sapo Codebits é um evento de e para programadores, engenheiros informáticos ou electrotécnicos, ou aficionados de tecnologia no geral. Nesse evento incluem-se actividades como palestras, workshops, exposições de tecnologia e vários concursos, com especial destaque para o já famoso concurso de 48 horas seguidas de programação. Para mais detalhes sobre o evento no geral, fica o link para a apreciação que fiz após a<a title="Resumo do Sapo Codebits V" href="http://ricardolopes.net/blog/resumo-do-sapo-codebits-v/"> edição do ano passado</a>.</p>
<p>Este ano contou com algumas novidades interessantes, como os workshops de hardware (onde deu para fazer um test-drive ao famoso Raspberry Pi e falar com o Rob Bishop), a restauração de máquinas de arcade antigas (incluindo projectos interessantes como usar uma máquina de Sega Rally para controlar um carro telecomandado), entre outras. De negativo, foi especialmente a maior escassez de comida (incluindo o desaparecimento do Red Bull a meio do evento, quando as horas de sono em falta mais o exigiam).</p>
<p>Tal como aconteceu no ano passado, houve talks de grande qualidade e tenho pena de não ter assistido a mais. Felizmente, os vídeos foram disponibilizados pela Sapo, e ainda não consegui acabar de ver todos os que queria. Recomendo especialmente os vídeos da talk do Miguel Gonçalves intitulada &#8220;<a href="http://videos.sapo.pt/VorRG9QHvVZcJInG7dBi" target="_blank">Move fast and break things</a>&#8220;, do Rob Bishop a falar do Raspberry Pi em &#8220;<a href="http://videos.sapo.pt/qpt83vZs5fqfRTaQ0FZY" target="_blank">Raspberry Pi: past, present &amp; future</a>&#8221; e ainda o &#8220;<a href="http://videos.sapo.pt/Hz5FsFO1aNpifUkmwPTv" target="_blank">The art of readable code</a>&#8221; do Pedro Morais.</p>
<p>Desta vez o projecto que desenvolvi, intitulado Facebook Decrapifier, foi uma extensão para o Google Chrome que esconde posts sobre assuntos que não queremos ver (política, futebol, música pimba, etc.) e evita ainda o chamado Facebook jacking (apenas a parte de escrever posts de conteúdo duvidoso). Mesmo não tendo ganho nenhum prémio, o grupo teve uma excelente prestação no concurso. Fica o link para o <a href="http://vimeo.com/53781394" target="_blank">vídeo oficial</a> que foi mostrado durante o pitch final.</p>
<p>Tal como aconteceu no ano passado, participar neste evento foi uma experiência muito gratificante para quem está dentro da área e gosta do que faz. Uma vez mais digo que deu para adicionar novas competências ao currículo que o curso que estou a tirar não consegue, por si só, dar, o que só por si já faz tudo isto valer a pena. Tenho pena de não saber onde vou estar para o ano, já que por essa altura já terei acabado o curso, e por isso não consigo saber ainda se estou disponível para participar na próxima edição (a vontade de lá voltar nem se questiona).</p>
<p>Para o próximo ano, segundo foi anunciado pela PT, o Codebits vai ocorrer em simultâneo em Portugal e também no Brasil. É mais uma evidência do crescimento que este evento está a ter, fruto da sua excelente organização e conceito. Tal como referi há um ano, é sem dúvida uma experiência que recomendo todos da área a procurarem.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=XOC1mxrLrEc:sTuwaDaUfeg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=XOC1mxrLrEc:sTuwaDaUfeg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=XOC1mxrLrEc:sTuwaDaUfeg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=XOC1mxrLrEc:sTuwaDaUfeg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/XOC1mxrLrEc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/limpar-a-feed-do-facebook-e-outras-historias-do-sapo-codebits-vi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/limpar-a-feed-do-facebook-e-outras-historias-do-sapo-codebits-vi/</feedburner:origLink></item>
		<item>
		<title>Avoiding the “think outside the box” trap</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/mmGuwZjYswI/</link>
		<comments>http://ricardolopes.net/blog/avoiding-the-think-outside-the-box-trap/#comments</comments>
		<pubDate>Thu, 25 Oct 2012 20:03:05 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=360</guid>
		<description><![CDATA[These days I'm getting sick and tired of all the "think outside the box" talk. In my area (technology and computers stuff) we have three kinds of young people: those who have yet to wake up for reality (mostly gamers that chose this area because it's about those machines that can run videogames); those who want to play safe and spend their years being treated as slaves in a low-wage and unfulfilling job; and those that love to "think outside the box". So what is that thoughtful activity anyway?
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-full wp-image-362" title="Avoiding the &quot;think outside the box&quot; trap" src="http://ricardolopes.net/blog/wp-content/uploads/2012/10/animal-17474_640.jpg" alt="" width="450" /></p>
<p>These days I&#8217;m getting sick and tired of all the &#8220;think outside the box&#8221; talk. In my area (technology and computers stuff) we have three kinds of young people: those who have yet to wake up for reality (mostly gamers that chose this area because it&#8217;s about those machines that can run videogames); those who want to play safe and spend their years being treated as slaves in a low-wage and unfulfilling job; and those that love to &#8220;think outside the box&#8221;. So what is that thoughtful activity anyway?</p>
<p>&#8220;Thinking outside the box&#8221; means trying unconventional ideas and questioning the status quo to get to new conclusions and possibilities. Imagine all you take for granted in this world and all your beliefs being put in a box. That means that whenever you&#8217;re solving a problem or looking for an answer, you&#8217;re thinking inside that box of yours. You&#8217;re in your comfort zone. You&#8217;re safe. But there is a full world of possibilities outside of that box to be explored, and sometimes the answer to a problem might just be hidden outside of those boundaries. So you have to step out of your comfort zone and explore new ideas and beliefs you you want to get your answers.</p>
<p>That is the theory. Now for reality.</p>
<p>At least among rather young people (18 to 30?) in the technology area, that expression is very popular. People use it to try to stand out from the crowd, although much of the crowd is using it already by now. Even though they might not notice it, they&#8217;re not really using it in its original meaning anymore: for the tech guys, &#8220;thinking outside the box&#8221; is avoiding the low-wage unfulfilling job and challenging the standard, usually by trying to live an entrepreneur&#8217;s adventure or simply by chatting about the latest innovations and what cool technological projects could be made out of them. In every meetup, in every talk, in every event, there it is: the dreaded &#8220;think outside the box&#8221; telling you to create the next Google or Facebook and live the startup entrepreneur&#8217;s dream (this is actually an oversimplification, but I hope you can still see my point here).</p>
<p>So, have you noticed something terribly wrong so far? If not, please read the description of the original meaning of that expression again. It seems that almost all the tech guys are pointing to the same direction when they talk about &#8220;thinking outside the box&#8221;. Not just to the same direction, but many times also to the very same spot! Now how&#8217;s that for challenging your beliefs, getting out of the comfort zone and exploring new ideas and possibilities? How come can you talk about shifting the way you question the world and then fall to the same exact spot as everybody else who tries to do the same?</p>
<p>Eager to stand out from the crowd and expand their ideas, people move their thoughts out of their box, just to let them fall in another one. This &#8220;second box&#8221;, as it might be called, is just a trap state where you can easily fall if you don&#8217;t see it. But hey, nobody said it&#8217;d be easy to truly get out of that hated box! The whole purpose was to do the near-impossible and change the status quo, so it shouldn&#8217;t be too much of a surprise if there are some traps and pitfalls on the way.</p>
<p>So how can that trap be avoided so that we can truly achieve great paradigm shifts and new discoveries? Unfortunately, there is no right answer for it, at least that I&#8217;m aware of. If I new it, I&#8217;m sure I&#8217;d be a much better and happier person by now. However, I&#8217;m sure it wouldn&#8217;t hurt to stop thinking so much about creating new startups and launching new technological products, and start trying to push creativity and imagination to come up with amazing new ideas. Not million-dollar business ideas (although those might also be welcome), but simply crazy ideas that at the end of the day will have an impact on you and on the world around you.</p>
<p>How many tech folks would consider travelling to a country not knowing a single word of their language just to help children with family problems? How many with the right skills would work with a young NGO to develop their website without asking anything in return? And how many would spend hours every week watching recorded lectures online from the world&#8217;s best universities and doing their exercises?</p>
<p>As every other guy will tell you, it&#8217;s still nice to look for entrepreneurship adventures, though (as I&#8217;ve also done and intend to keep doing). Just keep in mind that it&#8217;s just one pattern you can follow when you&#8217;re trying to think different and broaden your scope of the world, and that there is an endless list of other patterns, some of them better, others worse. Just don&#8217;t fall in the trap of immediately going for that &#8220;second box&#8221; if that wasn&#8217;t your initial goal.</p>
<p>If you dodge that trap, there is a whole world of new adventures waiting for you. A scary world, way different from your usual assumptions and mostly unknown  And still, powerful enough to amaze you and to give you new insights and tools for critical thinking, problem solving and self-fulfilment.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=mmGuwZjYswI:5Dg0hXd8k60:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=mmGuwZjYswI:5Dg0hXd8k60:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=mmGuwZjYswI:5Dg0hXd8k60:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=mmGuwZjYswI:5Dg0hXd8k60:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/mmGuwZjYswI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/avoiding-the-think-outside-the-box-trap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/avoiding-the-think-outside-the-box-trap/</feedburner:origLink></item>
		<item>
		<title>How to keep your blog’s visitors flow without even trying (bonus: many unrelated stuff)</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/5b_6_r1bkUU/</link>
		<comments>http://ricardolopes.net/blog/how-to-keep-your-blogs-visitors-flow-without-even-trying-bonus-many-unrelated-stuff/#comments</comments>
		<pubDate>Wed, 20 Jun 2012 11:28:17 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=345</guid>
		<description><![CDATA[Those who explore this blog a little further than the first post that came up in the Google search may notice that I haven't posted any new content since the end of January. That's almost five months ago! It isn't because I lost interest or run out of content to share. It's just because recently my Master's degree has pulled a lot of time and effort from me and I just hadn't got the chance to update my blog as I'd want to. I would, occasionally, check its visitors statistics, and what I found time after time (including now) was that, despite the lack of new content, visitor rates just wouldn't decrease. In fact, I believe they're now higher than by the time I shared my latest post back in January.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-full wp-image-351" title="How to keep your blog’s visitors flow without even trying (bonus: many unrelated stuff)" src="http://ricardolopes.net/blog/wp-content/uploads/2012/06/analytics.png" alt="" width="450" height="300" /></p>
<p>Those who explore this blog a little further than the first post that came up in the Google search may notice that I haven&#8217;t posted any new content since the end of January. That&#8217;s almost five months ago! It isn&#8217;t because I lost interest or run out of content to share. It&#8217;s just because recently my Master&#8217;s degree has pulled a lot of time and effort from me and I just hadn&#8217;t got the chance to update my blog as I&#8217;d want to. I would, occasionally, check its visitors statistics, and what I found time after time (including now) was that, despite the lack of new content, visitor rates just wouldn&#8217;t decrease. In fact, I believe they&#8217;re now higher than by the time I shared my latest post back in January.</p>
<p>But how is it really possible to sustain or even increase a blog&#8217;s visitor flow by simply not posting any new content? Isn&#8217;t that a somewhat counter-intuitive move that should stop your blog&#8217;s momentum and drive it to oblivion?</p>
<p>It probably is. But, as you may have read in many other places, it all comes down to one thing: timeless content.</p>
<p>Provide valuable content, and people will read it and share it. You can put a lot of effort in techniques such as SEO or social engagement, but at the end of the day if your content is meaningless it won&#8217;t help people and they won&#8217;t come back. And if you want to rely on your content to sustain visitors flow even when you&#8217;re away for a long time, then it must be timeless. If I kept posting specific news of things that only mattered in that week (like I did, sometimes) this blog would be dead by now, because that&#8217;s very momentary content that, as useful and valuable as it might be, will fade away very quickly and will need new content after that to keep the blog&#8217;s momentum. If, however, you post content that will still be valuable months (or even years) after, then new visitors will still come by even after a long time.</p>
<p>So does all this theory match with the real world?</p>
<p>Absolutely. My most successful content is the 2-part post about the impact of Facebook in society (<a title="A influência do Facebook na sociedade (parte 1)" href="http://ricardolopes.net/blog/a-influencia-do-facebook-na-sociedade-parte-1/">part 1</a> and <a title="A influência do Facebook na sociedade (parte 2)" href="http://ricardolopes.net/blog/a-influencia-do-facebook-na-sociedade-parte-2/">part 2</a>, although you&#8217;ll need a translator if you don&#8217;t understand Portuguese). This isn&#8217;t any piece of news that would fade away quickly (in fact, it was posted more than a year ago and still gets more traffic than any other post). This was a careful analysis with many interesting insights and conclusions, valuable not only when it was posted, but also now and certainly in the future. Other great hits are my <a title="Developing for the Semantic Web with Ruby on Rails, the 2012 guide" href="http://ricardolopes.net/blog/developing-for-the-semantic-web-with-ruby-on-rails-the-2012-guide/">updated guide for the Semantic Web in Ruby on Rails</a> (which might be very valuable for many years, as the best blog posts I could find before writing that one were from around 2008), my posts about fine-tuning Fedora 15 (both the <a title="My perfect Linux setup with Fedora 15 Lovelock" href="http://ricardolopes.net/blog/my-perfect-linux-setup-with-fedora-15-lovelock/">initial post</a> and the <a title="Tutorial: My perfect Linux setup with Fedora 15 Lovelock" href="http://ricardolopes.net/blog/tutorial-my-perfect-linux-setup-with-fedora-15-lovelock/">tutorial</a>, timeless because they present a very pleasant alternative to other OSs, although new versions of Fedora are coming up) and also my <a title="My experience on free web hosts" href="http://ricardolopes.net/blog/my-experience-on-free-web-hosts/">detailed experience with free web hosts</a> (it could probably benefit from an update, but is still valuable content today).</p>
<p>To sum up, if you want to be heard don&#8217;t just talk about the latest trend: create content that, even after months or years, still offers readers valuable information. If you do it, you&#8217;ll probably be able to slow down when other matters urge and still don&#8217;t feel any loss of momentum. This is, of course, a simple opinion of a casual blogger, based on low numbers statistics: my blog&#8217;s daily visitors are around just 20~30, which is great for a personal blog with 20 published posts but still too little to draw more conclusive results.</p>
<h3>Bonus: many unrelated stuff</h3>
<p>I&#8217;ve been away from my blog but I&#8217;ve still been publishing interesting content through social media. If you want to receive the latest updates, you can follow me in Twitter: <a title="@ricardoplopes" href="https://twitter.com/ricardoplopes" target="_blank">@ricardoplopes</a>. Here are some of the best links I&#8217;ve been sharing, just to make up from all the time I&#8217;ve spent without posting on this blog:</p>
<p><a title="The Sex Scandal Technique: How to Achieve Any Goal, Instantly (and Party with Tim Ferriss)" href="http://www.scotthyoung.com/blog/2012/02/06/sex-scandal-technique/" target="_blank">The Sex Scandal Technique: How to Achieve Any Goal, Instantly (and Party with Tim Ferriss)</a></p>
<p><a title="Windows Desktop UI Concept" href="http://www.theverge.com/2012/2/24/2822891/windows-desktop-ui-concept" target="_blank">Windows Desktop UI Concept</a></p>
<p><a title="Why We Have to Go Back to a 40-Hour Work Week to Keep Our Sanity" href="http://www.alternet.org/visions/154518/why_we_have_to_go_back_to_a_40-hour_work_week_to_keep_our_sanity" target="_blank">Why We Have to Go Back to a 40-Hour Work Week to Keep Our Sanity</a></p>
<p><a title="Jennifer Pahlka: Coding a better government" href="http://www.ted.com/talks/jennifer_pahlka_coding_a_better_government.html?source=twitter#.T2u8VTGKcOR.twitter" target="_blank">Jennifer Pahlka: Coding a better government (TED talk)</a></p>
<p><a title="How Linux is Built" href="http://www.youtube.com/watch?v=yVpbFMhOAwE" target="_blank">How Linux is Built (Youtube video)</a></p>
<p><a title="15 Things People Absolutely Hate About Your Website" href="http://blog.hubspot.com/blog/tabid/6307/bid/32307/15-Things-People-Absolutely-Hate-About-Your-Website.aspx" target="_blank">15 Things People Absolutely Hate About Your Website</a></p>
<p><a title="Sheryl Sandberg’s Inspiring Speech At Harvard Business School" href="http://poetsandquants.com/2012/05/24/sheryl-sandbergs-class-day-speech-at-harvard-business-school/" target="_blank">Sheryl Sandberg’s Inspiring Speech At Harvard Business School</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=5b_6_r1bkUU:9rqzFoSOl5w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=5b_6_r1bkUU:9rqzFoSOl5w:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=5b_6_r1bkUU:9rqzFoSOl5w:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=5b_6_r1bkUU:9rqzFoSOl5w:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/5b_6_r1bkUU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/how-to-keep-your-blogs-visitors-flow-without-even-trying-bonus-many-unrelated-stuff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/how-to-keep-your-blogs-visitors-flow-without-even-trying-bonus-many-unrelated-stuff/</feedburner:origLink></item>
		<item>
		<title>Developing for the Semantic Web with Ruby on Rails, the 2012 guide</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/z4RUB90jEEg/</link>
		<comments>http://ricardolopes.net/blog/developing-for-the-semantic-web-with-ruby-on-rails-the-2012-guide/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 10:47:58 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=317</guid>
		<description><![CDATA[The Semantic Web, an Internet of of connected knowledge, meaningful data and machine-readable information, is seen as many as the future of the Internet. Envisioned by Tim Berners-Lee, its purpose is to transition from a web of unstructured documents into a "web of data", in which we could browse and search for data not only based on syntactic  keywords, but also based on semantic meaning. However, it's awkward to realise that most of the work around the Semantic Web is done in Java, and many technologies with great future potential, such as Ruby on Rails, are seemingly forgotten.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-full wp-image-341" title="Semantic Web and Ruby on Rails" src="http://ricardolopes.net/blog/wp-content/uploads/2012/01/code.png" alt="" width="450" height="300" /></p>
<p>The Semantic Web, an Internet of of connected knowledge, meaningful data and machine-readable information, is seen as many as the future of the Internet. Envisioned by Tim Berners-Lee, its purpose is to transition from a web of unstructured documents into a &#8220;web of data&#8221;, in which we could browse and search for data not only based on syntactic  keywords, but also based on semantic meaning. However, it&#8217;s awkward to realise that most of the work around the Semantic Web is done in Java, and many technologies with great future potential, such as Ruby on Rails, are seemingly forgotten.</p>
<p>Having developed a Semantic Web project using that Ruby framework, I found very scattered information and tiny bits of contributions, many already obsolete. It&#8217;s almost shocking to see so few and old information around such a modern framework with such a vibrant and participating community developing for it. As such, having collected many of those bits of information, I believe it&#8217;s time to put them together and finally create an updated guide to the development for the Semantic Web with Ruby on Rails.</p>
<p>Disclaimer: This is not a step-by-step tutorial, so don&#8217;t expect to know how to develop a Semantic Web application in Ruby on Rails as soon as you finish reading this. The main goal of this article is to save hours of research and show the best and updated tools available. Also, the code examples aren&#8217;t necessarily complete or 100% correct, as their goal is to explain something, and not simply being copy+pasted to a tutorial application.</p>
<h3>Building the ontology and fetching relevant data</h3>
<p>If you&#8217;re going to develop a website using the concept of the Semantic Web, one of the first things you&#8217;ll need is an ontology. You may find many useful ontologies capable of describing the data your web application is going to use (the <a title="Swoogle" href="http://swoogle.umbc.edu/" target="_blank">Swoogle</a> project might be a good place to start your search), but you might as well have to develop your own. If you&#8217;re building your own ontology, I recommend using <a title="Protégé" href="http://protege.stanford.edu/" target="_blank">Protégé</a> for it.</p>
<p>The development of the ontology is out of the scope of this article, as it has no relation to the platform used to develop the web application itself, so if you don&#8217;t know how to start I&#8217;d recommend reading some simpler guides first (here&#8217;s a <a href="http://protege.stanford.edu/publications/ontology_development/ontology101.pdf" target="_blank">short</a> <a href="http://www.w3.org/TR/rdf-primer/" target="_blank">collection</a> <a href="http://www.w3.org/RDF/FAQ" target="_blank">of</a> <a href="http://psb.stanford.edu/psb06/presentations/swls-tutorial-slides.ppt" target="_blank">links</a> <a href="http://webcache.googleusercontent.com/search?q=cache:5-Tx99Kz6aEJ:pubs.cs.uct.ac.za/archive/00000257/01/technical_report.pdf" target="_blank">that</a> <a href="http://www.slideshare.net/fadirra/semantic-web-intro-040411" target="_blank">might</a> <a href="http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/resources/ProtegeOWLTutorialP4_v1_1.pdf" target="_blank">help</a> you with that).</p>
<p>After you have the right ontology to power your web application, it&#8217;s time to to fetch the data.Unless you&#8217;re aiming for a very limited and controled set of elements, you&#8217;ll probably want to develop a screen scraper or use an external API. Using the Ruby gem <a href="http://nokogiri.org/" target="_blank">Nokogiri</a>, you can easily browse and fetch the information you want from any useful website. Here is a simple example of a screen scraper for your application:</p>
<blockquote>
<pre>items = []
doc = Nokogiri::HTML(open(website_url))
doc.css(".item").each do |item|
  link = item.at_css(".info h4 a")[:href]
  item_doc = Nokogiri::HTML(open(link))
  name = item_doc.at_css("h2#title a").content.to_s
  description = item_doc.at_css("p.description").content.to_s
  items &lt;&lt; ["name" =&gt; name, "description" =&gt; description]
end
return items</pre>
</blockquote>
<p>As you see, this little example simply iterates through all the elements of the website of the class &#8220;item&#8221;, browses to their specific page and then extracts the name and description. This technique may have its flaws, like being vulnerable to major website redesigns, but it&#8217;s also a very simple and rapid way of extracting large quantities of information.</p>
<p>Ideally, you&#8217;ll want to save your new information in XML files or in a database, so you can use them later without having to run the fetcher again. This, of course, is just a temporary location, ready to change as soon as the Semantic Web enters the game.</p>
<h3>Putting the Semantic Web in Ruby on Rails</h3>
<p>It&#8217;s easy enough to develop for the Semantic Web in Java, as you can easily find a large set of tools to help you in every stage of the development. In Ruby it&#8217;s not that easy at all. After some research you&#8217;ll probably come across two Ruby gems that handle the semantic graph: <a href="http://activerdf.org/" target="_blank">ActiveRDF</a> and <a href="http://rdf.rubyforge.org/" target="_blank">RDF.rb</a>. However, ActiveRDF is now outdated and it doesn&#8217;t seem to work as it should in Rails 3. So RDF.rb it is, then.</p>
<p>Now that we have the tool to manage the semantic data, we should save our raw data in a semantic graph. We&#8217;ll use the N-Triples format for that. First you&#8217;ll need to define all the semantic relations of your data:</p>
<blockquote>
<pre>include RDF
MyOnt = RDF::Vocabulary.new("http://ricardolopes.net/myont.owl#")
graph = RDF::Graph.new
items.each do |item|
  graph &lt;&lt; [item["uri"], RDF.type, MyOnt.Item]
  graph &lt;&lt; [item["uri"], MyOnt.hasName, item["name"]]
end
return graph</pre>
</blockquote>
<p>This example assumes that you have an ontology with the URI http://ricardolopes.net/myont.owl, which has at least a class Item and a property hasName. This example, as all others in this guide, is far from complete, as it is just used for quick demonstrations. One thing it doesn&#8217;t show is how to create the unique URI for each item. That is up to you to decide, as every project is different. However, when you have a unique identifier for every item, you probably should do something like item["uri"] = MyOnt[unique_identifier]. Beware, though, that if you use MyOnt to store individuals, you&#8217;ll no longer have an empty ontology serving only as a schema. You&#8217;ll probably find it more useful to use an URI for the ontology schema and another for the individuals (MyOnt and Data, for instance).</p>
<p>After that step, you&#8217;ll then need to store the information of the semantic graph you created in an N-Triples file:</p>
<blockquote>
<pre>RDF::Writer.open("data/graph.nt") do |writer|
  graph.each_statement do |stmt|
    writer &lt;&lt; stmt
  end
end</pre>
</blockquote>
<p>This is it. you should now have a complete N-Triples file with all your semantic information. Now that you have the semantic data, you may start using its full potential.</p>
<h3>Querying the graph</h3>
<p>If you&#8217;re not new to the Semantic Web development you&#8217;re probably used to SPARQL when it comes to querying for information. In Ruby on Rails you&#8217;ll find it possible to do such queries using pure Ruby, thanks to the RDF.rb gem. Imagine you have the following information:</p>
<blockquote>
<pre>&lt;http://ricardolopes.net/data/2011/01/10/ricardolopes&gt;
&lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;
&lt;http://ricardolopes.net/myont.owl#Developer&gt; .

&lt;http://ricardolopes.net/data/2011/01/10/ricardolopes&gt;
&lt;http://ricardolopes.net/myont.owl#hasName&gt;
"Ricardo Lopes" .

&lt;http://ricardolopes.net/data/2012/01/30/semanticwebarticle&gt;
&lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;
&lt;http://ricardolopes.net/myont.owl#Article&gt; . 

&lt;http://ricardolopes.net/data/2012/01/30/semanticwebarticle&gt;
&lt;http://ricardolopes.net/myont.owl#hasName&gt;
"Semantic Web article" .

&lt;http://ricardolopes.net/data/2011/01/10/ricardolopes&gt;
&lt;http://ricardolopes.net/myont.owl#isAuthorOf&gt;
&lt;http://ricardolopes.net/data/2011/01/30/semanticwebarticle&gt; .</pre>
</blockquote>
<p>This means that we have an individual of the class Developer that has the name &#8220;Ricardo Lopes&#8221;, and an individual of the class Article that has the name &#8220;Semantic Web article&#8221;. We also have a relation that states that the Developer &#8220;Ricardo Lopes&#8221; is the author of the Article &#8220;Semantic Web article&#8221;.</p>
<p>Imagine now that you&#8217;re showing the article &#8220;Semantic Web article&#8221; and want to show the name of its author. Using the RDF.rb gem, you could do it simply using Ruby:</p>
<blockquote>
<pre>article_name = "Semantic Web article"
...
graph.query([nil, MyOnt.hasName, article_name]) do |stmt1|
  # stmt1.subject now holds the URI of the article
  graph.query([nil, MyOnt.isAuthorOf, stmt1.subject]) do |stmt2|
    # stmt2.subject now holds the URI of the author
    graph.query([stmt2.subject, MyOnt.hasName, nil]) do |stmt3|
      # stmt3.object now holds the name of the author
      author_name = stmt3.object.inspect
    end
  end
end</pre>
</blockquote>
<p>This is equivalent to the SPARQL query:</p>
<blockquote>
<pre>PREFIX MyOnt: &lt;http://ricardolopes.net/myont.owl#&gt;
SELECT ?author_name
WHERE {
  ?article MyOnt:hasName "Semantic Web article" .
  ?author MyOnt:isAuthorOf ?article .
  ?author MyOnt:hasName ?author_name .
}</pre>
</blockquote>
<p>If you still prefer to use SPARQL instead of pure Ruby, there&#8217;s a gem for that: <a href="http://sparql.rubyforge.org/grammar/" target="_blank">SPARQL-Grammar</a>. Beware, though, that, as I&#8217;ve said before, the Semantic Web in Ruby has still a long road to run to catch up with languages such as Java. The work to bring SPARQL to Ruby is still very incomplete and there are many things you can&#8217;t do (sometimes I couldn&#8217;t even define prefixes, which resulted in some very ugly queries). If you want to give that gem a try, your code should be somewhat similar to this:</p>
<blockquote>
<pre>queryable = RDF::Repository.load("data/graph.nt")
authors = []
query = # the SPARQL query above
sse = SPARQL::Grammar.parse(query)
results = sse.execute(queryable)
results.each do |result|
  author = result[:author_name].to_s
  authors &lt;&lt; author unless authors.index(author)
end</pre>
</blockquote>
<p>You now have the tools you need to make full use of the semantic information of your application. With many Semantic Web applications, this is all you need to know. However, there&#8217;s more we can do. If you&#8217;re developing in Ruby on Rails, chances are you&#8217;re intending to put your web application on the cloud. And there&#8217;s also a good possibility that you may want to change some of your data in the future. That&#8217;s when a simple file is no longer an option to store your data and you must upgrade it to a Triple Store.</p>
<h3>Leveling up to a Triple Store</h3>
<p>A Triple Store stands for an N-Triples file as a database stands for an XML file (sort of). So if you&#8217;ll ever need to update the semantic information of your web application, that&#8217;s what you should use.</p>
<p>There are plenty of Triple Stores in Java for you to run locally or in your server, like <a href="http://incubator.apache.org/jena/" target="_blank">Jena</a>, <a href="http://www.franz.com/agraph/allegrograph/" target="_blank">AllegroGraph</a>, <a href="http://www.aduna-software.com/technology/sesame" target="_blank">Sesame</a> and many more. There are interfaces that let your Ruby application interact with those Java Triple Stores, so if your server supports Java or localhost is as far as you&#8217;ll get, them one of those might be the right solution for you.</p>
<p>However, if you&#8217;re developing the webapp in Ruby on Rails, chances are you want it online and your server might not support other languages. If that&#8217;s the case, then you need to develop an interface that creates an abstraction in your server&#8217;s database so it acts as a Triple Store. Such an abstraction would probably use a single 3-column table (for subject, predicate and object) and would return a set of triples for every query received. The hardest step should be converting from SPARQL or pure-Ruby RDF.rb queries into the proper SQL query.</p>
<p>Fortunately, if you use PostgreSQL and/or SQLite, there&#8217;s an amazing work done that integrates those databases with RDF.rb data. It&#8217;s the Ruby gem <a href="https://github.com/bhuga/rdf-do" target="_blank">RDF-do</a>, and it may save you days of work and many frustrations.</p>
<h3>To sum up</h3>
<p>Once one grasps the power of the Semantic Web, it&#8217;s not easy to ignore its advantages and future potential. However, as you can now see, the work around it in Ruby feels scattered and incomplete. Because it was so difficult to come across these scattered pieces of great work and because of what can be achieved when they are all connected, there was a great need of putting all this knowledge together. Yes, there are other similar guides online, but many are so outdated that may put you on the wrong track.</p>
<p>As I&#8217;ve pointed out before, this wasn&#8217;t intended to be a step-by-step tutorial for you to copy+paste all the code you needed to develop a basic application. If this article is so long as it is, imagine how it would be with all that information. It&#8217;s more like an updated guide you can use to save hours of research and frustration.</p>
<p>As I&#8217;m fairly new in this area, there are probably many mistakes in this article. Still, I hope that the bundled information can make up for that.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=z4RUB90jEEg:82CPEqQMBOE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=z4RUB90jEEg:82CPEqQMBOE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=z4RUB90jEEg:82CPEqQMBOE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=z4RUB90jEEg:82CPEqQMBOE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/z4RUB90jEEg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/developing-for-the-semantic-web-with-ruby-on-rails-the-2012-guide/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/developing-for-the-semantic-web-with-ruby-on-rails-the-2012-guide/</feedburner:origLink></item>
		<item>
		<title>Resumo do Sapo Codebits V</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/hOEqMss4FsY/</link>
		<comments>http://ricardolopes.net/blog/resumo-do-sapo-codebits-v/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 02:06:22 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[Português]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=307</guid>
		<description><![CDATA[Decorreu, no Pavilhão Atlântico em Lisboa, de 10 a 12 de Novembro, o evento Sapo Codebits V, a quinta edição de um dos mais mediáticos eventos da área das tecnologias e programação de Portugal. Durante três dias, os 800 seleccionados para o evento tiveram a oportunidade de assistir a talks, ver as últimas inovações do mercado, participar em concursos (incluindo o de 48 horas seguidas de programação), conhecer novos contactos e divertir-se. Este é o relato de um dos sortudos que conseguiram entrar e viver o ambiente desafiador e irreverente do Codebits.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-full wp-image-310" title="Codebits V" src="http://ricardolopes.net/blog/wp-content/uploads/2011/11/php3zBdWFPM.jpg" alt="" width="450"" /></p>
<p>Decorreu, no Pavilhão Atlântico em Lisboa, de 10 a 12 de Novembro, o evento <a href="https://codebits.eu/">Sapo Codebits V</a>, a quinta edição de um dos mais mediáticos eventos da área das tecnologias e programação de Portugal. Durante três dias, os 800 seleccionados para o evento tiveram a oportunidade de assistir a talks, ver as últimas inovações do mercado, participar em concursos (incluindo o de 48 horas seguidas de programação), conhecer novos contactos e divertir-se. Este é o relato de um dos sortudos que conseguiram entrar e viver o ambiente desafiador e irreverente do Codebits.</p>
<p>Tal como foi dito na palestra de abertura do evento, a crise ainda não chegou ao Codebits. Tal pode-se constatar facilmente pelo valor do kit de brindes oferecido à entrada (que inclui, entre outras coisas, mochila para portátil, t-shirt, <em>headphones</em> grandes, um ebook da O&#8217;Reilly, componentes de Arduino, entre muitos outros), pela qualidade e quantidade dos recursos disponibilizados, pelos prémios oferecidos (que por vezes as equipas vencedoras nem eram capazes de os carregar todos de uma vez) ou, simplesmente, por tudo isto não ter qualquer custo para os participantes, que não pagam participação, alojamento, alimentação nem qualquer outra despesa. O facto das empresas envolvidas apostarem tanto neste evento demonstra bem a importância que tem e o valor que elas vêm nos seus participantes.</p>
<p>No geral, acho indiscutível que se considere a edição do Codebits deste ano um sucesso. Dentro daquele espaço fechado, rodeado de programadores e especialistas em outras áreas do género, com excelentes condições de trabalho, num clima muito informal e com as apresentações inspiradoras que foram dadas, é impossível não ser contagiado pelo espírito irreverente e desafiante que paira por todo o evento. E é nesse espírito que realmente se pode desfrutar dos grandes trunfos que o Codebits tem para oferecer.</p>
<p>Um desses grandes trunfos são as excelentes talks, onde se pode aprender com os especialistas coisas que pelo menos como estudante sei que não se aprende num curso superior. Decorriam sempre quatro talks em simultâneo (uma no palco principal e as outras em cada um dos três palcos secundários), e cabia a cada um escolher a qual dessas talks assistir (ou não escolher nenhuma dessa hora), consoante os seus objectivos e interesses.</p>
<p>O maior trunfo foi, sem dúvida, o concurso de 48 horas seguidas de programação, uma verdadeira <em>hackathon</em> suportada por muito Red Bull, com o objectivo de criar um projecto sobre o que quiséssemos, com quem quiséssemos, da forma que quiséssemos (desde que a implementação decorresse exclusivamente durante as 48 horas do concurso). Os projectos iriam no final a palco para, num <em>pitch</em> de apenas 90 segundos, o grupo convencer os restantes participantes que aquele era o melhor projecto do evento. Durante essas 48 horas cada um fazia a gestão do tempo à sua maneira para poder conciliar horas de sono, presenças em talks, participação nas várias actividades a decorrer e avançar com o projecto.</p>
<p>Podia-se ver em exposição produtos inovadores como balões telecomandados (que davam a ilusão de ser peixes a nadar no ar), uma camisola que mede o ritmo cardíaco ou uma tela gigante de panoramas com navegação controlada remotamente por movimentos dos braços. Havia ainda outras actividades em paralelo, como a procura por badges relativas ao evento (o fenómeno de <em>gamification</em> a estender-se com sucesso ao Codebits), os jogos de XBox 360 e da PlayStation presente num telemóvel da Sony, a compra de livros da O&#8217;Reilly, a montagem de Lego Mindstorms ou até a experimentação dos terríveis Nuclear Tacos, a comida mais picante que alguém é capaz de provar.</p>
<p>Durante o tempo que durou o evento deu para sentir o stress de desenvolver um projecto num espaço de tempo tão apertado, o alívio de ver o projecto concluído com sucesso, o convívio que houve não só entre participantes como também com membros do staff, que até convidaram para dançar, o sofrimento de comer um Nuclear Taco e o sono de dormir apenas 3 horas por noite. Deu ainda tempo para assistir a talks muito interessantes (no final tive pena de tão ter assistido a mais), visitar as exposições das inovações da empresas presentes, ganhar várias badges e ser entrevistado para a comunicação social.</p>
<p>O projecto em que participei para o concurso das 48 horas baseava-se na leitura da cara de uma pessoa, através da webcam, para, através dos dados recolhidos, extrair detalhes como o sexo da pessoa, o sorriso, etc. e usar esses detalhes para criar automaticamente um avatar com eles (o adorado bot do Codebits). Alguns dos projectos premiados incluíam programação baseada em peças de Lego, uma aplicação de realidade aumentada surpreendentemente útil, uma base de dados de fotografias de pessoas que seleccionava as fotografias que estavam de acordo com os detalhes especificados por voz, entre outros.</p>
<p>Apesar da euforia que a apresentação do projecto em que participei provocou no público, acabámos por não ficar em nenhum dos 10 lugares premiados. Ainda assim, ficou a ideia que não ficámos muito longe. Mas mesmo sem prémio saí do do Codebits com todos os brindes que me foram dados à entrada, mais todo o conhecimento e experiência que ganhei entretanto. São conhecimento e experiência que não ganho no meu curso e, só por isso, este desafio foi, para mim, um grande sucesso. Aliás, provavelmente a lição mais importante que aprendi com esta participação foi que o sistema de ensino, como o conhecemos, não tem qualquer significado, e que não é com exames, trabalhos fixos e ter toda a gente a aprender o mesmo que se consegue dar uma formação decente. Todos somos diferentes, com diferentes potenciais a explorar, e é com liberdade e criatividade que podemos explorar os nossos limites e procurar conhecer cada vez mais. Mas este desabafo seria tema para preencher um post completo.</p>
<p>Após o grande sucesso que foi o Sapo Codebits V, conto fazer tudo para estar presente no na próxima edição, e recomendo a todos os interessados nesta área que apareçam também. É uma experiência que, definitivamente, não se deve perder.</p>
<p><b>Update:</b> Entretanto surgiu um vídeo sobre o que foi o Codebits que achei muito interessante. Nesse vídeo aparecem as apresentações vencedoras (a melhor da votação do público e a melhor da votação do júri), o recinto, os Nuclear Tacos, as apresentações principais, entre outros. Para todos os que o quiserem ver, aqui fica:</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/IUN0DxHU8i8" frameborder="0" allowfullscreen></iframe></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=hOEqMss4FsY:RDDRK86EnuY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=hOEqMss4FsY:RDDRK86EnuY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=hOEqMss4FsY:RDDRK86EnuY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=hOEqMss4FsY:RDDRK86EnuY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/hOEqMss4FsY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/resumo-do-sapo-codebits-v/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/resumo-do-sapo-codebits-v/</feedburner:origLink></item>
		<item>
		<title>Improving my blog and website, part 2: the new theme</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/0Rv1Jz4WVfs/</link>
		<comments>http://ricardolopes.net/blog/improving-my-blog-and-website-part-2-the-new-theme/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 16:07:38 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[me]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=291</guid>
		<description><![CDATA[Currently I have been working on my blog and website to improve its design and user experience, as I said in my latest post. Yesterday I improved the RSS feed, and today I'm launching a completely redesigned theme. This new theme is now in use in both the blog and the website.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-full wp-image-297" title="Theme" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/theme.png" alt="" width="450" height="252" /></p>
<p>Currently I have been working on my blog and website to improve its design and user experience, as I said in <a title="Improving my blog and website, part 1: the RSS feed" href="http://ricardolopes.net/blog/improving-my-blog-and-website-part-1-the-rss-feed/">my latest post</a>. Yesterday I improved the RSS feed, and today I&#8217;m launching a completely redesigned theme. This new theme is now in use in both the blog and the website.</p>
<p>The main reason I decided to change the theme is because the old one wasn&#8217;t really what I&#8217;d call modern and the pages seemed a little bit too crowded. Because of those flaws, my goal for this redesign was to create a modern-looking theme focused on cleanness, good looks and good for reading. The result is a theme using white, black, grey and dark red instead of the old brown, white, green and yellow, a bigger and seriffed font, less clutter and a more consistent look. Some elements like the search bar and the tag cloud are now hidden for the sake of cleanness, but they all can easily be show simply by clicking the respective names on the sidebar at the right.</p>
<p>With the website redesign also came a change in content. With the old design, the website was showing an &#8220;online business card&#8221; displaying a short bio that could be flipped on a mouse click to display relevant links. With the new design, the website has a more traditional look, without any card flipping tricks (and also a better and longer bio).</p>
<p>Another improvement of the website is the addition of a mobile version. It&#8217;s not very different from the desktop version, but it makes user experience in a mobile device a little better. If you&#8217;re browsing my website in your computer and want to see it in your mobile phone, just use the QR code on the right (or type <a href="http://ricardolopes.net">ricardolopes.net</a>, of course). This mobile version is just for the website. If you browse the blog with your phone you still see the default desktop version. If you prefer a more native version, you can easily <a href="http://feeds.feedburner.com/ricardolopes/blog" target="_blank">subscribe</a> this blog and have its posts displayed in an RSS reader for your phone.</p>
<p>This was the second part of the upgrades I&#8217;m doing to my blog and website. I&#8217;m still planning other improvements, but they&#8217;re probably smaller and might not deserve a new post about it. I hope you like this new design and feel more comfortable when browsing and reading my blog and webpage.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=0Rv1Jz4WVfs:88i1dWnOEBI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=0Rv1Jz4WVfs:88i1dWnOEBI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=0Rv1Jz4WVfs:88i1dWnOEBI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=0Rv1Jz4WVfs:88i1dWnOEBI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/0Rv1Jz4WVfs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/improving-my-blog-and-website-part-2-the-new-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/improving-my-blog-and-website-part-2-the-new-theme/</feedburner:origLink></item>
		<item>
		<title>Improving my blog and website, part 1: the RSS feed</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/97Lv79K8iDk/</link>
		<comments>http://ricardolopes.net/blog/improving-my-blog-and-website-part-1-the-rss-feed/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 17:10:42 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[me]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=279</guid>
		<description><![CDATA[Currently I have been working on my blog and website to improve its design and user experience. The new planned features include a new RSS feed, a completely redesigned theme, a mobile website and more. Today I'm launching the new RSS feed, a simple improvement over the old one in user experience.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-full wp-image-283" title="RSS feed" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/rss.jpg" alt="" width="450" /></p>
<p>Currently I have been working on my blog and website to improve its design and user experience. The new planned features include a new RSS feed, a completely redesigned theme, a mobile website and more. Today I&#8217;m launching the new RSS feed, a simple improvement over the old one in user experience.</p>
<p>For those of you who don&#8217;t know what an RSS feed is, it&#8217;s the simplest way of subscribing to a blog. Just like when you &#8220;like&#8221; a Facebook page or &#8220;follow&#8221; someone on Twitter and start getting their updates in real time, you can subscribe a blog and get all its updates as soon as they&#8217;re posted. When you subscribe the blogs you read, you no longer have to browse for new posts to find new information: that information comes automatically to you. You won&#8217;t even need to visit the blog&#8217;s page to read the latest posts: you can read them directly through the subscribed feed. To subscribe to RSS feeds, you&#8217;ll need an RSS reader, such as <a href="http://www.google.com/reader" target="_blank">Google Reader</a>. If you follow some blogs and didn&#8217;t know about the power of RSS, believe me, it&#8217;s a true time saver.</p>
<p>The big improvement in the blog&#8217;s RSS feed  is the migration to FeedBurner. Before this, if you clicked the subscribe link, you probably faced a frightening raw XML file with no clue of what to do. Some browsers like Firefox can render an RSS feed for you, but others, such as Google Chrome, will display the raw XML file. Now, with FeedBurner, when you click the subscribe link, the feed is always rendered for you to read the blog&#8217;s posts, among with other features such as a simple tool to subscribe that feed using your favourite RSS reader. This makes blog subscription much cleaner, simpler and less frightening, specially to those unfamiliar with RSS. Also, FeedBurner shows me statistics like how many people have subscribed, which posts have they read and so on ;).</p>
<p>This is just a small improvement, but is still a nice one. If you find the contents of this blog interesting, it&#8217;s now a good time to hit that subscribe button (or simply click <a href="http://feeds.feedburner.com/ricardolopes/blog" target="_blank">here</a>).</p>
<p>This is just the first part of the upgrades I&#8217;m doing to my blog and my website. The next part is coming soon, with a full redesign to both the blog and the website. Stay tuned. If you subscribed, you&#8217;ll know as soon as it happens ;).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=97Lv79K8iDk:SrW9uiHSTrY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=97Lv79K8iDk:SrW9uiHSTrY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=97Lv79K8iDk:SrW9uiHSTrY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=97Lv79K8iDk:SrW9uiHSTrY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/97Lv79K8iDk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/improving-my-blog-and-website-part-1-the-rss-feed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/improving-my-blog-and-website-part-1-the-rss-feed/</feedburner:origLink></item>
		<item>
		<title>Tutorial: My perfect Linux setup with Fedora 15 Lovelock</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/UiWNdDv68vU/</link>
		<comments>http://ricardolopes.net/blog/tutorial-my-perfect-linux-setup-with-fedora-15-lovelock/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 19:21:35 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=256</guid>
		<description><![CDATA[In my previous post I talked about my Linux setup with the latest release of Fedora and why it was so great. Like I promised, I am now doing a tutorial/walkthrough to show you how to get the best out of Fedora 15 and overcome the issues I found. If you didn't read my post about Fedora 15, I strongly recommend it, because it shows why this release of Fedora is worth installing, and because it suits as a great introduction to the contents of this post.introduction to the contents of this post.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img class="alignnone size-large wp-image-252" title="Fedora 15" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/05_final-1024x575.png" alt="" width="450" /></p>
<p>In <a title="My perfect Linux setup with Fedora 15 Lovelock" href="http://ricardolopes.net/blog/my-perfect-linux-setup-with-fedora-15-lovelock/">my previous post</a> I talked about my Linux setup with the latest release of Fedora and why it was so great. Like I promised, I am now doing a tutorial/walkthrough to show you how to get the best out of Fedora 15 and overcome the issues I found. If you didn&#8217;t read my post about Fedora 15, I strongly recommend it, because it shows why this release of Fedora is worth installing, and because it suits as a great introduction to the contents of this post.</p>
<p>This tutorial is aimed to be easily understood even to those with less knowledge in computers and Linux. If you&#8217;re a newbie, I hope you can follow these instructions with little problem. I also cut the use of the command line as much as possible, to prove that a modern Linux distro is as user friendly as Windows or Mac OS X.</p>
<h3>Installation and update</h3>
<p>You can get a free copy of the Fedora 15 installation disk image in the official webpage of the <a href="http://fedoraproject.org/en/get-fedora" target="_blank">project</a>. At the time of this writing you can download the latest stable release, 15 (codenamed Lovelock), and an alpha release, 16, both available for 32 and 64 bit processors and in every major window manager. I strongly recommend you to download the stable default desktop edition (GNOME-based Fedora 15 Lovelock), as it is the option used in this tutorial and, in my opinion, the best option available.</p>
<p>For those who are not experienced with the process of the installation of an operative system (OS), you now have to burn that disk image to a CD using a burning tool such as <a href="http://www.imgburn.com/" target="_blank">ImgBurn</a> for Windows, Disk Utility for Mac OS X (pre-installed) or <a href="http://projects.gnome.org/brasero/" target="_blank">Brasero</a> for Linux. If you don&#8217;t want to waste a CD or if your computer doesn&#8217;t have a CD reader, you can burn the disk image to a USB pen with <a href="http://unetbootin.sourceforge.net/" target="_blank">UNetbootin</a>.</p>
<p>The installation process should be straightforward, both from CD or USB. When the installation is done, it&#8217;s time to get all of Fedora&#8217;s updates. And that&#8217;s when I found my first obstacle. The update manager was returning an error and cancelling the process. My solution was simply to deselect the item called &#8220;Rawhide repo definitions&#8221;, as you can see in the image, and proceed:</p>
<p><a href="http://ricardolopes.net/blog/wp-content/uploads/2011/08/01_update_problem.png" target="_blank"><img class="alignnone size-medium wp-image-259" title="Update problem" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/01_update_problem-300x168.png" alt="" width="300" height="168" /></a></p>
<p>After updating and restarting your computer, you can now move on to the fun part.</p>
<h3>The applications you want</h3>
<p>As with many other Linux distros, Fedora ships with many pre-installed applications, such as the GNOME suite, which includes games, a music library, a burning tool, a photo gallery, an Instant Messenger and many others. If you don&#8217;t want some of those apps to clutter your perfect Linux setup, you can easily remove them using the Add/Remove Software tool. Just make sure you don&#8217;t remove any dependencies that might affect other parts of the desktop.</p>
<p>To install your favourite applications, simply use the Add/Remove Software tool again. Many Windows users believe installing applications on Linux is much harder than in Windows, but that is because they&#8217;re not aware of this tool, similar to the Apple App Store or the Android Market Place, that actually makes app management much easier.</p>
<p>There are still some applications that you won&#8217;t find using this tool and will have to download an installer file (an installation process similar to the one found in Windows) or, less commonly, download the source code and compile (typically indie software still under development maintained by a community of programmers working for free, so although it&#8217;s not a simple install, it&#8217;s still worth the cost). The installer file for Fedora is a RPM package. This is different from Ubuntu and Debian, that use DEB packages.</p>
<p>You can also install and remove applications using the Linux terminal, typing &#8220;sudo yum install nameoftheapp&#8221; for installation and &#8220;sudo yum remove nameoftheapp&#8221; for removal (both without the quotation marks). This is different from Ubuntu and Debian, that use apt-get and aptitude instead of yum.</p>
<p>Some of the applications I installed and recommend are Google Chrome (had to download RPM package from Google website), Dropbox (had to download RPM package from Dropbox website), Pidgin IM, Skype (had to download RPM package from Skype website), GIMP, the Libre Office suite and GNOME Tweak Tool. If you can&#8217;t install Skype because it&#8217;s returning an error, keep on reading for an alternative installation.</p>
<p>If you&#8217;re interested, some of the applications I removed were the games, Rythmbox (the music library), Shotwell (the photo gallery), Empathy IM (the instant messenger, far less powerful than Pidgin IM), Brasero (the burning tool, unneeded in a laptop with no CD drive), Sound Juicer (a ripping tool, also unneeded), among others.</p>
<p>After getting all the software you want, it&#8217;s time to tweak it to better suit your needs.</p>
<h3>Tweaking the applications</h3>
<p>Now that there is new software in your Fedora desktop, lets make it work better for you.</p>
<p>If you installed Google Chrome, you probably feel that its design feels out of place comparing with the consistent look of all the other applications. To make Chrome look like any other application, go to Preferences &gt; Personal Stuff &gt; Appearance and select the option &#8220;Use system title bar and borders&#8221;. Now apply <a href="https://chrome.google.com/webstore/detail/oojbknijfmdmidgcgchmojbildmbdamm" target="_blank">this theme</a> to make the overall appearance look like the native GNOME 3 theme (the same developer also has an extension to make the scroll bars look like the native GNOME 3 scroll bars, so you can also install it if you want). The picture shows the result, a much better looking Chrome:</p>
<p><a href="http://ricardolopes.net/blog/wp-content/uploads/2011/08/02_chrome_theme.png" target="_blank"><img class="alignnone size-medium wp-image-262" title="Chrome theme" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/02_chrome_theme-300x168.png" alt="" width="300" height="168" /></a></p>
<p>If you use Twitter, you will find that it mysteriously crashes in Chrome. To solve that problem, simply type &#8220;restorecon -R ~/.config&#8221; in the terminal (<a href="http://blog.randell.ph/2011/06/11/fix-for-aw-snap-while-loading-twitter-in-fedora-15-with-selinux-enforcing-enabled/" target="_blank">source</a>). This is one of the few occasions in this tutorial that uses the terminal. As you can see, it is being used once to patch a very specific bug, so it&#8217;s not what I&#8217;d call a frequent behaviour.</p>
<p>As I find Pidgin to be a much better instant messenger than the default Empathy, I replaced them. However, Empathy had a deep integration with the OS, letting the user view the entire conversation and even reply when a message was received. This feature is brilliant for when you&#8217;re doing more than just chat, and I didn&#8217;t want to lose it when switching to Pidgin. To get that functionality in Pidgin, simply install via the Add/Remove Software tool or via terminal the following extension: gnome-shell-extension-pidgin. Then, just enable it in Pidgin.</p>
<p>One of the biggest problems with the applications I installed was with Skype, that would eat all the computer&#8217;s RAM, freeze the entire OS and then crash. This is a serious bug that happens randomly when Skype starts that I already mentioned in my last post and that many more people complained about. It should be a shame for Skype to have such a bug and do nothing about it. Skype only offers for download the 2.2 beta version, and neither lets users choose an older stable version nor releases any sort of bug fix.</p>
<p>In my previous post I said I hadn&#8217;t any solution to this problem with Skype. However, I now have a solution that so far hasn&#8217;t failed. If you&#8217;re also out of luck with Skype, try this: Create a new file called Skype.sh (actually, you can name it anything you want, as long as it finishes with .sh). In that file write &#8220;skype &#8211;disable-api&#8221; (without the quotation marks) and save. Now go to the file&#8217;s Properties, Permissions tab and check &#8220;Allow executing file as program&#8221;. You now have a new Skype executable that never failed to me (at least until now). If you want to use the Skype icon in the Applications menu instead of an executable file, go to /usr/share/applications, go to Skype&#8217;s Properties and change its Command to &#8220;skype &#8211;disable-api&#8221; (without the quotation marks).</p>
<p>We&#8217;re now finished tweaking the newly installed apps. Let&#8217;s now start tweaking the OS interface.</p>
<h3>Tweaking the OS</h3>
<p>GNOME 3 is probably the best window manager available for Linux. However, it allows for very limited customization, and you probably won&#8217;t agree with every design decision the GNOME team made. Fortunately, there is much you can do about it.</p>
<p>Firstly, if you haven&#8217;t already, install GNOME Tweak Tool. This tool grants you access to system settings that for some unknown reason the GNOME team decided to hide from you. Those settings include being able to use the desktop, change fonts, change themes, decide what to do when closing the laptop lid and many more.</p>
<p>Now, let&#8217;s install the shell extensions. These extensions let you change some core functionalities of GNOME 3. Launch the Add/Remove Software tool and search for gnome-shell-extensions. Select the ones you find useful. I selected the extensions that let me have a Power Off option visible all the time (I don&#8217;t understand why I have to hold the Alt key to view that option) and that show the windows&#8217;s overview in a more precise way to their original placement and size (instead of displaying them in a grid, all with the same size).</p>
<p><a href="http://ricardolopes.net/blog/wp-content/uploads/2011/08/03_shell_extensions.png" target="_blank"><img class="alignnone size-medium wp-image-267" title="Shell extensions" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/03_shell_extensions-300x168.png" alt="" width="300" height="168" /></a></p>
<p>To hide the Universal Access icon (an icon most people will probably never use more than once), simply open /usr/share/gnome-shell/js/ui/panel.js with administrator access (one easy way you can do that is by typing &#8220;sudo gedit /usr/share/gnome-shell/js/ui/panel.js&#8221; in the terminal) and comment line 38 (to those unfamiliar with programming jargon, just put // at the beginning of the line). <b>Update:</b> If you&#8217;re using Fedora 17, you should comment line 37 instead of line 38 (thank you zazlox for pointing it out).</p>
<p>If, like me, you don&#8217;t use the upper right menu to change your IM status and find the status options to be cluttering the menu, there is also a file where you can remove those options. If you installed the shell extension to add an always visible Power Off option to the menu, open /usr/share/gnome-shell/extensions/alternative-status-menu\@gnome-shell-extensions.gnome.org/extension.js with administrator access and comment lines 39 to 50. If you didn&#8217;t install that extension, open /usr/share/gnome-shell/js/ui/statusMenu.js with administrator access and comment lines 184 to 195.</p>
<p>This is what the menu looks like after the Power Off extension and the comments of the shell files (notice the two new options in the bottom, the missing IM status options and the missing Universal Access icon):</p>
<p><a href="http://ricardolopes.net/blog/wp-content/uploads/2011/08/04_panel_after.png" target="_blank"><img class="alignnone size-medium wp-image-269" title="Panel after" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/04_panel_after-300x168.png" alt="" width="300" height="168" /></a></p>
<p>Now for something we all need but no major Linux distro supports: codecs, Flash plugin and TrueType fonts. To get all that and more, download and install EasyLife from <a href="http://easylifeproject.org/" target="_blank">their website</a>. Then run it and check whatever you want to install. If you previously tried to install Skype and it returned an error, you can install it via this software. After installing everything you want, you can remove EasyLife as you removed the other applications, as you&#8217;ll no longer use it any more.</p>
<p>Finally, a crucial patch for anyone having trouble with TP-Link TL-WN722N or similar wireless adapter (using ath9k). This wireless adapter worked out of the box when I installed Fedora, but after the updates it stopped working. This is due to an update of the Linux kernel. In order to get it to work again, follow the instructions in <a href="http://dwiel.net/blog/tp-link-tl-wn722n-on-ubuntu-10-04" target="_blank">this post</a>. That post is referring to a Ubuntu installation, but I followed all the steps in Fedora and it worked.</p>
<h3> To sum up</h3>
<p><a href="http://ricardolopes.net/blog/wp-content/uploads/2011/08/05_final.png" target="_blank"><img class="alignnone size-medium wp-image-252" title="Fedora 15" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/05_final-300x168.png" alt="" width="300" height="168" /></a></p>
<p>These were the steps I did to get what I&#8217;ve previously said to be the perfect Linux setup. This is, of course, not suited to everyone. Not everyone uses Skype or Pidgin or the wireless adapter TP-Link TL-WN722N. However, if you use Fedora 15 or if you want to start using it, you can make use of my experience to cut some research time on the mutual problems you may find.</p>
<p>If you have any doubt or know the solution to other frequent issues, please drop a comment, so more people can benefit from it.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=UiWNdDv68vU:sSHmCNGAOEE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=UiWNdDv68vU:sSHmCNGAOEE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=UiWNdDv68vU:sSHmCNGAOEE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=UiWNdDv68vU:sSHmCNGAOEE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/UiWNdDv68vU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/tutorial-my-perfect-linux-setup-with-fedora-15-lovelock/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/tutorial-my-perfect-linux-setup-with-fedora-15-lovelock/</feedburner:origLink></item>
		<item>
		<title>My perfect Linux setup with Fedora 15 Lovelock</title>
		<link>http://feedproxy.google.com/~r/ricardolopes/blog/~3/64rPt7EPc78/</link>
		<comments>http://ricardolopes.net/blog/my-perfect-linux-setup-with-fedora-15-lovelock/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 20:26:53 +0000</pubDate>
		<dc:creator>ricardolopes</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://ricardolopes.net/blog/?p=249</guid>
		<description><![CDATA[Those who know me know that I'm not particularly fond of Windows. It's not that I don't see its value: contrarily to many people, I'm mostly agnostic when it comes to tech "holy wars" such as the best OS or the best companies. Windows is great for gaming and for businesses where you're tied to proprietary formats such as the Microsoft Office Word's docx. But it's not that great for much else. And it's not that great for me.
(...)]]></description>
				<content:encoded><![CDATA[<p class="featured"><img title="Fedora 15" src="http://ricardolopes.net/blog/wp-content/uploads/2011/08/05_final.png" alt="" width="450" /></p>
<p>Those who know me know that I&#8217;m not particularly fond of Windows. It&#8217;s not that I don&#8217;t see its value: contrarily to many people, I&#8217;m mostly agnostic when it comes to tech &#8220;holy wars&#8221; such as the best OS or the best companies. Windows is great for gaming and for businesses where you&#8217;re tied to proprietary formats such as the Microsoft Office Word&#8217;s docx. But it&#8217;s not that great for much else. And it&#8217;s not that great for me.</p>
<p>Long story short, I&#8217;ve been using an Asus laptop (Asus UL30A) that came with Windows7 and wanted to install a Linux distro, so I could get free of Microsoft&#8217;s claws and embrace a truly free environment. However, finding the perfect Linux setup was no easy task. Using distros such as Ubuntu, the most popular Linux distro available, the OS would suddenly freeze at random times. That must be a problem with some specific driver, because I have never had that problem on previous computers. Using other distros such as CrunchBang, a personal favourite, my external wireless adapter (TP-Link TL-WN722N) wouldn&#8217;t work. I needed it to work because this laptop&#8217;s wireless capabilities aren&#8217;t that great and I have to use it in areas where the wireless signal is too poor for the laptop&#8217;s wireless card to detect.</p>
<p>It seemed that Windows 7 was the only robust option to use in my laptop and with my wireless adapter. It also offered the best user experience, as many Linux distros couldn&#8217;t properly handle a dual monitor setup, automatic applications menu update on a new application install (you had to manually update the configuration files of the menu), and so on. Then I discovered the new Fedora 15 Lovelock and Gnome 3. Why is it that great?</p>
<p>Firstly, Fedora solved my previous problems with Linux: the OS didn&#8217;t freeze and my wireless adapter worked out of the box. That made Fedora the first Linux distro I could actually use in my laptop for continued productive work.</p>
<p>Also, Fedora comes with Gnome 3, the new version of the well known window manager, which comes with many exciting new features and user interface improvements. The overall design is much more minimalistic, yet still powerful and beautiful. With a greyish simple new theme, a stylish yet minimal top menu bar and smooth animations (with no need of Compiz and all its bloat) showing a preview of all windows, desktop switching and others, Gnome 3 looks and feels much like Mac OS X. However, the Gnome development team didn&#8217;t simply try to copy Mac OS X&#8217;s concepts, like much do: it agreed upon very precise user interface choices, not centred on any existing OS or window manager, towards their very specific vision of the perfect window manager. So instead of coming up with yet another Mac OS X wannabe, the Gnome team came up with a masterpiece that&#8217;s probably the best window manager available for Linux, finally giving it the proficient and clean look it deserved long ago, that by coincidence might resemble Mac OS X in some aspects.</p>
<p>Right now, Fedora 15 is the only major Linux distro that uses Gnome 3 out of the box. Other distros such as openSuse and Ubuntu let you use it if you upgrade from Gnome 2. Fedora is also a very respected distro among the Linux community, and one of the most dynamic.</p>
<p>There are, of course, some minor nuisances. The first system update was getting an error (there was one item that should be disabled), Twitter wasn&#8217;t working in Google Chrome and Skype occasionally slowed down the computer and then crashed. Those were issues that I easily fixed (except with Skype, that is still giving me problems and I don&#8217;t know how to fix it). The new user interface in Gnome 3 is overall very good, but it&#8217;s also less customizable, which might not be that good for everyone (especially for Linux enthusiasts). Also, it introduces some radical changes that won&#8217;t appeal everyone, like the removal of the minimize and maximize buttons (all windows now have simply the close button) and the auto-hide of the tray icons.</p>
<p>All in all, I found Fedora 15 to be the best Linux distro for my laptop, not only because it solved all my compatibility problems, but also because it featured the best window manager available for Linux in terms of user experience. I believe that alone is enough reason for anyone to try it out. If you are interested in setting up your computer with Fedora 15 Lovelock, I will soon post a tutorial that explains all my steps removing Fedora&#8217;s minor problems and tweaking its interface. Stay tuned!</p>
<p>Update: the tutorial is finally available. You can read it in <a title="Tutorial: My perfect Linux setup with Fedora 15 Lovelock" href="http://ricardolopes.net/blog/tutorial-my-perfect-linux-setup-with-fedora-15-lovelock/">this post</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=64rPt7EPc78:u40kiV6Sr3I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=64rPt7EPc78:u40kiV6Sr3I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ricardolopes/blog?a=64rPt7EPc78:u40kiV6Sr3I:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ricardolopes/blog?i=64rPt7EPc78:u40kiV6Sr3I:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ricardolopes/blog/~4/64rPt7EPc78" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ricardolopes.net/blog/my-perfect-linux-setup-with-fedora-15-lovelock/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://ricardolopes.net/blog/my-perfect-linux-setup-with-fedora-15-lovelock/</feedburner:origLink></item>
	</channel>
</rss>
