<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet INdT</title>
	<link rel="self" href="http://rsalveti.net/planet/atom.xml"/>
	<link href="http://rsalveti.net/planet/"/>
	<id>http://rsalveti.net/planet/atom.xml</id>
	<updated>2010-07-31T05:29:35+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry>
		<title type="html">QTestLib / Plasma  Animations presentations @ FISL11</title>
		<link href="http://brunoabinader.blogspot.com/2010/07/qtestlib-plasma-animations.html"/>
		<id>tag:blogger.com,1999:blog-8974121210221508485.post-5374916014362605313</id>
		<updated>2010-07-24T10:59:39+00:00</updated>
		<content type="html">&lt;div&gt;Hi again :)&lt;br /&gt;It's been amazing days here at Porto Alegre, Brazil, where the &lt;a href=&quot;http://fisl.softwarelivre.org/&quot;&gt;11th Forum Internacional de Software Livre&lt;/a&gt; (&lt;i&gt;Free Software International Forum - aka. FISL11&lt;/i&gt;), one of the biggest open-source conferences in the world. On 22nd I've made a presentation about QTestLib, entitled &quot;QTestLib: Creating intelligent unit tests for Qt-based projects&quot; (slides available below - sorry, portuguese only), and yesterday me and &lt;a href=&quot;http://igortrindade.wordpress.com/&quot;&gt;Igor Oliveira&lt;/a&gt; spoke about Plasma Animations, pretty much similar to what I've had talked about in Akademy this year. Today we'll have Igor talking solely about Gallium3D, so things are pretty much on the way we've expected :)&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://farm5.static.flickr.com/4123/4821094938_e8947583c2.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://farm5.static.flickr.com/4123/4821094938_e8947583c2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;QTestLib slides available &lt;a href=&quot;http://franciscoalecrim.com/abinader/apresentacao-qtestlib.pdf&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;ps: And of course, we have pictures taken with Tux and GNU!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://farm5.static.flickr.com/4081/4820497003_2704112a79.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://farm5.static.flickr.com/4081/4820497003_2704112a79.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://farm5.static.flickr.com/4138/4820496991_4d9499ed5c.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://farm5.static.flickr.com/4138/4820496991_4d9499ed5c.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8974121210221508485-5374916014362605313?l=brunoabinader.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Bruno de Oliveira Abinader</name>
			<email>noreply@blogger.com</email>
			<uri>http://brunoabinader.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Bruno Abinader's Blog</title>
			<subtitle type="html">A space for informations, tips, and news about the universe that surrounds me.</subtitle>
			<link rel="self" href="http://brunoabinader.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8974121210221508485</id>
			<updated>2010-07-31T03:49:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Tubarão</title>
		<link href="http://www.setantas.net/blog/2010/07/19/tubarao/"/>
		<id>http://www.setantas.net/blog/?p=478</id>
		<updated>2010-07-19T19:23:31+00:00</updated>
		<content type="html">&lt;p&gt;Antigamente pensava que, embora goste muito dele, tinha pouco em comum com meu pai. Não estava completamente errado, mas esta estória não é sobre isso.&lt;/p&gt;
&lt;p&gt;Fomos lá no hospital Santa Maria, na minha cidade, pra render o turno da minha mãe, que está acompanhando meu tio na internação.&lt;br /&gt;
O hospital fica uns duzentos metros da casa dos meus pais. Mais duzentos metros e temos a casa do tio, e com mais duzetos é o cemitério. Tudo é perto na minha cidade, pouca necessidade de carro ou ônibus.&lt;/p&gt;
&lt;p&gt;Só pra localizar melhor as coisas, esse tio não é um tio genérico, ele criou minha mãe como pai, logo é como se fosse meu avô. Todos chamamos ele de Nêgo (com ê mesmo). Ele tomava conta do pequeno eu de 5 anos (acho) enquanto minha mãe analisava amostras de sangue no laboratório. Mas meu tio também tinha seus compromissos de sacristão de uma paróquia, pra onde ele me levava. Lembro de ir pra uma extrema unção (ou era um velório?) onde fiquei cantando com o folhetinho virado de cabeça pra baixo.&lt;/p&gt;
&lt;p&gt;Chegando na enfermaria do hospital mandamos minha mãe jantar. Eu tinha a intenção de entreter o doente, mas ele estava com a voz bem fraquinha pra conversar. Melhor uma estória. Então fiz a pergunta mágica ao meu pai sobre como vovô aprendeu a nadar tão bem vivendo num sítio no interior de Pernambuco.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.setantas.net/blog/wp-content/uploads/2010/07/Fernando_de_Noronha_-_dois_Irmãos_-_praia_do_sancho.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-479&quot; title=&quot;Fernando de Noronha&quot; src=&quot;http://www.setantas.net/blog/wp-content/uploads/2010/07/Fernando_de_Noronha_-_dois_Irmãos_-_praia_do_sancho-300x224.jpg&quot; alt=&quot;Fernando de Noronha&quot; width=&quot;300&quot; height=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Então, era uma vez meu bisavô, que não sei o nome, por causa de quem começa tudo. Tem essa estória vaga e difusa de que ele matou duas pessoas, em duas situações distintas, com tiros à queima roupa de seu perverso bacamarte. Me foi contado que ele socava vidro e pregos junto com a pólvora. Um dos tiros teria arrancado o coração de uma mulher e o outro a cabeça de um sujeito. Mas pode ter sido o oposto. A causa de tanta raiva pode ter sido fofoca e ciúme. Ele tinha uma amante e estavam contando pra minha bisavó. Meu bisavô, amante da paz que era tentou resolver do jeito dele. Contudo, nada é preciso nessa estória. Essas lendas de família são assim mesmo.&lt;/p&gt;
&lt;p&gt;Fato é que nos idos de mil novecentos e dez e poucos os bandidos perigosos iam para&amp;#8230;  O que é que ele vai ganhar Lombardi? Uma viagem com tudo pago pra Fernando de Noronha, Silvio! E a estranheza só aumenta, meu pai contou que a família do condenado ia junto com ele, mas ficavam numa casa de verdade na ilha, e o meliante só precisava dormir na cela com provável vista pro mar. E essa era vida do meu bisavô, dormir no xilindró e fazer mais filhos durante o dia. Penso que ele só fazia pela diversão, mas cada filho nascido na ilha diminuia sua pena.&lt;/p&gt;
&lt;p&gt;E foi assim que meu avô aprendeu a nadar, praticando dos 13 aos 18 em Fernando de Noronha, enquanto o pai cumpria pena por crimes hediondos.&lt;/p&gt;
&lt;p&gt;Sabia desse conto só até essa parte, mas o mais legal de ouvir meu pai narrando tudo de novo é que sempre posso confiar na ampliação da estória com um detalhe que lembrou na hora. O detalhe dessa vez foi um tubarão.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.setantas.net/blog/wp-content/uploads/2010/07/ShagEyeShark.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-480&quot; title=&quot;Tubarão&quot; src=&quot;http://www.setantas.net/blog/wp-content/uploads/2010/07/ShagEyeShark-300x179.jpg&quot; alt=&quot;Tubarão&quot; width=&quot;300&quot; height=&quot;179&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Estavam pescando numa jangada lá no mar azul de Fernando de Noronha meu avô e seu irmão. Pescavam com anzol grande e corda resistente, esperando pegar algo graúdo. Pois foi um tubarão que veio, não sei a espécie, só sei que era do tipo com dentes afiados e do tamanho da jangada onde cabem duas pessoas.&lt;/p&gt;
&lt;p&gt;Eles lutaram com o peixão por um bom tempo, até que o bicho virou o barquinho. Nessa parte da narrativa eu só acreditei que meu avô saiu vivo porque estavam o filho e o neto conversando sobre ele. Assisti muitos filmes de tubarão pra saber que o objetivo da espécie, em todas suas variantes, é o extermínio da raça humana. Veja o tubarão baleia por exemplo, aquele jeitão simpático dele, aquela boca de garagem de fusca, isso é só pra baixar nossa guarda.&lt;/p&gt;
&lt;p&gt;Na vida real o tubarão com um gancho na boca só quer fugir. Vovô e seu irmão com suas inseparáveis facas (sim, os filhos do condenado andavam por aí com facas &amp;#8211; eram aqueles tempos que todo mundo fala de amarrar cachorro com salsicha) só queriam um almoço de frutos do mar.&lt;/p&gt;
&lt;p&gt;Bem, voltando, vovô conseguiu furar o tubarão e logo o bicho enfraquecia. Eles desviraram a jangada e jogaram o peixão no meio. Os pescadores adultos festejaram a habilidade e ousadia dos meus antepassados adolescentes e todos fizeram um feliz churrasco de tubarão.&lt;/p&gt;
&lt;p&gt;Essas horas minha mãe já voltou e tenho um ônibus pra pegar.&lt;/p&gt;</content>
		<author>
			<name>Marcelo Lira</name>
			<uri>http://www.setantas.net/blog</uri>
		</author>
		<source>
			<title type="html">Head Like a Hole</title>
			<link rel="self" href="http://www.setantas.net/blog/feed/"/>
			<id>http://www.setantas.net/blog/feed/</id>
			<updated>2010-07-19T19:29:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Applying transformations to your bugs</title>
		<link href="http://blog.morpheuz.cc/16/07/2010/applying-transformations-to-your-bugs/"/>
		<id>http://blog.morpheuz.cc/?p=280</id>
		<updated>2010-07-16T18:45:27+00:00</updated>
		<content type="html">&lt;p&gt;Today there was this presentation from Apple to talk about the famous iPhone4 antenna problem. I&amp;#8217;ll represent this problem (bug) with the picture below made by one of INdT&amp;#8217;s designers (Patricia Montenegro) some time ago:&lt;/p&gt;
&lt;div id=&quot;attachment_282&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/07/bug02.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-282&quot; title=&quot;The Bug&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/07/bug02-300x240.png&quot; alt=&quot;The Bug&quot; width=&quot;300&quot; height=&quot;240&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;The Bug - watch out the way it looks to you!&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;To be honest I wasn&amp;#8217;t expecting anything &amp;#8220;technical&amp;#8221; in the sense that I wasn&amp;#8217;t expecting a technical explanation to the problem itself (you can find it in numerous places on the web) or for a possible solution, but I wanted to watch how Jobs would deal with with the situation.&lt;/p&gt;
&lt;p&gt;Being honest again, he did what he does best! At first, he acknowledged the problem as it couldn&amp;#8217;t be denied. Then he said that actually they did a favor to the smartphone&amp;#8217;s industry because there were other phones with the same problem (showed &lt;strong&gt;pictures&lt;/strong&gt; of other phones having the same issue &amp;#8211; what doesn&amp;#8217;t prove much, but&amp;#8230;) but instead of &amp;#8220;hiding&amp;#8221; the antenna and hiding the problem, they actually put a big &amp;#8220;X&amp;#8221; on the problem (see picture below).&lt;/p&gt;
&lt;div id=&quot;attachment_281&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/07/iphone-X.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-281&quot; title=&quot;iPhone4 antenna&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/07/iphone-X-300x199.jpg&quot; alt=&quot;iPhone4 antenna&quot; width=&quot;300&quot; height=&quot;199&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;iPhone4 antenna&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;From my point of view it was just what we would call a &amp;#8220;n00b&amp;#8221; mistake &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; . I mean, Apple is doing phones since not so many time ago. It&amp;#8217;s their 4th device (iPhone, iPhone 3G, iPhone 3GS and iPhone4 now), and they just didn&amp;#8217;t face this problem before and had the brilliant idea. The problem may show up on other phones? Sure, but I&amp;#8217;m sure that the other manufacturers know about the problem and try to &amp;#8220;fix&amp;#8221; it, being that hiding the antenna inside the case or whatever.&lt;/p&gt;
&lt;p&gt;The next steps were just the table&amp;#8217;s &amp;#8220;turn over&amp;#8221; (not sure if this expression exists in English, but it works pretty well in Portuguese &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt; ): some (small) numbers about the how many people were actually affected by the bug. It was less than 1 in a 100 users (a beautiful way of saying less than 1% hehe). They get these numbers from the people that actually complained at Apple Care about the issue so those out there that just reading Engadget and Gizmodo about the issue were not counted of course.&lt;/p&gt;
&lt;p&gt;But besides the number being so small, Apple &lt;strong&gt;does care&lt;/strong&gt; about it&amp;#8217;s users. &lt;strong&gt;All&lt;/strong&gt; of them. See the kind of words used here? This is the place to do the magic trick. This is the place where you say that you&amp;#8217;re not evil or bad but you actually care. Just after stating that you human enough to make mistakes, you ensure your &amp;#8220;human position&amp;#8221; showing that you care about others. Genious! It&amp;#8217;s a statement that just makes the others stronger &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; .&lt;/p&gt;
&lt;p&gt;In order to take care of those 1% Apple will give for free cases for the iPhones, what prevents the bug and users will even be able to choose colors! And if they do not want the case, then a refund is offered. In Brazil this would be something that they would need to do because of the law: if you sell something that doesn&amp;#8217;t work, you need to refund. I&amp;#8217;m not sure how this works out on US but anyway, he transformed the user&amp;#8217;s &amp;#8220;right&amp;#8221; into a company&amp;#8217;s &amp;#8220;feature&amp;#8221;. Points again for Apple and Jobs for playing nice with the words.&lt;/p&gt;
&lt;p&gt;After that, it was just more slides about all the nice features of iPhone4, why you should have one and more and more statements that Apple loves it&amp;#8217;s users (yes, the word love is used in all the slides).&lt;/p&gt;
&lt;div id=&quot;attachment_283&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/07/iphone-love.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-283&quot; title=&quot;Apple and Love&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/07/iphone-love-300x199.jpg&quot; alt=&quot;Apple and Love&quot; width=&quot;300&quot; height=&quot;199&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Apple and Love&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Summary: from the technical point of view it was just &amp;#8220;we don&amp;#8217;t have a way to fix this as this is a hardware problem and it&amp;#8217;s a huge problem then.&amp;#8221;. But saying so is the same as pushing the picture of our fellow bug in every user&amp;#8217;s face.&lt;/p&gt;
&lt;p&gt;Instead of doing that, they will solve the issue by giving the users a rubber case that costs less than 1 dollar and then create a link between the users and the company that is: &amp;#8220;we are all humans. have you ever made a mistake? this is our first mistake. sorry. take this gift. ah, by the way we love you.&amp;#8221;. This creates compassion (every human did something wrong once in his life) and then people stop bashing the company and it&amp;#8217;s product. This &amp;#8220;love history&amp;#8221; also reinforces that they are humans, enabling them to screw things eventually. So with a few minutes, Jobs got our fellow and dressed him properly transforming The Bug in a Feature:&lt;/p&gt;
&lt;div id=&quot;attachment_284&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/07/feature.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-284&quot; title=&quot;The feature - not so ugly anymore!&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/07/feature-300x240.png&quot; alt=&quot;The feature - not so ugly anymore!&quot; width=&quot;300&quot; height=&quot;240&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;The feature - not so ugly anymore!&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;From my point of view, the truth is that Apple is a company with a product that costs you some money and just like &lt;strong&gt;any&lt;/strong&gt; other company in any other industry, the products should be properly tested and should not have this kind of problems that are not solvable (what if they didn&amp;#8217;t have the luck of the case solving the issue?). The good about open source products is that at least from the software side we can fix stuff as quick as possible. So please vendors: pay attention to the hardware you manufacture and leave them as open as possible to software that we want to put into that! &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Morpheuz</name>
			<uri>http://blog.morpheuz.cc</uri>
		</author>
		<source>
			<title type="html">MoRpHeUz's Blog</title>
			<subtitle type="html">Just stuff ;-)</subtitle>
			<link rel="self" href="http://blog.morpheuz.cc/feed/"/>
			<id>http://blog.morpheuz.cc/feed/</id>
			<updated>2010-07-16T18:49:24+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Cairo State Tracker what we already have done</title>
		<link href="http://igortrindade.wordpress.com/2010/07/11/ca/"/>
		<id>http://igortrindade.wordpress.com/?p=82</id>
		<updated>2010-07-11T15:47:40+00:00</updated>
		<content type="html">&lt;p&gt;In my last post I showed how we can fill self intersected polygons using stencil buffer. It is one of the operations I have implemented in Cairo Gallium backend.&lt;/p&gt;
&lt;p&gt;We already have many features implemented and others one in WIP.  This week i was working in make the stroke operation styles, like join, caps and dashes. I already have them working, Cairo has a nice helper function called _cairo_path_fixed_stroke_to_shaper, it converts the stroke in polygons like quads and triangles.  The result can be seen below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://igortrindade.files.wordpress.com/2010/07/styles.png&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-86&quot; title=&quot;styles&quot; src=&quot;http://igortrindade.files.wordpress.com/2010/07/styles.png?w=300&amp;#038;h=300&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;We already have the fill operation also working(like you saw in my last post) , mask, clip and paint(solid pattern). Now i am working in blend operations, Cairo has many and some ones i need to write a shader like i did in my openvg branch not commited.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/igortrindade.wordpress.com/82/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/igortrindade.wordpress.com/82/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/igortrindade.wordpress.com/82/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/igortrindade.wordpress.com/82/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/igortrindade.wordpress.com/82/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/igortrindade.wordpress.com/82/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/igortrindade.wordpress.com/82/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/igortrindade.wordpress.com/82/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/igortrindade.wordpress.com/82/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/igortrindade.wordpress.com/82/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=igortrindade.wordpress.com&amp;amp;blog=10176701&amp;amp;post=82&amp;amp;subd=igortrindade&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Igor Trindade Oliveira</name>
			<uri>http://igortrindade.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Code, Beer and Unix</title>
			<link rel="self" href="http://igortrindade.wordpress.com/feed/atom/"/>
			<id>http://igortrindade.wordpress.com/feed/atom/</id>
			<updated>2010-07-11T15:49:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Cairo state tracker: filling rules(the power of stencil buffer)</title>
		<link href="http://igortrindade.wordpress.com/2010/07/10/cairo-state-tracker-filling-rulesthe-power-of-stencil-buffer/"/>
		<id>http://igortrindade.wordpress.com/?p=68</id>
		<updated>2010-07-10T20:15:08+00:00</updated>
		<content type="html">&lt;p&gt;When creating a Cairo Graphics Backend we need to implement some operations, one of them is the fill operation.&lt;/p&gt;
&lt;p&gt;Fill operation basically describe how a polygon is filled, and cairo has two fill rules:&lt;/p&gt;
&lt;p&gt;Non-Zero Winding:  takes into account the direction of the path. Being enclosed by a clockwise loop counts as +1 and being enclosed by a counter-clockwise loop counts as -1. When of the sum of these counts is zero, it is a hole otherwise it is filled.&lt;/p&gt;
&lt;p&gt;Evend-Odd: Every area that is inside of an even number of &amp;#8220;interiors&amp;#8221; is a hole and every region that is inside a odd number of &amp;#8220;interiors&amp;#8221; is filled.&lt;/p&gt;
&lt;p&gt;These operations are easily implemented using stencil buffer.  About the Even-Odd we just need draw each of the polygons in turn, using the PIPE_STENCIL_OP_INVERT function in the stencil buffer.  This flips the value between zero and a nonzero value every time a triangle is  drawn that covers a pixel. After all the triangles are drawn, if a pixel is covered an even number  of times, the value in the stencil buffers is zero; otherwise, it&amp;#8217;s nonzero. Finally, draw a  large polygon over the whole region.[1]&lt;/p&gt;
&lt;p&gt;And the No n-Zero rule we need to know using the cull face if we are drawing the polygon into clockwise or counter-clockwise, we increment the stencil(PIPE_STENCIL_OP_INCR_WRAP) if is in clockwise and we decrement(PIPE_STENCIL_OP_INCR_DECR) the stencil if is in counter-clockwise.  After we just need to draw a large polygon over the whole region.&lt;/p&gt;
&lt;p&gt;So thinking about a star with the coordinates:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(Remember the star is a self intersected polygon)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;cairo_move_to(cr, 0, 1.0);&lt;br /&gt;
cairo_line_to(cr, 0.5, 0.0);&lt;br /&gt;
cairo_line_to(cr, 1.0, 1.0);&lt;br /&gt;
cairo_line_to(cr, 0.0, 0.5);&lt;br /&gt;
cairo_line_to(cr, 1.0, 0.5);&lt;br /&gt;
cairo_line_to(cr, 0, 1.0);&lt;/p&gt;
&lt;p&gt;Using Even odd rule this star is draw with a hole:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://igortrindade.files.wordpress.com/2010/07/star_even_odd.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-70&quot; title=&quot;star_even_odd&quot; src=&quot;http://igortrindade.files.wordpress.com/2010/07/star_even_odd.png?w=200&amp;#038;h=200&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Using Winding rule we have the all the star filled:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://igortrindade.files.wordpress.com/2010/07/star_filled.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-71&quot; title=&quot;star_filled&quot; src=&quot;http://igortrindade.files.wordpress.com/2010/07/star_filled.png?w=200&amp;#038;h=200&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So see you in the next post &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; .&lt;/p&gt;
&lt;p&gt;[1] Drawing Filled, Concave Polygons Using the Stencil Buffer.&lt;/p&gt;
&lt;p&gt;link:http://www.dei.isep.ipp.pt/~jpp/sgrai/livros/RedBook/chapter14.html&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/igortrindade.wordpress.com/68/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/igortrindade.wordpress.com/68/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/igortrindade.wordpress.com/68/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/igortrindade.wordpress.com/68/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/igortrindade.wordpress.com/68/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/igortrindade.wordpress.com/68/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/igortrindade.wordpress.com/68/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/igortrindade.wordpress.com/68/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/igortrindade.wordpress.com/68/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/igortrindade.wordpress.com/68/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=igortrindade.wordpress.com&amp;amp;blog=10176701&amp;amp;post=68&amp;amp;subd=igortrindade&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Igor Trindade Oliveira</name>
			<uri>http://igortrindade.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Code, Beer and Unix</title>
			<link rel="self" href="http://igortrindade.wordpress.com/feed/atom/"/>
			<id>http://igortrindade.wordpress.com/feed/atom/</id>
			<updated>2010-07-11T15:49:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">KDE calls ‘home’</title>
		<link href="http://blog.morpheuz.cc/10/07/2010/kde-calls-home/"/>
		<id>http://blog.morpheuz.cc/?p=276</id>
		<updated>2010-07-10T19:42:58+00:00</updated>
		<content type="html">&lt;p&gt;Yep, I didn&amp;#8217;t have time to blog during aKademy as you may have noticed &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  The main reason is that I had a lot of discussions and attended to a huge number of BoFs. This aKademy rocked just as the others that I went. Huge thanks to the organization team, KDE e.V and sponsors for providing ways to make this happen and to have a lot of KDE hackers there!&lt;/p&gt;
&lt;p&gt;Instead of doing a technical blog today, I will just say that during this aKademy KDE &amp;#8216;called home&amp;#8217; for the first time. This means that for the first time in history &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  we had KDE running on a mobile phone and we made a call with it! This was &lt;strong&gt;AWESOME&lt;/strong&gt;! Just a summary: Plasma-Mobile and a plasmoid that worked as a dialer did the work, using the phone API of Maemo5 on a N900.&lt;/p&gt;
&lt;p&gt;As Aaron noticed, our first call was a little bit more &amp;#8220;interesting&amp;#8221; than Graham Bell&amp;#8217;s one. The first words on a telephone in history are:&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3&gt;Mr. Watson, come here. I want to see you.&lt;/h3&gt;
&lt;/blockquote&gt;
&lt;p&gt;Interesting&amp;#8230;..but you may think that the transcription below is a little bit more interesting. I will also omit some context that would explain some of the questions/answers during this talk as I think that it may turn this more&amp;#8230;let&amp;#8217;s say&amp;#8230;special &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt;  Enjoy!&lt;/p&gt;
&lt;p&gt;My phone rings (for the sake of curiosity, my ringtone is &amp;#8220;Snow&amp;#8221; by Red Hot Chili Peppers) and the ID of the caller is &amp;#8220;+41&amp;#8243;. I answer and the call drops. I tell Helio that it should be some company from Brazil during TeleMarketing. While we walk to the bus for aKademy&amp;#8217;s day trip it rings again. Alexis Menard is the caller this time:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Bonsoir! er, Bonjour Alexis!&lt;br /&gt;
&lt;strong&gt;Alexis:&lt;/strong&gt; Guess what?!&lt;strong&gt;&lt;br /&gt;
Me:&lt;/strong&gt; hhmm, you&amp;#8217;re going to miss the dray trip because you just woke up?&lt;br /&gt;
&lt;strong&gt;Alexis:&lt;/strong&gt; NO! Guess what &amp;#8216;amiguinho&amp;#8217;!? (note: &amp;#8216;amiguinho&amp;#8217; means &amp;#8216;little friend&amp;#8217; in portuguese)&lt;br /&gt;
&lt;strong&gt;Me:&lt;/strong&gt; Oh, I got it! You&amp;#8217;re the guy! Your bed is warmer than it should be?&lt;br /&gt;
&lt;strong&gt;Alexis:&lt;/strong&gt; What?! No, no, no! Come on! GUESS WHAT?!&lt;br /&gt;
&lt;strong&gt;Me:&lt;/strong&gt; I don&amp;#8217;t know then! Let me think&amp;#8230;.ow yeah! GREAT! This phone call was made through the Plasma-Mobile stuff that we did yesterday?!&lt;br /&gt;
&lt;strong&gt;Alexis:&lt;/strong&gt; Yes!! Finally!! I&amp;#8217;m turning off my computer and meet you at the bus!&lt;br /&gt;
&lt;strong&gt;Me:&lt;/strong&gt; OK! See you!&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;And then I tell everybody that was by my side that it was the first KDE phone call in history! REALLY GREAT! &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  The conversation above may seem non-sense but all the questions had a reason and the answers too &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Soon we should post some more technical bits about Plasma-Mobile and also I plan to talk a little bit about KDE-Pim-Mobile, the new Sharebin engine (that will support scripted plugins and GHNS) and if you want to contribute to some use cases of Plasma-Mobile take a look at &lt;a href=&quot;http://techbase.kde.org/Projects/Plasma/Plasma-Mobile&quot;&gt;this link&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a kind of &amp;#8220;sad note&amp;#8221;, I would also like to tell you that the QEdje scriptengine was removed due (my) lack of maintenance of the QEdje project.&lt;/p&gt;</content>
		<author>
			<name>Morpheuz</name>
			<uri>http://blog.morpheuz.cc</uri>
		</author>
		<source>
			<title type="html">MoRpHeUz's Blog</title>
			<subtitle type="html">Just stuff ;-)</subtitle>
			<link rel="self" href="http://blog.morpheuz.cc/feed/"/>
			<id>http://blog.morpheuz.cc/feed/</id>
			<updated>2010-07-16T18:49:24+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Plasma Animations Overview Slides Available</title>
		<link href="http://brunoabinader.blogspot.com/2010/07/plasma-animations-overview-slides.html"/>
		<id>tag:blogger.com,1999:blog-8974121210221508485.post-8365457918503500406</id>
		<updated>2010-07-07T04:43:52+00:00</updated>
		<content type="html">&lt;div&gt;Hi KDE :)&lt;br /&gt;&lt;br /&gt;It's been quite awesome times for me in these days, since I was able to meet the guys behind the code or IRC channels. Today I've presented my workshop entitled &quot;Plasma Animations Overview&quot;, and it was quite good, with useful feedback from the crowd about JavaScript animations and the plans for implementing support for QML-based widgets animations. You can find the download links for the presentation (and source code for the examples) below:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://franciscoalecrim.com/abinader/plasma-animations-overview.pdf&quot;&gt;Plasma Animations Overview (PDF)&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://franciscoalecrim.com/abinader/plasma-animations-examples.tgz&quot;&gt;Plasma Animations Examples&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also I would like to share the beautiful view of the Tammerkoski river took on my way to Demola:&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;http://farm5.static.flickr.com/4119/4768151043_49fda998b2.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://farm5.static.flickr.com/4119/4768151043_49fda998b2.jpg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8974121210221508485-8365457918503500406?l=brunoabinader.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Bruno de Oliveira Abinader</name>
			<email>noreply@blogger.com</email>
			<uri>http://brunoabinader.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Bruno Abinader's Blog</title>
			<subtitle type="html">A space for informations, tips, and news about the universe that surrounds me.</subtitle>
			<link rel="self" href="http://brunoabinader.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8974121210221508485</id>
			<updated>2010-07-31T03:49:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Sliderlayout</title>
		<link href="http://savago.wordpress.com/2010/07/04/sliderlayout/"/>
		<id>http://savago.wordpress.com/?p=319</id>
		<updated>2010-07-04T09:05:50+00:00</updated>
		<content type="html">&lt;p&gt;It all started with a simple problem: I want to change from one list of things to another, doing a &amp;#8216;slider&amp;#8217; like transition (like you would do for example in a music player when you choose an artist and go to another list with the tracks).&lt;/p&gt;
&lt;p&gt;That sounds pretty simple, right? Just fire a QPropertyAnimation (or if you are using Plasma, a SliderAnimation is even better) and animate the position of 2 widgets.&lt;/p&gt;
&lt;p&gt;But what if I want to have those widgets inside of a layout (e.g. QGraphicsLinearLayout)? After all, I want my UI to scale between different window sizes, screen resolutions (and in mobile devices, adjust to screen rotations).&lt;/p&gt;
&lt;p&gt;Hum&amp;#8230; you could draw your widgets *over* the linear layout and check for resize events of the main widget *while* correctly positioning your set of widgets in the scene. But that sounds a bit too much hack-ish.&lt;/p&gt;
&lt;p&gt;I asked 2 friends about this very same issue and one suggested me to create a layout with this behavior. Initially, I was not sure about it, after all, I have never worked before with QGraphicsLayouts and I got almost no time to have something working.&lt;/p&gt;
&lt;p&gt;Well, the good news are that it only took me a couple of hours to get this:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Explanation: it is a layout were you can add several widgets and move from one to another by calling next()/previous(). And since it is just a layout, can be inserted in another layouts (in this case, inside of QGraphicsLinearLayout).&lt;/p&gt;
&lt;p&gt;Maybe a bit of code would help to explain&amp;#8230; say that you have 2 widgets and you want to move next when the current one is clicked:&lt;/p&gt;
&lt;p&gt;Item obj1, obj2;&lt;/p&gt;
&lt;p&gt;SliderLayout *slider = new SliderLayout;&lt;/p&gt;
&lt;p&gt;slider-&amp;gt;addWidget(&amp;amp;obj1);&lt;/p&gt;
&lt;p&gt;slider-&amp;gt;addWidget(&amp;amp;obj2);&lt;/p&gt;
&lt;p&gt;connect(&amp;amp;obj1, SIGNAL(clicked()), slider, SLOT(next()));&lt;/p&gt;
&lt;p&gt;slider-&amp;gt;setCurrentWidgetIndex(0);&lt;/p&gt;
&lt;p&gt;and you are done.&lt;/p&gt;
&lt;p&gt;The secret here is to keep hidden all the widgets (except by the current one) and in the slider event, animate the position of both widgets (the current and soon-to-be-current widget) while correctly repositioning the widgets in the scene (and setting to show state both widgets of course).&lt;/p&gt;
&lt;p&gt;Since I have the movement methods on this layout as slots, I have to derive from both QObject and QGraphicsLayout (and that I&amp;#8217;m not completely happy, anyone has suggestions to workaround that?).&lt;/p&gt;
&lt;p&gt;I have tested this layout (integrated with *far* more complex widgets) in varied devices (from ARM@430Mhz up to Intel Atom@1.6Ghz))and it behaved pretty well, basically because I&amp;#8217;m only animating the position of 2 widgets. It might happen that if you have an overly complex widget, that your hardware is not able to do the animation with good frame rate (but here you can workaround by hiding some of the content of this overly complex widget, and that will be probably the subject of my next post).&lt;/p&gt;
&lt;p&gt;There are 2 other remarks about the code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I used Plasma SliderAnimation just because it was easier, but it could be replaced by a QPropertyAnimation&lt;/li&gt;
&lt;li&gt;Since Plasma Animations expect to receive a QGraphicsWidget, I assumed that you are going to supply a QGraphicsWidget to the SliderLayout. But the real requirement could be a QGraphicsItem, since it is the position that is being animated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can get the code &lt;a href=&quot;http://gitorious.org/libpanim/&quot;&gt;here&lt;/a&gt;, my personal sandbox for experimenting with plasma animations and other stuff (please, please, we *do* need to migrate away from svn and start using git) and look for src/lib/sliderlayout.cpp and src/example/slidertest.cpp. I wonder when the feature freeze of KDE is over, if this could be part of libplasma.&lt;/p&gt;
&lt;p&gt;Maybe this concept could be expanded so there would be a layout class and the animation behavior (fade, rotate, slide, etc) be defined by a delegate. Anyone is tempted to help me to develop this further? &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/319/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/319/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/319/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/319/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/319/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/319/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/319/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/319/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/319/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/319/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=319&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Open Source Community Support Developer at INdT</title>
		<link href="http://ianlawrence.info/random-stuff/open-source-community-support-developer-at-indt"/>
		<id>http://ianlawrence.info/random-stuff/open-source-community-support-developer-at-indt</id>
		<updated>2010-06-29T19:59:05+00:00</updated>
		<content type="html">&lt;p&gt;&lt;br /&gt;A great opportunity has arisen to come and work with us on the Service Experience team @ INdT&lt;/p&gt;
