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

<channel>
	<title>Gustavo Sverzut Barbieri &#187; Maemo</title>
	<atom:link href="http://blog.gustavobarbieri.com.br/category/maemo/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gustavobarbieri.com.br</link>
	<description>Computer Hacker and Entrepreneur</description>
	<lastBuildDate>Wed, 21 Dec 2011 18:24:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>kmod announcement (and how to help testing it!)</title>
		<link>http://blog.gustavobarbieri.com.br/2011/12/21/kmod-announcement-and-how-to-help-testing-it/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=kmod-announcement-and-how-to-help-testing-it</link>
		<comments>http://blog.gustavobarbieri.com.br/2011/12/21/kmod-announcement-and-how-to-help-testing-it/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 18:23:19 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[kmod]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=267</guid>
		<description><![CDATA[introduction and motivation At ProFUSION a common topic is how to optimze the system. Not just the speed, but also what and how it is done. Not just for our embedded systems, but also our desktops and laptops. These discussions &#8230; <a href="http://blog.gustavobarbieri.com.br/2011/12/21/kmod-announcement-and-how-to-help-testing-it/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4>introduction and motivation</h4>
<p>At <a title="ProFUSION embedded systems" href="http://profusion.mobi/">ProFUSION</a> a common topic is how to optimze the system. Not just the speed, but also what and how it is done. Not just for our embedded systems, but also our desktops and laptops.</p>
<p>These discussions led us to be involved in projects that consider this goal, such as <a title="window manager and graphical user interface toolkit" href="http://enlightenment.org/">Enlightenment</a>, <a title="connman - connection manager" href="http://connman.net/">ConnMan</a>, <a title="oFono - open source telephony" href="http://ofono.org/">oFono</a> and <a title="system and service manager for Linux" href="http://www.freedesktop.org/wiki/Software/systemd">systemd</a>. With great projects, come great people and thus enlightening discussions on how to improve things. From these discussions <a title="Lennart Poettering's home page" href="http://0pointer.de/lennart/">Lennart Poettering</a> and <a title="Kay Sievers G+ profile" href="https://plus.google.com/108087225644395745666/posts">Kay Sievers</a> put together a <a title="A Plumber's Wish List for Linux" href="http://0pointer.de/blog/projects/plumbers-wishlist.html">A Plumber&#8217;s Wish List for Linux</a>, with one of the items being of special interest for ProFUSION as it had the potential of also helping embedded systems and speeding up or boots:</p>
<pre>* module-init-tools: provide a proper libmodprobe.so from
module-init-tools:
Early boot tools, installers, driver install disks want to
access information about available modules to optimize
bootup handling.</pre>
<p>One of the reasons for this is that udev will search /sys/devices for all &#8220;modalias&#8221; files and call &#8220;<code>/sbin/modprobe -bv $ALIAS</code>&#8220;, however many of these calls evaluate to an empty list, thus an useless execution of program that will open /lib/modules/`uname -r`/modules.*, load resources, search for something that is not there and return. This could be way cheaper if done inside udev workers. <em>[note: Lucas did measure and noticed 2.5x speedups, stay tuned for benchmarks]</em></p>
<h4>kmod</h4>
<p>Then our developer <a title="Lucas De Marchi personal blog." href="http://www.politreco.com/">Lucas De Marchi</a> proposed to do the libmodprobe and we funded it. After some discussions with Lennart and Kay, it was decided to rename it to <strong>kmod</strong> for shortness and good namespace. The initial goal was to achive a 1:1 replacement of module-init-tools as a library to be used by udev and systemd-modules-load and we are close to it with our <a title="kmod-v2" href="http://www.politreco.com/2011/12/announce-kmod-2/">second release done today</a>! While we miss depmod tool (planned for v3), our kmod-modprobe should be fully functional and if this proves to be true, the logic will move to libkmod to be used by udev.</p>
<h4>we need your testing!</h4>
<p>To ensure kmod-modprobe does what it is supposed to do, we need extensive testing, there is where we need you! Try it on as many systems as possibles and let us know. To do this we recommend:</p>
<pre>$ git clone git://git.profusion.mobi/kmod.git
$ cd kmod
$ ./autogen.sh
$ ./configure --enable-logging \
              --enable-debug --enable-tools \
              --enable-zlib # if you have module.ko.gz
$ make all
$ sudo make install
$ sudo mv /sbin/modprobe /sbin/modprobe-bkp
$ sudo ln -s /usr/bin/kmod-modprobe /sbin/modprobe
$ ls -1 /sys/module/ &gt; ~/original-modules
$ reboot
$ ls -1 /sys/module/ &gt; ~/kmod-modules
$ diff ~/original-modules ~/kmod-modules</pre>
<h4>current users and feedback</h4>
<p>Being a new project in a critical area of Linux system, we expected lots of criticism and rejection by people, but interestingly enough after <a title="kmod-v1" href="http://www.politreco.com/2011/12/announce-kmod-1/">Lucas&#8217; announcement</a> and <a title="LWN article: First version of kmod released" href="http://lwn.net/Articles/472354/">LWN article</a> the feedback was highly positive! We even had some testers and people to help with ideas and experience.</p>
<p>Among the people that joined the project is the current maintainer of module-init-tools package <a title="Jon Masters' home page" href="http://jonmasters.org/">Jon Masters</a>, which announced that <a title="libkmod replaces module-init-tools" href="http://www.jonmasters.org/blog/2011/12/20/libkmod-replaces-module-init-tools/">kmod replaces module-init-tools</a>. He is helping a lot with his knowledge and cases from Red Hat Enterprise Linux, also providing modules from non-trivial platforms such as s390. Last but not least he provided insights to improve module handling on Linux, particularly replacing modules with better alternative as required in enterprise systems.</p>
<p>With Jon&#8217;s blessing we&#8217;ll use the same mailing list <a title="linux-modules mailing list" href="http://vger.kernel.org/vger-lists.html#linux-modules">linux-modules@vger.kernel.org</a> and our git will move to kernel.org soon.</p>
<p>People from ARCH and Debian were also interested and even created packages for it! These guys were extremely helpful to test cases such as gzip modules, 64bits modules with i386 user space and so on. They are: Tom Gundersen (tomegun), Dave Reisner (falconindy) and Marco d’Itri (Md).</p>
<h4>next steps</h4>
<p>Based on our TODO, we have the following ideas for next steps:</p>
<ul>
<li>Finish libkmod-elf.c to provide information required by depmod. I&#8217;m working on this in my depmod branch;</li>
<li>tools/kmod-depmod.c: create a 1:1 compatible tool to generate /lib/modules/`uname -r`/modules.*;</li>
<li>libkmod should export parsed configuration to be used by kmod-modprobe.c &#8211;dumpconfig;</li>
<li>create kmodmock library to be LD_PRELOAD&#8217;ed to redirect some syscalls such as init_module(), delete_module() and open() of /sys and /proc. I&#8217;ve started a branch for this some time ago as &#8220;unittest&#8221; branch but stopped due lack of ELF support at the time;</li>
<li>create unittests and measure coverage. Given kernel modules are user-input they may be broken files and libkmod-elf.c needs to be extensively tested to avoid segmentation fault due out-of-boundaries access. This mean not trusting null terminated string in .strtab section and so on.</li>
<li>create optimized modules.archive that would contain optimized search index and all modules compressed independently, but in the same file. This would save file access and could provide information we don&#8217;t have today, like the uncompressed size of gzipped modules.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2011/12/21/kmod-announcement-and-how-to-help-testing-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DesktopSummit 2011 &#8211; Berlin</title>
		<link>http://blog.gustavobarbieri.com.br/2011/08/23/desktopsummit-2011-berlin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=desktopsummit-2011-berlin</link>
		<comments>http://blog.gustavobarbieri.com.br/2011/08/23/desktopsummit-2011-berlin/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 18:39:41 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[desktopsummit]]></category>
		<category><![CDATA[desktopsummit2011]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=260</guid>
		<description><![CDATA[I had the pleasure to attend the DesktopSummit 2011, a great event that happened in Berlin from 5-12 of August 2011. As I&#8217;ve mentioned in an earlier blogpost my focus was to highlight Enlightenment&#8217;s opinion that performance matters and that &#8230; <a href="http://blog.gustavobarbieri.com.br/2011/08/23/desktopsummit-2011-berlin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I had the pleasure to attend the DesktopSummit 2011, a great event that happened in Berlin from 5-12 of August 2011. <a href="http://blog.gustavobarbieri.com.br/2011/06/02/desktopsummit-2011/">As I&#8217;ve mentioned in an earlier blogpost</a> my focus was to highlight Enlightenment&#8217;s opinion that <strong>performance matters</strong> and that we need <strong>broader standards</strong> in freedesktop.org. Of course I explained a bit about our history and the current status of E17. The presentation file can be <a href="http://talks.gustavobarbieri.com.br/desktop_summit/2011/quick-overview-of-efl-and-e17.pdf">downloaded here</a>.</p>
<p style="text-align: center;"><a href="http://www.desktopsummit.org/"><img class="aligncenter size-full wp-image-248" title="DS2011 attending banner" src="http://blog.gustavobarbieri.com.br/wp-content/uploads/2011/06/DS2011-attending-banner.png" alt="" width="340" height="111" /></a></p>
<p>All in all the event was great, not just due the talks but mostly due the <strong>friends and side-talks</strong>. Being at these events for a few years I managed to know lots of people from different projects. Not being in a major side (read: KDE or GNOME) I have the gift of free-transit among these fields&#8230; which is pleasant as I can gather ideas from both. <em>[There is no hard or official barriers between them, but the psychological blocks peers from talking to each other and this is quite bad]</em></p>
<p>I came there sponsored by my company (<a href="http://profusion.mobi/">ProFUSION embedded systems</a>) to represent the system that provides a big bucket of our consulting, training and development services: <strong>Enlightenment.</strong>  I had the pleasure to engage into endless conversations with Enlightenment developers and community leaders (Cedric, Boris, Michael, Philippe&#8230;) We discussed a lot how we could broader EFL usage, bring more users, lower the barrier to new developers with easier to use tools and languages and of course how we could get Raster to release E17.</p>
<p>I also tried to learn from other people of technologies as well.  Before I was an Enlightenment hacker I did use and develop with <strong>Qt/KDE</strong> and already knew some icons such as Aaron Seigo, Thiago Macieira, Helio Castro and Sebastian Kügler, which I managed to meet again. Of course my ex-coworkers at INdT and KDE fanatics Artur Duque de Souza, Renato Chencarek were there. And I was introduced to Daker Fernandes Pinheiro, from INdT. We discussed QML, Qt, MeeGo and lots of optimization and API designs. Quite productive!</p>
<p>Being part of Maemo since 2006, attended some GUADEC and hacked <strong>Gtk/GNOME</strong> for fun and work I got to know some icons there as well. I&#8217;ve talked to Lennart Poettering, Marcel Holtmann and Marc-André Lueau, people that I&#8217;ve worked together in a way or another and that are always open minded to discussions. I&#8217;ve also touched base with some people like Lucas Rocha and Zeeshan Ali. It is interesting to know what these guys are doing for Linux Desktop (and mobile) infrastructure and their vision for GNOME.</p>
<p><strong>My presentation</strong> went quite well, I was bit anxious and nervous in such a huge room that held it, but I guess people understood the history of Enlightenment, why we created the &#8220;Foundation Libraries&#8221; (instead of using Gtk or Qt),  our special care with performance and why it will always pay off. I did some heavy critics to FreeDesktop.Org that generated positive feedback from Thiago Macieira (Qt/KDE) and people from other desktops (XFCE/LXDE). Last but not least I&#8217;ve made it clear Enlightenment has serious problems to manage community, <em>we&#8217;re quite bully</em>, and did thank the guys like Philippe Caseiro and other french dudes that are trying to solve this issue.</p>
<p>All in all a great event, with great people! Looking forward to be in next desktopsummit as well!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2011/08/23/desktopsummit-2011-berlin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ANN: LightMediaScanner 0.4.4 released</title>
		<link>http://blog.gustavobarbieri.com.br/2011/08/19/ann-lightmediascanner-0-4-4-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ann-lightmediascanner-0-4-4-released</link>
		<comments>http://blog.gustavobarbieri.com.br/2011/08/19/ann-lightmediascanner-0-4-4-released/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 22:19:21 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[lightmediascanner]]></category>
		<category><![CDATA[lms]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=259</guid>
		<description><![CDATA[I&#8217;m proud to announce LightMediaScanner 0.4.4 was released and I&#8217;d like to take some time to remind you of this awesome project While 0.4.4 is no big leap ahead of 0.4.3 I&#8217;m doing this post more to make clear people &#8230; <a href="http://blog.gustavobarbieri.com.br/2011/08/19/ann-lightmediascanner-0-4-4-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m proud to announce LightMediaScanner 0.4.4 <a href="http://people.profusion.mobi/cgit.cgi/lightmediascanner.git/tag/?id=release_0.4.4">was released</a> and I&#8217;d like to take some time to remind you of this awesome project <img src='http://blog.gustavobarbieri.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>While 0.4.4 is no big leap ahead of 0.4.3 I&#8217;m doing this post more to make clear people that the project is still alive and it may be the right tool for you, particularly if you need fast media scanning on your desktop or embedded device.</p>
<h4>Introduction (History)</h4>
<p><a href="http://people.profusion.mobi/cgit.cgi/lightmediascanner.git/">LightMediaScanner</a> (LMS) was born in 2007 during the development of <a href="openbossa.indt.org.br/canola2/">Canola2</a> media player for Nokia N800 Maemo device. We did a previous try at media scanners for Canola1 and did learn a lot, that would be the foundation of LMS.</p>
<p>We had two major problems to solve:</p>
<ol>
<li>scan large amounts of media as fast as possible</li>
<li>don&#8217;t mess with interactivity.</li>
</ol>
<p>The first problem had more qualifiers, like the <strong>media being unreliable</strong> (broken files), be removed without prior notification (mmc removed when system was off), slow discs (sd/mmc), small amount of available RAM, low-end CPU and so on.</p>
<p>Traditional approaches were slow and would bring your device to unusable state for minutes, even after the scan process finished as they consumed too much memory that would swap your applications and services. They would also be naive with file scanning and would trash filesystem&#8217;s cache with useless data.</p>
<h4>Existing Solutions Problems</h4>
<p>At that time we had Maemo&#8217;s media scanner that was awful and <a href="http://projects.gnome.org/tracker/">Tracker</a> was being developed to solve its problems. However Tracker was immature and had other focus, more like being fancy with new standards and trying to solve all the diseases of the world&#8230; while we need to be fast in some specific cases.</p>
<p>To highlight technical problems, let&#8217;s consider JPEG scanners. Everything one Media Player application would need is the  title, author/artist, date, width, height, orientation and maybe geolocation. These are <strong>few bytes</strong>, particularly because Title and Author are missing in most cases. We should open the file, get these bytes, register these and close the file. Every system at the time used libexif to do so, however it would <strong>copy all the header to memory prior to scanning</strong>. Given that most files contain thumbnails in the header, it would mean <strong>useless malloc + read of around 10-50kb</strong>, to get dozen bytes and exit. This trashes the VM and disc. Moreover, some libraries would open the file themselves and would not fadvise as POSIX_FADV_DONTNEED, thus the filesystem would keep it in cache for further access that never happen! Similar situations existed for PNG, Mp3 and others.</p>
<h4>LightMediaScanner Solution</h4>
<p>We decided to go with a 2 process solution to avoid crashes and hang-ups on the main process. This would be safe and we could kill the slave process if it took too long to report on a given file. Later on we introduced threaded and single process scanning that would be useful in some cases.</p>
<p>We also had dynamic loadable plugins (shared objects) with the media parsers to be used given matching extensions. The plugins can be selected by the user at runtime. Yes, <strong>we would not scan every file with every parser</strong>, we did trust the extension as a way to save work and it worked fine, and fast.</p>
<p>The main process just scans the filesystem and  pipes the files to the slave (thread or process). This slave would open the file, get the data to populate a structure to be written to database, then close the file and report back the progress. If the slave takes too long to reply or dies, it&#8217;s respawned with the next file in the queue.</p>
<p>The database uses SQLite3 and a configurable number of files are processed in one SQL transaction, thus we&#8217;d not hit the filesystem with writes that often. The database access is provided with helper functions that uses pre-compiled statements. However we only provide the insert/update methods, as the fetch (select) are up to the application to use (maybe using their own ORM framework).</p>
<p>Some metadata formats did not specify encoding (ASCII was assumed) and fallbacks can be applied with the charsets. It will use iconv in a priority list to figure out what works.</p>
<h4>Just the Indexer!</h4>
<p>LightMediaScanner is not a daemon-service, it does not talk DBus neither requires you to speak  <a href="http://www.w3.org/RDF/">RDF</a> or <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a>. If you want, you can create one with it, but it does not provide this stuff out of the box. Basically you call it to check for media and then access the database yourself, using the SQLite3 directly or using some ORM, doing caches or not, it&#8217;s up to you.</p>
<p>The database tables are quite simple and try to provide common useful relations. It&#8217;s not designed to cover all weird cases in the world (like multiple artists per song or which lens did you use with your camera).</p>
<h4>Using it!</h4>
<p>Get the code from our GIT or use the release tarball, see <a href="http://people.profusion.mobi/cgit.cgi/lightmediascanner.git/">http://people.profusion.mobi/cgit.cgi/lightmediascanner.git/</a>. It uses standard autoconf/automake to build, so should be familiar to most developers.</p>
<p>It hard-depends only on SQLite3 and iconv (most libC ships with it). Optional dependencies are libvorbis, libmp4v2 and libflac.</p>
<p>You can call the scanner from C, C++ or <a href="http://people.profusion.mobi/cgit.cgi/python-lightmediascanner.git/">Python using our bindings</a>. Comprehensive example can be found at <a href="http://people.profusion.mobi/cgit.cgi/lightmediascanner.git/tree/src/bin/test.c">src/bin/test.c</a></p>
<p>References: <a href="http://blog.gustavobarbieri.com.br/2008/10/05/lightmediascanner-020-released/">previous post about lightmediascanner 0.2.0 release</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2011/08/19/ann-lightmediascanner-0-4-4-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DesktopSummit 2011</title>
		<link>http://blog.gustavobarbieri.com.br/2011/06/02/desktopsummit-2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=desktopsummit-2011</link>
		<comments>http://blog.gustavobarbieri.com.br/2011/06/02/desktopsummit-2011/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 15:32:37 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[desktopsummit]]></category>
		<category><![CDATA[ds2011]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=247</guid>
		<description><![CDATA[Hi all, After I started on twitter and facebook the blog posts reduced a lot&#8230; anyways I&#8217;d like to mention I&#8217;ll attend DesktopSummit 2011 in Berlin to represent the Enlightenment (aka E17) team and thus an alternative view to the &#8230; <a href="http://blog.gustavobarbieri.com.br/2011/06/02/desktopsummit-2011/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hi all,</p>
<p>After I started on twitter and facebook the blog posts reduced a lot&#8230; anyways I&#8217;d like to mention I&#8217;ll attend DesktopSummit 2011 in Berlin to represent the Enlightenment (aka E17) team and thus an alternative view to the traditional GNOME x KDE.</p>
<p style="text-align: center;"><a href="http://www.desktopsummit.org/"><img class="aligncenter size-full wp-image-248" title="DS2011 attending banner" src="http://blog.gustavobarbieri.com.br/wp-content/uploads/2011/06/DS2011-attending-banner.png" alt="" width="340" height="111" /></a></p>
<p>Fortunately I have couple of friends in both GNOME and KDE so I can express our E17 voice without being ignored (at least immediately ;-P). Dunno if it&#8217;s me or E17 being the underdog, but people don&#8217;t feel afraid to listen to our ideas and they even try to incorporate those that make sense, like Enlightenment&#8217;s Edje that resulted in QEdje that in turn resulted into QML that boosts Qt development these days.</p>
<p>My focus will be:</p>
<ul>
<li><strong>performance matters:</strong> even if you have a fast hardware today and an even faster hardware tomorrow, you should care about performance. I&#8217;m not talking about neat picking premature optimizations, but to design platforms and <strong>standards</strong> considering performance. It&#8217;s often not harder, just need to be considered from the beginning. What bugs us most is the stupid freedesktop.org <strong>thumbnail</strong> standard, that forces use of PNG even if most of our pictures are in JPEG, causing slower thumbnailing time, bigger disk footprint and slower load times. Second in the list is the traditional abuse of <strong>XML</strong>, praised years ago and suddenly GNOME realized it was a bad idea (given GSetting/DConf), but it&#8217;s deeply inside our desktops with fontconfig and others (want faster application load times? Don&#8217;t use XML.);</li>
<li><strong>Broader Standards:</strong> A standard must be thought outside the &#8220;I&#8217;m implementing it for myself&#8221; scope. Similar to above, we should consider broader standards and not get a piece of GNOME or KDE and say it&#8217;s a standard. Freedesktop.org fails to get standards because of this stupid approach. See the last flamewars around simple topics as the systray replacement. Actually the systray standard is a well known bad example, people wrote it like if GNOME was the only way to do this. Enlightenment officially ignored this standard due stupid bugs with XEmbed specification and approach (as EFL uses the &#8220;windowless widgets&#8221; for a while, the XEmbed made no sense and caused user experience problems);</li>
<li><strong>Embedded is the future.</strong> Okay, it will be a DesktopSummit, but as Rasterman predicted Â in <a href="http://linux.slashdot.org/story/02/07/20/1342205/Rasterman-Says-Desktop-Linux-is-Dead">2002</a> the desktop game is unlike to be changed from Microsoft dominance and we better look for new fields where we can compete equally. Given Android, WebOS, Maemo, MeeGo and others, it&#8217;s clear that Linux does dominated the mobile world. With appliances (from TVs to DVR toÂ <a href="http://www.engadget.com/2010/11/30/infinity-i-kitchen-sports-linux-based-touch-screen-computer-kit/">Refrigerators</a>) being dominated for a while (after the embedded cpus got more powerful, most embedded OS got replaced with Linux). Thus together with performance we must not restrict ourselves to the keyboard-mouse-X11-big-screens approach that we used before. This is not just about scalable (as in multiplication) GUI as people believed SVG would help, but we need different GUI for different environments and our toolkits and infrastructure have to help with that&#8230; something that Apple is currently doing quite well with their iOS UI toolkit providing universal applications that run optimized on both iPad and iPhone/iPod.</li>
</ul>
<p>If you&#8217;re also attending this summit, let&#8217;s meet there and have some beers.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2011/06/02/desktopsummit-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ANN: liblogger</title>
		<link>http://blog.gustavobarbieri.com.br/2011/03/09/ann-liblogger/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ann-liblogger</link>
		<comments>http://blog.gustavobarbieri.com.br/2011/03/09/ann-liblogger/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 21:38:29 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[liblogger]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=236</guid>
		<description><![CDATA[&#8220;There is no better tool to debug than printf()&#8221; &#8211; Latin proverb from an old Chinese man. That&#8217;s what every programmer knows. Despite interesting tools like profilers, debuggers and other tracing tool, for a reason or another we often resort &#8230; <a href="http://blog.gustavobarbieri.com.br/2011/03/09/ann-liblogger/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;There is no better tool to debug than printf()&#8221;<br />
&#8211; Latin proverb from an old Chinese man.</p></blockquote>
<p>That&#8217;s what every programmer knows. Despite interesting tools like profilers, debuggers and other tracing tool, for a reason or another we often resort to good old <code>printf()</code>. The logic behind this is quite simple: it&#8217;s available everywhere and have no impact on performace (mostly, on both cases &#8212; don&#8217;t be picky!), yet it allows you to check out if your program flow is as you expected and if not, what&#8217;s happening. The bad part, of course, is that it&#8217;s invasive and cumbersome to type, often introduces errors by itself (come on, raise your hand if you never ever wasted hours debugging to notice that the bug was in the debug message!)</p>
<p>GDB and some tools like ltrace or GLibC&#8217;s <a href="http://people.redhat.com/jolsa/latrace/index.shtml">latrace</a> are not always available, particularly on embededd systems they may be available but almost unusable. I hit that in the past weeks during some debugging on an old MIPS where I had to investigate why my supposedly correct program did not work, but a proprietary one did. Documentation is almost inexistent and makes you more clueless than not, thus I had to compare what we were doing differently.</p>
<p>At first I started doing an old trick to create a shared library to be <code>$LD_PRELOAD</code>ed on my own that would log what was being called, then <code>dlopen()</code>/<code>dlsym()</code> the actual symbol, call it, then log again, then return. I did it for a handful functions, some I even printed out structure members and although it worked, soon I got bored and hit by the laziness that most programmers have: I must make this automatic. <strong>Liblogger was born</strong>.</p>
<p><a href="http://barbieri-playground.googlecode.com/svn/liblogger/">Liblogger</a> is Python program that will parse a C header file and generate a source file that does exactly what I described above: log entrance, call the actual function and keep its return value, then log exit, then return the value. That&#8217;s the basics this single-file without external dependencies do. This source file can then be compiled into a shared object or into the final application.</p>
<p>Of course I wanted it to be as helpful as possible, so this first version already includes some nifty features:</p>
<ul>
<li>source file can be compile-time configured using CPP defines to produce colored, thread-safe, timestamped (gettimeofday, clock_gettime), indented (nesting level) output. This output can go to stderr or some given file;</li>
<li>generates makefile for you, creating most of aforementioned variations by default. Just pick the one you want to use and LD_PRELOAD it;</li>
<li>generate types file with all parsed enums, structs, unions and typedefs;</li>
<li>generate formatters file with custom functions to print out known enums, structs and unions. No more copy + sed on the original structs to produce <code>printf()</code> statements manually!</li>
<li>will keep <code>errno</code> intact so functions that rely on it will work as it will not be reset by <code>fprintf()</code> calls;</li>
<li>can be compiled in a thread-safe way, doing locks around <code>dlopen()</code>, <code>dlsym()</code> and the log <code>FILE*</code> to keep messages atomic. It will also keep the indentation level per-thread and print out thread ids (if not main thread);</li>
<li>Behavior is completely controlled with a INI-style configuration file. It can (check for more at <a href="http://barbieri-playground.googlecode.com/svn/liblogger/README.txt">README.txt</a>):
<ul>
<li>tell the parser tokens to ignore;</li>
<li>filter (positively/negatively) functions to log;</li>
<li>specify type formatters you want to use. Couple are provided for basic C types, and you can request it to generate custom formatters for parsed types as mentioned above;</li>
<li>specify return value checkers you want to use. Couple are provided, including one that checks for errno and logs the value as a string;</li>
<li>if types of parameters and return are safe to be used by formatters, this can be used at various levels to provide black-white lists for these and keep it useful and safe;</li>
<li>special handling of return (output) parameters, their values can be dereferenced and printed out after the actual function is called;</li>
</ul>
</li>
</ul>
<p>Usage should be pretty straightforward but I distribute two <a href="http://barbieri-playground.googlecode.com/svn/liblogger/examples/">examples</a>, one for dbus and another for jpeglib. Part of the dbus example is reproduced below:</p>
<ul>
<li>dbus.cfg</li>
<pre>
[global]
headers = dbus/dbus.h
overrides = formatters-%(header_name)s.c
# regular expression for all defines in dbus-macros.h
ignore-tokens-regexp = (DBUS_MACROS_H|DBUS_BEGIN_DECLS|DBUS_END_DECLS|DBUS_BEGIN_DECLS|DBUS_END_DECLS|DBUS_DEPRECATED|DBUS_DEPRECATED|DBUS_DEPRECATED|DBUS_EXPORT|DBUS_EXPORT|DBUS_EXPORT|DBUS_EXPORT)

[type-formatters]
DBusHandleMessageFunction = %(prefix)s_log_fmt_pointer
DBusFreeFunction = %(prefix)s_log_fmt_pointer
DBusHandleMessageFunction = %(prefix)s_log_fmt_pointer

[safe-formatters]
DBusHandleMessageFunction = true
DBusFreeFunction = true
DBusHandleMessageFunction = true

# be pedantic about safety, let's specify all strings independently

[func-dbus_message_new_method_call]
parameter-bus_name-safe = true
parameter-path-safe = true
parameter-interface-safe = true
parameter-method-safe = true
</pre>
</li>
<li>call:
<pre>
liblogger.py \
    --config dbus.cfg \
    --makefile Makefile.dbus-connection \
    --makefile-cflags "\`pkg-config --cflags dbus-1\` -I." \
    --custom-formatters formatters-connection.c \
    /usr/include/dbus-1.0/dbus/dbus-connection.h \
    libdbus-1.so \
    log-dbus-connection.c
make -f Makefile.dbus-connection
LD_PRELOAD=./log-dbus-connection-color-timestamp.so d-feet
</pre>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2011/03/09/ann-liblogger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MeeGo, Nokia&#8230; light at the end?</title>
		<link>http://blog.gustavobarbieri.com.br/2011/02/14/meego-nokia-light-at-the-end/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=meego-nokia-light-at-the-end</link>
		<comments>http://blog.gustavobarbieri.com.br/2011/02/14/meego-nokia-light-at-the-end/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 20:53:28 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[limo]]></category>
		<category><![CDATA[meego]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=232</guid>
		<description><![CDATA[Hello people, as most of open source lovers I&#8217;m still trying to digest Nokia&#8217;s move to WP7. But although many are worried about the future of Meego or the Linux on mobiles, I&#8217;m quite confident. First, as said before MeeGo &#8230; <a href="http://blog.gustavobarbieri.com.br/2011/02/14/meego-nokia-light-at-the-end/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hello people, as most of open source lovers I&#8217;m still trying to digest Nokia&#8217;s move to WP7. But although many are worried about the future of Meego or the Linux on mobiles, I&#8217;m quite confident.</p>
<p>First, as said before MeeGo is not just about Nokia or phones, it&#8217;s also being pushed as In-Vehicle Infotainment (IVI) and is already <a title="MeeGo becomes infotainment operating system of choice for BMW, GM, Hyundai and more" href="http://www.engadget.com/2010/07/26/meego-becomes-infotainment-operating-system-of-choice-for-bmw-g/" target="_blank">adopted by BMW</a>, which you can see daily contributions on projects such as <a title="ConnMan contribution by BMW" href="http://lists.connman.net/pipermail/connman/2011-February/003668.html" target="_blank">ConnMan</a>. So let&#8217;s not assume it is the end of the world given Nokia&#8217;s action.</p>
<p>Second, although Android and WebOS are indeed Linux since they use this kernel, we often want more traditional user-space stack, like MeeGo would be. For those, Â don&#8217;t loose hope! Today (Feb14, 2011) we got a major announcement at MWC by LiMo: <a title="LiMo Foundation Unveils LiMo 4" href="http://www.limofoundation.org/en/Press-Releases/limo-foundation-unveils-limo-4.html" target="_blank">LiMo Foundation Unveils LiMo 4</a>. It&#8217;s based on X11, WebKit, GNOME and&#8230; EFL!</p>
<p>Wait? Where do you see EFL in that announcement? You&#8217;ll have to check <a title="What is the LiMo 4 Platform?" href="http://www.limofoundation.org/en/what-is-the-platform.html" target="_blank">What is the LiMo 4 Platform?</a> block diagram and see EFL is now a first class component at it, together with GNOME that was there since first release. Yeah, we surely could use better publicity at EFL side <img src='http://blog.gustavobarbieri.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>The release is still just text and no code, which should be available by July2011, however you can get code straight from EFL SVN.</p>
<p><a title="ProFUSION embedded systems" href="http://profusion.mobi/" target="_blank">ProFUSION</a> team is happy due our contributions to make this possible, after all we help with EFL and WebKit-EFL developments!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2011/02/14/meego-nokia-light-at-the-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enlightenment meets BlueZ</title>
		<link>http://blog.gustavobarbieri.com.br/2010/03/12/enlightenment-meets-bluez/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=enlightenment-meets-bluez</link>
		<comments>http://blog.gustavobarbieri.com.br/2010/03/12/enlightenment-meets-bluez/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 23:27:42 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[bluez]]></category>
		<category><![CDATA[e17]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[enlightenment]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=209</guid>
		<description><![CDATA[In the past weeks ProFUSION coworker Gustavo Padovan was hacking on bluetooth support for Enlightenment ecosystem using the BlueZ stack. This module follows my previous ConnMan module and is built upon the same base. Since BlueZ and ConnMan are both &#8230; <a href="http://blog.gustavobarbieri.com.br/2010/03/12/enlightenment-meets-bluez/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the past weeks <a href="http://profusion.mobi">ProFUSION</a> coworker <a href="http://padovan.org/blog/">Gustavo Padovan</a> was hacking on bluetooth support for <a href="http://www.enlightenment.org">Enlightenment</a> ecosystem using the <a href="http://www.bluez.org/">BlueZ</a> stack.</p>
<div style="text-align: center;">
<img src="http://blog.gustavobarbieri.com.br/wp-content/uploads/2010/03/ebluez-powered-discoverable.png" alt="Enlightenment powered and discoverable Bluetooth adaptor." title="Enlightenment powered and discoverable Bluetooth adaptor."/>
</div>
<p>This module follows my previous <a href="http://blog.gustavobarbieri.com.br/2010/01/02/enlightenment-meets-connman/">ConnMan</a> module and is built upon the same base. Since BlueZ and ConnMan are both developed by almost the same developer group, the DBus APIs are very similar. The current module is quite simple, yet useful and allows pairing devices. The idea is to further extend it to be a full Bluetooth Agent, allowing different authentication and authorization methods, maybe go even further and send files using the OBEX protocol.</p>
<div style="text-align: center;">
<img src="http://blog.gustavobarbieri.com.br/wp-content/uploads/2010/03/ebluez-powered-hidden.png" alt="Enlightenment powered but hidden Bluetooth adaptor." title="Enlightenment powered but hidden Bluetooth adaptor."/>
</div>
<div style="text-align: center;">
<img src="http://blog.gustavobarbieri.com.br/wp-content/uploads/2010/03/ebluez-popup.png" alt="Enlightenment popup menu with discovered devices." title="Enlightenment popup menu with discovered devices."/>
</div>
<div style="text-align: center;">
<img src="http://blog.gustavobarbieri.com.br/wp-content/uploads/2010/03/ebluez-controls.png" alt="Enlightenment bluetooth adapter controls." title="Enlightenment bluetooth adapter controls."/>
</div>
<p>The infrastructure is available as <code>ebluez</code> inside <code>e_dbus</code>, so it is easily accessible to all EFL applications. The infrastructure exposes just a handful methods that were required by the module, but it is easily extensible as most methods are similar and the helpers do most of work, just need to specify the method names and convert types.</p>
<p>ProFUSION is also working on <a href="http://ofono.org/">oFono</a> support. Stay tuned to see the module <a href="http://jprvita.wordpress.com/">JoÃ£o Paulo</a> is cooking, the <code>e_dbus</code> code is already in SVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2010/03/12/enlightenment-meets-bluez/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>And more EFL news out there!</title>
		<link>http://blog.gustavobarbieri.com.br/2009/11/23/and-more-efl-news-out-there/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=and-more-efl-news-out-there</link>
		<comments>http://blog.gustavobarbieri.com.br/2009/11/23/and-more-efl-news-out-there/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 12:03:16 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ardy]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[free.fr]]></category>
		<category><![CDATA[freebox]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=197</guid>
		<description><![CDATA[Wow! Just after my last week post about companies supporting EFL, we were pleased with two more announcements: Ardy, a tool that brings together EFL and Arduino using Python Free.fr, the second biggest ISP in France opened up the development &#8230; <a href="http://blog.gustavobarbieri.com.br/2009/11/23/and-more-efl-news-out-there/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wow! Just after my <a href="http://blog.gustavobarbieri.com.br/2009/11/18/efl-things-becoming-public/">last week post</a> about companies supporting EFL, we were pleased with two more announcements:</p>
<ul>
<li><a href="http://edjy.wordpress.com/2009/11/19/ardy-arduino-efl-and-python/">Ardy</a>, a tool that brings together EFL and Arduino using Python</li>
<li><a href="http://www.enlightenment.org/p.php?p=news/show&#038;l=en&#038;news_id=18">Free.fr</a>, the second biggest ISP in France opened up the development of their Freebox HD set-top box using Enlightenment Foundation Libraries and Mozilla JavaScript library. This is pretty amazing as it&#8217;s the biggest deployment of EFL out there, an uncertain number that ranges from <b>2 to 3 million devices</b>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2009/11/23/and-more-efl-news-out-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EFL things becoming public&#8230;</title>
		<link>http://blog.gustavobarbieri.com.br/2009/11/18/efl-things-becoming-public/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=efl-things-becoming-public</link>
		<comments>http://blog.gustavobarbieri.com.br/2009/11/18/efl-things-becoming-public/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 22:48:03 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[INdT]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[efl]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=191</guid>
		<description><![CDATA[Hey all, Yesterday we started to see some announcements of companies backing Enlightenment Foundation Libraries development. Of course, INdT was pioneer in that since it was decided to use it for Canola2. Later on I created my own company and &#8230; <a href="http://blog.gustavobarbieri.com.br/2009/11/18/efl-things-becoming-public/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hey all,</p>
<p>Yesterday we started to see some <a href="http://www.enlightenment.org/p.php?p=news/show&#038;l=en&#038;news_id=17">announcements</a> of companies backing <a href="http://www.enlightenment.org">Enlightenment Foundation Libraries</a> development. Of course, <a href="http://www.indt.org.br/">INdT</a> was pioneer in that since it was decided to use it for <a href="http://www.openbossa.org/canola2">Canola2</a>. Later on I created my <a href="http://profusion.mobi/">own company</a> and we officially support EFL as GUI alternative (together with <a href="http://www.clutter.org">Clutter</a>, <a href="http://www.gtk.org">GTK</a> and <a href="http://qt.nokia.com/">Qt</a>), being the first company to do that.</p>
<p>While there are speculations about which company is it, what I can assure you is that this company is serious and <b>is not alone</b>. ProFUSION itself worked on EFL on behalf of various clients and you may expect another press release about a big French internet and telecom company deploying a massive number of units with EFL pre-installed. Not accounting various community driven projects that choose it and E17 as its base platform, such as <a href="http://wiki.openmoko.org/wiki/Main_Page">OpenMoko</a> and <a href="http://openinkpot.org/wiki/Documentation/EFL">OpenInkpot</a>.</p>
<p>Bottom line? While EFL does not get the same amount of marketing and visibility as Qt and GTK counterparts, it is playing fine enough to be considered to ship in dozen million devices in the next year. Why don&#8217;t you consider it for your project? Be open minded and try it out <img src='http://blog.gustavobarbieri.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2009/11/18/efl-things-becoming-public/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evas UV Mapping and WebKit-EFL</title>
		<link>http://blog.gustavobarbieri.com.br/2009/11/04/evas-uv-mapping-and-webkit-efl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=evas-uv-mapping-and-webkit-efl</link>
		<comments>http://blog.gustavobarbieri.com.br/2009/11/04/evas-uv-mapping-and-webkit-efl/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 12:12:59 +0000</pubDate>
		<dc:creator>Gustavo Barbieri</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[ProFUSION]]></category>
		<category><![CDATA[efl]]></category>
		<category><![CDATA[evas]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[rasterman]]></category>
		<category><![CDATA[rotation]]></category>
		<category><![CDATA[webkit]]></category>
		<category><![CDATA[webkit-ef]]></category>

		<guid isPermaLink="false">http://blog.gustavobarbieri.com.br/?p=183</guid>
		<description><![CDATA[One of the most requested feature for Evas was rotation and other transformations. These are no more, Rasterman just did generic UV Mapping support, enabling rotation, perspective, 3d-simulation and more. As usual he wrote a fast software engine to make &#8230; <a href="http://blog.gustavobarbieri.com.br/2009/11/04/evas-uv-mapping-and-webkit-efl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of the most requested feature for <a href="http://docs.enlightenment.org/auto/evas/">Evas</a> was rotation and other transformations. These are no more, <a href="http://www.rasterman.com/index.php?page=News">Rasterman</a> just did generic <a href="http://en.wikipedia.org/wiki/UV_mapping">UV Mapping</a> support, enabling rotation, perspective, 3d-simulation and more.</p>
<p>As usual he wrote a fast software engine to make this available on non-3d accelerated, next should come OpenGL and OpenGL-ES as some big players in the industry are now funding his work in both software and GL-ES support, as well as ARM NEON optimizations.</p>
<p>As <a href="http://profusion.mobi/about">ProFUSION</a> is also being funded to work on WebKit-EFL, I thought I could demo our work using new rotation support, and the result is quite good:</p>
<div style="text-align: center; padding: 5px;">
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/dEf1fSsPUY4&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x3a3a3a&#038;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/dEf1fSsPUY4&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x3a3a3a&#038;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>
</div>
<p>As you can see, there are still bugs&#8230; actually this video was first meant to report a bug with mapping code, but raster is already fixing it.</p>
<p>As soon as I have time I&#8217;ll try to update EFL for N900 and try out the new expedite tests, they include 3d cubes, coverflow and more. Hopefully by the time OpenGL-ES will be ready and then we can compare software and hardware performance on this amazing hardware.</p>
<p>All in all, this semester is being quite busy for EFL hackers. Fast OpenGL-ES, UV Mapping, WebKit and soon-to-be-release Edje Editor were all done, with much more to come. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gustavobarbieri.com.br/2009/11/04/evas-uv-mapping-and-webkit-efl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