&lt;p&gt;I need someone to work on my team creating, maintaining and supporting a community of open source developers and implementers around the world. The full job spec is pasted below but the most important skills are experience working with open source development, fluency in English and some experience working with social projects in the areas of Education, Health or the Environment.&lt;/p&gt;
&lt;p&gt;Please, if you would like to be considered either send me your CV or get in contact directly with our &lt;a href=&quot;http://www.indt.org/en.html&quot;&gt;human resources&lt;/a&gt; department at INdT.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Please pass this opportunity on to anyone you think might be ideal for this role &lt;/em&gt; and I am looking forward to meeting some really cool people at the interviews :).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Mandatory &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Education Level:&lt;/b&gt; Degree - but exceptional candidates without will be considered&lt;br /&gt;
&lt;b&gt;Desirable Experience:&lt;/b&gt; 0-1 year&lt;br /&gt;
&lt;b&gt;English:&lt;/b&gt;   Fluent&lt;br /&gt;
&lt;b&gt;Must Have:&lt;/b&gt; Demonstrable open source community involvement preferably as a committer to an open source project.&lt;br /&gt;
&lt;b&gt;Would Like But Not Essential:&lt;/b&gt; Java, Debian, MySQL, ECMA script, Previous voluntary work in  the fields  of Education, Health or the Environment&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Job Role&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You will evangelize the adoption of our developer products and support implementations of our solutions worldwide. You will bring strong and well-rounded coding skills in a wide range of open source technologies along with excellent writing, presentation and support skills. You will be measured on growth in adoption of our developer products and customer satisfaction in our implementer communities. You need to be able to work equally well answering simple questions with NGO's, highly technical ones with developers at our partner companies as well as reporting accurately to senior managers.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Key Responsibilities&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Actively tweet, blog and write sample code, developer articles and tutorials for our products as well as provide support online through our forums.&lt;/li&gt;&lt;li&gt;Provide on-line support and advice.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Advocate for and evangelize our developer products and APIs in multiple mediums.&lt;/li&gt;&lt;li&gt;Participate in architectural,design and support discussions with strategic partners to speed adoption and ensure best practices during implementation.&lt;/li&gt;&lt;li&gt;Influence our developer product strategy by working with product management, engineering, marketing, business development and operations.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;p class=&quot;discreet&quot;&gt;We are building an outstanding team around our social investment projects here at INdT - if you want to be a part of this write and tell us why.&lt;/p&gt;
&lt;br /&gt;
&lt;p class=&quot;callout&quot;&gt;Good Luck!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</content>
		<author>
			<name>Ian Lawrence</name>
			<uri>http://ianlawrence.info/random-stuff</uri>
		</author>
		<source>
			<title type="html">Ian Lawrence - Blog</title>
			<subtitle type="html">What is the digital equivalent of lovely? He wondered. What are the digits that encode beauty, the number-fingers that enclose, transform, transmit, decode, and somehow, in the process, fail to trap or choke the soul of it? Not because of the technology but in spite of it, beauty, that ghost, that treasure, passes undiminished through the new machines.</subtitle>
			<link rel="self" href="http://ianlawrence.info/random-stuff/RSS2"/>
			<id>http://ianlawrence.info/random-stuff/RSS2</id>
			<updated>2010-07-31T05:29:12+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">QtWebKit goes Mobile</title>
		<link href="http://codeposts.blogspot.com/2010/06/qtwebkit-goes-mobile.html"/>
		<id>tag:blogger.com,1999:blog-36235783.post-6935337900480281360</id>
		<updated>2010-06-23T12:40:16+00:00</updated>
		<content type="html">&lt;i&gt;Repost of Jesus' &lt;a href=&quot;http://wouwlabs.com/blogs/jeez/?p=197&quot;&gt;post&lt;/a&gt;, that I helped write.&lt;/i&gt;&lt;br /&gt;&lt;p&gt;There is a lot of effort being put into &lt;a class=&quot;wiki&quot; href=&quot;http://trac.webkit.org/wiki/QtWebKit&quot;&gt;QtWebKit&lt;/a&gt; in order to make it attractive on the mobile front.&lt;/p&gt;&lt;p&gt;Among a tons of bug fixes and good performance improvements there are also lots of new features being developed, mainly geared toward mobile deployment.&lt;/p&gt;&lt;p&gt;The goal with this tutorial is to help you understand some of these new features and how to make the best of them. Or said in other words; how to create a good mobile web view that can be used on touch devices.&lt;/p&gt;&lt;p&gt;First we should make it clear that QGraphicsWebView is the way forward, so if you want to target mobile devices, it is bye bye QWebView. Why is that? Well, the QWebView is based on the QWidget system, thus it cannot easily support rotation, overlays, hardware accelerated compositing and tiling. If you need a QWidget anyway, you can always construct a QGraphicsView (which is a QWidget) with a QGraphicsWebView inside. This is more or less what we will start with.&lt;/p&gt;&lt;p&gt;Let's start with the most simple QGraphicsWebView based &quot;browser&quot; ever:&lt;/p&gt;&lt;pre class=&quot;wiki&quot;&gt;int main(int argc, char **argv)&lt;br /&gt;{&lt;br /&gt;   QApplication app(argc, argv);&lt;br /&gt;   const int width = 640;&lt;br /&gt;   const int height = 480;&lt;br /&gt;&lt;br /&gt;   QGraphicsScene scene;&lt;br /&gt;&lt;br /&gt;   QGraphicsView view(&amp;amp;scene);&lt;br /&gt;   view.setFrameShape(QFrame::NoFrame);&lt;br /&gt;   view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);&lt;br /&gt;   view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);&lt;br /&gt;&lt;br /&gt;   QGraphicsWebView webview;&lt;br /&gt;   webview.resize(width, height);&lt;br /&gt;   webview.load(QUrl(&quot;http://www.wouwlabs.com/blogs/jeez&quot;));&lt;br /&gt;&lt;br /&gt;   scene.addItem(&amp;amp;webview);&lt;br /&gt;   view.resize(width, height);&lt;br /&gt;   view.show();&lt;br /&gt;&lt;br /&gt;   return app.exec();&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Here we just bootstrap a QGraphicsView application and add a QGraphicsWebView to the scene.&lt;/p&gt;&lt;p&gt;It might seem a bit useless as you can only navigate through one website, but it serves well as a simple example. Notice that I'm disabling the scrollbars on the graphics view because &lt;a class=&quot;wiki&quot; href=&quot;http://www.blogger.com/wiki/QtWebKit&quot;&gt;QtWebKit&lt;/a&gt; handles scrolling and scrollbars automatically. This is due to scrolling optimizations and due to the fact that web authors can interact with the scrollbars for instance style them differently.&lt;/p&gt;&lt;p&gt;On touch-based mobile devices a feature known as tiling is often used. It is used due to the interaction model (touch) as well as a scrolling &quot;optimization&quot;. With this optimization we will have to deal with scrolling ourselves and we thus will have to say good bye to the scrollbar styling. Not a big thing, as mobile browsers usually do not even show scrollbars, but use scroll indicators instead.&lt;/p&gt;&lt;p&gt;Tiling basically means that the contents of the viewport is separated into a grid of tiles, so that when you update some area, instead of just updating the area you actually update the whole tile. This gives a few advantages for scrolling as when you scroll you do not need to repaint the new visible area for each scroll step, as you update a row of tiles each time; tiles that are often only partly on the screen. This minimized all the paint calls that we have to do and makes it possible to make nicely kinetic scrolling a possibility.&lt;/p&gt;&lt;p&gt;Loading, layouting etc are blocking operations. Though barely noticeable on a Desktop machines, these operations can block for a long time on a mobile device, letting the user believe the application has become unresponsive and died. Scrolling which is done by using fingers will also stall and give a bad user experience.&lt;/p&gt;&lt;p&gt;One way to over come this issue, is to do all loading, layouting and painting (basically all non-UI related work) in another thread or process, and just blit the result from the web process/thread to the UI. When using tiles, you can blit any tile available when scrolling. When no tile is available you can show a checkerboard tile instead, not letting the scrolling wait for the tiles to be updated. This results in a responsive interface, with the only disadvantage that you from time to time might see checkerboard tiles.&lt;/p&gt;&lt;p&gt;Tiles also helps with zooming. Repainting at each zoom level change during a zoom animation is basically impossible on a mobile device (or desktop for that sake) and thus with tiling, you can stop the tiles from being updates and just scale the already existing tiles, and then at the end of the animation update tiles on top of the scaled ones.&lt;/p&gt;&lt;p&gt;For now we will ignore the blocking issue and concentrate on the tiling and the interaction model.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 id=&quot;Resizetocontents&quot;&gt;Resize to contents&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-create.g?blogID=36235783#Resizetocontents&quot; title=&quot;Link to this section&quot;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;When using tiling, we basically want the QGraphicsWebView to act as our contents, as it supports tiling a.o. things. In order for this we need to make it resize itself to the size of its contents. For this we will use &lt;a class=&quot;ext-link&quot; href=&quot;http://doc.qt.nokia.com/4.7-snapshot/qgraphicswebview.html#resizesToContents-prop&quot;&gt;&lt;span class=&quot;icon&quot;&gt; &lt;/span&gt;QGraphicsWebView::resizesToContents&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;From Qt 4.7 documentation: &quot;If this property is set, the QGraphicsWebView will automatically change its size to match the size of the main frame contents. As a result the top level frame will never have scrollbars. It will also make CSS fixed positioning to behave like absolute positioning with elements positioned relative to the document instead of the viewport.&quot;&lt;/p&gt;&lt;p&gt;This setting, thus, removes the scrollbars for us on the main frame and makes our QGraphicsWebView resize itself to the size of its content.&lt;/p&gt;&lt;p&gt;Enabling it, is as easy as:&lt;/p&gt;&lt;pre class=&quot;wiki&quot;&gt;    webview.setResizesToContents(true); &lt;/pre&gt;&lt;p&gt;Qt 4.7 docs also says: &quot;This property should be used in conjunction with the QWebPage::preferredContentsSize property. If not explicitly set, the preferredContentsSize is automatically set to a reasonable value.&quot;&lt;/p&gt;&lt;p&gt;If we are going to expand our mobile web view to the size of the contents of its contained page, then that is going to make the view a lot bigger that what can fit on the device's screen!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 id=&quot;Usingaviewasthewindowtothecontents&quot;&gt;Using a view as the window to the contents&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-create.g?blogID=36235783#Usingaviewasthewindowtothecontents&quot; title=&quot;Link to this section&quot;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The idea is to have a custom widget which has a QGraphicsWebView as a class member. Remember that the QGraphicsWebView will be as big as its content's size, so this custom widget will serve as a window, as a viewport.&lt;/p&gt;&lt;p&gt;There is not much more to say here, and the following code snippet illustrates it well:&lt;/p&gt;&lt;pre class=&quot;wiki&quot;&gt;class MobileWebView : public QGraphicsWidget&lt;br /&gt;{&lt;br /&gt;    Q_OBJECT&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;    MobileWebView(QGraphicsItem *parent = 0);&lt;br /&gt;    ~MobileWebView();&lt;br /&gt;&lt;br /&gt;    bool mousePress(const QPoint &amp;amp;value);&lt;br /&gt;    void mouseMove(const QPoint &amp;amp;value);&lt;br /&gt;    void mouseRelease(const QPoint &amp;amp;value);&lt;br /&gt;&lt;br /&gt;private:&lt;br /&gt;    QGraphicsWebView *webView;&lt;br /&gt;}; &lt;/pre&gt;&lt;p&gt;In order to properly handle mouse events you must install an event filter on web view or stack it behind its parent object (search for QGraphicsItem::ItemStacksBehindParent). By doing this the mouse events will reach a MobileWebView instance before they reach the member QGraphicsWebView.&lt;/p&gt;&lt;p&gt;Keep in mind that you'll need to add some logic in order to distinguish different mouse events and gestures like a single click, double click, click-and-pan, etc. That is left as an exercise to the reader.&lt;/p&gt;&lt;p&gt;Also keep in mind that as stated earlier, scrolling will have to be implemented manually, just as zoom etc.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 id=&quot;Adjustinghowcontentsislaidout&quot;&gt;Adjusting how contents is laid out&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-create.g?blogID=36235783#Adjustinghowcontentsislaidout&quot; title=&quot;Link to this section&quot;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;When testing the above on a device, you will notice that many pages do not layout very nicely. In particular the width is larger than the width of the device!&lt;/p&gt;&lt;p&gt;The way web contents is laid out, is that the first the viewport width is used for fitting the contents. If the contents doesn't fit due to non-flexible element with a width larger than the viewport width, the min width possible will be used. As most pages are written with a desktop browser in mind, that makes only very few sites fit into the width of a mobile device.&lt;/p&gt;&lt;p&gt;&lt;a class=&quot;wiki&quot; href=&quot;http://www.blogger.com/wiki/QtWebKit&quot;&gt;QtWebKit&lt;/a&gt; has a way to force a layout to a given width/height. What really matters here is the width. If you layout a size to a given width, it will get that width and images etc might get cut of. The width/height is also used for laying out fixed elements, but when we resize the QGraphicsWebView to the size of the contents, fixed elements will not be relative to the view, which is the behaviour found on most mobile browsers.&lt;/p&gt;&lt;p&gt;From &lt;a class=&quot;ext-link&quot; href=&quot;http://doc.qt.nokia.com/4.7-snapshot/qwebpage.html#preferredContentsSize-prop&quot;&gt;&lt;span class=&quot;icon&quot;&gt; &lt;/span&gt;Qt 4.7 documentation&lt;/a&gt;: &quot;If this property is set to a valid size, it is used to lay out the page.&quot;&lt;/p&gt;&lt;p&gt;We saw that this property is automatically set to a reasonable value when using QGraphicsWebView::resizesToContents.&lt;/p&gt;&lt;p&gt;As you can imaging, laying out with a smaller viewport can cause pages to break, and as thus, a default value has been chosen so that it almost breaks no pages while still making the sites fit. This value is 960x800.&lt;/p&gt;&lt;p&gt;If the device have a bigger resolution, this value can be changed using:&lt;/p&gt;&lt;pre class=&quot;wiki&quot;&gt;    webview.page()-&gt;setPreferredContentsSize(QSize(desiredWidth, desiredHeight)); &lt;/pre&gt;&lt;p&gt;You can play around with this and find your own magic number, but let's stick to this 960px wide for now.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 id=&quot;Theviewportmetatag&quot;&gt;The 'viewport' meta tag&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-create.g?blogID=36235783#Theviewportmetatag&quot; title=&quot;Link to this section&quot;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;As some sites do not work with 960 or want to have control on how the page is laid out, &lt;a class=&quot;wiki&quot; href=&quot;http://www.blogger.com/wiki/QtWebKit&quot;&gt;QtWebKit&lt;/a&gt; as well as Android, Firefox Mobile and the iPhone Safari supports a meta tag called viewport.&lt;/p&gt;&lt;p&gt;This one also deserves a whole blog post for itself. For now let's just say that this is a meta tag that Apple came up with to make a web page capable of &quot;telling&quot; the browser how it wants to be shown.&lt;/p&gt;&lt;p&gt;More information: &lt;a class=&quot;ext-link&quot; href=&quot;http://developer.apple.com/safari/library/documentation/appleapplications/reference/safarihtmlref/articles/metatags.html&quot;&gt;&lt;span class=&quot;icon&quot;&gt; &lt;/span&gt;http://developer.apple.com/safari/library/documentation/appleapplications/reference/safarihtmlref/articles/metatags.html&lt;/a&gt; and&lt;a class=&quot;ext-link&quot; href=&quot;http://developer.apple.com/safari/library/documentation/appleapplications/reference/safariwebcontent/usingtheviewport/usingtheviewport.html&quot;&gt;&lt;span class=&quot;icon&quot;&gt; &lt;/span&gt;http://developer.apple.com/safari/library/documentation/appleapplications/reference/safariwebcontent/usingtheviewport/usingtheviewport.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In &lt;a class=&quot;wiki&quot; href=&quot;http://www.blogger.com/wiki/QtWebKit&quot;&gt;QtWebKit&lt;/a&gt; trunk we already have support for this with a nice API. You must connect the signal from QWebPage::viewportChangeRequested(const ViewportHints&amp;amp; hints) to a slot of your mobile web view and use what is provided by QWebPage::ViewportHints to updated your viewport size, scale range, and so on.&lt;/p&gt;&lt;p&gt;This can be tricky and that's why I'm not going deeper on it right now. Since I know you are curious about it I'll leave you with one more exercise! So try to understand how the guys from MicroB and Firefox Mobile dealt with this:&lt;/p&gt;&lt;p&gt;&lt;a class=&quot;ext-link&quot; href=&quot;http://hacks.mozilla.org/2010/05/upcoming-changes-to-the-viewport-meta-tag-for-firefox-mobile&quot;&gt;&lt;span class=&quot;icon&quot;&gt; &lt;/span&gt;http://hacks.mozilla.org/2010/05/upcoming-changes-to-the-viewport-meta-tag-for-firefox-mobile&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 id=&quot;Enablingthetiling&quot;&gt;Enabling the tiling&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-create.g?blogID=36235783#EnablingtheTiling&quot; title=&quot;Link to this section&quot;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;We haven't actually enabled tiling yet, so lets go ahead and do that. That is very simple as it is basically a setting:&lt;/p&gt;&lt;pre class=&quot;wiki&quot;&gt;    QWebSettings::globalSettings()-&gt;setAttribute(QWebSettings::TiledBackingStoreEnabled, true); &lt;/pre&gt;&lt;p&gt;Voila! Mind that if you are going to add animations to your zoom/scale or want to implement a fancy kinetic scrolling you might want to take a look at QGraphicsWebView::setTiledBackingStoreFrozen. With this you can avoid updates to your tiles during an animation, for instance.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 id=&quot;Avoidingscrollablesubelements&quot;&gt;Avoiding scrollable sub elements&lt;a class=&quot;anchor&quot; href=&quot;http://www.blogger.com/post-create.g?blogID=36235783#Avoidingscrollablesubelements&quot; title=&quot;Link to this section&quot;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;One big issue with the above is that, iframes and sites using frames can contain scrollable sub elements. That doesn't work well with the touch interaction model, as you want a finger swipe to scroll the whole page and not end up just scrolling a sub frame. Most mobile browser work around this by enabling something called frame flattening.&lt;/p&gt;&lt;p&gt;Going straight to the point:&lt;/p&gt;&lt;pre class=&quot;wiki&quot;&gt;    QWebSettings::globalSettings()-&gt;setAttribute(QWebSettings::FrameFlatteningEnable, true); &lt;/pre&gt;&lt;p&gt;This will make all frames from a web page expand themselves to the size of their contents, keeping us free of scrollable subareas.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/36235783-6935337900480281360?l=codeposts.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Kenneth Rohde Christiansen</name>
			<email>noreply@blogger.com</email>
			<uri>http://codeposts.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Kenneth Christiansen's code posts</title>
			<link rel="self" href="http://codeposts.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-36235783</id>
			<updated>2010-07-30T20:09:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">QtWebKit goes Mobile</title>
		<link href="http://wouwlabs.com/blogs/jeez/?p=197"/>
		<id>http://wouwlabs.com/blogs/jeez/?p=197</id>
		<updated>2010-06-22T23:22:04+00:00</updated>
		<content type="html">&lt;p&gt;There is a lot of effort being put into QtWebKit in order to make it attractive on the mobile front.&lt;br /&gt;
&lt;br /&gt;
Among a tons of bug fixes and good performance improvements there are also lots of new features being developed, mainly geared toward mobile deployment.&lt;br /&gt;
The goal with this tutorial is to help you understand some of these new features and how to make the best of them. Or said in other words; how to create a good mobile web view that can be used on touch devices.&lt;br /&gt;
&lt;br /&gt;
First we should make it clear that QGraphicsWebView is the way forward, so if you want to target mobile devices, it is bye bye QWebView. Why is that? Well, the QWebView is based on the QWidget system, thus it cannot easily support rotation, overlays, hardware accelerated compositing and tiling. If you need a QWidget anyway, you can always construct a QGraphicsView (which is a QWidget) with a QGraphicsWebView inside.&lt;br /&gt;
&lt;br /&gt;
So let&amp;#8217;s start with the most simple QGraphicsWebView based &amp;#8220;browser&amp;#8221; ever:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
    QApplication app(argc, argv);&lt;br /&gt;
    const int width = 640;&lt;br /&gt;
    const int height = 480;&lt;br /&gt;
&lt;br /&gt;
    QGraphicsScene scene;&lt;br /&gt;
&lt;br /&gt;
    QGraphicsView view(&amp;amp;scene);&lt;br /&gt;
    view.setFrameShape(QFrame::NoFrame);&lt;br /&gt;
    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);&lt;br /&gt;
    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);&lt;br /&gt;
&lt;br /&gt;
    QGraphicsWebView webview;&lt;br /&gt;
    webview.resize(width, height);&lt;br /&gt;
    webview.load(QUrl(&quot;http://www.wouwlabs.com/blogs/jeez&quot;));&lt;br /&gt;
&lt;br /&gt;
    scene.addItem(&amp;amp;webview);&lt;br /&gt;
&lt;br /&gt;
    view.resize(width, height);&lt;br /&gt;
    view.show();&lt;br /&gt;
&lt;br /&gt;
    return app.exec();&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Here we just bootstrap a QGraphicsView application and add a QGraphicsWebView to the scene.&lt;br /&gt;
It might seem a bit useless as you can only navigate through one website, but it serves well as a simple example. Notice that I&amp;#8217;m disabling the scrollbars on the graphics view because QtWebKit handles scrolling and scrollbars automatically. This is due to scrolling optimizations and due to the fact that web authors can interact with the scrollbars for instance style them differently.&lt;br /&gt;
&lt;br /&gt;
On touch-based mobile devices a feature known as tiling is often used. It is used due to the interaction model (touch) as well as a scrolling &amp;#8220;optimization&amp;#8221;. With this optimization we will have to deal with scrolling ourselves and we thus will have to say good bye to the scrollbar styling. Not a big thing, as mobile browsers usually do not even show scrollbars, but use scroll indicators instead.&lt;br /&gt;
&lt;br /&gt;
Tiling basically means that the contents of the viewport is separated into a grid of tiles, so that when you update some area, instead of just updating the area you actually update the whole tile. This gives a few advantages for scrolling as when you scroll you do not need to repaint the new visible area for each scroll step, as you update a row of tiles each time; tiles that are often only partly on the screen. This minimized all the paint calls that we have to do and makes it possible to make nicely kinetic scrolling a possibility.&lt;br /&gt;
&lt;br /&gt;
Loading, layouting etc are blocking operations. Though barely noticeable on a Desktop machines, these operations can block for a long time on a mobile device, letting the user believe the application has become unresponsive and died. Scrolling which is done by using fingers will also stall and give a bad user experience.&lt;br /&gt;
&lt;br /&gt;
One way to over come this issue, is to do all loading, layouting and painting (basically all non-UI related work) in another thread or process, and just blit the result from the web process/thread to the UI. When using tiles, you can blit any tile available when scrolling. When no tile is available you can show a checkerboard tile instead, not letting the scrolling wait for the tiles to be updated. This results in a responsive interface, with the only disadvantage that you from time to time might see checkerboard tiles.&lt;br /&gt;
&lt;br /&gt;
Tiles also helps with zooming. Repainting at each zoom level change during a zoom animation is basically impossible on a mobile device (or desktop for that sake) and thus with tiling, you can stop the tiles from being updates and just scale the already existing tiles, and then at the end of the animation update tiles on top of the scaled ones.&lt;br /&gt;
For now we will ignore the blocking issue and concentrate on the tiling and the interaction model.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Resize to contents&lt;/strong&gt;&lt;br /&gt;
When using tiling, we basically want the QGraphicsWebView to act as our contents, as it supports tiling a.o. things. In order for this we need to make it resize itself to the size of its contents. For this we will use QGraphicsWebView::resizesToContents.&lt;br /&gt;
&lt;br /&gt;
From Qt 4.7 documentation: &amp;#8220;If this property is set, the QGraphicsWebView will automatically change its size to match the size of the main frame contents. As a result the top level frame will never have scrollbars. It will also make CSS fixed positioning to behave like absolute positioning with elements positioned relative to the document instead of the viewport.&amp;#8221;&lt;br /&gt;
&lt;br /&gt;
This setting, thus, removes the scrollbars for us on the main frame and makes our QGraphicsWebView resize itself to the size of its content.&lt;br /&gt;
&lt;br /&gt;
Enabling it, is as easy as: &lt;code&gt; webview.setResizesToContents(true); &lt;/code&gt;&lt;br /&gt;
Qt 4.7 docs also says: &amp;#8220;This property should be used in conjunction with the QWebPage::preferredContentsSize property. If not explicitly set, the preferredContentsSize is automatically set to a reasonable value.&amp;#8221;&lt;br /&gt;
&lt;br /&gt;
If we are going to expand our mobile web view to the size of the contents of its contained page, then that is going to make the view a lot bigger than what can fit on the device&amp;#8217;s screen!&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Using a view as the window to the contents&lt;/strong&gt;&lt;br /&gt;
The idea is to have a custom widget which has a QGraphicsWebView as a class member. Remember that the QGraphicsWebView will be as big as its content&amp;#8217;s size, so this custom widget will serve as a window, as a viewport.&lt;br /&gt;
&lt;br /&gt;
There is not much more to say here, and the following code snippet illustrates it well:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
class MobileWebView : public QGraphicsWidget&lt;br /&gt;
{&lt;br /&gt;
Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    MobileWebView(QGraphicsItem *parent = 0);&lt;br /&gt;
    ~MobileWebView();&lt;br /&gt;
&lt;br /&gt;
    bool mousePress(const QPoint &amp;amp;value);&lt;br /&gt;
    void mouseMove(const QPoint &amp;amp;value);&lt;br /&gt;
    void mouseRelease(const QPoint &amp;amp;value);&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
    QGraphicsWebView *webView;&lt;br /&gt;
};&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
In order to properly handle mouse events you must install an event filter on web view or stack it behind its parent object (search for QGraphicsItem::ItemStacksBehindParent). By doing this the mouse events will reach a MobileWebView instance before they reach the member QGraphicsWebView. Keep in mind that you&amp;#8217;ll need to add some logic in order to distinguish different mouse events and gestures like a single click, double click, click-and-pan, besides scrolling will have to be implemented manually, as zoom, etc. That is left as an exercise to the reader.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Adjusting how contents is laid out&lt;/strong&gt;&lt;br /&gt;
When testing the above on a device, you will notice that many pages do not layout very nicely. In particular the width is larger than the width of the device!&lt;br /&gt;
The way web contents is laid out, is that the first the viewport width is used for fitting the contents. If the contents doesn&amp;#8217;t fit due to non-flexible element with a width larger than the viewport width, the min width possible will be used. As most pages are written with a desktop browser in mind, that makes only very few sites fit into the width of a mobile device.&lt;br /&gt;
&lt;br /&gt;
QtWebKit has a way to force a layout to a given width/height. What really matters here is the width. If you layout a size to a given width, it will get that width and images etc might get cut of. The width/height is also used for laying out fixed elements, but when we resize the QGraphicsWebView to the size of the contents, fixed elements will not be relative to the view, which is the behaviour found on most mobile browsers.&lt;br /&gt;
&lt;br /&gt;
From Qt 4.7 documentation: &amp;#8220;If this property is set to a valid size, it is used to lay out the page.&amp;#8221;.&lt;br /&gt;
We saw that this property is automatically set to a reasonable value when using QGraphicsWebView::resizesToContents.&lt;br /&gt;
&lt;br /&gt;
As you can imaging, laying out with a smaller viewport can cause pages to break, and as thus, a default value has been chosen so that it almost breaks no pages while still making the sites fit. This value is 960&amp;#215;800. If the device have a bigger resolution, this value can be changed using: &lt;code&gt; webview.page()-&amp;gt;setPreferredContentsSize(QSize(desiredWidth, desiredHeight)); &lt;/code&gt;&lt;br /&gt;
You can play around with this and find your own magic number, but let&amp;#8217;s stick to this 960px wide for now.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;The &amp;#8216;viewport&amp;#8217; meta tag&lt;/strong&gt;&lt;br /&gt;
As some sites do not work with 960 or want to have control on how the page is laid out, QtWebKit as well as Android, Firefox Mobile and the iPhone Safari supports a meta tag called viewport.&lt;br /&gt;
This one also deserves a whole blog post for itself. For now let&amp;#8217;s just say that this is a meta tag that Apple came up with to make a web page capable of &amp;#8220;telling&amp;#8221; the browser how it wants to be shown.&lt;br /&gt;
More info &lt;a href=&quot;http://developer.apple.com/safari/library/documentation/appleapplications/reference/safariwebcontent/usingtheviewport/usingtheviewport.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://developer.apple.com/safari/library/documentation/appleapplications/reference/safarihtmlref/articles/metatags.html&quot;&gt;here&lt;/a&gt;, both from Apple&amp;#8217;s docs.&lt;br /&gt;
&lt;br /&gt;
In QtWebKit trunk we already have support for this with a nice API. You must connect the signal from &lt;code&gt; QWebPage::viewportChangeRequested(const QWebPage::ViewportHints&amp;amp; hints) &lt;/code&gt; to a slot of your mobile web view and use what is provided by QWebPage::ViewportHints to updated your viewport size, scale range, and so on.&lt;br /&gt;
This can be tricky and that&amp;#8217;s why I&amp;#8217;m not going deeper on it right now. Since I know you are curious about it I&amp;#8217;ll leave you with one more exercise! So go ahead and try to understand how the guys from MicroB and Firefox Mobile dealt with this.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Enabling the Tiling&lt;/strong&gt;&lt;br /&gt;
We haven&amp;#8217;t actually enabled tiling yet, so lets go ahead and do that. That is very simple as it is basically a setting: &lt;code&gt; QWebSettings::globalSettings()-&amp;gt;setAttribute(QWebSettings::TiledBackingStoreEnabled, true); &lt;/code&gt;&lt;br /&gt;
Voila! Mind that if you are going to add animations to your zoom/scale or want to implement a fancy kinetic scrolling&lt;br /&gt;
you might want to take a look at QGraphicsWebView::setTiledBackingStoreFrozen. With this you can avoid updates to your&lt;br /&gt;
tiles during an animation, for instance.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Avoiding scrollable sub elements&lt;/strong&gt;&lt;br /&gt;
One big issue with the above is that, iframes and sites using frames can contain scrollable sub elements. That doesn&amp;#8217;t work well with the touch interaction model, as you want a finger swipe to scroll the whole page and not end up just scrolling a sub frame. Most mobile browser work around this by enabling something called frame flattening.&lt;br /&gt;
Going straight to the point: &lt;code&gt; QWebSettings::globalSettings()-&amp;gt;setAttribute(QWebSettings::FrameFlatteningEnable, true); &lt;/code&gt;&lt;br /&gt;
This will make all frames from a web page expand themselves to the size of their contents, keeping us free of scrollable subareas.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;
As you can see the inner truth here is that there is no &amp;#8220;black-underground-magic&amp;#8221; at all!&lt;br /&gt;
QtWebKit is getting better and better and you have plenty of APIs to help you out developing your applications, be it a browser or a piece of software with embedded web contents.&lt;br /&gt;
&lt;br /&gt;
If you want to take a closer look at some real world examples of QtWebKit in action I&amp;#8217;d recommend the &lt;a href=&quot;http://gitorious.com/raskbrowser&quot;&gt;raskbrowser&lt;/a&gt; and the &lt;a href=&quot;http://gitorious.com/yberbrowser&quot;&gt;yberbrowser&lt;/a&gt;. I&amp;#8217;m sure you will recognize each of the above steps in their source code!&lt;br /&gt;
&lt;br /&gt;
Keep hacking!&lt;br /&gt;&lt;/p&gt;</content>
		<author>
			<name>jeez</name>
			<uri>http://wouwlabs.com/blogs/jeez</uri>
		</author>
		<source>
			<title type="html">Shuffle Life</title>
			<subtitle type="html">You've gotta earn yourself some trouble...</subtitle>
			<link rel="self" href="http://wouwlabs.com/blogs/jeez/?feed=atom"/>
			<id>http://wouwlabs.com/blogs/jeez/?feed=atom</id>
			<updated>2010-06-22T23:29:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Announcing QFacebook: Qt port of Facebook Graph API</title>
		<link href="http://fredyduarte.net/blog/?p=332"/>
		<id>http://fredyduarte.net/blog/?p=332</id>
		<updated>2010-06-22T22:55:06+00:00</updated>
		<content type="html">&lt;p&gt;Hi, everyone. Sorry, but no coding examples for today (even though I haven&amp;#8217;t posted anything in a while &lt;img src=&quot;http://fredyduarte.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; ).&lt;/p&gt;
&lt;p&gt;Today, I&amp;#8217;m announcing a new project open for development: &lt;strong&gt;QFacebook&lt;/strong&gt;. It consists of a Qt port of the Facebook &lt;a href=&quot;http://developers.facebook.com/docs/api&quot;&gt;Graph API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The interest in creating this project came from another one that we are currently working on at &lt;a href=&quot;http://www.indt.org/en.html&quot;&gt;INDT&lt;/a&gt;. We needed to access and manage Facebook accounts, but we didn&amp;#8217;t want to use the &lt;em&gt;&lt;a href=&quot;http://developers.facebook.com/docs/reference/rest/&quot;&gt;old rest API&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;There are three non-C++ solutions available: the official &lt;a href=&quot;http://github.com/facebook/connect-js/&quot;&gt;Javascript SDK&lt;/a&gt; from Facebook, a &lt;a href=&quot;http://github.com/facebook/php-sdk/&quot;&gt;PHP SDK&lt;/a&gt; and a &lt;a href=&quot;http://github.com/facebook/python-sdk&quot;&gt;Python SDK&lt;/a&gt;. Seeing the lack of a &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;Qt&lt;/a&gt; port for this API we decided to make our own library.&lt;/p&gt;
&lt;p&gt;The project is hosted at gitorious and the the URL is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a title=&quot;QFacebook&quot; href=&quot;http://gitorious.org/qfacebook&quot;&gt;http://gitorious.org/qfacebook&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As of now, the project has two usage examples that you can start coding with. But we are still working on the documentation.&lt;/p&gt;
&lt;p&gt;Anyone is welcome use it or even join our development effort.&lt;/p&gt;</content>
		<author>
			<name>Fred Duarte</name>
			<uri>http://fredyduarte.net/blog</uri>
		</author>
		<source>
			<title type="html">Linux Tech Blog</title>
			<subtitle type="html">Frederico Duarte</subtitle>
			<link rel="self" href="http://fredyduarte.net/blog/?feed=rss2"/>
			<id>http://fredyduarte.net/blog/?feed=rss2</id>
			<updated>2010-06-22T23:09:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Finally some news….and more Akademy!</title>
		<link href="http://blog.morpheuz.cc/22/06/2010/finally-some-news-and-more-akademy/"/>
		<id>http://blog.morpheuz.cc/?p=268</id>
		<updated>2010-06-22T13:53:24+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;ve been busy with some &amp;#8220;internal work&amp;#8221; that was not that fun and due to that, it was not worth it talking about it &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_sad.gif&quot; alt=&quot;:(&quot; class=&quot;wp-smiley&quot; /&gt; . However during this time I wrote some KDE stuff and right now I&amp;#8217;m busy with some awesome work and this one I&amp;#8217;ll share with everybody &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;During what I call &amp;#8220;bad days&amp;#8221; I focused on writing the new Plasma data engine for the pastebin services. Actually, I decided to call it &amp;#8220;sharebin&amp;#8221; as pastebin remembers about just one service and doesn&amp;#8217;t mean too much for the end user, while &amp;#8220;share&amp;#8221; is a great word to describe what this engine actually does. Basically it will be plugin based and the plugins (backends for services) can be written using JavaScript.&lt;/p&gt;
&lt;p&gt;The benefits? It&amp;#8217;s easier to extend and support new services so no more bugs on bko asking for this or that service (you can *easily*  implement it and provide it through kde-apps.org). Because of that, applets using the new data engine will be able to use GHNS to extend the amount of services that it uses.&lt;/p&gt;
&lt;p&gt;As soon as we unfreeze trunk, I&amp;#8217;ll send the engine for review and then update the pastebin applet to support it. Ah, we are also using KIO inside the data engine now! &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  So, we also have support for &amp;#8220;remote shares&amp;#8221; (remote as in getting a file that is in the network &amp;#8211; samba share for example). Good news right?&lt;/p&gt;
&lt;p&gt;Now, I started to help the KDE PIM dudes and KDAB with their mobile version of the suite and anything that is related to it. So, I&amp;#8217;m really looking forward having a great PIM suite for mobile devices. It uses all of the KDE infrastructure and the brand new Qt technology for creating rich UI interfaces: QML. It&amp;#8217;s important to say that everything is being done on the open and upstream. Take a look at kmail mobile right now:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/06/kmailmobile.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-270&quot; title=&quot;KMail Mobile&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/06/kmailmobile-300x180.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At the same time I&amp;#8217;ll be in touch with the guys working on the &lt;a href=&quot;http://gitorious.org/qt-components&quot;&gt;Qt Components&lt;/a&gt; project, to provide feedback and use the stuff they are getting done. This is a really important project for QML and if you ever played with QML you know what I&amp;#8217;m talking about &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; .&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m also going to Akademy this year thanks to the help of the e.V. and it&amp;#8217;s sponsors (special thanks to Claudia that helped me with the booking &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt; ). I&amp;#8217;ll have a &lt;a href=&quot;http://akademy.kde.org/node/373&quot;&gt;talk&lt;/a&gt; there with my fellow Alexis Menard about Plasma mobile and I hope that everybody that will be there enjoy the talk and the paper that we are working on! I also recommend the &lt;a href=&quot;http://akademy.kde.org/node/337&quot;&gt;talk&lt;/a&gt; about Qt Components from Eduardo Fleury! If you want to talk about KDE Mobile, any other mobile subject (MeeGo, Maemo), anything KDE related, just about soccer or say hello&amp;#8230;just do it &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt;  I&amp;#8217;m too small to prevent you from doing any of the above listed things &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/06/igta2010.png&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-269&quot; title=&quot;I'm going to akademy!&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/06/igta2010-300x157.png&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;157&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Morpheuz</name>
			<uri>http://blog.morpheuz.cc</uri>
		</author>
		<source>
			<title type="html">MoRpHeUz's Blog</title>
			<subtitle type="html">Just stuff ;-)</subtitle>
			<link rel="self" href="http://blog.morpheuz.cc/feed/"/>
			<id>http://blog.morpheuz.cc/feed/</id>
			<updated>2010-07-16T18:49:24+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Unofficial Qt 4.6.3 for Symbian Linux Installer + Qt Mobility + Smart Installer</title>
		<link href="http://brunoabinader.blogspot.com/2010/06/unofficial-qt-463-for-symbian-linux.html"/>
		<id>tag:blogger.com,1999:blog-8974121210221508485.post-3998057548747766323</id>
		<updated>2010-06-22T00:23:25+00:00</updated>
		<content type="html">&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Hi again!&lt;br /&gt;Qt for Symbian 4.6.3 has been released since last week, and now I've finally updated the unofficial Qt for Symbian Linux installer to work with this version. I'm glad to share this tutorial, with many thanks to my colleagues &lt;a href=&quot;http://lizardo.wordpress.com/&quot;&gt;Anderson Lizardo&lt;/a&gt; and &lt;a href=&quot;http://www.danilocesar.com/&quot;&gt;Danilo Cesar&lt;/a&gt; for helping me understand how the Qt for Symbian installer scripts works. This updated &quot;All-In-One&quot; installer installs the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Qt for Symbian 4.6.3&lt;/li&gt;&lt;li&gt;Qt Mobility 1.0.0 (opensource)&lt;/li&gt;&lt;li&gt;Nokia Smart Installer 0.18beta&lt;/li&gt;&lt;/ul&gt;I must advice beforehand that besides everything's woking as expected, I still haven't had time to fix a small issue (don't worry! it's not critical) that outputs when building a source code, which happens to be some annoying warning messages regarding missing include paths:&lt;br /&gt;&lt;pre&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(53) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/osextensions/stdapis/&quot; not found&lt;br /&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(54) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/osextensions/stdapis/sys/&quot; not found&lt;br /&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(57) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/osextensions/stdapis/stlport/&quot; not found&lt;br /&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(59) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/oem/&quot; not found&lt;br /&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(62) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/osextensions/&quot; not found&lt;br /&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(63) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/domain/osextensions/&quot; not found&lt;br /&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(64) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/domain/osextensions/loc/&quot; not found&lt;br /&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(66) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/domain/osextensions/loc/sc/&quot; not found&lt;br /&gt;(WARNING): ../myproject/src/src_0xE4023dec.mmp(67) : SYSTEMINCLUDE path &quot;../5.0/epoc32/include/domain/middleware/loc/sc/&quot; not found&lt;br /&gt;&lt;/pre&gt;The install instructions pretty much follows the guidelines for Lizardo's Qt for Symbian 4.6.2 Linux installer (see below).&lt;br /&gt;&lt;h1&gt;Preparation&lt;/h1&gt;You need to download the following files:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.forum.nokia.com/Library/Tools_and_downloads/Other/Symbian_SDKs/&quot;&gt;S60_5th_Edition_SDK_v1_0_en.zip (623MB) or S60-SDK-200634-3.1-Cpp-f.1090b.zip (355MB)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.forum.nokia.com/info/sw.nokia.com/id/91d89929-fb8c-4d66-bea0-227e42df9053/Open_C_SDK_Plug-In.html&quot;&gt;s60_open_c_cpp_plug_in_v1_6_en.zip (35MB)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.codesourcery.com/sgpp/lite/arm/releases/2005Q1C&quot;&gt;gnu-csl-arm-2005Q1C-arm-none-symbianelf-i686-pc-linux-gnu.tar.bz2 (11MB)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://martin.st/symbian/gnupoc-package-1.15.tar.gz&quot;&gt;gnupoc-package-1.15.tar.gz (6.2MB)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://franciscoalecrim.com/lizardo/gnupoc_1.15_installer_v2.sh&quot;&gt;gnupoc_1.15_installer_v2.sh&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://get.qt.nokia.com/qt/source/qt-symbian-opensource-4.6.3.exe&quot;&gt;qt-symbian-opensource-4.6.3.exe (210MB)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://get.qt.nokia.com/qt/solutions/qt-mobility-symbian-opensource-1.0.0.zip&quot;&gt;qt-mobility-symbian-opensource-1.0.0.zip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://get.qt.nokia.com/nokiasmartinstaller/nokiasmartinstallerforsymbian-0.18beta.zip&quot;&gt;nokiasmartinstallerforsymbian-0.18beta.zip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://franciscoalecrim.com/abinader/qt_for_symbian_4.6.3_all_in_one_linux_installer_v2.sh&quot;&gt;qt_for_symbian_4.6.3_all_in_one_linux_installer_v2.sh&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Download all the required files and store them on a common folder (ie. &lt;i&gt;~/Downloads&lt;/i&gt;). For building the native tools from GnuPoc, you will need the following packages:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GCC C/C++ compilers&lt;/li&gt;&lt;li&gt;ZLib library development files&lt;/li&gt;&lt;li&gt;OpenSSL library development files&lt;/li&gt;&lt;/ul&gt;Additionally, you will need Wine to execute Qt-related buildsystem utilities.&amp;nbsp;On Ubuntu, you can install these running the command below:&lt;br /&gt;&lt;pre&gt;$ sudo apt-get install build-essential zlib1g-dev libssl-dev wine&lt;br /&gt;&lt;/pre&gt;&lt;h1&gt;Installation&lt;/h1&gt;Everything set, now we can proceed for install. First, install GnuPoc + S60 SDK + Open C/C++ plugin for S60 SDK:&lt;br /&gt;&lt;pre&gt;$ ./gnupoc_1.15_installer_v2.sh &amp;lt;download-dir&amp;gt; &amp;lt;gnupoc-dir&amp;gt; &amp;lt;x.y&amp;gt;&lt;br /&gt;&lt;/pre&gt;Where &lt;b&gt;&amp;lt;download-dir&amp;gt;&lt;/b&gt; is the common downloads directory (ie. &lt;i&gt;~/Downloads&lt;/i&gt;), &lt;b&gt;&amp;lt;gnupoc-dir&amp;gt;&lt;/b&gt; is the destination directory for GnuPoc and the SDK files (ie. &lt;i&gt;~/gnupoc&lt;/i&gt;) and &lt;b&gt;&amp;lt;x.y&amp;gt;&lt;/b&gt; is the SDK version you want to install (ie. &lt;i&gt;3.1&lt;/i&gt; or &lt;i&gt;5.0&lt;/i&gt;). Note that both directories must have absolute paths.&lt;br /&gt;If installation was successful, you should see an output like:&lt;br /&gt;&lt;pre&gt;Installation has finished. Before using the GnuPoc SDK, run these commands on the console:&lt;br /&gt; &lt;br /&gt;export PATH=&amp;lt;gnupoc-dir&amp;gt;/bin:$PATH&lt;br /&gt;export EPOCROOT=&amp;lt;gnupoc-dir&amp;gt;/symbian-sdks/5.0/ # trailing &quot;/&quot; is required!&lt;br /&gt; &lt;br /&gt;(These commands must be run again every time a new console is opened.)&lt;/pre&gt;&lt;br /&gt;Run the commands as instructed on the message. Now we can proceed to install the Qt for Symbian 4.6.3 All-In-One Linux installer:&lt;br /&gt;&lt;pre&gt;$ export PATH=&amp;lt;qt-s60-dir&amp;gt;/bin:$PATH&lt;br /&gt;$ ./qt_for_symbian_4.6.3_all_in_one_linux_installer_v1.sh &amp;lt;download-dir&amp;gt; &amp;lt;qt-s60-dir&amp;gt;&lt;br /&gt;&lt;/pre&gt;Where &lt;b&gt;&amp;lt;download-dir&amp;gt;&lt;/b&gt; is the common downloads directory (ie. &lt;i&gt;~/Downloads&lt;/i&gt;), and &lt;b&gt;&amp;lt;qt-s60-dir&amp;gt;&lt;/b&gt; is the directory for Qt Symbian files (ie. &lt;i&gt;~/gnupoc/qt-4.6.3&lt;/i&gt;). Note that both directories must have absolute paths.&lt;br /&gt;If installation was successful, you should see an output like:&lt;br /&gt;&lt;pre&gt;Installation has finished. Before using the Qt for Symbian SDK, run this command on the console:&lt;br /&gt;&lt;br /&gt;export PATH=&amp;lt;qt-s60-dir&amp;gt;/bin:$PATH&lt;br /&gt;unset QMAKESPEC # make sure there is no QMAKESPEC variable set&lt;br /&gt; &lt;br /&gt;(This command must be run again every time a new console is opened.)&lt;/pre&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;Before using Qt for Symbian, you should run the command as instructed on the message above. Now you can start coding in Qt for Symbian directly from you Linux machine :)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;ps: Thanks to &lt;a href=&quot;http://pinaraf.blogspot.com/&quot;&gt;Pinaraf&lt;/a&gt; for the feedback when executing the steps from this tutorial!&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;ps2: I would like to notice that I'm going to KDE's Akademy this year to present a workshop called &quot;Plasma Animations Overview (aka. Pimp my Plasmoids!)&quot;. So, if you're also going there and still needs some help regarding Qt for Symbian usage on Linux, be sure to ask!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_5zWbGW9Mjq4/TBr6N3tacLI/AAAAAAAAACc/xD8Vo_fv1Qs/s1600/igta2010.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;168&quot; src=&quot;http://3.bp.blogspot.com/_5zWbGW9Mjq4/TBr6N3tacLI/AAAAAAAAACc/xD8Vo_fv1Qs/s320/igta2010.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8974121210221508485-3998057548747766323?l=brunoabinader.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Bruno de Oliveira Abinader</name>
			<email>noreply@blogger.com</email>
			<uri>http://brunoabinader.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Bruno Abinader's Blog</title>
			<subtitle type="html">A space for informations, tips, and news about the universe that surrounds me.</subtitle>
			<link rel="self" href="http://brunoabinader.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8974121210221508485</id>
			<updated>2010-07-31T03:49:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libgcal 0.9.5 plus a video</title>
		<link href="http://savago.wordpress.com/2010/06/20/libgcal-0-9-5-plus-a-video/"/>
		<id>http://savago.wordpress.com/?p=304</id>
		<updated>2010-06-20T21:04:59+00:00</updated>
		<content type="html">&lt;p&gt;It is being a quite busy week and it shows since it is being just a few days since previous release of libgcal.&lt;/p&gt;
&lt;p&gt;This is a highly recommended upgrade, and also I point every pacman (Package Manager/Maintainer) to use &lt;a href=&quot;http://code.google.com/p/libgcal/downloads/detail?name=libgcal-0.9.5.tar.bz2&quot;&gt;version 0.9.5 of libgcal&lt;/a&gt; to create packages for your distribution. As Fathi Boudra (the debian packager of libgcal) pointed to me, release 0.9.4 was missing 3 public user functions featured in previous releases.&lt;/p&gt;
&lt;p&gt;Now ABI has being restored, plus some extras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for IM field. This is not exported to akonadi resource yet, since it seems that in KAddressBook there is not an easy way to specify the IM type (i.e. skype, AIM, etc)&lt;/li&gt;
&lt;li&gt;As said previously, restored ABI (gcal_contact_get_phone, _set_phone, _set_mail will map to the prefered field)&lt;/li&gt;
&lt;li&gt;some memory leaks are fixed&lt;/li&gt;
&lt;li&gt;improved unit test coverage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The akonadi resource has not changed, so you can continue using &lt;a href=&quot;http://code.google.com/p/libgcal/downloads/detail?name=akonadi-googledata-1.1.0.tar.bz2&quot;&gt;akonadi-googledata-1.1.0&lt;/a&gt; *with* libgcal 0.9.5.&lt;/p&gt;
&lt;p&gt;And last, but not least, special thanks to Holger Kral who is helping me to make KDE support for google contacts near to perfection.&lt;/p&gt;
&lt;p&gt;To close this post, a nice video showing kaddressbook updating a google contact with basically all possible fields.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/304/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/304/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/304/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/304/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/304/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/304/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/304/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/304/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/304/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/304/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=304&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Accelerating 2D with Gallium3D</title>
		<link href="http://igortrindade.wordpress.com/2010/06/15/accelerating-2d-with-gallium3d/"/>
		<id>http://igortrindade.wordpress.com/?p=58</id>
		<updated>2010-06-15T00:40:15+00:00</updated>
		<content type="html">&lt;p&gt;Gallium3D is the Linux/Unix(tm) 3D infrastructure. It can be described as a set of interfaces and a collection of supporting libraries[1].&lt;/p&gt;
&lt;p&gt;It has module called state tracker that translate the graphics api states, shaders and primitives in something that the pipe driver can understand.[1]So when you want to create a new Graphics API you need to write a new state tracker.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://igortrindade.files.wordpress.com/2010/06/diagram1.jpeg&quot;&gt;&lt;img class=&quot;size-medium wp-image-60 aligncenter&quot; title=&quot;Diagram1&quot; src=&quot;http://igortrindade.files.wordpress.com/2010/06/diagram1.jpeg?w=205&amp;#038;h=300&quot; alt=&quot;&quot; width=&quot;205&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The pipe driver basically translate the shader, primitives and all others state in something that the hardware can understand. [1]&lt;/p&gt;
&lt;p&gt;And finally the Winsys communicates with the OS. This archicture does gallium3d work in every Operating System.&lt;/p&gt;
&lt;p&gt;So what i am doing?&lt;/p&gt;
&lt;p&gt;Now i am hacking a State Tracker to cairo graphics[2]. With cairo i just care with the Canvas trying to make it fast and fast.&lt;/p&gt;
&lt;p&gt;I hope writing the Gallium3d backend improve cairo perfomance in some advanced operations like some kind of Blend or creating a GPU like AA(Anti Aliasing).&lt;/p&gt;
&lt;p&gt;So what is the advantage of it?&lt;/p&gt;
&lt;p&gt;Well, We are removing a layer. Normally the Graphics ToolKits have the backends implemented over OpenGL, OpenVG or X11. And OpenGL and OpenVG are done over Gallium3D. Creating Cairo State Tracker we can access gallium directly.&lt;/p&gt;
&lt;p&gt;But there are problems too. Removing a layer we are adding complexity. With OpenVG we can draw and fill complex paths. Creating the state tracker we need to implement algorithms to draw paths and fill them for example.&lt;/p&gt;
&lt;p&gt;What we have right now?&lt;/p&gt;
&lt;p&gt;Now we have some basic operations like draw paths, clipping and filling.&lt;/p&gt;
&lt;p&gt;It is in the early stages but it is a start.&lt;/p&gt;
&lt;p&gt;By the way, In the next post i can explain a little bit about the code. &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;[1] http://jrfonseca.blogspot.com/2008/04/gallium3d-introduction.html&lt;/p&gt;
&lt;p&gt;[2] http://cgit.freedesktop.org/~igor.oliveira/cairo-drm-gallium/&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/igortrindade.wordpress.com/58/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/igortrindade.wordpress.com/58/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/igortrindade.wordpress.com/58/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/igortrindade.wordpress.com/58/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/igortrindade.wordpress.com/58/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/igortrindade.wordpress.com/58/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/igortrindade.wordpress.com/58/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/igortrindade.wordpress.com/58/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/igortrindade.wordpress.com/58/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/igortrindade.wordpress.com/58/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=igortrindade.wordpress.com&amp;amp;blog=10176701&amp;amp;post=58&amp;amp;subd=igortrindade&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Igor Trindade Oliveira</name>
			<uri>http://igortrindade.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Code, Beer and Unix</title>
			<link rel="self" href="http://igortrindade.wordpress.com/feed/atom/"/>
			<id>http://igortrindade.wordpress.com/feed/atom/</id>
			<updated>2010-07-11T15:49:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libgcal 0.9.4 released</title>
		<link href="http://savago.wordpress.com/2010/06/11/libgcal-0-9-4-released/"/>
		<id>http://savago.wordpress.com/?p=279</id>
		<updated>2010-06-11T02:20:58+00:00</updated>
		<content type="html">&lt;div id=&quot;_mcePaste&quot;&gt;Sweet! But what the heck is this &amp;#8216;libgcal&amp;#8217; thingie? For starts, the name can and is misleading, since it should read as &amp;#8216;library for google calendar&amp;#8217; but in reality, it implements both Contacts and Calendar google data protocol.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;When I got it started, back in February of 2008, it was supposed to implement just calendar, but later on I realized that adding contact support only required +25% of code on it (thanks for well modular software design). Back then,  there was no other good alternative for any C/C++ programmer that would fit the following requirements:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;easy to use;&lt;/li&gt;
&lt;li&gt;well documented;&lt;/li&gt;
&lt;li&gt;few dependencies;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;So, I got my library started! After studying the google data protocol 1.0 (at the time) for while, I realized that using XPath would make my life way easier than say, browsing through the DOM tree searching for the attributes and tags that I wanted.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;At that time, Qt didn&amp;#8217;t have support for XPath (it only started with 4.5), so I went with libxml. For networking I used libcurl, which is fast/reliable and has great documentation (and a very welcoming community, from time to time I asked for help and always got answers for my questions).&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;From the very early beginning, I set a high quality standard in the development (after all, parsing XML in C is already prone to errors by itself) and followed a TDD (Test Driven Development) approach where *first* I write the test and *later* write the implementation of functions. Having an average of test coverage of 80% helped a lot when google released version 2.0 of the protocol (back in december 2008) and now more recently, version 3.0 of Contact&amp;#8217;s protocol. I did the porting from version 1.0 to version 2.0 of the protocol in few hours, mostly because I could detect any regression by simply running the test suites.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;IIRC in about 4 months I got the basic (authenticate, retrieve, add/edit/delete, query for updates) done and the library even got featured in the google official blog (that was surprising to say the least)!&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;So, the library was &amp;#8216;done&amp;#8217;, let&amp;#8217;s put it to good use. I decided to integrate it with Opensync (it was rather cool, I got google contacts and calendar sync for my Nokia N95 over bluetooth working 6 months before google decided to release a syncml server for S60 devices). You can see a pre-jurassic video of this &lt;a href=&quot;http://www.youtube.com/watch?v=r_jxOjdEMFI&quot;&gt;here&lt;/a&gt;. I think up until now libsyncml is a pretty good syncml implementation, it is just a shame that there is not a good UI bounded to it.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;But I needed a good UI and the alternative seemed to write an akonadi resource. In just 3 weeks I got contacts working, while also implementing missing features in libgcal to make possible to do fast-sync (i.e. when you download only what has changed in server side). Contacts resource was done in just 3 days (I think this is clearly a good signal that akonadi API is well designed).&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Developing the akonadi resources gave the opportunity to better understand how KDE community works and also to start running KDE trunk as my default desktop (after all, pre-packaged software are for sissies and developers should eat their own dog food).&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;So, why I wrote all this story? Well, to help to understand some numbers:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;10 months &amp;#8230;&amp;#8230;. since last release (0.9.3)&lt;/li&gt;
&lt;li&gt;6 distros &amp;#8230;&amp;#8230;&amp;#8230;. pre-packages libgcal (Debian, Ubuntu, OpenSuse, Gentoo, Mandriva, FreeBSD) and counting&lt;/li&gt;
&lt;li&gt;2326 downloads .. directly from libgcal project website (hey, this is a source code tarball of a library and not some porn!)&lt;/li&gt;
&lt;li&gt;20681 views &amp;#8230;&amp;#8230; reported by google analytics in a 1 year period&lt;/li&gt;
&lt;li&gt;3000 ms&amp;#8230;&amp;#8230;&amp;#8230; the lag to ping google servers in a bad day in Manaus/Amazonas (yeah, truly it is unbeliavable how I managed to write a *networking* library in this enviroment but what doesn&amp;#8217;t kill you makes you stronger)&lt;/li&gt;
&lt;li&gt;6762 LOC &amp;#8230;&amp;#8230;. lines of C code (34% are unit tests)&lt;/li&gt;
&lt;li&gt;76.5 % &amp;#8230;&amp;#8230;&amp;#8230; current *real* code coverage (here I slipped a bit, it used to be 80%)&lt;/li&gt;
&lt;li&gt;10th &amp;#8230;&amp;#8230;&amp;#8230;.. of &lt;a href=&quot;https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=wishlist&amp;amp;votes=21&amp;amp;order=bugs.votes&quot;&gt;most wanted&lt;/a&gt; KDE features&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;So, what this new release brings? For start, support for multiple email addresses, patch by Stefano Avallone (Andre Loureiro helped to fix the unit test) and migration to Google Contacts API 3.0. Next, support for structured names and several other fields (nickname, blog, etc) by Holger Kral. I think currently only IM field is missing from the library (but is quite easy to implement that).&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;You can have access to both the library and the akonadi resource in &lt;a href=&quot;http://libgcal.googlecode.com&quot;&gt;libgcal website&lt;/a&gt;. The only issue is that is required to purge your akonadi resource and do a slow-sync again because the ETags and urls of contacts have changed thanks to migration to version 3.0 of protocol.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;So, what is missing in the library for a 1.0 release? The following features:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;support multiple calendars (easy to do, is a matter of using another URL as base to do the network operations)&lt;/li&gt;
&lt;li&gt;support recurrent events in calendar (thanks to the fact that google uses an invalid iCal to represent it, it gets tricky to implement it since a iCal parser would fail to read this data). An idea to implement this would be to &amp;#8216;convert&amp;#8217; the invalid iCal from google to a valid one and do the opposite when sending data back to the google server.&lt;/li&gt;
&lt;li&gt;batch commit (nice to have, but not a hard requirement)&lt;/li&gt;
&lt;li&gt;port/rewrite it all to Qt (seriously, this was actually started already: http://code.google.com/p/libgdata-cpp/). Here I&amp;#8217;m somewhat unsure, if Qt has support for the XPath/XQuery in Symbian (it seems that RTTI is not supported in this OS).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Oh well&amp;#8230; so, why not give it a try? If you got the skills, go on and download the sources (please check the README and INSTALL files) and feel free to report to me how things worked (or not&amp;#8230;).&lt;/p&gt;
&lt;p&gt;
If you are a normal user, I think in a couple of weeks it should get packaged for your loved distro.&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/279/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/279/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/279/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/279/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/279/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/279/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/279/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/279/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/279/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/279/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=279&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">MADDE + Qt 4.7</title>
		<link href="http://www.anselmolsm.org/blog/madde-qt-4-7/"/>
		<id>http://www.anselmolsm.org/blog/?p=1262</id>
		<updated>2010-06-10T03:10:57+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://wiki.maemo.org/Maemo_5/PR1.2&quot; target=&quot;_blank&quot;&gt;Maemo 5 PR 1.2&lt;/a&gt; is out with Qt 4.6.2  installed, so developers now can create applications with Qt 4.6 using either the &lt;a href=&quot;http://wiki.maemo.org/Documentation/Maemo_5_Final_SDK_Installation&quot; target=&quot;_blank&quot;&gt;official scratchbox based SDK&lt;/a&gt; or &lt;a href=&quot;http://wiki.maemo.org/MADDE&quot; target=&quot;_blank&quot;&gt;MADDE&lt;/a&gt; (remember, &amp;#8220;&lt;strong&gt;MADDE&lt;/strong&gt; is currently a &lt;strong&gt;technology preview&lt;/strong&gt;.&amp;#8221;)&lt;/p&gt;
&lt;p&gt;BUT&amp;#8230; there are people who prefer &amp;#8220;&lt;a href=&quot;http://www.youtube.com/watch?v=q95BRB_BPiU&quot; target=&quot;_blank&quot;&gt;Livin&amp;#8217; on the Edge&lt;/a&gt;&amp;#8220;. If you are one of those and already want/need to develop with Qt 4.7 (&lt;em&gt;not released yet!&lt;/em&gt;) for Maemo 5, using MADDE to build your applications / packages, here is an update to the procedure first &lt;a href=&quot;http://labs.trolltech.com/blogs/2010/02/08/qt-46-for-maemo-5-applications-on-mac-os-x-take-ii/&quot; target=&quot;_blank&quot;&gt;published by the troll ﻿Harald Fernengel&lt;/a&gt; (AKA harryF). Although the title says &amp;#8220;on MacOS X&amp;#8221;, the steps also work on Linux.&lt;/p&gt;
&lt;p&gt;Step-by-step:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install MADDE. &lt;a href=&quot;http://tablets-dev.nokia.com/MADDE.php&quot; target=&quot;_blank&quot;&gt;Download it here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you are &lt;strong&gt;not&lt;/strong&gt; using a Debian based distro, you need to install the &amp;#8220;﻿﻿Tools for Debian Packages&amp;#8221; package of your distribution (e.g. &amp;#8220;deb&amp;#8221; on openSUSE, sys-apps/debianutils on Gentoo).&lt;/li&gt;
&lt;li&gt;Download the script &lt;strike&gt;fetch-qt4.7.0~git20100520-0maemo1.sh &lt;/strike&gt; &lt;a href=&quot;http://anselmolsm.org/public/qt/madde-qt47/fetch-qt4.7.0~git20100614-0maemo1.sh&quot; target=&quot;_blank&quot;&gt;﻿fetch-qt4.7.0~git20100614-0maemo1.sh&lt;/a&gt; . This script downloads the libqt4-experimental packages from repository.maemo.org and installs then in your MADDE &amp;#8211; Before you run the script, remember to adjust the MADDE_PATH variable according to the path you installed MADDE.&lt;/li&gt;
&lt;li&gt;Download &lt;strike&gt;qt4-maemo5-qt4.7.0~git20100520-0maemo1.tar.gz &lt;/strike&gt; &lt;a href=&quot;http://anselmolsm.org/public/qt/madde-qt47/qt4-maemo5-qt4.7.0~git20100614-0maemo1.tar.gz&quot; target=&quot;_blank&quot;&gt;qt4-maemo5-qt4.7.0~git20100614-0maemo1.tar.gz&lt;/a&gt;. It contains the Qt tools compiled for the correspondent version, configured for cross compiling. Extract to /opt/qt4-maemo5.&lt;/li&gt;
&lt;li&gt;Check if &lt;strong&gt;mad&lt;/strong&gt; is in your PATH.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To build an application using your fresh environment, run &lt;strong&gt;/opt/qt4-maemo5/bin/qmake &amp;amp;&amp;amp; make .&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you succeeded in the setup process, this should result in a armel binary ready to run on N900. To generate a deb package, you can use the tools offered by MADDE to build a skeleton of debian package and so on.&lt;/p&gt;
&lt;p&gt;To run your application on N900, install libqt4-experimental-* packages. If QtQuick (QML) is part of your plans, qmlviewer  is in the package qt4-experimental-declarative-qmlviewer .&lt;/p&gt;
&lt;p&gt;UPDATE (2010-06-15): For newer (or older) versions, check &lt;a href=&quot;http://anselmolsm.org/public/qt/madde-qt47/&quot; target=&quot;_blank&quot;&gt;http://anselmolsm.org/public/qt/madde-qt47/&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;http://www.anselmolsm.org/blog/?ak_action=api_record_view&amp;amp;id=1262&amp;amp;type=feed&quot; alt=&quot;&quot; /&gt;</content>
		<author>
			<name>Anselmo Lacerda S. de Melo</name>
			<uri>http://www.anselmolsm.org/blog</uri>
		</author>
		<source>
			<title type="html">anselmolsm/blog » INdT</title>
			<link rel="self" href="http://www.anselmolsm.org/blog/category/planet_indt/feed/"/>
			<id>http://www.anselmolsm.org/blog/category/planet_indt/feed/</id>
			<updated>2010-06-16T01:09:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">I am going to Debconf 10</title>
		<link href="http://ianlawrence.info/random-stuff/i-am-going-to-debconf-10"/>
		<id>http://ianlawrence.info/random-stuff/i-am-going-to-debconf-10</id>
		<updated>2010-06-01T15:31:21+00:00</updated>
		<content type="html">Yes, thanks to the excellent &lt;a href=&quot;http://valessiobrito.info/blog/&quot;&gt;Valessio Brito&lt;/a&gt; I already put the “I’m going to DebConf10” button on my front page. &lt;b&gt;Absolutely stoked!&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;</content>
		<author>
			<name>Ian Lawrence</name>
			<uri>http://ianlawrence.info/random-stuff</uri>
		</author>
		<source>
			<title type="html">Ian Lawrence - Blog</title>
			<subtitle type="html">What is the digital equivalent of lovely? He wondered. What are the digits that encode beauty, the number-fingers that enclose, transform, transmit, decode, and somehow, in the process, fail to trap or choke the soul of it? Not because of the technology but in spite of it, beauty, that ghost, that treasure, passes undiminished through the new machines.</subtitle>
			<link rel="self" href="http://ianlawrence.info/random-stuff/RSS2"/>
			<id>http://ianlawrence.info/random-stuff/RSS2</id>
			<updated>2010-07-31T05:29:12+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">New Qt WebKit nearing release</title>
		<link href="http://codeposts.blogspot.com/2010/05/new-qt-webkit-nearing-release.html"/>
		<id>tag:blogger.com,1999:blog-36235783.post-6968233239930802603</id>
		<updated>2010-05-31T18:06:03+00:00</updated>
		<content type="html">So, for the first time, we are going to release Qt WebKit as a separate project. This does not mean that we will stop releasing it as part of Qt, but that if you are stuck on an older Qt 4.6 release, it is still possible to use a newer Qt WebKit. In the future this also allows us to release more often, independently of Qt.&lt;br /&gt;&lt;br /&gt;The last half year we have been hard at work on enabling the use of Qt WebKit on mobile devices, while still supporting and maintaining our brilliant support of Desktop applications. Targeting mobile devices is an ongoing challenge due to other interaction modes, smaller screen sizes and less powerful processor.&lt;br /&gt;&lt;br /&gt;We have been growing our teams and our responsibilities and it has been an interesting, if not tiring, half a year :-) Locally, we have been growing our Brazilian core team to 5 people, plus creating some new teams working on related projects. What a rush! :-) We now have teams in at least Norway, Finland, Brazil and Boston working directly on WebKit.&lt;br /&gt;&lt;br /&gt;So what have our distributed teams been up to?&lt;br /&gt;&lt;br /&gt;Well, Qt WebKit has always felt reasonable fast on the Desktop. Not top in the class, but working quite well. On mobile devices the story was very different; dog slow, barely usable! Lots of time has gone into improving that situation by doing profiling and hunting down performance bottlenecks. Improvements that also help the Desktop case. We are not done yet, but our upcoming QtWebKit 2.0 release is a major improvement. Combining QtWebKit 2.0 with the upcoming Qt 4.7, are you will even get a few extra optimizations for free.&lt;br /&gt;&lt;br /&gt;Sometimes we had to make more drastic changes, such as using tiling for archiving good scrolling performance. Tiling basically means that you don't paint directly to the screen, but instead to surfaces (which then can actually benefit from hardware acceleration). When scrolling you then move/blit these tiles. The standard way of doing scrolling, is that you copy an area and move that area, but you always have to paint the new area visible. With tiling you normally update a few more row of tiles than those visible on the screen, so when moving you do not always need to repaint. Repainting can actually mostly be done when you are idle.&lt;br /&gt;&lt;br /&gt;We also experimented with rendering the tiles in another process, so that scrolling would never be blocked by loading or painting, but with the downside than when there is no tile painted, a checkerboard pattern would be shown, very similarly to the iPhone. Getting this right is a lot of work and with the announcement of WebKit2, we decided to postpone it for now and later concentrate on WebKit2 instead, as that will bring similar benefits, a.o.&lt;br /&gt;&lt;br /&gt;Tiling helps with the mobile interaction model, as it is quite fast to zoom. Zooming basically scaled the tiles and then re-renders, which can be done with a smooth animation. Unfortunately, just as on the iPhone,  we cannot support fixed elements, so if page authors really need that, they will have to go for CSS3 Transformations which with accelerated compositing will be painted as another layer on top of the tiles.&lt;br /&gt;&lt;br /&gt;Which brings me to the next feature: accelerated compositing. Some of the new CSS3 features such as animation and transformations were created with hardware acceleration in mind, for instance the CSS 3 transformation live in another coordinate system, and thus animating a transformation change does not change any DOM values such as for instance 'left'. The idea is that the elements being transformed are painted as a separate layer, composited on top of the normal web contents. On the iPhone, this is implemented using CoreAnimation, I believe, and is thus, tied to hardware support. For Qt, we implemented it on top of out Graphics View system, which means that even when the Graphics System is not being accelerated by hardware, we will archive better performance due to caching of the painted elements. Pretty cool stuff. Unfortunately, just as with tiling, it is only possible to take advantage of this new feature if you use the QGraphicsWebView and not the older brother, QWebView.&lt;br /&gt;&lt;br /&gt;You can imagine that most web sites were written for a width a lot larger than what you find on most phones, so either you can show the page in its original size and you will have to scroll a lot, or you can zoom it out to fit within the width of the page. The latter makes it impossible to read the text, so instead of laying out to the size of the width, we have new API (actually originally introduced in Qt 4.6) that makes it possible to lay out the contents as it was having a different viewport. The iPhone and Android does the same, using a value between 800 and 1008 pixels (980 is always default on the iPhone, where as Android varies). Laying out with such a width makes the site's contents still readable most of the time, without breaking the layout. To give the page authors a bit more control over this, Apple introduced a meta tag called &quot;viewport&quot;, which is now supported by most mobile browsers, including Mozilla Fennec. This tag allows the site author to specify which width should be used for laying out the contents as well as which zoom factor should be used, and within which limits.&lt;br /&gt;&lt;br /&gt;As touch is becoming standard on cell phones, we also had to make a few other adaptations. For instance sites with frame sets are mostly useless due to various scrolling sub elements; the same count for sites with iframes. What most mobile browsers do to fix this, is to apply frame flattening, which we now also supports/ Originally a feature invented by Nokia, but first really being put to good use on the iPhone and on Android.&lt;br /&gt;&lt;br /&gt;We didn't leave out non-touch phones either, and as such implemented spatial navigation (aka. keyboard navigation), which is not only useful for cellphones with keyboard only, but also by tv's and set-top boxes.&lt;br /&gt;&lt;br /&gt;Not everything has been related to mobile though, and as such our teams have been working on implementing new HTML5 elements such as the Progress element and concentrating on some CSS features and DOM features, such as DOM Level 3 CustomEvents, 'view-mode' Media Feature, as well as some features from CSSOM Views making it possible to listen to media and media feature changes; very useful for creating Web applications.&lt;br /&gt;&lt;br /&gt;Wow, it has been a loooong half year it seems! Now time to prepare for our local release parties! :-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/36235783-6968233239930802603?l=codeposts.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Kenneth Rohde Christiansen</name>
			<email>noreply@blogger.com</email>
			<uri>http://codeposts.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Kenneth Christiansen's code posts</title>
			<link rel="self" href="http://codeposts.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-36235783</id>
			<updated>2010-07-30T20:09:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">6 months of plasma in 10 minutes</title>
		<link href="http://savago.wordpress.com/2010/05/21/6-months-of-plasma-in-10-minutes/"/>
		<id>http://savago.wordpress.com/?p=263</id>
		<updated>2010-05-21T03:42:23+00:00</updated>
		<content type="html">&lt;p&gt;Not really&amp;#8230; It is actually 7 months of &amp;#8220;kdelibs/plasma&amp;#8221; (or libplasma) repository activity in 15 minutes (but that would not sound really as attractive as a post title).&lt;/p&gt;
&lt;p&gt;Today a fellow co-worker showed to me a really nice application: &lt;a href=&quot;http://gource.googlecode.com&quot;&gt;gource&lt;/a&gt; (like &amp;#8216;source&amp;#8217; but with &amp;#8216;g&amp;#8217; letter, maybe for &amp;#8216;graphics&amp;#8217;) written by Andrew Caudwell. This application offers some really nifty source code control visualization and supports git/mercurial and other source code control systems using some hacks.&lt;/p&gt;
&lt;p&gt;Since internet speed (not even talking about latency&amp;#8230;) in Manaus/Amazonas is lacking to say the least, I decided to use git-svn to checkout a specific revision of kdelibs/plasma directory and later I did a rebase to update the code with the trunk.&lt;/p&gt;
&lt;p&gt;So, for your amusement, enjoy.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I have some hints about this visualization:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in the first seconds there is an explosion of files (because I didn&amp;#8217;t checkout the code from the very first commit in svn, is like the touched files warped inside of logs)&lt;/li&gt;
&lt;li&gt;the code seems to be rather modular (there are a well defined set of clusters on it)&lt;/li&gt;
&lt;li&gt;development speed is affected by some special dates (feature freeze, Christmas, Tokamak, etc)&lt;/li&gt;
&lt;li&gt;there are a quite varied number of contributors working in libplasma (which is good! KDE is a pretty open community)&lt;/li&gt;
&lt;li&gt;the overall champions in commits are (unsurprisingly!) Aaron and Marco &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/263/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/263/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/263/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/263/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/263/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/263/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/263/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/263/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/263/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/263/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=263&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Partindo para novos desafios &amp;#8211; Obrigado INdT</title>
		<link href="http://franciscoalecrim.com/blog/2010/05/20/partindo-para-novos-desafios-obrigado-indt/"/>
		<id>http://franciscoalecrim.com/blog/?p=293</id>
		<updated>2010-05-20T18:11:12+00:00</updated>
		<content type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Recebo incentivos do INdT desde a universidade, quando era bolsista laboratório de VoIP(UFAM) financiado pelo INdT. Depois disto, passei a fazer parte do stream 10LE dentro INdT, agora chamado de OpenBossa pela comunidade. Foram muitos projetos e mudanças neste 4 anos!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://share.ovi.com/album/alecrim.20100517_indt&quot;&gt;&lt;img class=&quot;alignnone&quot; src=&quot;http://media.share.ovi.com/m1/s/2063/31a34803813d4735b336f8818af69c50.jpg&quot; alt=&quot;&quot; width=&quot;360&quot; height=&quot;270&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Durante estes 4 anos de trabalho, aprendi muito tecnicamente. Acredito que dentro da empresa existam vários pontos a serem melhorados, mas estes problemas são pequenos perto das vantagens de trabalhar em projetos envolvendo GNU/Linux/OpenSource para a Nokia. Percebo que as habilidades desenvolvidas aqui nos permitem concorrer igualmente em vagas para vários lugares do mundo. Prova disto é termos vários colegas do INdT que passaram a trabalhar em ótimas vagas fora do país, apenas por possuírem as habilidades e contatos criados aqui. Por estas razões, acredito que o INdT seja um ótimo lugar para trabalhar.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://share.ovi.com/album/alecrim.20100517_indt&quot;&gt;&lt;img class=&quot;alignnone&quot; src=&quot;http://media.share.ovi.com/m1/s/2063/f5eb204938b147f3865b2f53351bedbc.jpg&quot; alt=&quot;&quot; width=&quot;384&quot; height=&quot;288&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta semana deixarei de trabalhar no INdT! Partirei para novos desafios em Brasília. Irie mudar de cidade por razões pessoais, pois minha noiva passou a morar lá. Aguardo desde do começo do ano a oportunidade de mudar para o stream do INdT em Brasília, mas infelizmente nenhuma oportunidade surgiu neste período. Agora parto para outra empresa, onde espero ter bons desafios, como os enfrentas aqui no INdT.&lt;/p&gt;
&lt;p&gt;Dentro do INdT, fiz vários amigos dos quais sentirei muito saudade! :&amp;#8217;( Estes me ajudaram a crescer como pessoa. Agradeço a todos pelo companherismo e amizade que tivemos! &lt;img src=&quot;http://franciscoalecrim.com/blog/wp-includes/images/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://share.ovi.com/album/alecrim.20100517_indt&quot;&gt;&lt;img class=&quot;alignnone&quot; src=&quot;http://media.share.ovi.com/m1/s/2063/1f51237cfe604b78b9de16194070eb8f.jpg&quot; alt=&quot;&quot; width=&quot;384&quot; height=&quot;288&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Muito obrigado,&lt;/p&gt;
&lt;p&gt;Alecrim!&lt;/p&gt;</content>
		<author>
			<name>Francisco Keppler Silva Alecrim</name>
			<uri>http://franciscoalecrim.com/blog</uri>
		</author>
		<source>
			<title type="html">franciscoalecrim.com</title>
			<subtitle type="html">developer</subtitle>
			<link rel="self" href="http://franciscoalecrim.com/blog/feed/atom/"/>
			<id>http://franciscoalecrim.com/blog/feed/atom/</id>
			<updated>2010-05-20T18:29:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Create Meego rootfs using Ubuntu Lucid</title>
		<link href="http://franciscoalecrim.com/blog/2010/05/20/create-meego-rootfs-using-ubuntu-lucid/"/>
		<id>http://franciscoalecrim.com/blog/?p=297</id>
		<updated>2010-05-20T15:46:29+00:00</updated>
		<content type="html">&lt;p&gt;This week I took some time playing with &lt;a href=&quot;http://meego.com/&quot;&gt;Meego distro&lt;/a&gt;. I got a &lt;a href=&quot;http://www.intel.com/products/desktop/motherboards/D510MO/D510MO-overview.htm&quot;&gt;D510MO motherbord&lt;/a&gt; with Atom processor to put Meego working on it. It wasn&amp;#8217;t a hard work regarding Meego already contain a X86 repository. Last Meego release was from March 31st but they have a repository contain more recent packages. So I created a new image with most recent packages. I faced some problems to create Meego image using Ubuntu and notes about my experience with Meego are available on my wiki page.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://franciscoalecrim.com/wiki/index.php?title=Meego#Meego_Notes&quot;&gt;Notes available HERE!&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Francisco Keppler Silva Alecrim</name>
			<uri>http://franciscoalecrim.com/blog</uri>
		</author>
		<source>
			<title type="html">franciscoalecrim.com</title>
			<subtitle type="html">developer</subtitle>
			<link rel="self" href="http://franciscoalecrim.com/blog/feed/atom/"/>
			<id>http://franciscoalecrim.com/blog/feed/atom/</id>
			<updated>2010-05-20T18:29:30+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PySide v0.3.1 (’Knightsbridge’) is now available!</title>
		<link href="http://tuxrecife.blogspot.com/2010/05/pyside-v031-knightsbridge-is-now.html"/>
		<id>tag:blogger.com,1999:blog-13725649.post-2042958459163289323</id>
		<updated>2010-05-05T16:02:50+00:00</updated>
		<content type="html">A new version of PySide is now available.&lt;br /&gt;&lt;br /&gt;What’s changed since 0.3.0?&lt;br /&gt;&lt;br /&gt;With the technical preview release a few weeks ago we moved from a Boost based source code to a CPython one. This move was necessary to reduce our footprint. Now we have the first official release of this new PySide based on Shiboken (CPython) generator. Since the technical preview the main points are:&lt;br /&gt;&lt;br /&gt;- Bindings for the last missing modules: Phonon, QtScript, QtScriptTools, QtMaemo5, QtHelp, QtMultimedia, QUiTools and QXmlPatterns;&lt;br /&gt;- Fixed some memory and reference leaks;&lt;br /&gt;- Lots of bugs fixed;&lt;br /&gt;- Revamped documentation.&lt;br /&gt;&lt;br /&gt;For more Qt 4.6 information, &lt;a href=&quot;http://qt.nokia.com/doc/4.6/qt4-6-intro.html&quot;&gt;Qt 4.6 webpage&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We hope you enjoy this new release! Feel free to contribute with comments,&lt;br /&gt;bug reports and suggestions.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Packages for Fremantle are available on extra devel repository&lt;/span&gt;. More info in &lt;a href=&quot;http://www.pyside.org/downloads/&quot;&gt;PySide webpage&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13725649-2042958459163289323?l=tuxrecife.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Renato Araujo</name>
			<email>noreply@blogger.com</email>
			<uri>http://tuxrecife.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Tux em Recife</title>
			<link rel="self" href="http://tuxrecife.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-13725649</id>
			<updated>2010-07-31T05:09:03+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Symbian development using Linux on real life…</title>
		<link href="http://labs.danilocesar.com/blog/2010/05/05/symbian-development-using-linux-on-real-life/"/>
		<id>http://labs.danilocesar.com/blog/?p=28</id>
		<updated>2010-05-05T13:30:13+00:00</updated>
		<content type="html">&lt;p&gt;I believe most companies that develop Symbian products uses windows, and only windows, on their development process. Well&amp;#8230; We don&amp;#8217;t =)&lt;/p&gt;
&lt;p&gt;When we started to develop symbian applications at &lt;a href=&quot;http://www.indt.org.br/&quot;&gt;INdT&lt;/a&gt; we, as open source developers, decided to find a way to keep using linux as our development environment.&lt;br /&gt;
On the beginning we didn’t have yet &lt;a href=&quot;http://labs.trolltech.com/blogs/2010/04/21/symbian-development-using-linux/&quot; target=&quot;_blank&quot;&gt;an official way to compile our applications on linux&lt;/a&gt;, so we used (and still use)&lt;a href=&quot;http://lizardo.wordpress.com/2010/02/18/installing-qt-for-symbian-sdk-4-6-2-on-linux/&quot; target=&quot;_blank&quot;&gt; Lizardo&amp;#8217;s patchs&lt;/a&gt; that enables gnupoc to compile Qt-symbian applications on Linux.&lt;/p&gt;
&lt;h3&gt;First tip:&lt;/h3&gt;
&lt;p&gt;Personally I think finding errors on gnupoc output is an exhaustive job. So, the first tip for those who&amp;#8217;re using Lizardo&amp;#8217;s approach is to use a small piece of code in your &lt;strong&gt;.bashrc&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;function makes60
{
  make debug-gcce 2&amp;gt;&amp;amp;1 | while read line
  do
    echo -e $(echo $line |
      sed 's@\\@\\\\@g' |
      sed &quot;s/.*error.*/\\\e[0;31m(&amp;amp;)\\\e[0;31m/I&quot; |
      sed &quot;s/warning/\\\E[33m(&amp;amp;)\\\E[0;37m/gI&quot; |
      sed &quot;s/No such file/\\\E[33m(&amp;amp;)\\\E[0;37m/gI&quot;
      )
  tput sgr0;
done;
}
&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;By calling &lt;strong&gt;makes60&lt;/strong&gt;, every error/warning message will be highlighted in read/yellow.&lt;/em&gt;&lt;br /&gt;
It's a simple tweak, but it is very useful.&lt;/p&gt;
&lt;p&gt;So, we can compile our application, easily read the compiler messages... Now what?&lt;/p&gt;
&lt;h3&gt;Analyzing the process:&lt;/h3&gt;
&lt;p&gt;Let me list our development phases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;span&gt;Coding: OK &lt;/span&gt;with vim&lt;/li&gt;
&lt;li&gt; &lt;span&gt;Compiling: OK&lt;/span&gt; with gcce and some tweaks&lt;/li&gt;
&lt;li&gt; &lt;span&gt;Debugging:&lt;/span&gt; (As we work almost only with default Qt API, we build for linux first and debug there). So, it's almost OK.&lt;/li&gt;
&lt;li&gt; &lt;span&gt;Packaging .sis&lt;/span&gt;: OK with make sis&lt;/li&gt;
&lt;li&gt; &lt;span&gt;Send to device, install and test&lt;/span&gt;: It's a slow process yet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Testing on the device is a very difficult/slow task on linux. We don't have a debugger.  We don't even have any output message (Ok, we have: with &lt;a href=&quot;http://developer.symbian.org/wiki/index.php/Platform_Opening/Did_You_Know%3F/P.I.P.S.#The_stdio_Subsystem_.28libc.29&quot; target=&quot;_blank&quot;&gt;stdioserver&lt;/a&gt; writing on an txt file. Too hard!).&lt;/p&gt;
&lt;p&gt;How does it works for Windows developers? &lt;a href=&quot;http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/IDEs/Carbide.c++/&quot; target=&quot;_blank&quot;&gt;Carbide++&lt;/a&gt; and TRK!&lt;/p&gt;
&lt;p&gt;Of course we don't want to install Carbide++ on linux. So, can we use TRK with linux? Yes, we can! First of all you need to get the TRK application in &lt;a href=&quot;http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/IDEs/Carbide.c++/&quot; target=&quot;_blank&quot;&gt;Carbide++&lt;/a&gt; package or in newly released &lt;a href=&quot;http://conversations.nokia.com/2010/04/27/nokia-rolls-out-qt-sdk-for-unified-mobile-developer-experience/&quot; target=&quot;_blank&quot;&gt;Nokia SDK&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Installing TRK:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Send and execute TRK.sis on the device.&lt;/li&gt;
&lt;li&gt;Open TRK application / Options / Settings,  and select &lt;strong&gt;Connection = USB &lt;/strong&gt;instead of bluetooth.&lt;/li&gt;
&lt;li&gt;Go to TRK mainscreen / Options / Connect.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If your USB cable is plugged you will receive a &quot;&lt;strong&gt;Status: Connected&lt;/strong&gt;&quot; message on your phone.&lt;/p&gt;
&lt;p&gt;Now you need to create a serial connection between the device and your linux machine. If you're using a 2.6.33 kernel you don't need to do that. Otherwise you need to create it manually.&lt;/p&gt;
&lt;p&gt;Before you do that you need some information about the device. It can be retrieved with:&lt;/p&gt;
&lt;pre&gt;[danilo@docbrown ~]$ lsusb  | grep Nokia
Bus 001 Device 011: ID &lt;strong&gt;0421:0154&lt;/strong&gt; Nokia Mobile Phones&lt;/pre&gt;
&lt;p&gt;So, &lt;strong&gt;my&lt;/strong&gt; vendor ID is &lt;strong&gt;0421&lt;/strong&gt;, and my product ID is &lt;strong&gt;0154&lt;/strong&gt;.  &lt;span&gt;Remember to use your own numbers&lt;/span&gt; =)&lt;br /&gt;
And then you can load the usbserial mobule with the command:&lt;/p&gt;
&lt;pre&gt;sudo modprobe usbserial vendor=0x0&lt;strong&gt;421&lt;/strong&gt; product=0x&lt;strong&gt;0154&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;If everything went OK you should see a message like this:&lt;/p&gt;
&lt;pre&gt;[danilo@docbrown ~]$ dmesg | grep ttyUSB
[34063.949446] usb 1-4.3.1.4: generic converter now attached to ttyUSB0&lt;/pre&gt;
&lt;p&gt;Your serial port was created on /dev/ttyYSB0.&lt;/p&gt;
&lt;p&gt;Ok, perfect! But how to communicate with TRK?&lt;/p&gt;
&lt;p&gt;Trolls are working on that, but for now we&amp;#8217;re using the &lt;a href=&quot;http://qt.gitorious.org/qt/qt/trees/4.7/tools/runonphone&quot;&gt;runonphone&lt;/a&gt; tool. It&amp;#8217;s the same tool used by QtCreator on Windows and you can get it by cloning &lt;a href=&quot;http://qt.gitorious.org/qt&quot; target=&quot;_blank&quot;&gt;Qt Repository&lt;/a&gt; and compiling the /tools/runonphone folder.&lt;/p&gt;
&lt;h3&gt;On device testing&lt;/h3&gt;
&lt;p&gt;After compiled, runonphone can be used by passing the serial port, the sis package and the executable file to it.&lt;br /&gt;
&lt;em&gt;runonphone -p /dev/ttyUSB0 -s test_package.sis test_package.exe&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As you probably noticed all your qWarning() messages are being redirected to runonphone output. Which is very nice!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On device debugging&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We don&amp;#8217;t have an interative gdb tool as we have on windows, but Qt guys are close and I&amp;#8217;m sure we will have good news in a few days.&lt;/p&gt;
&lt;h3&gt;Concluding&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;m sure that Symbian development on Linux is near, and it will be massively adopted when those tools became part of QtCreator for linux. For those who can&amp;#8217;t wait, or think that VIM is the best IDE ever, I hope those tips can help you. =)&lt;/p&gt;
&lt;p&gt;And for those who&amp;#8217;re working with Qt for symbian, remember to join the &lt;strong&gt;#qt-symbian&lt;/strong&gt; on &lt;strong&gt;Freenode&lt;/strong&gt;.&lt;/p&gt;</content>
		<author>
			<name>Danilo Cesar</name>
			<uri>http://labs.danilocesar.com/blog</uri>
		</author>
		<source>
			<title type="html">Protected * Void</title>
			<subtitle type="html">Free your code, Free your mind!</subtitle>
			<link rel="self" href="http://labs.danilocesar.com/blog/feed/"/>
			<id>http://labs.danilocesar.com/blog/feed/</id>
			<updated>2010-05-05T20:49:05+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Mapping mouse position to angles (QtQuick example)</title>
		<link href="http://blog.eduardofleury.com/archives/2010/04/108/"/>
		<id>http://blog.eduardofleury.com/?p=108</id>
		<updated>2010-04-30T20:53:02+00:00</updated>
		<content type="html">&lt;p&gt;Hi there! This post is to share with you something I hacked these days.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;The use case&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Image you are writing a widget or a piece of an application interface and you want to rotate something based on a mouse click. For instance, you may have a widget that looks like a rotating knob, or a round analogue gauge.&lt;/p&gt;
&lt;p&gt;For this post, let&amp;#8217;s use a car dashboard speedometer. What I want here is to click somewhere on the gauge and have the needle rotated towards the current mouse position. Check this video of how it should work.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;The problem&lt;/h3&gt;
&lt;p&gt;In Qt, rotating a widget is easy in the context of QtQuick or QGraphicsView, just define the &amp;#8220;rotation&amp;#8221; property to the desired angle and you are all set. The problem here is to find out &lt;span&gt;&lt;strong&gt;what the desired angle is.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Here I want to find out which is the angle formed between a given mouse position and centre of the gauge, or the origin of the needle rotation. Getting the mouse position is easy in QtQuick, simply watch the &amp;#8220;mouseX&amp;#8221; and &amp;#8220;mouseY&amp;#8221; properties of a MouseArea. But what about converting that to an &amp;#8220;angle&amp;#8221; ?&lt;/p&gt;
&lt;p&gt;In mathematical terms what I want is to convert the mouse position from linear coordinates (X,Y pair) to circular coordinates (angle, radius pair) with the centre of the gauge being the origin of my plane. But designers using QtQuick really don&amp;#8217;t want to deal with that.&lt;/p&gt;
&lt;h3&gt;The solution&lt;/h3&gt;
&lt;p&gt;I made a Qt class meant to be used as a &amp;#8220;model&amp;#8221; or &amp;#8220;helper&amp;#8221; for both C++ and QtQuick applications. This class hides the trigonometry required for that conversion by exporting a set of properties, namely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;originX&lt;/li&gt;
&lt;li&gt;originY&lt;/li&gt;
&lt;li&gt;x&lt;/li&gt;
&lt;li&gt;y&lt;/li&gt;
&lt;li&gt;angle&lt;/li&gt;
&lt;li&gt;radius&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So how would we use it in our example?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set &amp;#8220;&lt;strong&gt;originX&lt;/strong&gt;&amp;#8221; and &amp;#8220;&lt;strong&gt;originY&lt;/strong&gt;&amp;#8221; to the centre of the gauge. That&amp;#8217;s the origin of the needle, right?&lt;/li&gt;
&lt;li&gt;Set &amp;#8220;&lt;strong&gt;x&lt;/strong&gt;&amp;#8221; and &amp;#8220;&lt;strong&gt;y&lt;/strong&gt;&amp;#8221; to the current mouse position. In QML that would be &amp;#8220;x: mouseArea.mouseX&amp;#8221; and &amp;#8220;y: mouseArea.mouseY&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Read the value of &amp;#8220;&lt;strong&gt;angle&lt;/strong&gt;&amp;#8220;. In QML that would be something like  &amp;#8220;needleRotation.angle: angleModel.angle&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Then QtQuick data binding system will handle everything else. Every time the mouse moves, the properties &amp;#8220;&lt;strong&gt;x&lt;/strong&gt;&amp;#8221; and &amp;#8220;&lt;strong&gt;y&lt;/strong&gt;&amp;#8221; will be updated, the model will then recalculate the values of &amp;#8220;&lt;strong&gt;angle&lt;/strong&gt;&amp;#8221; and &amp;#8220;&lt;strong&gt;radius&lt;/strong&gt;&amp;#8221; causing the needle to update itself.&lt;/p&gt;
&lt;p&gt;Below you can see a diagram of that behaviour. Note that the opposite also works, that is, once I explicitly set an &amp;#8220;&lt;strong&gt;angle&lt;/strong&gt;&amp;#8221; and &amp;#8220;&lt;strong&gt;radius&lt;/strong&gt;&amp;#8221; in the model, the values of &amp;#8220;&lt;strong&gt;x&lt;/strong&gt;&amp;#8221; and &amp;#8220;&lt;strong&gt;y&lt;/strong&gt;&amp;#8221; are automatically updated.&lt;/p&gt;
&lt;div id=&quot;attachment_111&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;img class=&quot;size-full wp-image-111&quot; title=&quot;AngleModel&quot; src=&quot;http://blog.eduardofleury.com/wp-content/uploads/2010/04/AngleModel.png&quot; alt=&quot;Relationship between AngleModel and different coordinates&quot; width=&quot;900&quot; height=&quot;506&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Relationship between AngleModel and different coordinates&lt;/p&gt;&lt;/div&gt;
&lt;h3&gt;The Source&lt;/h3&gt;
&lt;p&gt;To grab the code go to&lt;strong&gt; &lt;a title=&quot;Qt Components Gitorious&quot; href=&quot;http://gitorious.org/qt-components/qt-components/commits/master&quot; target=&quot;_blank&quot;&gt;Qt Components Gitorious&lt;/a&gt; &lt;/strong&gt;and check:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;examples/clickable-dial&lt;/li&gt;
&lt;li&gt;examples/angle-model&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hope you enjoy it. Comments are always welcome.&lt;/p&gt;</content>
		<author>
			<name>Eduardo Fleury</name>
			<uri>http://blog.eduardofleury.com</uri>
		</author>
		<source>
			<title type="html">eduardofleury.com</title>
			<subtitle type="html">Thoughts, shuffled...</subtitle>
			<link rel="self" href="http://blog.eduardofleury.com/feed/"/>
			<id>http://blog.eduardofleury.com/feed/</id>
			<updated>2010-05-01T00:29:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Exchanging experiences  &amp;#8211; Bluetooth  Linux Kernel</title>
		<link href="http://franciscoalecrim.com/blog/2010/04/30/exchanging-experiences-blutooth-linux-kernel/"/>
		<id>http://franciscoalecrim.com/blog/?p=282</id>
		<updated>2010-04-30T19:04:24+00:00</updated>
		<content type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s time to develop Bluez!&lt;/p&gt;
&lt;p&gt;Last month I started working on a new project at INdT. I&amp;#8217;m going to help &lt;a href=&quot;http://www.bluez.org/&quot;&gt;BlueZ&lt;/a&gt; development and the new features that are coming, &lt;a href=&quot;http://bluetooth.com/English/Products/Pages/low_energy.aspx&quot;&gt;Bluetooth Low Energy&lt;/a&gt; is the next generation of Bluetooth. At this moment &lt;a href=&quot;http://www.bluetooth.com/English/Pages/default.aspx&quot;&gt;Bluetooth SIG&lt;/a&gt; is still finishing specifications but I need to get used to BlueZ development and current Bluetooth protocol. I&amp;#8217;ve been working with some small BlueZ features to get some experience with it. And I got some patches applied to bluez.git .&lt;/p&gt;
&lt;p&gt;Part of our team has experience with Linux kernel development(INdT-Manaus) and some co-workers have good experience with BlueZ(INdT-Recife). Sharing this knowledge was something very important for the team. Now I&amp;#8217;m in Recife learning a lot about BlueZ, Bluetooth and Obex with Claudio Takahasi and Vinicius Gomes.  &lt;img src=&quot;http://franciscoalecrim.com/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;I prepared some material to introduce Linux kernel development. &lt;a href=&quot;http://franciscoalecrim.com/down/evento/20100429-intro-kernel-devel/&quot;&gt;You can access this material HERE!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m very excited about this new project! It&amp;#8217;s gonna be challenging! &lt;img src=&quot;http://franciscoalecrim.com/blog/wp-includes/images/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;</content>
		<author>
			<name>Francisco Keppler Silva Alecrim</name>
			<uri>http://franciscoalecrim.com/blog</uri>
		</author>
		<source>
			<title type="html">franciscoalecrim.com</title>
			<subtitle type="html">developer</subtitle>
			<link rel="self" href="http://franciscoalecrim.com/blog/feed/atom/"/>
			<id>http://franciscoalecrim.com/blog/feed/atom/</id>
			<updated>2010-05-20T18:29:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Palestra no FLISOL 2010</title>
		<link href="http://franciscoalecrim.com/blog/2010/04/30/palestra-no-flisol-2010/"/>
		<id>http://franciscoalecrim.com/blog/?p=277</id>
		<updated>2010-04-30T04:41:04+00:00</updated>
		<content type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Semana passada estive realizando um palestra no &lt;a href=&quot;http://am.softwarelivre.org/flisol/&quot;&gt;FLISOL 2010&lt;/a&gt;. O evento estava lotado, especialmente por alunos da UNINORTE que vem demonstrando cada vez mais interesse na utilização de sistemas GNU/Linux. A material da apresentação foi o mesmo utilizado em evento interno na UNINORTE, mas desta vez tive bem mais tempo e pude falar mais detalhes e dicas de desenvolvimento.&lt;/p&gt;
&lt;p&gt;Acredito que mais da metade dos participantes não havia tido contato com Linux e para estes non-linux, tivemos INSTALL FEST durante todo o evento.&lt;/p&gt;
&lt;p&gt;Excelente iniciativa da &lt;a href=&quot;http://am.softwarelivre.org/&quot;&gt;Comunidade Software Livre do Amazonas&lt;/a&gt;!  &lt;img src=&quot;http://franciscoalecrim.com/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://franciscoalecrim.com/down/evento/20100415-uninorte-intro-mobile-devel/&quot;&gt;Material disponível!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PS: Obrigado a Daniel Bruno pelas fotos.&lt;/p&gt;</content>
		<author>
			<name>Francisco Keppler Silva Alecrim</name>
			<uri>http://franciscoalecrim.com/blog</uri>
		</author>
		<source>
			<title type="html">franciscoalecrim.com</title>
			<subtitle type="html">developer</subtitle>
			<link rel="self" href="http://franciscoalecrim.com/blog/feed/atom/"/>
			<id>http://franciscoalecrim.com/blog/feed/atom/</id>
			<updated>2010-05-20T18:29:30+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Maemo @ GSoC 2010: Accepted Projects</title>
		<link href="http://etrunko.blogspot.com/2010/04/maemo-gsoc-2010-accepted-projects.html"/>
		<id>tag:blogger.com,1999:blog-14702826.post-1267576369282191987</id>
		<updated>2010-04-28T15:28:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://3.bp.blogspot.com/_xF-tlYcJ9_0/S9hU3Cw8s4I/AAAAAAAAA9o/tSDC4kjGlbU/s1600/255px-Gsoc_2010.jpg&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_xF-tlYcJ9_0/S9hU3Cw8s4I/AAAAAAAAA9o/tSDC4kjGlbU/s400/255px-Gsoc_2010.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5465211452425810818&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last Monday, &lt;a href=&quot;http://google-opensource.blogspot.com/2010/04/this-years-google-summer-of-code.html&quot;&gt;Google announced&lt;/a&gt; the list of accepted projects for the &lt;a href=&quot;http://socghop.appspot.com/site/home/site&quot;&gt;Summer of Code&lt;/a&gt; Program. Like last year, Maemo has got 10 slots. As &lt;a href=&quot;http://valeriovalerio.org/&quot;&gt;Valério&lt;/a&gt; said in a &lt;a href=&quot;http://www.valeriovalerio.org/?p=358&quot;&gt;previous post&lt;/a&gt;, we received about 90 submissions this year, which made the task of selecting the best proposals much more difficult. Many thanks to all people involved on the selection process. :)&lt;br /&gt;&lt;br /&gt;Enough talk. Here is the list (in no particular order,  just copied and pasted the contents of the &lt;a href=&quot;http://wiki.maemo.org/GSoC_2010/Projects&quot;&gt;wiki page&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230760962&quot;&gt;Porting Canola to Maemo 5 and beyond&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Andrei Mirestean (andrei1089)&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Eduardo Lima (etrunko)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230761033&quot;&gt;FaceBrick - a facebook client for Maemo / the N900&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Kamilla Bremeraunet (brik)&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Robin Burchell (w00t)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230761271&quot;&gt;UPnP Remote Access&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Sunil Kumar Ghai&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Zeeshan Ali&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230761218&quot;&gt;The Tablet of Adventure: a location-based social adventure&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Susanna Huhtanen&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Henri Bergius (bergie)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230761170&quot;&gt;Extending Shepherd&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Linus Wallgren (ecksun)&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Attila Csipa (achipa)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230761250&quot;&gt;eBook reader for Maemo 5&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Juhana Jauhiainen&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Valerio Valerio (VDVsx)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230760820&quot;&gt;Gtk+ Input Method for the Harmattan Input Method UI Framework&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Javier De San Pedro Martin&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Mohammad Dhani Anwari&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230760988&quot;&gt;Transifex mobile&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Lauri Vosandi (v6sa)&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Thomas Perl (Thp)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230761074&quot;&gt;Optical Page Reader for the N900&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; David Jordan&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Florian Boor (Florian)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/maemo/t127230761193&quot;&gt;MeeGo Cloud Storage Integration&lt;/a&gt;&lt;br /&gt;&lt;span&gt;Student:&lt;/span&gt; Eli Foley&lt;br /&gt;&lt;span&gt;Mentor:&lt;/span&gt; Yan Li&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Congratulations to all accepted students! Some of them already had worked on projects related to Maemo on GSoC &lt;a href=&quot;http://wiki.maemo.org/GSoC_2009/Projects&quot;&gt;last year&lt;/a&gt;. In either case would be really cool to post a small introduction about yourself and the project you will work on during the next months. If you have a blog, &lt;a href=&quot;http://maemo.org/news/planet-maemo/aggregate_your_blog/&quot;&gt;request it&lt;/a&gt; to be syndicated on &lt;a href=&quot;http://maemo.org/news/planet-maemo/&quot;&gt;Planet Maemo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For those whose projects were not accepted, and still think it is worth to work on it, you are be more than welcome. Although there won't be any assigned mentor, I am sure you can find help on the mailing lists.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/14702826-1267576369282191987?l=etrunko.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>etrunko</name>
			<email>noreply@blogger.com</email>
			<uri>http://etrunko.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">(void *)</title>
			<link rel="self" href="http://etrunko.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-14702826</id>
			<updated>2010-07-28T19:09:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Fun with OpenGL and Shaders</title>
		<link href="http://igortrindade.wordpress.com/2010/04/23/fun-with-opengl-and-shaders/"/>
		<id>http://igortrindade.wordpress.com/?p=29</id>
		<updated>2010-04-23T23:31:20+00:00</updated>
		<content type="html">&lt;p&gt;Last week i was having fun with OpenGL(in fact QGL) and creating some interesting effects with it like edge detection, embossing and sharpening. So i decided to work with GLSL(OpenGL Shading Language) and create the same effects using Fragment Shaders(yeah hardware accelerated effects).&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;
&lt;p&gt;So i used QGLShaderProgam that allows me create Fragment shaders in a Qt Way(tm). Initially i create two filters the first one was sharpening and the second was edge detection. Both work in a same way(with little modifications), applying a matrix convolution in the image.&lt;/p&gt;
&lt;p&gt;The matrix convolution used in sharpening is:&lt;/p&gt;
&lt;p&gt;0 -1 0&lt;/p&gt;
&lt;p&gt;-1 5 -1&lt;/p&gt;
&lt;p&gt;0 -1 0&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;And the matrix convolution used in edge dection is:&lt;/p&gt;
&lt;p&gt;-1 -1 -1&lt;/p&gt;
&lt;p&gt;-1 8 -1&lt;/p&gt;
&lt;p&gt;-1 -1 -1&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Below you can see the fragment shader used in sharpening.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;uniform sampler2D sampler;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;uniform vec2 offset[9];&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;uniform int kernel[9];&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;void main()&lt;br /&gt;
{&lt;br /&gt;
vec4 sum = vec4(0.0);&lt;br /&gt;
int i;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;for (i = 0; i &amp;lt; 9; i++) {&lt;br /&gt;
vec4 color = texture2D(sampler, gl_TexCoord[0].st + offset[i]);&lt;br /&gt;
sum += color * kernel[i];&lt;br /&gt;
}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;gl_FragColor = sum;&lt;br /&gt;
}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The shader used in edge is almost the same&lt;/p&gt;
&lt;p&gt;&lt;em&gt;uniform sampler2D sampler;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;uniform vec2 offset[9];&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;uniform int kernel[9];&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;void main()&lt;br /&gt;
{&lt;br /&gt;
vec4 sum = vec4(0.0);&lt;br /&gt;
int i;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;for (i = 0; i &amp;lt; 9; i++) {&lt;br /&gt;
vec4 color = texture2D(sampler, gl_TexCoord[0].st + offset[i]);&lt;br /&gt;
sum += color * kernel[i];&lt;br /&gt;
}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sum += 0.51;&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;gl_FragColor = sum;&lt;br /&gt;
}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The original image used in my experiments can be seen below:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://igortrindade.files.wordpress.com/2010/04/image2.jpg&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-49&quot; title=&quot;image&quot; src=&quot;http://igortrindade.files.wordpress.com/2010/04/image2.jpg?w=300&amp;#038;h=225&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The result of sharpening filter is:&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;a href=&quot;http://igortrindade.files.wordpress.com/2010/04/image21.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-33&quot; title=&quot;image2&quot; src=&quot;http://igortrindade.files.wordpress.com/2010/04/image21.png?w=300&amp;#038;h=219&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;219&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Yeah we have a little bit improvement on the image.&lt;/p&gt;
&lt;p&gt;And the result of edge filter is:&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;a href=&quot;http://igortrindade.files.wordpress.com/2010/04/image3.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-40&quot; title=&quot;image3&quot; src=&quot;http://igortrindade.files.wordpress.com/2010/04/image3.png?w=300&amp;#038;h=222&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;222&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;
&lt;p&gt;The embossing filter is a little bit complicated as you can see:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;uniform sampler2D sampler;&lt;br /&gt;
uniform vec2 offset[9];&lt;br /&gt;
uniform int kernel[9];&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
vec4 sum = vec4(0.0);&lt;br /&gt;
int i = 0;&lt;br /&gt;
for( i = 0; i &amp;lt; 9; i++) {&lt;br /&gt;
vec4 color_tmp = texture2D(sampler, gl_TexCoord[0].st + offset[i]);&lt;br /&gt;
float h = (color_tmp.x + color_tmp.y + color_tmp.z + color_tmp.w)/4.0;&lt;br /&gt;
if (h &amp;gt; 1)&lt;br /&gt;
h = 1.0;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;if (h &amp;lt; 0)&lt;br /&gt;
h = 0.0;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;vec4 color = vec4(h, h, h, h);&lt;br /&gt;
sum.x += color.x * kernel[i];&lt;br /&gt;
}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sum.x /= 1.0;&lt;br /&gt;
sum.x += 0.51;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;if (sum.x &amp;gt; 1)&lt;br /&gt;
sum.x = 1;&lt;br /&gt;
if (sum.x &amp;lt; 0)&lt;br /&gt;
sum.x = 0;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;gl_FragColor = vec4(sum.x, sum.x, sum.x, 1);&lt;br /&gt;
}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;And the result is:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://igortrindade.files.wordpress.com/2010/04/image4.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-41&quot; title=&quot;image4&quot; src=&quot;http://igortrindade.files.wordpress.com/2010/04/image4.png?w=300&amp;#038;h=224&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;
&lt;p&gt;Qt already do OpenGL accelerated filters in QGraphicsEffects classes(look in qt_top_dir/src/opengl/qglpixmapfilter*) it is not anything new but it is interesting use it in others KDE application like krita filters &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; .&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/igortrindade.wordpress.com/29/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/igortrindade.wordpress.com/29/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/igortrindade.wordpress.com/29/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/igortrindade.wordpress.com/29/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/igortrindade.wordpress.com/29/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/igortrindade.wordpress.com/29/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/igortrindade.wordpress.com/29/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/igortrindade.wordpress.com/29/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/igortrindade.wordpress.com/29/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/igortrindade.wordpress.com/29/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=igortrindade.wordpress.com&amp;amp;blog=10176701&amp;amp;post=29&amp;amp;subd=igortrindade&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Igor Trindade Oliveira</name>
			<uri>http://igortrindade.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Code, Beer and Unix</title>
			<link rel="self" href="http://igortrindade.wordpress.com/feed/atom/"/>
			<id>http://igortrindade.wordpress.com/feed/atom/</id>
			<updated>2010-07-11T15:49:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Linux Collaboration Summit - MeeGo Workgroup</title>
		<link href="http://blog.aloisiojr.com/?p=31"/>
		<id>http://blog.aloisiojr.com/?p=31</id>
		<updated>2010-04-20T13:41:55+00:00</updated>
		<content type="html">&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;It was a great time in San Francisco last week when I attended the Linux Collaboration Summit.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://events.linuxfoundation.org/images/stories/headers/lfcs2010_header.jpg&quot; height=&quot;127&quot; width=&quot;520&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Presentations from key people of big companies (there were also summit sponsors) fulfill the first day agenda.&lt;/p&gt;
&lt;p&gt;I highlight Intel and Nokia presentations, both showing what they want with Meego and both emphasizing the collaborative and open source aspects of the project. Of course the &amp;#8220;paradox&amp;#8221; of being open and possibly include closed components were source of some questions that the speakers tried to answer, but somehow I feel that some people didn&amp;#8217;t get satisfied. The answer is simple in my point of view: products may need more code then Meego provides. Meego could avoid vendors to add closed code to Meego based products by a pedantic licensing scheme but it may be harmful to a project that is just launching and that has a competitor that allows proprietary code to be added. Meego already sees that open source is the way to best quality products, this is &lt;strong&gt;very good.&lt;/strong&gt; Now the vendors that must follow the same way&amp;#8230;&lt;/p&gt;
&lt;p&gt;In the second day the Meego workgroup!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://thenokiareview.com/wp-content/uploads/2010/02/Nokia-Intel-Announce-Partnership-Introducing-Meego.png&quot; height=&quot;110&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Firstly, the obvious that everybody says after a conference: very nice to assign faces to nicknames, very nice to have opportunity to answer the questions you have directly to the right person and very nice to do networking.&lt;/p&gt;
&lt;p&gt;There were no news in the presentations but the talks were very productive in a way that lot of questions were raised and answered by the speakers like that the Qt will be more than a UI toolkit to become the application toolkit, acting as an interface to access the device resources. There was the nice talk from Marcel also about the connectivity part followed by the technical panel with architects from Nokia and Intel.&lt;/p&gt;
&lt;p&gt;I could not forget to say that San Francisco is a very nice city, lot of places to visit, nice weather.. impossible to refuse to take some hours to visit touristic places there!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://lh6.ggpht.com/_tgmm1LslMRY/S8fx73Jz5GI/AAAAAAAACQU/CNnIZY9x35c/s1440/DSC00001.JPG&quot; height=&quot;115&quot; width=&quot;518&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Well, I just want to say that was very nice to be part of this event! Looking forward next year &lt;img src=&quot;http://blog.aloisiojr.com/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Aloisio</name>
			<uri>http://blog.aloisiojr.com</uri>
		</author>
		<source>
			<title type="html">Aloisio's blog site</title>
			<link rel="self" href="http://blog.aloisiojr.com/?feed=atom"/>
			<id>http://blog.aloisiojr.com/?feed=atom</id>
			<updated>2010-04-20T13:43:51+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Palestra &amp;#8211; Uninorte &amp;#8211; Introdução desenv. mov. Nokia usando Linux</title>
		<link href="http://franciscoalecrim.com/blog/2010/04/16/palestra-uninorte-introducao-desenv-mov-nokia-usando-linux/"/>
		<id>http://franciscoalecrim.com/blog/?p=266</id>
		<updated>2010-04-19T18:33:39+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://share.ovi.com/media/alecrim.20100416-evento/alecrim.10012&quot;&gt;&lt;img title=&quot;IMG_4311 - Share on Ovi&quot; src=&quot;http://media.share.ovi.com/m1/lt/1963/37305c0f7b624da0bce8099445900c80.jpg&quot; border=&quot;0&quot; alt=&quot;IMG_4311 - Share on Ovi&quot; width=&quot;238&quot; height=&quot;158&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Ontem estive na &lt;a href=&quot;http://curso.uninorte.com.br/redes&quot;&gt;Uninorte&lt;/a&gt; falando sobre o desenvolvimento para dispositivos móveis da Nokia usando Linux. Este foi o maior público para o qual já palestrei. Acredito que mais de &lt;span&gt;200&lt;/span&gt; &lt;span&gt;600&lt;/span&gt; 300 pessoas estavam no evento. Muito bom este tipo de evento interno com o objetivo de promover a integração entre os alunos de &lt;a href=&quot;http://curso.uninorte.com.br/redes&quot;&gt;redes da Uninorte&lt;/a&gt;. Acho sensacional o fato do departamento de computação estimular a utilização de SW livre por meio de palestras e eventos. &lt;img src=&quot;http://franciscoalecrim.com/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://franciscoalecrim.com/down/evento/20100415-uninorte-intro-mobile-devel/&quot;&gt;APRESENTAÇÃO DISPONÍVEL AQUI!&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Na próxima semana teremos outro evento na Uninorte, o &lt;a href=&quot;http://am.softwarelivre.org/flisol&quot;&gt;FLISOL&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;O &lt;a href=&quot;http://am.softwarelivre.org/flisol&quot;&gt;FLISOL&lt;/a&gt; é aberto para o público em geral e as inscrições já estão abertas!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://am.softwarelivre.org/flisol&quot;&gt;Você que quer conhece mais sobre SW livre? Resposta: SIIIIIIIMMMM !!!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://am.softwarelivre.org/flisol&quot;&gt;Quer instalar Linux no seu laptop, mas não se sente muito confortável?  Resposta: SIIIIIIIMMMM !!!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://am.softwarelivre.org/flisol&quot;&gt;Este evento é para você!  FLISOL! &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[]&amp;#8217;s&lt;/p&gt;
&lt;p&gt;PS: Obrigado a Afonso Costa e Tâmia Costa pelas fotos!&lt;/p&gt;</content>
		<author>
			<name>Francisco Keppler Silva Alecrim</name>
			<uri>http://franciscoalecrim.com/blog</uri>
		</author>
		<source>
			<title type="html">franciscoalecrim.com</title>
			<subtitle type="html">developer</subtitle>
			<link rel="self" href="http://franciscoalecrim.com/blog/feed/atom/"/>
			<id>http://franciscoalecrim.com/blog/feed/atom/</id>
			<updated>2010-05-20T18:29:30+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">New kid on the block: Plasma Water Animation</title>
		<link href="http://brunoabinader.blogspot.com/2010/04/new-kid-on-block-plasma-water-animation.html"/>
		<id>tag:blogger.com,1999:blog-8974121210221508485.post-7897043315033001874</id>
		<updated>2010-04-19T13:04:44+00:00</updated>
		<content type="html">&lt;div&gt;Hello!&lt;br /&gt;I'm glad to make available a fresh new Plasma animation: WaterAnimation. This animations uses the ripple effect to produce a liquefied behavior on the target widget. An example of the animation behavior can be seen below, enjoy! :-)&lt;/div&gt;&lt;br /&gt;&lt;center&gt;                &lt;br /&gt;&lt;br /&gt;&lt;div id=&quot;blip_movie_content_3526166&quot;&gt;&lt;a href=&quot;http://blip.tv/file/get/Brunoabinader-PlasmaKDEWaterAnimationExample662.ogv&quot; rel=&quot;enclosure&quot;&gt;&lt;img alt=&quot;Video thumbnail. Click to play&quot; border=&quot;0&quot; src=&quot;http://blip.tv/file/get/Brunoabinader-PlasmaKDEWaterAnimationExample662.ogv.jpg&quot; title=&quot;Click to play&quot; /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;a href=&quot;http://blip.tv/file/get/Brunoabinader-PlasmaKDEWaterAnimationExample662.ogv&quot; rel=&quot;enclosure&quot;&gt;Click To Play&lt;/a&gt;&lt;/div&gt;&lt;/center&gt;&lt;br /&gt;&lt;div&gt;If you're curious about how this works, the ripple effect uses a pair of matrices with the same size as the widget, providing the previous and current wave heigths. These wave heights are used to calculate the water reflection. If the widget gets resized, these matrices are resized as well, so the animations keeps on going in every situation :-)&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8974121210221508485-7897043315033001874?l=brunoabinader.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Bruno de Oliveira Abinader</name>
			<email>noreply@blogger.com</email>
			<uri>http://brunoabinader.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Bruno Abinader's Blog</title>
			<subtitle type="html">A space for informations, tips, and news about the universe that surrounds me.</subtitle>
			<link rel="self" href="http://brunoabinader.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8974121210221508485</id>
			<updated>2010-07-31T03:49:10+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">STE U8500</title>
		<link href="http://rsalveti.wordpress.com/2010/04/14/ste-u8500/"/>
		<id>http://rsalveti.wordpress.com/?p=147</id>
		<updated>2010-04-15T02:40:55+00:00</updated>
		<content type="html">&lt;p&gt;One of the latest board we&amp;#8217;ve been playing with is the new STE U8500.&lt;/p&gt;
&lt;p&gt;The U8500 is a smartphone platform created by ST-Ericsson, offering a dual ARMv7-A Cortex A9 core, with strong hardware decoding power and ARM Mali 400 GPU.&lt;/p&gt;
&lt;p&gt;More about it&amp;#8217;s features:&lt;br /&gt;
* Full HD 1080p camcorder, multiple codecs supported via OMX (H264 HP, VC-1, MPEG-4)&lt;br /&gt;
* High-resolution, touchscreen display support up to XGA&lt;br /&gt;
* Simultaneous dual display support&lt;br /&gt;
* High performance 3D graphics, support for OpenVG 1.1 and OpenGL ES 2.0&lt;br /&gt;
* Dual camera support with Integrated ISP 18 Mpixel and 5 Mpixel&lt;br /&gt;
* Wi-Fi, Bluetooth and GPS enabled platform&lt;br /&gt;
* Built-in USB 2.0, HDMI out&lt;/p&gt;
&lt;p&gt;And technology:&lt;br /&gt;
* Highly efficient, low-power ARM dual Cortex™- A9 processor&lt;br /&gt;
* Dual multimedia DSP for low-power, flexible media processing&lt;br /&gt;
* High-bandwidth LP-DDR2 interface&lt;br /&gt;
* ARM  Mali™ 400 GPU and NEON®CPU extensions&lt;/p&gt;
&lt;div id=&quot;attachment_161&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;http://rsalveti.files.wordpress.com/2010/04/u8500-1.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-161&quot; title=&quot;U8500 with Ubuntu Lucid&quot; src=&quot;http://rsalveti.files.wordpress.com/2010/04/u8500-1.jpg?w=300&amp;#038;h=225&quot; alt=&quot;U8500 with Ubuntu Lucid&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;U8500 with Ubuntu Lucid&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Now, about the things that interest me the most, the current status in Linux in general:&lt;/p&gt;
&lt;p&gt;Kernel:&lt;br /&gt;
The kernel we&amp;#8217;ve been working on is a vendor&amp;#8217;s based one, using 2.6.29 as base. With this kernel we have many features implemented, like blitter support, framebuffer, hdmi output and many more.&lt;/p&gt;
&lt;p&gt;At upstream side, the code is just starting to be merged, and you can see already some basic commits going on linux-2.6, like commits &lt;a href=&quot;http://git.kernel.org/linus/ffae4e014a4bff7b904e4b5ace2ae453b9d93519&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;http://git.kernel.org/linus/c6b503caef9abefb2e90ac83f672b75dc14bacd0&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;http://git.kernel.org/linus/aa44ef4d43b200c0e318ade2a3c24d00a6fd942a&quot;&gt;3&lt;/a&gt;, &lt;a href=&quot;http://git.kernel.org/linus/4e4eb42999ae155c3ac1cdb5dacbd419184064fb&quot;&gt;4&lt;/a&gt; and &lt;a href=&quot;http://git.kernel.org/linus/850265e84d1040e769d8762640e4e5f34ae2f45d&quot;&gt;5&lt;/a&gt;. STE seems to be doing a great job on getting the changes upstream, since it&amp;#8217;s the only feasible way to make it supported in mid, long term in linux. So expect more changes at 2.6.34 and 2.6.35.&lt;/p&gt;
&lt;p&gt;U-Boot:&lt;br /&gt;
Similar with the kernel, we&amp;#8217;re also using a custom vendor&amp;#8217;s version. They&amp;#8217;re just starting to make the support upstream, and you can find the patch series &lt;a href=&quot;http://lists.denx.de/pipermail/u-boot/2010-April/069653.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once we get the basic U-Boot and Linux support upstream, we can start working directly with mainline, fixing and improving it when needed.&lt;/p&gt;
&lt;div id=&quot;attachment_163&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;http://rsalveti.files.wordpress.com/2010/04/u8500-2.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-163 &quot; title=&quot;U8500 - Connectors&quot; src=&quot;http://rsalveti.files.wordpress.com/2010/04/u8500-2.jpg?w=300&amp;#038;h=225&quot; alt=&quot;U8500 - Connectors&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Connectors - HDMI, uSD, Headset and micro USB.&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Our work:&lt;br /&gt;
Since we got the board we&amp;#8217;ve been playing on supporting many different Linux platforms, and optimizing the basic Linux OS core to be commonly used by different distros.&lt;/p&gt;
&lt;p&gt;We started with Maemo 5, as a proof of concept, and we got it up and running with a very good performance and hopefully soon we&amp;#8217;ll be able to share more details.&lt;/p&gt;
&lt;p&gt;OE Angstrom/Mamona is very easy to support, since we just need to create the machine configuration and use the same compilers already used by other ARMv7 architectures.&lt;/p&gt;
&lt;p&gt;Personally I started testing Ubuntu Lucid release, and just got the very basic support, with a custom and simple image. Ubuntu is now a very good option since it&amp;#8217;s targeting ARMv7 platforms, with compiler optimizations and Thumb2 support. NEON support is not included by default, but you can support it by compiling specific components by hand. For more information please check at &lt;a href=&quot;https://wiki.ubuntu.com/ARM&quot;&gt;ubuntu wikipage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Meego also boots and runs fine at this platform, but since it&amp;#8217;s just a basic OS ATM (armv5 only), doesn&amp;#8217;t have anything interesting to play with.&lt;/p&gt;
&lt;p&gt;Besides platform support, we&amp;#8217;ve been working on creating the hardware accelerated X server video driver, to use EXA, DRI2 and Xvideo with overlay. Once we get it all running we can easily use it in any Linux distro we want, and X we&amp;#8217;ll be accelerated by default.&lt;/p&gt;
&lt;div id=&quot;attachment_164&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;http://rsalveti.files.wordpress.com/2010/04/u8500-3.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-164 &quot; title=&quot;U8500 Connectors&quot; src=&quot;http://rsalveti.files.wordpress.com/2010/04/u8500-3.jpg?w=300&amp;#038;h=225&quot; alt=&quot;U8500 Connectors&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Connectors - RJ45, Uart and MIPI34, for debug.&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Now the important question, where&amp;#8217;s the code?&lt;br /&gt;
STE still didn&amp;#8217;t deliver the main software in public, so we can&amp;#8217;t just release the Kernel, U-Boot and other development that requires support from these software components. But this is changing, and I believe that very soon we&amp;#8217;ll be able to get most of the things in public, so others can download and test if needed.&lt;/p&gt;
&lt;p&gt;In the next posts I&amp;#8217;ll be showing more about the status of these distros on this hardware, also showing the performance and demonstrating it.&lt;/p&gt;
&lt;p&gt;Board I&amp;#8217;ve being playing on:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;root ~# cat /proc/cpuinfo&lt;br /&gt;
Processor       : ARMv7 Processor rev 1 (v7l)&lt;br /&gt;
processor       : 0&lt;br /&gt;
BogoMIPS        : 1199.30&lt;/p&gt;
&lt;p&gt;processor       : 1&lt;br /&gt;
BogoMIPS        : 1199.30&lt;/p&gt;
&lt;p&gt;Features        : swp half thumb fastmult vfp edsp neon vfpv3&lt;br /&gt;
CPU implementer : 0&amp;#215;41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant     : 0&amp;#215;1&lt;br /&gt;
CPU part        : 0xc09&lt;br /&gt;
CPU revision    : 1&lt;/p&gt;
&lt;p&gt;Hardware        : ST Ericsson U8500 Platform&lt;br /&gt;
Revision        : 0000&lt;br /&gt;
Serial          : 0000000000000000&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Links and videos about U8500:&lt;br /&gt;
* &lt;a href=&quot;http://www.stericsson.com/platforms/U8500.jsp&quot;&gt;ST-Ericsson U8500&lt;/a&gt;&lt;br /&gt;
* &lt;a href=&quot;http://www.youtube.com/watch?v=k0yO2zfQnF4&quot;&gt;ST-Ericsson U8500: PlayStation controller, PlayStation grap&lt;/a&gt;&lt;br /&gt;
* &lt;a href=&quot;http://www.youtube.com/watch#!v=NtaR4fBoy6I&quot;&gt;U8500 3D Video&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rsalveti.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rsalveti.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rsalveti.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rsalveti.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rsalveti.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rsalveti.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rsalveti.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rsalveti.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rsalveti.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rsalveti.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rsalveti.wordpress.com&amp;amp;blog=905525&amp;amp;post=147&amp;amp;subd=rsalveti&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>rsalveti</name>
			<uri>http://rsalveti.wordpress.com</uri>
		</author>
		<source>
			<title type="html">rsalveti's random thoughts</title>
			<subtitle type="html">Just another geek's weblog</subtitle>
			<link rel="self" href="http://rsalveti.wordpress.com/feed/atom/"/>
			<id>http://rsalveti.wordpress.com/feed/atom/</id>
			<updated>2010-04-20T22:29:25+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Qt event dispatchers and loops</title>
		<link href="http://cmarcelo.org/blog/2010/04/14/qt-event-dispatchers-and-loops/"/>
		<id>http://cmarcelo.org/blog/?p=51</id>
		<updated>2010-04-14T17:58:10+00:00</updated>
		<content type="html">&lt;p&gt;Lately I&amp;#8217;ve been working with Qt, a C++ framework for developing cross platform applications. Like many other frameworks/environments Qt enables &lt;a href=&quot;http://en.wikipedia.org/wiki/Event-driven_programming&quot;&gt;event-driven programming&lt;/a&gt;. Using that methodology of programming, a typical Qt applications does something like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Setup the UI, start listening in socket.&lt;/li&gt;
&lt;li&gt;Connect objects to react to: user manipulating the UI, connection happening in socket.&lt;/li&gt;
&lt;li&gt;Calls &lt;tt&gt;app.exec()&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&amp;#8217;s it. Then it&amp;#8217;s job of &lt;tt&gt;app&lt;/tt&gt; to act like a &lt;i&gt;dispatcher&lt;/i&gt;, waiting for external world events to happen and propagating them to the application objects. Qt uses &lt;a href=&quot;http://doc.qt.nokia.com/eventsandfilters.html&quot;&gt;QEvent&lt;/a&gt; to propagate those events.&lt;/p&gt;
&lt;p&gt;Well, this is common in other frameworks. In some of them the word &lt;i&gt;mainloop&lt;/i&gt; or &lt;i&gt;eventloop&lt;/i&gt; is used to describe the job that &lt;tt&gt;app&lt;/tt&gt; in Qt is doing. For example: &lt;a href=&quot;http://www.enlightenment.org/p.php?p=about&amp;#038;l=en&quot;&gt;EFL&lt;/a&gt; has the ecore mainloop, &lt;a href=&quot;http://library.gnome.org/devel/glib/2.24/glib-The-Main-Event-Loop.html&quot;&gt;glib&lt;/a&gt; has a mainloop and &lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; has this concept built in as well.&lt;/p&gt;
&lt;p&gt;In this article I&amp;#8217;ll focus mostly on &lt;i&gt;Qt machinery&lt;/i&gt; to work with mainloops.&lt;/p&gt;
&lt;h3&gt;Underneath &lt;tt&gt;app&lt;/tt&gt;&lt;/h3&gt;
&lt;p&gt;One interesting aspect of the Qt implementation is that the concept of mainloop is abstracted, so other parts of Qt don&amp;#8217;t heavily depend on how the mainloop is implemented. This supports Qt&amp;#8217;s goal of being crossplatform. So the real class that implements a mainloop in Qt is not the &lt;a href=&quot;http://doc.qt.nokia.com/qapplication.html&quot;&gt;QApplication&lt;/a&gt;, but another platform dependent class that implements the interface defined by &lt;a href=&quot;http://doc.qt.nokia.com/qabstracteventdispatcher.html&quot;&gt;QAbstractEventDispatcher&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This abstract class is the minimum interface that QApplication needs to provide the event-driven programming for its users. This allows different implementations for each platform, and even multiple implementations on the same platform.&lt;/p&gt;
&lt;p&gt;In Unix, for example, besides the default dispatcher implemented using POSIX API, you can use an event dispatcher implemented on top of glib mainloop. And this gives you something very nice: your program can make use of libraries that rely on the glib mainloop as well. This kind of integration has been done in other libraries as well, for example with &lt;a href=&quot;http://blog.gustavobarbieri.com.br/2009/10/01/ecore-glib-main-loop-integration/&quot;&gt;ecore on top of glib&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you instantiate QApplication, Qt will automatically create a proper event dispatcher for the platform and use it. However if you instantiate one before, QApplication will use it. But before we play with that, let&amp;#8217;s look at event dispatchers a little bit more.&lt;/p&gt;
&lt;h3&gt;What can an event dispatcher do?&lt;/h3&gt;
&lt;p&gt;Well, if we look at QAbstractEventDispatcher, we&amp;#8217;ll see the following groups of methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Timer:&lt;/b&gt; to register/unregister timers, so the mainloop will send a &lt;a href=&quot;http://doc.qt.nokia.com/qtimerevent.html&quot;&gt;QTimerEvent&lt;/a&gt; to an object after certain time.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Socket notifier&lt;/b&gt;: in Unix-world this would be registering/unregistering file descriptors to watch. The mainloop will send a &lt;tt&gt;QSockAct&lt;/tt&gt; type of event to the socket notifier object.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Control&lt;/b&gt;: to run one iteration of the mainloop, to enable another thread &lt;i&gt;wake&lt;/i&gt; the mainloop if it is idle waiting for new external events.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;#8217;re familiar with the &lt;tt&gt;select()&lt;/tt&gt; function from POSIX, you can imagine how this functionality can be implemented. Running an iteration of the mainloop would be the &lt;tt&gt;select()&lt;/tt&gt; call for example. Actually, that&amp;#8217;s the way the default unix event dispatcher works in Qt.&lt;/p&gt;
&lt;p&gt;With such an interface, it&amp;#8217;s easy to see that Qt could run on top of most mainloops, and for this article I wrote a simple &lt;i&gt;QEventDispatcherEcore&lt;/i&gt;, which implements this interface on top of EFL&amp;#8217;s ecore mainloop.&lt;/p&gt;
&lt;h3&gt;Show me the code!&lt;/h3&gt;
&lt;p&gt;The code is in my &lt;a href=&quot;http://cmarcelo.org/code/cgit/playground/&quot;&gt;playground repository&lt;/a&gt;, and the important file for now is the &lt;a href=&quot;http://cmarcelo.org/code/cgit/playground/tree/qt-ecore-dispatcher/dispatcher.cpp?id=2b689a3e1f8843c1da3d6ef9091ea9ca6b0b0d3f&quot;&gt;dispatcher.cpp&lt;/a&gt;. You&amp;#8217;ll see that it is all marked with &lt;tt&gt;###&lt;/tt&gt; comments, which indicates points of the code that are incomplete: this is just a simple example of the concept, be warned!&lt;/p&gt;
&lt;p&gt;I won&amp;#8217;t go step by step in the code, because it should be not so hard to understand. The Ecore library gives us enough functionality to implement all Qt needs. I&amp;#8217;ll highlight two pieces that I think deserve special explanation&lt;/p&gt;
&lt;p&gt;First, how the &lt;tt&gt;wakeUp()&lt;/tt&gt; call was implemented: since ecore mainloop didn&amp;#8217;t have a similar functionality, I used the same trick as the Unix event dispatcher. The trick is to create a pipe and watch one of the ends inside the mainloop. Then, to wake up we simply write on the other end of the pipe.&lt;/p&gt;
&lt;p&gt;A second important point is: the &lt;tt&gt;processEvents()&lt;/tt&gt; function takes a &lt;tt&gt;flags&lt;/tt&gt; argument, which indicates to the event dispatcher important parameters about the iteration it is going to run: whether it should ignore UI events or whether it should block waiting for the next event if there&amp;#8217;s no event right now.&lt;/p&gt;
&lt;p&gt;The &lt;i&gt;block until event show up&lt;/i&gt; is a very important functionality, since we don&amp;#8217;t want to spend all CPU cycles calling &lt;tt&gt;processEvents()&lt;/tt&gt; again and again with no side effect, no new event being delivered, and avoid &lt;a href=&quot;http://en.wikipedia.org/wiki/Busy_loop&quot;&gt;busy loop&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the code for the event dispatcher example, what&amp;#8217;s tricky is that while Ecore does have a &lt;tt&gt;iterate()&lt;/tt&gt; primitive it doesn&amp;#8217;t have a &lt;tt&gt;iterate_and_wait()&lt;/tt&gt;. The rationale is that part of the work that Qt is doing here inside QApplication code&lt;br /&gt;
&lt;code&gt;
&lt;pre&gt;
    // Simplified version of what QApplication do
    while (!quitLoop)
        processEvents(flagToWait);
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/code&gt;&lt;br /&gt;
is something that usually libraries encapsulate for the user. In our case has a &lt;tt&gt;mainloop_begin()&lt;/tt&gt; function to encapsulate the while-loop.&lt;/p&gt;
&lt;p&gt;To the event dispatcher example, what I did was to simulate the functionality I wanted by making use of Ecore&amp;#8217;s &lt;tt&gt;idle_exiter&lt;/tt&gt; mechanism, which allow functions to be registered to be called after a iteration the mainloop&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;pre&gt;
    // Simplified version of what Ecore do...
    while (!quitLoop) {
        // ...
        processEvents(flagToWait);
        // ...
        runIdleExiters();
    }
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The trick was to register an &lt;tt&gt;idle_exiter&lt;/tt&gt; that caused the mainloop to quit. After inspecting Ecore implementation, the result of doing this be exactly what I wanted to achieve with an &lt;tt&gt;iterate_and_wait()&lt;/tt&gt; primitive without changing the API.&lt;/p&gt;
&lt;h3&gt;Hmmm, what&amp;#8217;s the &lt;tt&gt;guidispatcher&lt;/tt&gt;?&lt;/h3&gt;
&lt;p&gt;If you followed the repository link, you&amp;#8217;ll see there&amp;#8217;s another dispatcher there in the &lt;a href=&quot;http://cmarcelo.org/code/cgit/playground/tree/qt-ecore-dispatcher/guidispatcher.cpp?id=2b689a3e1f8843c1da3d6ef9091ea9ca6b0b0d3f&quot;&gt;guidispatcher.cpp&lt;/a&gt; file, that&amp;#8217;s the &lt;i&gt;QEventDispatcherEcoreGUI&lt;/i&gt;. To understand it we need to remember the difference between a QCoreApplication and a QApplication: the former doesn&amp;#8217;t depend on GUI code, and the latter is the subclass with GUI functionality.&lt;/p&gt;
&lt;p&gt;This separation also happens in event dispatchers. Using the case of Unix again, in Qt the GUI for Unix is based on X11. So a QApplication needs to create a X11 connection and watch for events, translate them to QEvents and send them to the proper objects.&lt;/p&gt;
&lt;p&gt;This job is exactly what an event dispatcher is for. So in Unix, QCoreApplication uses the Unix&amp;#8217; &lt;tt&gt;select()&lt;/tt&gt; implementation we mentioned before, while QApplication uses a subclass of it, which also handles X11 events.&lt;/p&gt;
&lt;p&gt;Letting the UI event handling inside the event dispatcher allows the existence of a flag to skip handling of UI events.&lt;/p&gt;
&lt;p&gt;Back on our example. This new dispatcher is GUI-enabled, it watches for X11 events and translates them to QEvents for delivery with help of the function &lt;a href=&quot;http://doc.qt.nokia.com/qapplication.html#x11ProcessEvent&quot;&gt;QApplication::x11ProcessEvent()&lt;/a&gt;. Note that since this is just a proof-of-concept, we are not checking for all the flags passed.&lt;/p&gt;
&lt;p&gt;Inside the directory &amp;#8216;qapplication&amp;#8217;, there is one example using this dispatcher. It mixes a QWidget on the screen (using QApplication for the GUI) and an EFL window showing Evas in other. They are in the same process but with different X connections.&lt;/p&gt;
&lt;h3&gt;Last but not least: the &lt;tt&gt;QEventLoop&lt;/tt&gt;&lt;/h3&gt;
&lt;p&gt;If you look the Qt documentation, you can see there&amp;#8217;s a &lt;a href=&quot;http://doc.qt.nokia.com/qeventloop.html&quot;&gt;QEventLoop&lt;/a&gt; class. But, does this class do if the mainloop is already in the event dispatcher?&lt;/p&gt;
&lt;p&gt;Simply put: QEventLoop is a &lt;i&gt;helper class&lt;/i&gt; that provides convenient access to the dispatcher&amp;#8217;s &lt;tt&gt;processEvents()&lt;/tt&gt; call. For example, QEventLoop has an &lt;tt&gt;exec()&lt;/tt&gt; method, that looks like this&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;pre&gt;
    // Simplified version of QEventLoop::exec()
    while (!eventLoopQuit)
        dispatcher-&gt;processEvents();
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;One usage of this pattern is to make a function blocks but still running the mainloop (so things like UI still work). This enable APIs like the ones used in some &lt;a href=&quot;http://doc.qt.nokia.com/qdialog.html&quot;&gt;QDialogs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;pre&gt;
    QMessageBox msgBox;
    msgBox.setText(&quot;The document has been modified.&quot;);
    msgBox.setInformativeText(&quot;Do you want to save your changes?&quot;);
    msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
    msgBox.setDefaultButton(QMessageBox::Save);

    // Blocks until a button is clicked in the dialog, ret will contain information
    // to identify that button.
    int ret = msgBox.exec();
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To see some downsides of this kind of API in dialogs, I recommend reading the article &lt;a href=&quot;http://labs.qt.nokia.com/blogs/2010/02/23/unpredictable-exec/&quot;&gt;Unpredictable exec()&lt;/a&gt; from Qt Labs blogs.&lt;/p&gt;
&lt;h3&gt;Further reading&lt;/h3&gt;
&lt;p&gt;For those who are interested in digging further, there are many ways to go from here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Event-driven programming&lt;/b&gt;: there are plenty of resources on the net, but I would like to point out two:
&lt;ul&gt;
&lt;li&gt;A talk about Node.js (&lt;a href=&quot;http://s3.amazonaws.com/four.livejournal/20091117/jsconf.pdf&quot;&gt;pdf&lt;/a&gt; and &lt;a href=&quot;http://jsconf.eu/2009/video_nodejs_by_ryan_dahl.html&quot;&gt;video&lt;/a&gt;). Node.js provides an environment for server-side programming in JavaScript based on events. The talk particularly highlights the advantages of using event-driven programming.&lt;/li&gt;
&lt;li&gt;A talk from the Plan 9 conference in 2007 called &lt;a href=&quot;http://swtch.com/~rsc/talks/threads07/&quot;&gt;Threads without Locks&lt;/a&gt;. The author shows the relation between usage of threads and event loops and how they can be used together to avoid locks for syncronization. These ideas appear also in &lt;a href=&quot;http://golang.org/&quot;&gt;Go programming language&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;QThreads&lt;/b&gt;: I didn&amp;#8217;t mentioned threads, but in Qt, if your thread runs a loop, it&amp;#8217;ll create a new event dispatcher. As of today you still can&amp;#8217;t use custom dispatchers for the QThreads, only for the main thread.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Evas in Qt&lt;/b&gt;: the example showed Evas being used in a Qt application. While this was one way to use Evas in Qt, there are other possibilities. You could just use the Evas library directly with Qt, without Ecore/EcoreEvas. But in that case you&amp;#8217;ll need to do the job of feeding Evas with events yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;#8217;s all folks.&lt;/p&gt;</content>
		<author>
			<name>Caio Marcelo</name>
			<uri>http://cmarcelo.org/blog</uri>
		</author>
		<source>
			<title type="html">cmarcelo's blog</title>
			<link rel="self" href="http://cmarcelo.org/blog/feed/"/>
			<id>http://cmarcelo.org/blog/feed/</id>
			<updated>2010-04-14T18:29:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Lies, big fat lies and benchmarks</title>
		<link href="http://savago.wordpress.com/2010/04/07/lies-big-fat-lies-and-benchmarks/"/>
		<id>http://savago.wordpress.com/?p=240</id>
		<updated>2010-04-07T23:14:32+00:00</updated>
		<content type="html">&lt;p&gt;There is the old saying, &amp;#8216;there are lies, big fat lies and there are benchmarks&amp;#8217;, but after my &lt;a href=&quot;http://savago.wordpress.com/2010/03/30/jsanim-current-status/&quot;&gt;previous post&lt;/a&gt; about the jsanim, it was time to try to measure how good or bad the javascript based animations are when comparing it against Plasma::Animations (written in C++).&lt;/p&gt;
&lt;p&gt;== what to measure? ==&lt;/p&gt;
&lt;p&gt;The first task was to have a meaningful number and frames per second (FPS) sounds like a good idea. The only issue is that QGraphicsView will only update parts in the scene that need redrawing (besides it seems that there is not an easy way to access the draw events without subclassing). My solution was to set a counter for the Animation::updateCurrentTime() method that is called while the animation is running, given that the documentation says that &amp;#8220;&amp;#8230; neither the interval between calls nor the number of calls to this function are defined; though, it will normally be 60 updates per second.&amp;#8221;. Maybe I should call it Function calls Per Second (FCPS). &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Another important factor that can impact hugely is this kind of benchmark is both the hardware as also the graphics system used by Qt (and finally if the window manager has composite effect turned on). My test computer is a macbook (version 4.1), Intel Core 2 Duo (T8300@2.4Ghz), video Intel Mobile GM965/GL960), Qt 4.7 from master repository and I run the tests with composite disabled and got &lt;a href=&quot;http://randomfiles.googlecode.com/files/anims_mac.csv&quot;&gt;this results&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As the test application, I used the code available in playground/plasma/libs/jsanim, where a set of QGraphicsWidgets (each one drawing a pixmap) will run an animation group where 2 animations (zoom and fade) run in parallel followed next by a rotation.&lt;/p&gt;
&lt;p&gt;== equal or not? ==&lt;/p&gt;
&lt;p&gt;Next task is to extract any meaning from the results and I remembered what an old statistician professor that I had used to joke &amp;#8220;Torture the data enough and it will confess&amp;#8221;. I used to be good on this subject (back in the day I wrote some Bootstrap simulations and model fitting for biological data as also geostatistics  studies using R), but it is being 5 years since I last have done any statistical analysis, I was worried about making &lt;a href=&quot;http://www.phdcomics.com/comics.php?n=1271&quot;&gt;some mistakes&lt;/a&gt; while using more advanced methods.&lt;/p&gt;
&lt;p&gt;So I went with the lazier approach and decided to use a &lt;a href=&quot;http://xkcd.com/539/&quot;&gt;boxplot&lt;/a&gt;, following bellow:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://savago.files.wordpress.com/2010/04/boxplot.png&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-243&quot; title=&quot;boxplot&quot; src=&quot;http://savago.files.wordpress.com/2010/04/boxplot.png?w=455&amp;#038;h=112&quot; alt=&quot;&quot; width=&quot;455&quot; height=&quot;112&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The js based animations seems to have a somewhat bigger variance (see second boxplot) but overall you can&amp;#8217;t really tell if there is a difference between them (just in case, the p-values for t-student means tests was for each animation respectively: 0.54, 0.43, 0.86).&lt;/p&gt;
&lt;p&gt;So&amp;#8230; what about mobile? I did the same tests in a Nokia N900 (using the opengl and raster engines) and got &lt;a href=&quot;http://randomfiles.googlecode.com/files/anims_n900.csv&quot;&gt;this data&lt;/a&gt;, which yielded the following boxplot:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://savago.files.wordpress.com/2010/04/boxplot_n900.png&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-243&quot; title=&quot;boxplot&quot; src=&quot;http://savago.files.wordpress.com/2010/04/boxplot_n900.png?w=455&amp;#038;h=112&quot; alt=&quot;&quot; width=&quot;455&quot; height=&quot;112&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;this time without the js variance and again without any sensible difference between js and C++ animations (p-values: 0.42, 0.16, 1).&lt;/p&gt;
&lt;p&gt;== wrapping up ==&lt;/p&gt;
&lt;p&gt;From the data (and after asking 4 different people to inspect visually how the animations were running in js X C++ apps), I can say that following the path of using javascript to code the logic of animations in Qt seems to be a valid approach with no sensible difference in performance. Kudos to QScriptEngine (and Qt development frameworks) for making it perform really fast.&lt;/p&gt;
&lt;p&gt;There are indeed some issues in this study, following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU and memory usage: I measure it informally using &amp;#8216;top&amp;#8217; and they seems to be on the same level, but a more formal benchmarking ideally should measure this variables;&lt;/li&gt;
&lt;li&gt;samples: I was a bit in a hurry and run each animation only 3 times (ideally a bigger sample like 20 should be used).&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/240/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/240/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/240/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/240/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/240/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/240/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/240/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/240/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/240/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/240/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=240&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Parallel package downloads for Debian-based distros</title>
		<link href="http://baraujo.net/blog/?p=77"/>
		<id>http://baraujo.net/blog/?p=77</id>
		<updated>2010-04-07T15:40:32+00:00</updated>
		<content type="html">&lt;p&gt;When trying to install some packages in my Karmic box and noticing that it would take a long time, I wondered why the downloads couldn&amp;#8217;t be made in parallel &amp;#8211; the one-of-a-time download method used by &lt;code&gt;apt-get&lt;/code&gt; is far from optimal. A quick search resulted in these &lt;a href=&quot;http://johntellsall.blogspot.com/2009/04/fast-parallel-downloading-for-apt-get.html&quot; target=&quot;_blank&quot;&gt;very&lt;/a&gt; &lt;a href=&quot;http://www.humbug.in/2010/fast-parallel-downloadingupgrading-for-ubuntu-using-aptitudeapt-getaria2c/&quot; target=&quot;_blank&quot;&gt;useful&lt;/a&gt; blog posts &amp;#8211; it seems that I wasn&amp;#8217;t the only one with that question in my mind. So, starting from the solution from the second hyperlink and putting all inside a single bash script, we have:&lt;/p&gt;
&lt;pre class=&quot;brush: bash;&quot;&gt;
#!/bin/bash
# Must be run with sudo or as (gasp!) root

apt-get -y --print-uris install &amp;quot;$@&amp;quot; |
egrep -o -e &amp;quot;http://[^\']+&amp;quot; |
aria2c -c -d /var/cache/apt/archives -i - &amp;amp;&amp;amp; apt-get install &amp;quot;$@&amp;quot;
&lt;/pre&gt;
&lt;p&gt;You&amp;#8217;ll need &lt;code&gt;aria2&lt;/code&gt; for this, download it in the classic way &lt;img src=&quot;http://baraujo.net/blog/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt; . In a nutshell, the script obtains the list of packages do be downloaded, pass them to &lt;code&gt;aria2&lt;/code&gt; for downloading and runs the proper install command in the end. Now you just have to &lt;code&gt;chmod u+x&lt;/code&gt; and it you&amp;#8217;re set. For example, if you wanted to use &lt;code&gt;xfce4&lt;/code&gt; in your Ubuntu box instead of Gnome, you could just do&lt;/p&gt;
&lt;pre class=&quot;brush: bash;&quot;&gt;
$ sudo ./parallelInstall.sh xubuntu-desktop
&lt;/pre&gt;
&lt;p&gt;and go grab a coffee. Other apt-get commands work: if you want to do an &lt;code&gt;apt-get upgrade&lt;/code&gt; just change &lt;code&gt;install&lt;/code&gt; to &lt;code&gt;upgrade&lt;/code&gt; (or &lt;code&gt;dist-upgrade&lt;/code&gt;) in the script. The script is not fully automated, you see &amp;#8211; the last command may need mandatory interaction because installing things may nicely break your system without your ever noticing until the damage is done. If all the packages are from official repos and signed and whatnot, though, all will happen in a very automatic way &lt;img src=&quot;http://baraujo.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Although this script is tailored for Debian-flavored distros, you could just adapt the first and last commands to match your favourite distro.&lt;/p&gt;</content>
		<author>
			<name>Bruno Araujo</name>
			<uri>http://baraujo.net/blog</uri>
		</author>
		<source>
			<title type="html">Divagations of a developer</title>
			<subtitle type="html">Thoughts about software development, information retrieval and sometimes about fun stuff</subtitle>
			<link rel="self" href="http://baraujo.net/blog/?feed=rss2"/>
			<id>http://baraujo.net/blog/?feed=rss2</id>
			<updated>2010-05-08T22:09:23+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Arbitrary and/or animated opacity masks to QGraphicsItems with QGraphicsEffect</title>
		<link href="http://blog.eduardofleury.com/archives/2010/04/102/"/>
		<id>http://blog.eduardofleury.com/?p=102</id>
		<updated>2010-04-05T14:09:47+00:00</updated>
		<content type="html">&lt;p&gt;Last week I dropped by this &lt;a href=&quot;http://nivo.dev7studios.com/&quot;&gt;neat image slider&lt;/a&gt; and was wondering how could that be done in Qt (C++ or Quick). And basically what we need is an animated opacity mask, or &amp;#8220;clipper&amp;#8221;.&lt;/p&gt;
&lt;p&gt;While QGraphicsView and QML already provide rectangular clipping, it does not support clipping to arbitrary forms and opacity, something we would need in order to implement the &amp;#8220;moving bars&amp;#8221; transition used in the image slider I mentioned above.&lt;/p&gt;
&lt;p&gt;I expected QGraphicsEffect to be suitable for that usecase but I had no experience with it, so I decided to try and make a proof of concept effect class that would clip an arbitrary QGraphicsItem to the shape of a bouncing circle.&lt;/p&gt;
&lt;p&gt;A more useful class would be one that received as parameter a mask image instead of the &amp;#8220;hard-coded&amp;#8221; bouncing circle, but I&amp;#8217;ll let that as an exercise to those reading &lt;img src=&quot;http://blog.eduardofleury.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Code is attached, I complied against Qt 4.6 and it works fine. Just run:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# qmake&lt;br /&gt;
# make&lt;br /&gt;
# ./effect&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;l class would be one that received as parameter a mask image instead of the &amp;#8220;hard-coded&amp;#8221; bouncing circle, but I&amp;#8217;ll let that as an exercise to those read.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://blog.eduardofleury.com/wp-content/uploads/effect.tgz&quot;&gt;Download and try it here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;:  If your default graphics system is not raster, ie. if you get errors like:&lt;/p&gt;
&lt;p&gt;QPainter::setCompositionMode: Blend modes not supported on device&lt;/p&gt;
&lt;p&gt;Try running the example as follows:&lt;br /&gt;
&lt;span&gt;# ./effect -graphicssystem raster&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;QPainter::setCompositionMode: Blend modes not supported on device&lt;/div&gt;</content>
		<author>
			<name>Eduardo Fleury</name>
			<uri>http://blog.eduardofleury.com</uri>
		</author>
		<source>
			<title type="html">eduardofleury.com</title>
			<subtitle type="html">Thoughts, shuffled...</subtitle>
			<link rel="self" href="http://blog.eduardofleury.com/feed/"/>
			<id>http://blog.eduardofleury.com/feed/</id>
			<updated>2010-05-01T00:29:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">jsanim: current status</title>
		<link href="http://savago.wordpress.com/2010/03/30/jsanim-current-status/"/>
		<id>http://savago.wordpress.com/?p=225</id>
		<updated>2010-03-30T00:35:29+00:00</updated>
		<content type="html">&lt;p&gt;From my &lt;a href=&quot;http://savago.wordpress.com/2010/02/25/tokamak4-some-js-love/&quot;&gt;previous post&lt;/a&gt; about jsanim (javascript animations) where I explained the motivations about the idea, I&amp;#8217;m writing to report the current status.&lt;/p&gt;
&lt;p&gt;I got stuck while trying to create an instance of a javascript class from C++ side in QScriptEngine, but I was helped by khansen (you rock man!).&lt;/p&gt;
&lt;p&gt;Being able to create an instance got to address an important issue in the first PoC: run more than 1 animation. Now each animation type will have a javascript class, where its instance will point to the animation target widget and hold the animation parameters. This design has some advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;uses a single QScriptEngine object (implemented as a singleton);&lt;/li&gt;
&lt;li&gt;can run multiple animations;&lt;/li&gt;
&lt;li&gt;multiple animations can access the same widget;&lt;/li&gt;
&lt;li&gt;is more OOP oriented (the animation loop will call a method on the javascript class);&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How fast (or slow&amp;#8230;) is it to use QScriptEngine to animate a widget&amp;#8217;s properties? What about a video?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Notes: it has 8 QGraphicsWidgets, 24 animation objects (zoom, fade, rotate), running in the Nokia N5800.&lt;/p&gt;
&lt;p&gt;What is next is profiling and comparing it against our Plasma::Animation classes doing preferably the same type of work. But since it is still in the very early beginning, it is already looking promising.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=225&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Secure memory (a.k.a. mlock)</title>
		<link href="http://savago.wordpress.com/2010/03/30/secure-memory-a-k-a-mlock/"/>
		<id>http://savago.wordpress.com/?p=206</id>
		<updated>2010-03-30T00:33:56+00:00</updated>
		<content type="html">&lt;p&gt;Last week, while trying to slim down the software dependencies of an application, I figured it out that one library could be dismissed if we could provide a secure/safe memory block to store a key.&lt;/p&gt;
&lt;p&gt;This is a common requisite in 2 areas (real time systems and security applications): having a way to ensure that a segment of memory will not be swapped to the disk. For real time, swapping from the disk back to the memory can ruin the purpose of having deterministic performance and for security let&amp;#8217;s just say that is bad to save passwords/keys in a non encrypted filesystem (even worst if you run our swap in a filesystem that can&amp;#8217;t couple with user privileges).&lt;/p&gt;
&lt;p&gt;After googling a lot to no avail, I decided to ask Arnaldo Carvalho (a.k.a. acme) if there was a syscall for letting the O.S. know that a memory block should not be swapped. The answer: man mlock (it turned to be a POSIX 2001 function to my surprise).&lt;/p&gt;
&lt;p&gt;The idea is quite simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;malloc some memory;&lt;/li&gt;
&lt;li&gt;ask the O.S. to lock it (make it un-swappable);&lt;/li&gt;
&lt;li&gt;use it;&lt;/li&gt;
&lt;li&gt;unlock the memory and clean it later.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only tricky part is that thanks to COW (Copy On Write), you can have access to a segment of memory that is being shared by your process parent (so the way to ensure that the memory is actually being duplicated to your process is by writing on it). A memset could do it, but I decided to be fancier and use another POSIX call &lt;strong&gt;sysconf&lt;/strong&gt; (getpagesize is marked as deprecated in the man pages) to mark as dirty only one byte at each page. You can have the &lt;a href=&quot;http://randomfiles.googlecode.com/files/memlock.tar.bz2&quot;&gt;code here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The way to use it:&lt;/p&gt;
&lt;p&gt;unsigned int size;&lt;br /&gt;
char *ptr;&lt;br /&gt;
ptr = alloc_secure_memory(size);&lt;br /&gt;
if (ptr) {&lt;br /&gt;
//do something with the memory and later clean it&lt;/p&gt;
&lt;p&gt;free_secure_memory(ptr, size);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;I limited the amount of memory lockable to 20K, since it is way more than you usually need for storing a key and besides linux (in my case, Ubuntu) will limit the amount of lockable memory to 64K (of course if you are the root user you can set another value with &amp;#8216;ulimit -l xxxx&amp;#8217;).&lt;/p&gt;
&lt;p&gt;Pay attention that mlockall can lock the whole memory of your application (with the risk of bringing the whole system performance down if you are running out of memory for other processes) and you should not use it.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/206/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/206/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/206/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/206/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/206/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/206/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/206/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/206/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/206/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/206/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=206&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Delayed post: Nuremberg</title>
		<link href="http://savago.wordpress.com/2010/03/29/delayed-post-nuremberg/"/>
		<id>http://savago.wordpress.com/?p=187</id>
		<updated>2010-03-29T22:40:22+00:00</updated>
		<content type="html">&lt;p&gt;Friends&lt;/p&gt;
&lt;p&gt;A lonng delay to post it, but here goes some photos I snapped in Nuremberg. Since I got a travel to Finland that was delayed, I was happy to have a weekend to enjoy the city.&lt;/p&gt;
&lt;p&gt;And boy, it was really cool! Sandro reported some of the &lt;a href=&quot;http://liveblue.wordpress.com/2010/03/01/passeio-em-nuremberg/&quot;&gt;places we visited&lt;/a&gt; (hey, man! What about the karaoke video?). But the best of the whole cultural experience came in the Saturday: visiting the Museum of Industrial Culture (by suggestion of Will Stephenson).&lt;/p&gt;
&lt;p&gt;Have a look on some photos:&lt;/p&gt;
&lt;p&gt;a) When your grandpa says that people nowadays lack the guts, believe it!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://savago.files.wordpress.com/2010/03/ballz.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-188&quot; title=&quot;ballz&quot; src=&quot;http://savago.files.wordpress.com/2010/03/ballz.jpg?w=455&amp;#038;h=298&quot; alt=&quot;&quot; width=&quot;455&quot; height=&quot;298&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;b) Feeling like a kid in a candyshop (and yes, most of the motorcycles still work!). It seems that up until the 60&amp;#8242;s, there used to be several local motorcycle companys in Nuremberg (some of the items in the collection are older than 100 years and some feature engines with more than 1000cc).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://savago.files.wordpress.com/2010/03/candyshop01.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-189&quot; title=&quot;candyshop01&quot; src=&quot;http://savago.files.wordpress.com/2010/03/candyshop01.jpg?w=455&amp;#038;h=341&quot; alt=&quot;&quot; width=&quot;455&quot; height=&quot;341&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://savago.files.wordpress.com/2010/03/candyshop021.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-192&quot; title=&quot;candyshop02&quot; src=&quot;http://savago.files.wordpress.com/2010/03/candyshop021.jpg?w=455&amp;#038;h=341&quot; alt=&quot;&quot; width=&quot;455&quot; height=&quot;341&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;c) From my poor German, there was a sign saying something like &amp;#8220;Kids, you can ask you mommy or daddy to snap a photo&amp;#8221;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://savago.files.wordpress.com/2010/03/rider.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-195&quot; title=&quot;rider&quot; src=&quot;http://savago.files.wordpress.com/2010/03/rider.jpg?w=455&amp;#038;h=412&quot; alt=&quot;&quot; width=&quot;455&quot; height=&quot;412&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;d) Visiting the train exhibition gives you a good idea of how the old and the new can be present together in the city.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://savago.files.wordpress.com/2010/03/trains.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-197&quot; title=&quot;trains&quot; src=&quot;http://savago.files.wordpress.com/2010/03/trains.jpg?w=455&amp;#038;h=341&quot; alt=&quot;&quot; width=&quot;455&quot; height=&quot;341&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some extra notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the stereotype of German people being unwilling to help tourists is completely false, as long you are at least capable of asking for help in the local language;&lt;/li&gt;
&lt;li&gt;local food is delicious and way cheaper than Northern countries or say San Francisco/USA. You can eat very well by paying 10 euros a meal (included the dunkel beer!) in Nuremberg;&lt;/li&gt;
&lt;li&gt;train system is cheap and effective (but not always on time);&lt;/li&gt;
&lt;li&gt;The beer is awesome and the cars german!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://savago.files.wordpress.com/2010/03/dunkel.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-199&quot; title=&quot;dunkel&quot; src=&quot;http://savago.files.wordpress.com/2010/03/dunkel.jpg?w=455&amp;#038;h=412&quot; alt=&quot;&quot; width=&quot;455&quot; height=&quot;412&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/187/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/187/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/187/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/187/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/187/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/187/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/187/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/187/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/187/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/187/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=187&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Hello Planet KDE!</title>
		<link href="http://brunoabinader.blogspot.com/2010/03/hello-planet-kde.html"/>
		<id>tag:blogger.com,1999:blog-8974121210221508485.post-6629365362865023806</id>
		<updated>2010-03-25T13:25:54+00:00</updated>
		<content type="html">&lt;div&gt;Hi!&lt;br /&gt;This is my first post on the Planet KDE, so I would like to take advantage of this to introduce myself :)&lt;br /&gt;My name is Bruno Abinader (aka. abinader on Freenode), and I'm an open-source developer guy which lives in Manaus, Brazil and works for the OpenBossa labs/INdT since 2005. I've started contributing to the Plasma project since January/2010 (doing some ports of the deprecated animation API usage to the current one) and plan to keep contributing with cool stuff like new animation effects, MediaCenter plasmoids (Last.FM currently in progress!) and mentoring in some GSoC ideas (like Plasmoid data caching and core library test suite). For this little time I've been working on Plasma I would like to thank some people that helped me begin this the right way: Savago, igorto, notmart and aseigo, thanks!&lt;br /&gt;&lt;br /&gt;ps: I must recognize I'm not an avid blogger, but I'll try to keep things in touch for now on :D&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8974121210221508485-6629365362865023806?l=brunoabinader.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Bruno de Oliveira Abinader</name>
			<email>noreply@blogger.com</email>
			<uri>http://brunoabinader.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Bruno Abinader's Blog</title>
			<subtitle type="html">A space for informations, tips, and news about the universe that surrounds me.</subtitle>
			<link rel="self" href="http://brunoabinader.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-8974121210221508485</id>
			<updated>2010-07-31T03:49:10+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Bossa Conference</title>
		<link href="http://codeposts.blogspot.com/2010/03/bossa-conference.html"/>
		<id>tag:blogger.com,1999:blog-36235783.post-7195234042802069806</id>
		<updated>2010-03-16T00:03:49+00:00</updated>
		<content type="html">So, once more I'm in the Amazon, but this time not for any fancy jungle trip, but instead for the great &lt;a href=&quot;http://www.bossaconference.org&quot;&gt;Bossa Conference&lt;/a&gt;! The conference has been really great, with a focus a bit different that other conferences as the focus is on socializing, getting to know people, and actually getting stuff done.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was really nice to meet my friends from Qt again, as well as meet my fellow WebKit hacker, Ariya Hidayat, who has since moved on to Qualcomm. The conference spotted a lot of technical talks about everything from audio details, bluetooth to now we should develop UI widgets in the near future. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This year is the first year that I did any presentation, so I started out by doing two :-) Here you have the first one, enjoy.&lt;/div&gt;&lt;br /&gt;&lt;div id=&quot;__ss_3374573&quot;&gt;&lt;strong&gt;&lt;a href=&quot;http://www.slideshare.net/kchristi/connecting-technology-for-great-experiences-how-does-qml-and-web-fit-together&quot; title=&quot;Connecting Technology for Great Experiences - How does QML and Web fit together?&quot;&gt;Connecting Technology for Great Experiences - How does QML and Web fit together?&lt;/a&gt;&lt;/strong&gt;&lt;div&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/kchristi&quot;&gt;kchristi&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/36235783-7195234042802069806?l=codeposts.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Kenneth Rohde Christiansen</name>
			<email>noreply@blogger.com</email>
			<uri>http://codeposts.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Kenneth Christiansen's code posts</title>
			<link rel="self" href="http://codeposts.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-36235783</id>
			<updated>2010-07-30T20:09:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Ubuntu Mobile Development at the Bossa Conference 2010</title>
		<link href="http://ianlawrence.info/random-stuff/ubuntu-mobile-development-at-the-bossa-conference-2010"/>
		<id>http://ianlawrence.info/random-stuff/ubuntu-mobile-development-at-the-bossa-conference-2010</id>
		<updated>2010-03-13T23:22:47+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://rbelem.blogspot.com/&quot;&gt;Rodrigo&lt;/a&gt; and I were invited to talk about &lt;a href=&quot;https://wiki.ubuntu.com/MobileTeam&quot;&gt;Ubuntu Mobile &lt;/a&gt;at the Bossa Conference this year in Manaus.The finished presentation is &lt;a href=&quot;https://wiki.ubuntu.com/MobileTeam&amp;gt;Ubuntu Mobile&amp;lt;/a&amp;gt; at the Bossa Conference this year in Manaus.The finished presentation is available &amp;lt;a href=&quot;&gt;here&lt;/a&gt; but what follows is a short rundown of what the Lucid release means for Ubuntu. Some highlights are&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Rootstock/Rootstock gui – integrated with oem-config&lt;/li&gt;
  &lt;li&gt;Qemu-arm-static&lt;/li&gt;
  &lt;li&gt;ARM/Thumb2 support - the archive in lucid is built for the ARMv7 architecture with thumb2 support.&lt;/li&gt;
  &lt;li&gt;EFL 2D Launcher&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://edge.launchpad.net/project-rootstock&quot;&gt;Rootstock&lt;/a&gt; is a graphical (and command line of course) set of tools to create a fully configured tarball or VM image of an ubuntu rootfs from scratch&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://ianlawrence.info/../images/rootstock/image&quot; /&gt; so that you can extract it to a root device. One nice thing about this is that various &lt;img src=&quot;http://ianlawrence.info/../images/tasks/image&quot; /&gt; tasks can be included in the image. This is very useful when working with ARM. Other tools such as Moblin Image Creator exist to do more or less the same thing but Rootstock is leading the way in innovation at the moment IMO. If you want to really customize an image then you need to use seeds and germinate a set of packages - for this you will need to read our &lt;a href=&quot;http://www.amazon.com/Professional-Ubuntu-Mobile-Development-Programmer/dp/047043676X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1268521266&amp;amp;sr=8-1&quot;&gt;book&lt;/a&gt; ;)&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The binfmt-misc module in the Ubuntu kernel makes it possible to execute binaries of foreign arches under linux. This means it is possible to have an arm eabi enabled chroot on a i386 system :) -  this is as simple as running&lt;/p&gt;
&lt;pre&gt;$ sudo apt-get update&lt;br /&gt;$ sudo apt-get install qemu-arm-static&lt;br /&gt;$ build-arm-chroot karmic eabi-chroot&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ARM/Thumb 2 is the instruction set underlying the ARM Cortex
architecture which provides enhanced levels of performance, energy
efficiency, and code density for a wide range of embedded applications.The whole Ubuntu archive is being ported to Thumb 2 and we still have some some build failures- if you can help with ftbfs (failed to build from source) please help out &lt;a href=&quot;https://wiki.ubuntu.com/ARM/Thumb2&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;This has already been covered extensively &lt;a href=&quot;http://www.linuxuk.org/2010/02/the-new-ui-for-arm-based-ubuntu-devices/&quot;&gt;elsewhere&lt;/a&gt; but the new UI for ARM based Ubuntu devices will rock hard for Lucid. The tool will detect hardware and if a device does not have 3D capabilities it wall fall back to the EFL launcher &lt;img src=&quot;http://ianlawrence.info/../images/efl-2d/image&quot; /&gt;  It is hard to stress why this is rocks so much but a unified user experience across i386/Atom and ARM devices should ring a few bells in marketing departments everywhere, right.&lt;/p&gt;
&lt;p&gt;Exciting times. &lt;br /&gt;&lt;/p&gt;</content>
		<author>
			<name>Ian Lawrence</name>
			<uri>http://ianlawrence.info/random-stuff</uri>
		</author>
		<source>
			<title type="html">Ian Lawrence - Blog</title>
			<subtitle type="html">What is the digital equivalent of lovely? He wondered. What are the digits that encode beauty, the number-fingers that enclose, transform, transmit, decode, and somehow, in the process, fail to trap or choke the soul of it? Not because of the technology but in spite of it, beauty, that ghost, that treasure, passes undiminished through the new machines.</subtitle>
			<link rel="self" href="http://ianlawrence.info/random-stuff/RSS2"/>
			<id>http://ianlawrence.info/random-stuff/RSS2</id>
			<updated>2010-07-31T05:29:12+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Progress bar in cp command</title>
		<link href="http://earruda.eti.br/blog/2010/03/progress-bar-in-cp-command/"/>
		<id>http://earruda.eti.br/blog/?p=191</id>
		<updated>2010-03-12T19:34:08+00:00</updated>
		<content type="html">&lt;p&gt;Reading Planet Debian (&lt;a href=&quot;http://planet.debian.org/&quot; target=&quot;_blank&quot;&gt;http://planet.debian.org&lt;/a&gt;) i&amp;#8217;ve seen an interesting post, made by Daniel Stone (&lt;a href=&quot;http://www.fooishbar.org/blog/tech/&quot; target=&quot;_blank&quot;&gt;http://www.fooishbar.org/blog/tech/&lt;/a&gt;), in which he links to Chris Lamb&amp;#8217;s blog (&lt;a href=&quot;http://chris-lamb.co.uk/&quot; target=&quot;_blank&quot;&gt;http://chris-lamb.co.uk/&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In the post, he answers the following question: &amp;#8216;Can you get cp to give a progress bar like wget?&amp;#8217;. The answer is the name of the post: &amp;#8216;&lt;span&gt;damn right you can&amp;#8217;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Check it out: &lt;a href=&quot;http://www.fooishbar.org/blog/tech/cp-progress-bar-2010-03-04-12-15.html&quot; target=&quot;_blank&quot;&gt;http://www.fooishbar.org/blog/tech/cp-progress-bar-2010-03-04-12-15.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;:wq&lt;/p&gt;</content>
		<author>
			<name>Everton Arruda</name>
			<uri>http://earruda.eti.br/blog</uri>
		</author>
		<source>
			<title type="html">NotrevBlog » Planet INdT</title>
			<subtitle type="html">Éverton Arruda's Blog</subtitle>
			<link rel="self" href="http://earruda.eti.br/blog/category/planet-indt/feed/"/>
			<id>http://earruda.eti.br/blog/category/planet-indt/feed/</id>
			<updated>2010-07-16T20:09:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Chamada de trabalhos para FLISOL 2010 Amazonas</title>
		<link href="http://earruda.eti.br/blog/2010/03/chamada-de-trabalhos-para-flisol-2010-amazonas/"/>
		<id>http://earruda.eti.br/blog/?p=186</id>
		<updated>2010-03-12T13:51:56+00:00</updated>
		<content type="html">&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flisol.net&quot;&gt;&lt;img class=&quot; aligncenter&quot; title=&quot;FLISOL&quot; src=&quot;http://dalemasduro.iespana.es/imagenes/flisol2008/flisol2008portugues_final.png&quot; alt=&quot;FLISOL&quot; width=&quot;374&quot; height=&quot;254&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;No dia 24 de Abril de 2010, será realizado, em toda a América-latina, o Festival Latino-Americano de Instalação de Software, FLISoL.&lt;/p&gt;
&lt;p&gt;Em Manaus, este evento já virou tradição. O evento é realizado com palestras, oficinas e mini-cursos relacionados ao mundo do Software Livre, visando a difusão de sua filosofia e incentivando o uso de alternativas livres para softwares proprietários.&lt;/p&gt;
&lt;p&gt;Se você possui uma palestra (técnica ou filosófica), oficina ou minicurso, relacionado a &lt;strong&gt;Software Livre&lt;/strong&gt;, que gostaria de ministrar no evento, envie um e-mail para &lt;em&gt;&lt;a href=&quot;mailto:brankinhu@gmail.com&quot; target=&quot;_blank&quot;&gt;brankinhu@gmail.com&lt;/a&gt;&lt;/em&gt; e &lt;em&gt;&lt;a href=&quot;mailto:danielbrunos@gmail.com&quot; target=&quot;_blank&quot;&gt;danielbrunos@gmail.com&lt;/a&gt;&lt;/em&gt; no seguinte formato:&lt;/p&gt;
&lt;div&gt;&lt;strong&gt;ASSUNTO:&lt;/strong&gt; Proposta de [Palestra/Minicurso/Oficina] FLISoL 2010&lt;br /&gt;
&lt;strong&gt;MENSAGEM: &lt;/strong&gt;&lt;br /&gt;
Nome do palestrante&lt;br /&gt;
Título da [Palestra/Minicurso/Oficina]&lt;br /&gt;
Resumo da [Palestra/Minicurso/Oficina]&lt;/div&gt;
&lt;p&gt;Escolhendo entre um dos tipos: Palestra, Minicurso ou Oficina.&lt;/p&gt;
&lt;p&gt;O prazo para envio de proposta é até o dia &lt;strong&gt;4 de abril&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Aguardamos a sua proposta!&lt;/p&gt;
&lt;p&gt;Links:&lt;br /&gt;
Projeto Software Livre Amazonas: &lt;a href=&quot;http://am.softwarelivre.org&quot; target=&quot;_blank&quot;&gt;http://am.softwarelivre.org&lt;br /&gt;
&lt;/a&gt;FLISOL 2010 Amazonas: &lt;a href=&quot;http://am.softwarelivre.org/flisol&quot; target=&quot;_blank&quot;&gt;http://am.softwarelivre.org/flisol&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content>
		<author>
			<name>Everton Arruda</name>
			<uri>http://earruda.eti.br/blog</uri>
		</author>
		<source>
			<title type="html">NotrevBlog » Planet INdT</title>
			<subtitle type="html">Éverton Arruda's Blog</subtitle>
			<link rel="self" href="http://earruda.eti.br/blog/category/planet-indt/feed/"/>
			<id>http://earruda.eti.br/blog/category/planet-indt/feed/</id>
			<updated>2010-07-16T20:09:19+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Leaving INdT...</title>
		<link href="http://etrunko.blogspot.com/2010/03/leaving-indt.html"/>
		<id>tag:blogger.com,1999:blog-14702826.post-7962012788251221205</id>
		<updated>2010-03-10T19:00:00+00:00</updated>
		<content type="html">&lt;a href=&quot;http://1.bp.blogspot.com/_xF-tlYcJ9_0/S4BxuvxkD1I/AAAAAAAAA40/YNEvbprMDMU/s1600-h/farewell-poster-c12183202.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_xF-tlYcJ9_0/S4BxuvxkD1I/AAAAAAAAA40/YNEvbprMDMU/s400/farewell-poster-c12183202.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5440473397775830866&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;I've been cooking this post for a couple of weeks, but due to many reasons, I was not able to publish it; until now.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since Feb 19th, I have left my job at &lt;a href=&quot;http://indt.org&quot;&gt;INdT&lt;/a&gt;. I remember as if it was yesterday. Almost 5 years ago, I was moving from the Central region of Brazil to the Northeast, 2.500 km away from home, in search of new challenges in my professional career and also in my personal life. I was leaving a very good job in the technical center of one of the biggest (if not the biggest) &lt;a href=&quot;http://bb.com.br&quot;&gt;bank&lt;/a&gt; in Brazil to try something new and very exciting. &lt;br /&gt;&lt;br /&gt;The proposal was to join a selected group of highly skilled people, whose task was to ramp up an arm of Nokia here in Brazil, focused on research and development, which I had never heard about before. That was how I met the Instituto Nokia de Tecnologia, or simply, INdT. The thing that really caught my attention was the possibility to work directly with FOSS, while getting very well paid for that. What could ever be possibly better than that? ;)&lt;br /&gt;&lt;br /&gt;By the time, besides of being a Linux user at home and having programmed using Open Source Software since the college, I had never actually contributed any single piece of code, documentation, translation or whatever, to an upstream project. Mostly because I had  not yet understood the actual dynamic of developing software in the open. I was simply afraid of what was waiting for me on that corner.&lt;br /&gt;&lt;br /&gt;I think those were new seas for INdT as well. Some of the guys that joined by that time, already had prior experience on the area, but a big part of us didn't. For this, and many other reasons, every day at the office was a different, joyful and exciting learning experience about the FOSS universe. That is something I am very thankful for.&lt;br /&gt;&lt;br /&gt;As it happens very often with any company, it is necessary to make important decisions and focus on given areas. Unfortunately, and important to say, in my very own point of view, I realized that my piece of contribution to INdT had already been given. I really hope that it was useful somehow.&lt;br /&gt;&lt;br /&gt;Time has come to find new opportunities, motivations and challenges in both professional and personal life. I'd like to thank very much and wish all the best to everyone I had the opportunity to work with during all this time. See you around!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/14702826-7962012788251221205?l=etrunko.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>etrunko</name>
			<email>noreply@blogger.com</email>
			<uri>http://etrunko.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">(void *)</title>
			<link rel="self" href="http://etrunko.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-14702826</id>
			<updated>2010-07-28T19:09:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">bossa conference 2010 &amp;#8211; my personal scheduler</title>
		<link href="http://franciscoalecrim.com/blog/2010/03/05/bossa-conference-2010-my-personal-scheduler/"/>
		<id>http://franciscoalecrim.com/blog/?p=262</id>
		<updated>2010-03-05T22:31:17+00:00</updated>
		<content type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Next week we&amp;#8217;re gonne have Bossa Conference. It&amp;#8217;ll be a great opportunity to exchange knowledgement.&lt;/p&gt;
&lt;p&gt;My personal scheduler&lt;/p&gt;
&lt;p&gt;Sunday&lt;/p&gt;
&lt;p&gt;14:00 &amp;#8211; Welcome reception and I&amp;#8217;ll be there. &lt;img src=&quot;http://franciscoalecrim.com/blog/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Monday&lt;/p&gt;
&lt;p&gt;10:00 &amp;#8211; Johan Hedberg  &amp;#8220;Bluetooth Audio in Linux &amp;#8211; Desktop vs Embedded&amp;#8221;&lt;/p&gt;
&lt;p&gt;11:00 &amp;#8211; Olivier Crête &amp;amp; Marco Barisione &amp;#8211; &amp;#8220;Building Collaborative Desktop and Mobile applications&amp;#8221;&lt;/p&gt;
&lt;p&gt;14:00 &amp;#8211; Sjoerd Simons &amp;#8211; &amp;#8220;From RTP to Empathy&amp;#8221;&lt;/p&gt;
&lt;p&gt;15:00 &amp;#8211; Tobias Mueller &amp;#8211; &amp;#8220;Security in Mobile Devices&amp;#8221;&lt;/p&gt;
&lt;p&gt;16:30 &amp;#8211; Espen Riskedal &amp;#8211; &amp;#8220;Shipping mobile applications using Qt for Symbian&amp;#8221;&lt;/p&gt;
&lt;p&gt;Tuesday&lt;/p&gt;
&lt;p&gt;10:00 &amp;#8211; Lennart Poettering &amp;#8211; &amp;#8220;Audio Infrastructure in Mobile Devices&amp;#8221;&lt;/p&gt;
&lt;p&gt;11:00 &amp;#8211; Rodrigo Belém &amp;#8211;  &amp;#8220;Ubuntu Mobile Development&amp;#8221;&lt;/p&gt;
&lt;p&gt;14:00 &amp;#8211; Fuad Abinader &amp;#8211; &amp;#8220;Simplified transition to mobile IPv6 networks with open-source tools&amp;#8221;&lt;/p&gt;
&lt;p&gt;15:00 &amp;#8211; Alexis Menard &amp;#8211; &amp;#8220;KDE Plasma for mobile phone&amp;#8221;&lt;/p&gt;
&lt;p&gt;16:30 &amp;#8211; Alexandra Leisse &amp;#8211; &amp;#8220;Managing the Unmanageable&amp;#8221;&lt;/p&gt;
&lt;p&gt;Wednesday&lt;/p&gt;
&lt;p&gt;09:00 -	Horácio Oliveira &amp;#8211; &amp;#8220;Applications and Development in Wireless Sensor Networks&amp;#8221;&lt;/p&gt;
&lt;p&gt;10:00 &amp;#8211; Matti Airas &amp;#8211; &amp;#8220;Python in Maemo 6&amp;#8243;&lt;/p&gt;
&lt;p&gt;11:00 &amp;#8211; Petri Launiainen &amp;#8211;  &amp;#8220;Through the Hockey Stick &amp;#8211; An Insider&amp;#8217;s View on the Mobile Revolution&amp;#8221;&lt;/p&gt;
&lt;p&gt;See you there!&lt;/p&gt;</content>
		<author>
			<name>Francisco Keppler Silva Alecrim</name>
			<uri>http://franciscoalecrim.com/blog</uri>
		</author>
		<source>
			<title type="html">franciscoalecrim.com</title>
			<subtitle type="html">developer</subtitle>
			<link rel="self" href="http://franciscoalecrim.com/blog/feed/atom/"/>
			<id>http://franciscoalecrim.com/blog/feed/atom/</id>
			<updated>2010-05-20T18:29:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">N810/N800 + Linux 2.6.33 + Ubuntu Karmic (ubuntu-minimal)</title>
		<link href="http://franciscoalecrim.com/blog/2010/02/27/n810n800-linux-2633-ubuntu-karmic-ubuntu-minimal/"/>
		<id>http://franciscoalecrim.com/blog/?p=249</id>
		<updated>2010-03-02T18:45:22+00:00</updated>
		<content type="html">&lt;p&gt;This week I got &lt;a href=&quot;https://wiki.ubuntu.com/ARM/RootfsFromScratch&quot;&gt;Ubuntu Karmic(ubuntu-minimal)&lt;/a&gt; working on N810/N800 with &lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git&quot;&gt;Linux kernel version 2.6.33&lt;/a&gt;. Serial, USB(g_ether) and flash memory are working fine with this version. It&amp;#8217;s enough to use console over SSH and test some terminal applications. But it&amp;#8217;s going to take time to get it working fully on n8&amp;#215;0 like &lt;a href=&quot;http://franciscoalecrim.com/blog/2010/02/05/preparing-mamona-03-sync-with-openembedded-alpha/&quot;&gt;linux-omap 2.6.29&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;$ ssh ubuntu@10.0.1.10&lt;br /&gt;
ubuntu@10.0.1.10&amp;#8217;s password:&lt;br /&gt;
Linux n810 2.6.33-rc8-07939-g4fe94ed-dirty #149 Fri Feb 26 14:58:22 AMT 2010 armv6l&lt;br /&gt;
&amp;#8230;&lt;br /&gt;
ubuntu@n810:~$ cat /proc/cpuinfo | grep Hardware&lt;br /&gt;
Hardware    : Nokia N810&lt;br /&gt;
ubuntu@n810:~$ uname -a&lt;br /&gt;
Linux n810 2.6.33-rc8-07939-g4fe94ed-dirty #149 Fri Feb 26 14:58:22 AMT 2010 armv6l GNU/Linux&lt;br /&gt;
ubuntu@n810:~$ cat /etc/issue.net&lt;br /&gt;
Ubuntu 9.10&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;
&lt;p&gt;You can download images:&lt;/p&gt;
&lt;p&gt;* &lt;a href=&quot;http://franciscoalecrim.com/down/ubuntu/20100227/zImage&quot;&gt;linux 2.6.33 to n800/n810&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;* &lt;a href=&quot;http://franciscoalecrim.com/down/ubuntu/20100227/ubuntu-karmic-minimal.jffs2&quot;&gt;ubuntu karmic minimal image (just console over SSH)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;* &lt;a href=&quot;http://franciscoalecrim.com/down/ubuntu/20100227/notes.txt&quot;&gt;howto to create your own images&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;* &lt;a href=&quot;http://franciscoalecrim.com/down/ubuntu/20100227/&quot;&gt;patches, pkgs and etc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some notes about Linux 2.6.33 with n8&amp;#215;0:&lt;/p&gt;
&lt;p&gt;* &lt;a href=&quot;http://marc.info/?l=linux-omap&amp;amp;m=126748172223751&amp;amp;w=2&quot;&gt;Some corrections are necessary to get USB working.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;* My kernel configuration define g_ether(USB gadget ethernet) as built-in(CONFIG_USB_ETH=y).&lt;/p&gt;
&lt;p&gt;* initfs is not necessary. My kernel configuration changed to bootup directly by flash memory(CONFIG_CMDLINE=&amp;#8221;&lt;strong&gt;root=1f04&lt;/strong&gt; rootfstype=jffs2 console=ttyS2,115200n8&amp;#8243;).&lt;/p&gt;
&lt;p&gt;* &lt;a href=&quot;http://gitorious.org/~alecrim/linux-omap/alecrim-linux-omap&quot;&gt;My personal linux-omap tree&lt;/a&gt; is available at gitorious&lt;/p&gt;
&lt;p&gt;Some notes about ubuntu Karmic with n8&amp;#215;0:&lt;/p&gt;
&lt;p&gt;* &lt;a href=&quot;https://wiki.ubuntu.com/ARM/RootfsFromScratch&quot;&gt;Generated using rootstock&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;* &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=314334&quot;&gt;Correction to apt works correctly with JFFS2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;* Workaround to startup USB interface(IP 10.0.1.10) automatically using udev&lt;/p&gt;
&lt;p&gt;* Using openssh-client/server instead of dropbear(lightweight). Dropbear install fails &lt;img src=&quot;http://franciscoalecrim.com/blog/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;PS:&lt;br /&gt;
* Thanks to Stskeeps, luke-jr from #mer at irc.freenode.net !&lt;/p&gt;
&lt;p&gt;* rbelem, post done. enjoy it! &lt;img src=&quot;http://franciscoalecrim.com/blog/wp-includes/images/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;wp-smiley&quot; /&gt;  http://www.rbelem.info/&lt;/p&gt;
&lt;p&gt;* Doubts, questions or comments? Post it here or use #ubuntu-arm at irc.freenode.net&lt;/p&gt;</content>
		<author>
			<name>Francisco Keppler Silva Alecrim</name>
			<uri>http://franciscoalecrim.com/blog</uri>
		</author>
		<source>
			<title type="html">franciscoalecrim.com</title>
			<subtitle type="html">developer</subtitle>
			<link rel="self" href="http://franciscoalecrim.com/blog/feed/atom/"/>
			<id>http://franciscoalecrim.com/blog/feed/atom/</id>
			<updated>2010-05-20T18:29:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">The Mobile Concept</title>
		<link href="http://blog.morpheuz.cc/28/02/2010/the-mobile-concept/"/>
		<id>http://blog.morpheuz.cc/?p=235</id>
		<updated>2010-02-28T15:54:23+00:00</updated>
		<content type="html">&lt;p&gt;Reading &lt;a title=&quot;Darktears post&quot; href=&quot;http://labs.trolltech.com/blogs/2010/02/28/tokamak-4-the-kde-plasma-meeting/&quot; target=&quot;_blank&quot;&gt;this post&lt;/a&gt; you were able to watch a video about Plasma Mobile (actually, Plasma on all kind of devices) and see some screenshots. But if you don&amp;#8217;t know the ideas and concepts behind that, you are just going to bash it as it&amp;#8217;s just the bootstrap of the project and a lot needs to be done.&lt;/p&gt;
&lt;p&gt;And if for some reason you are wondering about the future of the netbook project, don&amp;#8217;t worry &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  Plasma Netbook and Plasma Mobile, besides being oriented for smaller form factors than a regular Desktop / Notebook, have different concepts as they&amp;#8217;re serving for different purposes.  Marco (notmart) and all the Plasma team will still keep working on the netbook shell and if you read &lt;a title=&quot;Netbook on Jax10&quot; href=&quot;http://www.notmart.org/index.php/Software/A_mobile_Tokamak&quot; target=&quot;_self&quot;&gt;this post&lt;/a&gt; you can see the netbook shell running on Intel&amp;#8217;s Jax10 devices. This was done to  give us an idea about how the netbook interface would behave on touchscreen devices and helped Marco to do a lot of bug fixing and improvements.&lt;/p&gt;
&lt;p&gt;Back to the mobile shell, this interface presented here was created for the same Jax10 device but the architecture was designed to support different &amp;#8220;Views&amp;#8221; (as in MVC) for even smaller devices (N900 anyone?) , while still sharing the same concepts though. Even if the interface was not designed for the N900 for example, we were able to run it with great performance and the usability was very good. What means that we&amp;#8217;ll just need to slightly tweak the view to make it perfect for the N900. And all of this can be done by designers as the View is 100% done in QML &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;So our first step was to brainstorm about launching menus (and how regular grid views seems to be so boring) and how different contexts affects the way you use your mobile. I mean, we are making desktops aware of contexts more and more and it&amp;#8217;s silly to think that you don&amp;#8217;t use this concept on your other devices.&lt;/p&gt;
&lt;p&gt;We thought about having regular activities so the user would be able to have different set of plasmoids for each context that he&amp;#8217;s working on. However it still needs to be very easy to do some stuff like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Going to your dialer if it&amp;#8217;s a phone;&lt;/li&gt;
&lt;li&gt;Change between activities (later we can make the shell location aware so it&amp;#8217;s possible to auto switch);&lt;/li&gt;
&lt;li&gt;Launch applications easily and context aware (presenting the applications related to that context);&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In order to achieve these goals we came with this idea: having a regular containment and a kind of panel that auto hides itself after some seconds. Important to say that right now this panel is 100% QML and is not like the desktop&amp;#8217;s panel (that is a containment in another view). This makes the shell use less memory and be faster as it&amp;#8217;s just playing with pixmaps in the end. After hiding, it shows a collapsed representation of the panel at the bottom that the user can either click on it or drag it up to show back the panel. This makes it really easy to change between one activity to another one while keeping the user interface clean enough so the user can play with his applets &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;
&lt;div id=&quot;attachment_236&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/mockup.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-236&quot; title=&quot;First  Mockup&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/mockup-300x180.png&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;First Mockup by Nuno&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
&lt;div id=&quot;attachment_237&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/collapsedmenu.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-237&quot; title=&quot;Collapsed Panel&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/collapsedmenu-300x180.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;The panel while in it's collapsed mode&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;But then you ask me: &amp;#8220;I want to launch applications ? How can I do that ?&amp;#8221;. One solution is to add an application launcher as one of the main activities and the other one is to enable context aware application launchers. So, looking at the pictures above think that you are at the &amp;#8220;Internet Activity&amp;#8221; and you want to launch your applications. You can always launch the application related to one plasmoid from it so if you have an RSS Feed plasmoid you are able to launch your feeds reader using this plasmoid.  But if the applications doesn&amp;#8217;t have a related applet, in our concept you can just flip horizontally the current activity and you&amp;#8217;ll find on it&amp;#8217;s backside a context aware launcher that have shortcut icons for your applications and it&amp;#8217;s size is proportional to the times that you launched the application and how much related to that activity the application is. This way it&amp;#8217;s easy to find the most important applications for that activity.&lt;/p&gt;
&lt;p&gt;
&lt;div id=&quot;attachment_239&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/flip1.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-239&quot; title=&quot;Flippable activity&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/flip1-300x180.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Activity flipping to show...&lt;/p&gt;&lt;/div&gt;
&lt;div id=&quot;attachment_240&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/flip3.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-240&quot; title=&quot;Flippable Launcher&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/flip3-300x180.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;...the context aware application launcher that right now is just a gradient &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;&lt;/div&gt;
&lt;p&gt;It&amp;#8217;s not there right now but the idea is that at the top we will have this small bar (that will be a containment) to show the status related widgets like battery, signals strength and other stuff very plasma, like clocks! It&amp;#8217;s not there yet, but it will be!&lt;/p&gt;
&lt;p&gt;Regarding the transitions from one activity to another we thought about sliding the activities up and down so there is the idea that we are throwing the current activity somewhere else and bringing the new one.&lt;/p&gt;
&lt;p&gt;
&lt;div id=&quot;attachment_248&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/switching11.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-248&quot; title=&quot;Switching activities&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/switching11-300x180.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Throwing away the current activity....&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;
&lt;div id=&quot;attachment_253&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/switching32.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-253&quot; title=&quot;Switching 2 &quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/switching32-300x180.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;...bringing the new one and fading out the panel....&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
&lt;div id=&quot;attachment_252&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/switching5.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-252&quot; title=&quot;Last Switching&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/switching5-300x180.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;...and the switch is done!&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;\Basically this is the concept behind the Plasma Mobile shell and after this it was just a matter of thinking about nice animations that would make sense, tweaking it&amp;#8217;s timers and polishing icons &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  It&amp;#8217;s clear to us that during the development we&amp;#8217;ll find flaws in this ideas and we will need to fix them, as well as that the implementation right now is a little bit dirty due to time constraints (Tokamak doesn&amp;#8217;t last forever unfortunately). Next steps ? Fix all the ugly code, finish implementing the launch menu, polishing and bug fixing&amp;#8230;what means that we just bootstrapped!&lt;/p&gt;
&lt;p&gt;Ah, if you are wondering: the Plasma Netbook project still keeps up to  speed and is not sharing this backend (besides sharing a lot from libplasma). The deal is that the Netbook really needs it&amp;#8217;s  own concept and implementation while Plasma Mobile is really meant to be  used on smaller devices than netbooks &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=xUnogLquVIo&quot;&gt;Plasma Mobile before deploying&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=kRsh-jjIPK8&quot;&gt;Plasma Mobile on Jax10&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I would like to thanks all tokamakers for providing great ideas and also INdT&amp;#8217;s designers that gave me great ideas along the last years that I could apply for this concept.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Morpheuz</name>
			<uri>http://blog.morpheuz.cc</uri>
		</author>
		<source>
			<title type="html">MoRpHeUz's Blog</title>
			<subtitle type="html">Just stuff ;-)</subtitle>
			<link rel="self" href="http://blog.morpheuz.cc/feed/"/>
			<id>http://blog.morpheuz.cc/feed/</id>
			<updated>2010-07-16T18:49:24+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">fisl10: video com apresentação</title>
		<link href="http://franciscoalecrim.com/blog/2010/02/24/fisl10-video-com-apresentacao/"/>
		<id>http://franciscoalecrim.com/blog/?p=243</id>
		<updated>2010-02-27T21:06:52+00:00</updated>
		<content type="html">&lt;p&gt;Speech in Portuguese! Sorry!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://stream.softwarelivre.org/video/beagleboard-aprenda-utilizar-e-gerar-aplicativos-para-seu-futuro-netbookcelular&quot;&gt;&lt;img class=&quot;alignnone&quot; src=&quot;http://farm4.static.flickr.com/3620/3679198572_d8495584eb_b_d.jpg&quot; alt=&quot;&quot; width=&quot;143&quot; height=&quot;107&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finalmente estou postando o video de minha apresentação no FISL10. Alguns meses para a TV-SL liberar e mais algumas semanas até finalmentar fazer um post com o link para o video. Acho que preciso reduzir estes tempos.&lt;/p&gt;
&lt;p&gt;Video disponível no site da TV-SL:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://stream.softwarelivre.org/video/beagleboard-aprenda-utilizar-e-gerar-aplicativos-para-seu-futuro-netbookcelular&quot;&gt;&lt;img class=&quot;alignnone&quot; src=&quot;http://www.fisl.org.br/10/www/files/logos/tvsl.png&quot; alt=&quot;&quot; width=&quot;134&quot; height=&quot;72&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ou diretamente  &lt;a href=&quot;http://franciscoalecrim.com/down/fisl/videos/fisl1-27-beagleboard.ogg&quot;&gt;HERE&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PS: Já estou pensando no &lt;a href=&quot;http://www.fisl.org.br/11/&quot;&gt;FISL11&lt;/a&gt; !&lt;/p&gt;</content>
		<author>
			<name>Francisco Keppler Silva Alecrim</name>
			<uri>http://franciscoalecrim.com/blog</uri>
		</author>
		<source>
			<title type="html">franciscoalecrim.com</title>
			<subtitle type="html">developer</subtitle>
			<link rel="self" href="http://franciscoalecrim.com/blog/feed/atom/"/>
			<id>http://franciscoalecrim.com/blog/feed/atom/</id>
			<updated>2010-05-20T18:29:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Follow up on DBus + Emacs</title>
		<link href="http://cmarcelo.org/blog/2010/02/26/follow-up-on-dbus-emacs/"/>
		<id>http://cmarcelo.org/blog/?p=30</id>
		<updated>2010-02-26T04:09:41+00:00</updated>
		<content type="html">&lt;p&gt;In my &lt;a href=&quot;http://cmarcelo.org/blog/2009/11/04/a-non-trivial-example-of-emacs-d-bus-bindings/&quot;&gt;last post&lt;/a&gt; I used the example of NotificationItem protocol to experiment with the D-Bus bindings in Emacs. It was nice because I learned about &lt;tt&gt;lexical-let&lt;/tt&gt;, and in the end it worked!&lt;/p&gt;
&lt;p&gt;What is even better is that, not only the author of the D-Bus bindings in Emacs, Michael Albinus, commented on the post, but also implemented functionality that I had to workaround before (thanks, Michael!). This means the code is smaller and the bindings are more complete.&lt;/p&gt;
&lt;p&gt;In particular, the bindings now support&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;registering properties&lt;/em&gt;, and the binding will automatically implement the &lt;strong&gt;org.freedesktop.DBus.Properties&lt;/strong&gt; interface (i.e. the &lt;tt&gt;Get&lt;/tt&gt;, &lt;tt&gt;GetAll&lt;/tt&gt; and &lt;tt&gt;Set&lt;/tt&gt; methods).&lt;/li&gt;
&lt;li&gt;unregistering objects now will &lt;em&gt;release the service name&lt;/em&gt; if there are no more methods/properties registered for that service.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also during that time, the folks working with the protocol, kept reviewing it and the name of protocol changed, now it&amp;#8217;s called &lt;a href=&quot;http://notmart.org/misc/statusnotifieritem/index.html&quot;&gt;StatusNotifier&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The new code is available &lt;a href=&quot;http://cmarcelo.org/code/cgit/playground/plain/elisp/statusnotifier.el&quot;&gt;here&lt;/a&gt; and should work with recent development versions of Emacs.&lt;/p&gt;
&lt;p&gt;By the way, it&amp;#8217;s far from being a complete implementation of the protocol, but it&amp;#8217;s a nice start and was an excellent way to learn both DBus and Emacs :-).&lt;/p&gt;</content>
		<author>
			<name>Caio Marcelo</name>
			<uri>http://cmarcelo.org/blog</uri>
		</author>
		<source>
			<title type="html">cmarcelo's blog</title>
			<link rel="self" href="http://cmarcelo.org/blog/feed/"/>
			<id>http://cmarcelo.org/blog/feed/</id>
			<updated>2010-04-14T18:29:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">tokamak4: some js love</title>
		<link href="http://savago.wordpress.com/2010/02/25/tokamak4-some-js-love/"/>
		<id>http://savago.wordpress.com/?p=181</id>
		<updated>2010-02-25T17:33:08+00:00</updated>
		<content type="html">&lt;p&gt;Some years ago, I used to think that real programmers only do C or C++ and that script languages were not for real man. Of course, I was wrong and realized that when I did my &lt;a href=&quot;http://amora.googlecode.com/&quot;&gt;pet project&lt;/a&gt; doing the server in C and the client in python.&lt;/p&gt;
&lt;p&gt;Javascript seems to be all the rage lately (Palm WebOS anyone?). An amazing idea that I have being discussing for 2 days with aseigo, richmoore, notmart, igorto (all good hackers lurking in the #plasma channel) while in Tokamak4 is somewhat that might sound strange: javascript based animations.&lt;/p&gt;
&lt;p&gt;Currently is possible to use our C++ animations in javascript plasmoids, which is good. But if we look at the code of those classes, a significant part is just boiler plate code to setup the object. So, what if we have a single JavascriptAnimation class coded in C++ and put the logic of setting/reseting the properties of animated target widgets on a javascript file?&lt;/p&gt;
&lt;p&gt;Some clear advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;easier to prototype an animation&lt;/li&gt;
&lt;li&gt;easier to make animations theme dependent&lt;/li&gt;
&lt;li&gt;easier for users (and designers) to contribute animations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And some obvious disavantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;execution speed might suffer&lt;/li&gt;
&lt;li&gt;exposing some properties of widget objects that might be dangerous for js coders (no offense intended!) &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif&quot; alt=&quot;:-D&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, maybe you are wondering &amp;#8216;Nice, but where is the code?&amp;#8217;. You can look at it here: svn://anonsvn.kde.org/home/kde/trunk/playground/base/plasma/libs/jsanimation&lt;/p&gt;
&lt;p&gt;(it will probably only compile with KDE trunk but might work with KDE 4.4. SC).&lt;/p&gt;
&lt;p&gt;It is really interesting to see that a simple zoom animation (and somewhat limited, it is just an example) becomes in javascript:&lt;/p&gt;
&lt;p&gt;function updateCurrentTime(currentTime)&lt;br /&gt;
{&lt;br /&gt;
var delta = currentTime/duration&lt;br /&gt;
target.scale = delta&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;So what now? This is just a PoC, a lot of work is waiting for us to port other animations, test, profile, do some js black magic for speed ups. What is really interesting is that until last night I have never used the QScriptEngine class, but thanks to its good documentation (and hacking the whole night on it while in the hostel) I got the PoC working. It is quite funny how Qt can be an enabler for experiments like this.&lt;/p&gt;
&lt;p&gt;Interested to join the boat? Follow plasma-devel and KDE &lt;a href=&quot;http://techbase.kde.org/Projects/Plasma/jsanim&quot;&gt;techbase&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=181&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Tokamak4: high quality pulse</title>
		<link href="http://savago.wordpress.com/2010/02/25/tokamak4-high-quality-pulse/"/>
		<id>http://savago.wordpress.com/?p=174</id>
		<updated>2010-02-25T17:25:11+00:00</updated>
		<content type="html">&lt;p&gt;In monday after getting bored of being a long time without programming (I told in my previous post that I was in vacation, even hitting the personal record of 2 weeks without programming!), I was talking with Nuno Pinheiro a.k.a &amp;#8216;da design guy&amp;#8217; of KDE. When he asked me if there was a way to make the KDE 4.4. SC pulse effect with really bigger scaled factor, I was thrilled.&lt;/p&gt;
&lt;p&gt;After considering some different approaches and thinking about the limitations, it got to be fast, got to look pixel perfect to please the UI designer and *can&amp;#8217;t* break the so loved or hated BC (Binary Compatibility), I got this results: at left there is the new pulse optimization and at right the normal pulse (you can also download the file in &lt;a href=&quot;http://a5.video3.blip.tv/0200002041381/Savago-tokamakPulse951.ogv&quot;&gt;ogg format&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The code has still a bug that the pulsed shadow is not centered in the new code but it is looking promising specially for high DPI screens. Another remark is that the animation was set to have a long duration to make it easier to notice the pixels in the outer limits of pulsed shadow.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/174/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/174/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/174/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/174/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/174/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/174/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/174/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/174/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/174/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/174/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=174&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Updates on tokamak4</title>
		<link href="http://savago.wordpress.com/2010/02/25/updates-on-tokamak4/"/>
		<id>http://savago.wordpress.com/?p=170</id>
		<updated>2010-02-25T16:00:36+00:00</updated>
		<content type="html">&lt;p&gt;Hello my Friends&lt;/p&gt;
&lt;p&gt;Long time no blog. I was in vacation and made a personal commitment to avoid using computers (yeah&amp;#8230; if you don&amp;#8217;t count a Wii or a PS3 or a tv as computers&amp;#8230;) and start to clean the ever growing stack of books to read. Vacation is over and I&amp;#8217;m back to hacking again.&lt;/p&gt;
&lt;p&gt;At this very same moment I&amp;#8217;m at Nuremberg (Germany) in the Suse/novell office in a room with the finest KDE plasma hackers in Tokamak4. The whole experience is being memorable, hacking until late at night, sleeping 5 hours and having the unique oportunity of talking with some really talented and nice people.&lt;/p&gt;
&lt;p&gt;Suse&amp;#8217;s office is great, the infrastructure provided is awesome (really neat place to work and being productive). Will Stephenson from opensuse is doing an amazing work at supporting us (Germany can be tricky if you don&amp;#8217;t speak or read german).&lt;/p&gt;
&lt;p&gt;Finally, when the work day is over(?), we can always enjoy &amp;#8216;Ein weissbier!&amp;#8217; at the local Thai restaurant.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/savago.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/savago.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/savago.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/savago.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/savago.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/savago.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/savago.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/savago.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/savago.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/savago.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=savago.wordpress.com&amp;amp;blog=8919535&amp;amp;post=170&amp;amp;subd=savago&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>savago</name>
			<uri>http://savago.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Savago's Blog</title>
			<subtitle type="html">Just another WordPress.com weblog</subtitle>
			<link rel="self" href="http://savago.wordpress.com/feed/atom/"/>
			<id>http://savago.wordpress.com/feed/atom/</id>
			<updated>2010-07-04T09:09:11+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Running Qt for S60 SDK on Linux</title>
		<link href="http://lizardo.wordpress.com/2009/07/29/running-qt-for-s60-sdk-on-linux/"/>
		<id>http://lizardo.wordpress.com/?p=34</id>
		<updated>2010-02-25T14:41:43+00:00</updated>
		<content type="html">&lt;p&gt;&lt;b&gt;*** These instructions have been superseded by the GnuPoc and Qt for Symbian unofficial installers, described in &lt;a href=&quot;http://lizardo.wordpress.com/2010/01/21/installing-qt-for-symbian-sdk-4-6-1-on-linux/&quot;&gt;this post&lt;/a&gt;***&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update (2009-08-04):&lt;/b&gt; fixed qt_s60_gnupoc.patch (thanks grego), plus a few text additions.&lt;br /&gt;
&lt;b&gt;Update (2009-08-21):&lt;/b&gt; update instructions to support S60 5.0 too.&lt;/p&gt;
&lt;p&gt;A while ago I started playing with S60 programming. After downloading rather big SDK files and following instructions from &lt;a href=&quot;http://www.martin.st/symbian/&quot;&gt;http://www.martin.st/symbian/&lt;/a&gt;, I was able to build simple &amp;#8220;hello world&amp;#8221; applications written in C++, on Linux.&lt;/p&gt;
&lt;p&gt;Then I remembered reading about an experimental &lt;a href=&quot;http://pepper.troll.no/s60prereleases/&quot;&gt;Qt port to S60&lt;/a&gt;. I wanted to try it, given that I also began playing with Qt a while ago. To my surprise, I could not find any actual instructions on how to do that on Linux, although I found a few requests for it in comments from Qt Labs blog posts.&lt;/p&gt;
&lt;p&gt;So, without further delay, I describe below the steps I followed to build Qt applications for S60 devices on Linux. These instructions are provided as an extension to those on &lt;a href=&quot;http://www.martin.st/symbian/&quot;&gt;Martin&amp;#8217;s page&lt;/a&gt;, so be sure to read it too. But given that some patches are needed on top of Martin&amp;#8217;s tools, I will show the full instructions here.&lt;/p&gt;
&lt;p&gt;Note: these instructions were tested only in the following environment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x86 32-bits&lt;/li&gt;
&lt;li&gt;Ubuntu 8.04&lt;/li&gt;
&lt;li&gt;S60 3.1 (N95) and S60 5.0 (5800 Xpress Music)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I tried making it work for my 3.0 MR based device, but it seems that I need to recompile all Qt using the proprietary ARM RVCT compiler. If someday I make it work, I&amp;#8217;ll post instructions for it too.&lt;/p&gt;
&lt;h1&gt;Preparation&lt;/h1&gt;
&lt;p&gt;	Download all required files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/Platforms/S60_Platform_SDKs/&quot;&gt;S60-SDK-200634-3.1-Cpp-f.1090b.zip (355MB) or S60_5th_Edition_SDK_v1_0_en.zip (623MB)&lt;/a&gt;: S60 Platform SDK for Symbian OS, for C++&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pepper.troll.no/s60prereleases/patches/OpenC-1.5.5b-beta.zip&quot;&gt;OpenC-1.5.5b-beta.zip&lt;/a&gt; (29MB): Open C/C++ Plug-ins for S60 3rd Edition (&lt;b&gt;already present on S60 5.0 SDK, only needed for 3.1&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pepper.troll.no/s60prereleases/packages/qt-embedded-s60-preview-4.5.2-tower.exe&quot;&gt;qt-embedded-s60-preview-4.5.2-tower.exe&lt;/a&gt; (127MB): Qt for S60 &amp;#8220;Tower&amp;#8221; pre-release&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.codesourcery.com/sgpp/lite/arm/releases/2005Q1C&quot;&gt;gnu-csl-arm-2005Q1C-arm-none-symbianelf-i686-pc-linux-gnu.tar.bz2&lt;/a&gt; (11MB): CodeSourcery&amp;#8217;s ARM toolchain for Symbian&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.martin.st/symbian/gnupoc-package-1.13.tar.gz&quot;&gt;gnupoc-package-1.13.tar.gz&lt;/a&gt; (6.2MB): scripts and patches to run S60 SDK on Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://franciscoalecrim.com/lizardo/qt_s60_gnupoc.patch&quot;&gt;qt_s60_gnupoc.patch&lt;/a&gt; (12KB): patch for gnupoc to also support Qt S60 installation&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://franciscoalecrim.com/lizardo/qt-s60-extra-files.tar.gz&quot;&gt;qt-s60-extra-files.tar.gz&lt;/a&gt; (80KB): files from Qt S60 GIT tree that are missing for a Linux build (needed to compile Qt tools natively for Linux)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(many thanks to &lt;a href=&quot;http://franciscoalecrim.com/&quot;&gt;Francisco Keppler&lt;/a&gt; for hosting the last two files on his web site!)&lt;/p&gt;
&lt;h1&gt;Installation&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;First, set some environment variables to be used on the following steps (feel free to modify them to install the SDK on some other location). &lt;b&gt;NOTE: these variables are not necessary after installation.&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;	&lt;code&gt;# root directory where all SDK files will be installed&lt;br /&gt;
GNUPOC_ROOT=$HOME/gnupoc&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
# toolchain directory&lt;br /&gt;
TOOLCHAIN_DIR=$GNUPOC_ROOT/csl_gcc&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
# S60 SDK directory (replace &quot;3.1&quot; with &quot;5.0&quot;&lt;br /&gt;
# for S60 5.0)&lt;br /&gt;
S60_SDK_DIR=$GNUPOC_ROOT/symbian-sdks/3.1&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
# Qt SDK directory&lt;br /&gt;
QT_S60_DIR=$GNUPOC_ROOT/qt_s60&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
# wrapper directory (used by gnupoc)&lt;br /&gt;
WRAPPER_DIR=$GNUPOC_ROOT/bin&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
# where all downloaded files are located&lt;br /&gt;
SRC_DIR=$HOME/downloads&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;li&gt;Install ARM toolchain:&lt;/li&gt;
&lt;p&gt;	&lt;code&gt;mkdir -p $TOOLCHAIN_DIR&lt;br /&gt;
tar -C $TOOLCHAIN_DIR -xvjf \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$SRC_DIR/gnu-csl-arm-2005Q1C-arm-none-symbianelf-i686-pc-linux-gnu.tar.bz2&lt;/code&gt;&lt;/p&gt;
&lt;li&gt;Unpack gnupoc sources and apply the patch that adds Qt/S60 support:&lt;/li&gt;
&lt;p&gt;	&lt;code&gt;tar -xvzf $SRC_DIR/gnupoc-package-1.13.tar.gz&lt;br /&gt;
cd gnupoc-package-1.13&lt;br /&gt;
patch -p1 -i $SRC_DIR/qt_s60_gnupoc.patch&lt;/code&gt;&lt;/p&gt;
&lt;li&gt;Install gnupoc:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;For S60 3.1:&lt;/li&gt;
&lt;p&gt;		&lt;code&gt;cd sdks&lt;br /&gt;
./install_gnupoc_s60_31 \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$SRC_DIR/S60-SDK-200634-3.1-Cpp-f.1090b.zip \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$S60_SDK_DIR&lt;/code&gt;&lt;/p&gt;
&lt;li&gt;For S60 5.0:&lt;/li&gt;
&lt;p&gt;		&lt;code&gt;cd sdks&lt;br /&gt;
./install_gnupoc_s60_50 \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$SRC_DIR/S60_5th_Edition_SDK_v1_0_en.zip \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$S60_SDK_DIR&lt;/code&gt;
	&lt;/p&gt;&lt;/ul&gt;
&lt;li&gt;Install gnupoc wrappers and native tools:&lt;/li&gt;
&lt;p&gt;	&lt;code&gt;./install_wrapper $WRAPPER_DIR&lt;br /&gt;
cd ../tools&lt;br /&gt;
./install_eka2_tools $TOOLCHAIN_DIR&lt;br /&gt;
# adjust EKA2TOOLS variable to point to correct location&lt;br /&gt;
sed -i &quot;s,EKA2TOOLS=.*,EKA2TOOLS=$TOOLCHAIN_DIR/bin,&quot; \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$WRAPPER_DIR/gnupoc-common.sh&lt;/code&gt;&lt;/p&gt;
&lt;li&gt;Install OpenC (skip this step if using S60 5.0):&lt;/li&gt;
&lt;p&gt;	&lt;code&gt;cd ../sdks&lt;br /&gt;
chmod +x install_openc.sh&lt;br /&gt;
./install_openc.sh \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$SRC_DIR/OpenC-1.5.5b-beta.zip \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$S60_SDK_DIR&lt;/code&gt;&lt;/p&gt;
&lt;li&gt;Finally, install Qt/S60 (it will take some time because some tools need to be compiled for Linux):&lt;/li&gt;
&lt;p&gt;	&lt;code&gt;chmod +x install_qt_s60.sh&lt;br /&gt;
./install_qt_s60.sh \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$SRC_DIR/qt-embedded-s60-preview-4.5.2-tower.exe \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$S60_SDK_DIR \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$QT_S60_DIR \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;$SRC_DIR/qt-s60-extra-files.tar.gz&lt;/code&gt;
&lt;/p&gt;&lt;/ol&gt;
&lt;h1&gt;Usage&lt;/h1&gt;
&lt;p&gt;After installation is completed, the usage is very simple. You need to setup a few environment variables, so tools like qmake, bldmake, abld, makesis etc. are found:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;export PATH=$WRAPPER_DIR:$QT_S60_DIR/bin:$PATH&lt;br /&gt;
export EPOCROOT=$S60_SDK_DIR/ # trailing &quot;/&quot; is required!&lt;br /&gt;
export QMAKESPEC=$QT_S60_DIR/mkspecs/symbian-abld&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Optionally, you can create a gnupoc_env.sh file with the lines above, using this command:&lt;/p&gt;
&lt;p&gt;	&lt;code&gt;cat &amp;gt; $GNUPOC_ROOT/gnupoc_env.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
export PATH=$WRAPPER_DIR:$QT_S60_DIR/bin:\$PATH&lt;br /&gt;
export EPOCROOT=$S60_SDK_DIR/ # trailing &amp;quot;/&amp;quot; is required!&lt;br /&gt;
export QMAKESPEC=$QT_S60_DIR/mkspecs/symbian-abld&lt;br /&gt;
EOF&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then, every time you need to set the variables, you could simply use:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;. $GNUPOC_ROOT/gnupoc_env.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Note the &amp;#8220;.&amp;#8221; (dot) before the gnupoc_env.sh. It says that the contents of the gnupoc_env.sh file will be run in the current shell session, as if you typed them by hand.&lt;/p&gt;
&lt;p&gt;To actually build some Qt code, use these commands:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cd path/to/source&lt;br /&gt;
qmake # assuming the code already has a .pro file&lt;br /&gt;
make DEL_FILE=rm ABLD=abld release-gcce&lt;br /&gt;
makesis -c &amp;lt;project&amp;gt;_gcce_urel.pkg &amp;lt;project&amp;gt;.sis&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And to clean the source:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;make DEL_FILE=rm ABLD=abld distclean&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Be sure to use qmake from Qt/S60. Otherwise the generated Makefiles will be for your host system&lt;/li&gt;
&lt;li&gt;The trailing slash on the EPOCROOT variable is important&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Known issue and workaround&lt;/h1&gt;
&lt;p&gt;The .sis file generated by the instructions above, although installable on the device, does not actually work (clicking on the application icon makes the phone &amp;#8220;hang&amp;#8221; for a while, but then it returns to the Symbian menu). The workaround is to compile and link some files from Qt/S60 sources directly into the application. For that, just add a &amp;#8220;qts60main.pri&amp;#8221; file to your application&amp;#8217;s source directory, with the following content:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;QT_SOURCE_TREE = $$QMAKE_INCDIR_QT/..&lt;br /&gt;
DEPENDPATH += $$QT_SOURCE_TREE/src/s60main&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
HEADERS += \&lt;br /&gt;
        qts60mainapplication.h \&lt;br /&gt;
        qts60mainappui.h \&lt;br /&gt;
        qts60maindocument.h&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
SOURCES += \&lt;br /&gt;
        qts60mainapplication.cpp \&lt;br /&gt;
        qts60mainappui.cpp \&lt;br /&gt;
        qts60main.cpp \&lt;br /&gt;
        qts60maindocument.cpp \&lt;br /&gt;
        qts60main_mcrt0.cpp&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
LIBS -= qtmain&lt;br /&gt;
QMAKE_LIBS -= qtmain&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
MMP_RULES += \&lt;br /&gt;
        &quot;SOURCEPATH $$QT_SOURCE_TREE/src/s60main&quot; \&lt;br /&gt;
        &quot;START RESOURCE s60main.rss&quot; \&lt;br /&gt;
        &quot;HEADER&quot; \&lt;br /&gt;
        &quot;TARGETPATH /resource/apps&quot; \&lt;br /&gt;
        &quot;END&quot;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Edit the .pro file and add this line:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;include(qts60main.pri)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then try again the sequence of commands listed on the previous section (qmake; bldmake &amp;#8230;). I&amp;#8217;m not sure why this happens, and I need to check whether this is an issue specific to Linux.&lt;/p&gt;
&lt;h1&gt;TODO&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Remove need to set &amp;#8220;DEL_FILE=rm ABLD=abld&amp;#8221; when calling make distclean/relase-*&lt;/li&gt;
&lt;li&gt;Send patches to Martin&amp;#8217;s gnupoc and Qt/S60&lt;/li&gt;
&lt;li&gt;Investigate issue with s60main static library not working&lt;/li&gt;
&lt;li&gt;Compile Qt/S60 from sources on Linux&lt;/li&gt;
&lt;li&gt;Make it work with S60 3.0 too (although Qt/S60 does not support it officially)&lt;/li&gt;
&lt;li&gt;Make Symbian emulator (epoc.exe) work under Linux (currently it crashes under WINE)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/lizardo.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/lizardo.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/lizardo.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/lizardo.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/lizardo.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/lizardo.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/lizardo.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/lizardo.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/lizardo.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/lizardo.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=lizardo.wordpress.com&amp;amp;blog=166274&amp;amp;post=34&amp;amp;subd=lizardo&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>lizardo</name>
			<uri>http://lizardo.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Anderson Lizardo's Blog</title>
			<subtitle type="html">My Free/Open Source Software activity log, and random bits</subtitle>
			<link rel="self" href="http://lizardo.wordpress.com/feed/atom/"/>
			<id>http://lizardo.wordpress.com/feed/atom/</id>
			<updated>2010-04-20T22:29:15+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">YATP: Yet Another Tokamak Post</title>
		<link href="http://blog.morpheuz.cc/24/02/2010/yatp-yet-another-tokamak-post/"/>
		<id>http://blog.morpheuz.cc/?p=229</id>
		<updated>2010-02-25T01:34:35+00:00</updated>
		<content type="html">&lt;p&gt;So, I just prepared a nice post about the job we have been doing during Tokamak 4 and what happened this days but I really don&amp;#8217;t want to spoil cool stuff before we can at least give you some screenshots and videos &lt;img src=&quot;http://blog.morpheuz.cc/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt;  Keep reading this blog as the next two posts will explain all of this and give some pretty and nice screenshots and videos!&lt;/p&gt;
&lt;p&gt;First of all I would like to thank Will Stephenson, openSUSE and KDE e.V. (and of course everybody who supports the KDE e.V.) for hosting this developer sprint. It was awesome to put together people from three different teams that develop stuff that have a huge overlap area (Plasma + KWin + Oxygen). Really, thank you very much. I&amp;#8217;m proud that you&amp;#8217;re part of the KDE community!&lt;/p&gt;
&lt;p&gt;Weather has been good (compared to Oslo and Finland where I was spending the last weeks) and the office is really good to work on. We have a lot of different devices to hack on (big computers with touchscreens, small devices from Intel and Nokia and the regular notebooks and netbooks) and we were able to expose a little bit more of our work to the local community (as well as see some old pictures of a sprint that happened at this same place in 2002).&lt;/p&gt;
&lt;p&gt;From my side I was planning to bump the Pastebin applet with some &lt;a title=&quot;New idea about pastebin applet&quot; href=&quot;http://mail.kde.org/pipermail/plasma-devel/2010-January/009957.html&quot; target=&quot;_self&quot;&gt;new ideas&lt;/a&gt; and work on Plasmate and shell mobile but it seems that in the end I was able to just stick with one of these three targets. Anyway I hope that I can finish at least one more of then until the release of KDE SC 4.5.&lt;/p&gt;
&lt;p&gt;Here is everybody that joined our developer sprint and keep watching this blog because tomorrow I&amp;#8217;ll have some cool stuff to show everybody! Again: thanks to our hosts and to the Plasma, KWin and Oxygen teams for being so great!&lt;/p&gt;
&lt;p&gt;
&lt;div id=&quot;attachment_230&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/tokamak_group_photo.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-230&quot; title=&quot;Tokamak Group Photo&quot; src=&quot;http://blog.morpheuz.cc/wp-content/uploads/2010/02/tokamak_group_photo-300x199.jpg&quot; alt=&quot;The Desktop Konquering Germany&quot; width=&quot;300&quot; height=&quot;199&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Tokamak Group Photo: Plasma, KWin and Oxygen teams&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Morpheuz</name>
			<uri>http://blog.morpheuz.cc</uri>
		</author>
		<source>
			<title type="html">MoRpHeUz's Blog</title>
			<subtitle type="html">Just stuff ;-)</subtitle>
			<link rel="self" href="http://blog.morpheuz.cc/feed/"/>
			<id>http://blog.morpheuz.cc/feed/</id>
			<updated>2010-07-16T18:49:24+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="pt-br">
		<title type="html">&amp;#8220;Pegadinha&amp;#8221;: Cuidado ao encadear múltiplas chamadas de métodos</title>
		<link href="http://lauro.wordpress.com/2010/02/21/pegadinha-cuidado-ao-encadear-multipas-chamadas-de-metodos/"/>
		<id>http://lauro.wordpress.com/?p=237</id>
		<updated>2010-02-22T16:37:38+00:00</updated>
		<content type="html">&lt;p&gt;Num dos testes antigos do PySide, havia uma inocente linha de código com QFile().metaObject().methodCount(), que na nova versão estava causando uma falha de segmentação dentro da Qt. O que estava acontecendo era que o QMetaObject retornado pelo metaObject() estava sendo apagado pelo QFile() criado, invalidando a área de memória que methodCount() tentava acessar. Agora por que diabos ele estava sendo deletado, já que eu chamava o método direto nele? A resposta está no modo como o CPython é implementado, sendo uma máquina virtual de pilha.&lt;/p&gt;
&lt;p&gt;Usando o módulo &lt;a title=&quot;Overview do dis, módulo &amp;quot;disassembler&amp;quot; do python&quot; href=&quot;http://www.doughellmann.com/PyMOTW/dis/&quot;&gt;dis&lt;/a&gt; nessa linha, temos o seguinte resultado:&lt;/p&gt;
&lt;p&gt;0 LOAD_GLOBAL              0 (QFile)&lt;br /&gt;
3 CALL_FUNCTION            0&lt;br /&gt;
6 LOAD_ATTR                1 (metaObject)&lt;br /&gt;
9 CALL_FUNCTION            0&lt;br /&gt;
12 LOAD_ATTR                2 (foo)&lt;br /&gt;
15 CALL_FUNCTION            0&lt;br /&gt;
18 POP_TOP&lt;br /&gt;
19 LOAD_CONST               0 (None)&lt;br /&gt;
22 RETURN_VALUE&lt;/p&gt;
&lt;p&gt;Dissecando instrução por instrução e seus efeitos na pilha, vamos assumir que esteja inicialmente vazia. Apenas as 4 primeiras instrução são necessárias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LOAD_GLOBAL (QFile) &amp;#8211; Topo da pilha é a classe QFile&lt;/li&gt;
&lt;li&gt;CALL_FUNCTION &amp;#8211; Remove QFile do topo e coloca o resultado da chamada, no caso, a nova instância de QFile, com refcount 1&lt;/li&gt;
&lt;li&gt;LOAD_ATTR(metaObject) &amp;#8211; Remove a instância de QFile do topo (decrementa o refcount) e coloca o resultado de getattr(instância, &amp;#8216;metaObject&amp;#8217;) no topo. Nesse caso, o resultado é um &amp;#8220;bound method&amp;#8221; A chamada a getattr incrementa a referência da instância de QFile, logo ela não morre.&lt;/li&gt;
&lt;li&gt;CALL_FUNCTION &amp;#8211; Remove o metodo metaObject do topo e coloca o resultado, no caso a instância de QMetaObject retornada. Ao remover o método, a referência à instância de QFile é removida, chegando a 0. Então o destrutor do binding chama o destrutor de C++, que por sua vez deleta o objeto C++ do QMetaObject, invalidando o ponteiro usado pelo binding.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ou seja, devido essas instruções, não se pode garantir que um objeto criado anonimamente numa chamada de metodo e usado imediatamente irá estar &amp;#8220;vivo&amp;#8221; em chamadas subsequentes.&lt;/p&gt;
&lt;p&gt;Vale notar que esse problema aparece em outras implementações de Python baseadas no CPython, como o Stackless e o Unladen Swallow. Implementações que usam outros tipos de máquina virtual como o Jython, IronPython e Pypy não sofrem desse problema.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/lauro.wordpress.com/237/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/lauro.wordpress.com/237/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/lauro.wordpress.com/237/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/lauro.wordpress.com/237/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/lauro.wordpress.com/237/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/lauro.wordpress.com/237/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/lauro.wordpress.com/237/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/lauro.wordpress.com/237/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/lauro.wordpress.com/237/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/lauro.wordpress.com/237/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=lauro.wordpress.com&amp;amp;blog=222769&amp;amp;post=237&amp;amp;subd=lauro&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>lauro</name>
			<uri>http://lauro.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Lauro Moura</title>
			<subtitle type="html">Software Livre, Python, C, etc...</subtitle>
			<link rel="self" href="http://lauro.wordpress.com/feed/atom/"/>
			<id>http://lauro.wordpress.com/feed/atom/</id>
			<updated>2010-04-20T22:29:38+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PySide for Maemo 5 rebuilt for Qt 4.6.2 final release</title>
		<link href="http://lizardo.wordpress.com/2010/02/19/pyside-for-maemo-5-rebuilt-for-qt-4-6-2-final-release/"/>
		<id>http://lizardo.wordpress.com/?p=210</id>
		<updated>2010-02-19T13:53:13+00:00</updated>
		<content type="html">&lt;p&gt;Qt 4.6.2 for Maemo 5 was released &lt;a href=&quot;http://labs.trolltech.com/blogs/2010/02/15/qt-462-for-maemo-5-released/&quot;&gt;this week&lt;/a&gt;. Due to some changes prior to the final Qt release, PySide users might have seen this error when trying to use QtQui:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Traceback (most recent call last):&lt;br /&gt;
 File &quot;&amp;lt;string&amp;gt;&quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
ImportError: /usr/lib/pymodules/python2.5/PySide/QtGui.so: undefined symbol: _ZNK24QAbstractKineticScroller10metaObjectEv&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To fix this, we rebuilt the PySide 0.2.3 packages against the Qt 4.6.2 release, and now it should be working again. So make sure you are using the latest PySide packages on Maemo 5 (0.2.3-1maemo3) and enjoy!&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/lizardo.wordpress.com/210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/lizardo.wordpress.com/210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/lizardo.wordpress.com/210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/lizardo.wordpress.com/210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/lizardo.wordpress.com/210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/lizardo.wordpress.com/210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/lizardo.wordpress.com/210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/lizardo.wordpress.com/210/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/lizardo.wordpress.com/210/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/lizardo.wordpress.com/210/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=lizardo.wordpress.com&amp;amp;blog=166274&amp;amp;post=210&amp;amp;subd=lizardo&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>lizardo</name>
			<uri>http://lizardo.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Anderson Lizardo's Blog</title>
			<subtitle type="html">My Free/Open Source Software activity log, and random bits</subtitle>
			<link rel="self" href="http://lizardo.wordpress.com/feed/atom/"/>
			<id>http://lizardo.wordpress.com/feed/atom/</id>
			<updated>2010-04-20T22:29:15+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Installing Qt for Symbian SDK 4.6.2 on Linux</title>
		<link href="http://lizardo.wordpress.com/2010/02/18/installing-qt-for-symbian-sdk-4-6-2-on-linux/"/>
		<id>http://lizardo.wordpress.com/?p=202</id>
		<updated>2010-02-18T13:30:40+00:00</updated>
		<content type="html">&lt;p&gt;Qt 4.6.2 &lt;a href=&quot;http://labs.trolltech.com/blogs/2010/02/15/qt-462-released/&quot;&gt;was released&lt;/a&gt; last Monday, so I took some time to update the GnuPoc and Qt installer scripts I &lt;a href=&quot;http://lizardo.wordpress.com/2010/01/21/installing-qt-for-symbian-sdk-4-6-1-on-linux/&quot;&gt;previously&lt;/a&gt; released for 4.6.1.&lt;/p&gt;
&lt;p&gt;Besides the upgrade to Qt 4.6.2, there are other minor changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Both installers now check MD5 signatures of the necessary files, to make sure they are not corrupted.&lt;/li&gt;
&lt;li&gt;The GnuPoc installer now supports the 3.1 SDK (see updated instructions below).&lt;/li&gt;
&lt;li&gt;Added &amp;#8220;unset QMAKESPEC&amp;#8221; command to setup instructions (at least Gentoo sets it globally, which affects qmake).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The instructions are basically the same as the previous ones, but I will post the full instructions here for completeness.&lt;/p&gt;
&lt;h1&gt;Preparation&lt;/h1&gt;
&lt;p&gt;Download all required files to a single directory (e.g. &amp;#8220;~/downloads&amp;#8221;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/Platforms/S60_Platform_SDKs/&quot;&gt;S60_5th_Edition_SDK_v1_0_en.zip (623MB) or S60-SDK-200634-3.1-Cpp-f.1090b.zip (355MB)&lt;/a&gt;: S60 SDK for Symbian OS (be sure to click on the &amp;#8220;Download all-in-one S60 SDKs&amp;#8221; button for 5th edition, or &amp;#8220;Download S60 SDKs for C++&amp;#8221; for 3rd edition, FP1)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.forum.nokia.com/Technology_Topics/Development_Platforms/Open_C_and_C++/&quot;&gt;s60_open_c_cpp_plug_in_v1_6_en.zip&lt;/a&gt; (35MB): Open C/C++ Plug-in&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://get.qt.nokia.com/qt/source/qt-symbian-opensource-4.6.2.exe&quot;&gt;qt-symbian-opensource-4.6.2.exe&lt;/a&gt; (201MB): Qt for Open Source C++ development on Symbian&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.codesourcery.com/sgpp/lite/arm/releases/2005Q1C&quot;&gt;gnu-csl-arm-2005Q1C-arm-none-symbianelf-i686-pc-linux-gnu.tar.bz2&lt;/a&gt; (11MB): CodeSourcery’s ARM toolchain for Symbian&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.martin.st/symbian/gnupoc-package-1.15.tar.gz&quot;&gt;gnupoc-package-1.15.tar.gz&lt;/a&gt; (6.2MB): tools and patches to run Symbian SDK on Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://franciscoalecrim.com/lizardo/gnupoc_1.15_installer_v2.sh&quot;&gt;gnupoc_1.15_installer_v2.sh&lt;/a&gt;: Unofficial GnuPoc installer (supports 3.1 and 5.0 SDKs)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://franciscoalecrim.com/lizardo/qt_for_symbian_4.6.2_linux_installer_v3.sh&quot;&gt;qt_for_symbian_4.6.2_linux_installer_v3.sh&lt;/a&gt;: Unofficial Qt for Symbian installer for Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For building the native tools from gnupoc, you will need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the GCC C/C++ compilers&lt;/li&gt;
&lt;li&gt;development files for zlib&lt;/li&gt;
&lt;li&gt;development files for openssl&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On Ubuntu, you can install these using the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo apt-get install build-essential zlib1g-dev libssl-dev&lt;/code&gt;&lt;/p&gt;
&lt;h1&gt;Installation&lt;/h1&gt;
&lt;p&gt;First, install GnuPoc + S60 SDK + the Open C/C++ plugin:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./gnupoc_1.15_installer_v2.sh \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;download-dir&amp;gt; \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;gnupoc-dir&amp;gt;\&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;x.y&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Replace &amp;lt;download-dir&amp;gt; with the location of all files downloaded in previous section (e.g. &amp;#8220;~/downloads&amp;#8221;), &amp;lt;gnupoc-dir&amp;gt; with the destination directory for GnuPoc and the SDK files (e.g. &amp;#8220;~/gnupoc&amp;#8221;) and &amp;lt;x.y&amp;gt; with the SDK version you want to install (e.g. &amp;#8220;3.1&amp;#8243; or &amp;#8220;5.0&amp;#8243;). Note that both directories must have absolute paths.&lt;/p&gt;
&lt;p&gt;If installation was successful, you should see an output like:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Installation has finished. Before using the GnuPoc SDK, run these commands on the console:&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
export PATH=&amp;lt;gnupoc-dir&amp;gt;/bin:$PATH&lt;br /&gt;
export EPOCROOT=&amp;lt;gnupoc-dir&amp;gt;/symbian-sdks/5.0/ # trailing &quot;/&quot; is required!&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
(These commands must be run again every time a new console is opened.)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Run the commands as instructed on the message. Next, install Qt for Symbian:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./qt_for_symbian_4.6.2_linux_installer_v3.sh \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;download-dir&amp;gt; \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;qt-s60-dir&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Replace &amp;lt;download-dir&amp;gt; with the location of all files downloaded in previous section (e.g. &amp;#8220;~/downloads&amp;#8221;), and &amp;lt;qt-s60-dir&amp;gt; with the destination directory for the Qt files (e.g. &amp;#8220;~/gnupoc/qt-4.6.2&amp;#8243;). Note that both directories must have absolute paths.&lt;/p&gt;
&lt;p&gt;If installation was successful, you should see an output like:&lt;br /&gt;
&lt;code&gt;Installation has finished. Before using the Qt for Symbian SDK, run this command on the console:&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
export PATH=&amp;lt;qt-s60-dir&amp;gt;/bin:$PATH&lt;br /&gt;
unset QMAKESPEC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# make sure there is no QMAKESPEC variable set&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
(This command must be run again every time a new console is opened.)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Before using Qt for Symbian, you should run the command as instructed on the message above.&lt;/p&gt;
&lt;h1&gt;Usage example&lt;/h1&gt;
&lt;p&gt;To test the installation, I will describe how to build the &amp;#8220;colliding mice&amp;#8221; example.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;cd into the example source:&lt;/li&gt;
&lt;p&gt;	&lt;code&gt;cd &amp;lt;qt-s60-dir&amp;gt;/examples/graphicsview/collidingmice/&lt;/code&gt;&lt;/p&gt;
&lt;li&gt;Now build the example and generate the SIS file&lt;/li&gt;
&lt;p&gt;	&lt;code&gt;qmake&lt;br /&gt;
make debug-gcce&lt;br /&gt;
make sis&lt;/code&gt;
&lt;/p&gt;&lt;/ol&gt;
&lt;p&gt;A few notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make sure Qt is installed on the device before installing Qt applications. The easiest way to install it is to copy the &amp;#8220;qt_installer.sis&amp;#8221; package found under &amp;lt;qt-s60-dir&amp;gt; over bluetooth and open the received message to begin the installation.&lt;/li&gt;
&lt;li&gt;Only the &amp;#8220;debug-gcce&amp;#8221; (if you are using the GCCE toolchain AKA &amp;#8220;CodeSourcery toolchain&amp;#8221;) or &amp;#8220;debug-armv5&amp;#8243; (if you are using RVCT) will work, because the current Qt releases only ship debug versions of the libraries&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/lizardo.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/lizardo.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/lizardo.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/lizardo.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/lizardo.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/lizardo.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/lizardo.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/lizardo.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/lizardo.wordpress.com/202/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/lizardo.wordpress.com/202/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=lizardo.wordpress.com&amp;amp;blog=166274&amp;amp;post=202&amp;amp;subd=lizardo&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>lizardo</name>
			<uri>http://lizardo.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Anderson Lizardo's Blog</title>
			<subtitle type="html">My Free/Open Source Software activity log, and random bits</subtitle>
			<link rel="self" href="http://lizardo.wordpress.com/feed/atom/"/>
			<id>http://lizardo.wordpress.com/feed/atom/</id>
			<updated>2010-04-20T22:29:15+00:00</updated>
		</source>
	</entry>

</feed>
