<?xml version="1.0" encoding="utf-8"?>
<!-- generator="wordpress/2.0.11" -->
<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/"
	>

<channel>
	<title>context switch</title>
	<link>http://log.emmanuelebassi.net</link>
	<description>Random babblings of a geek.</description>
	<pubDate>Sat, 21 Jun 2008 11:35:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.11</generator>
	<language>en</language>
			<item>
		<title>Finally Woken</title>
		<link>http://log.emmanuelebassi.net/archives/2008/06/finally-woken/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/06/finally-woken/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 10:59:55 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>announce</category>

		<category>clutter</category>

		<category>tweet</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/06/finally-woken/</guid>
		<description><![CDATA[the first, alpha quality release of Tweet is available here.

I&#8217;d like to stress out that this is an alpha quality release; I&#8217;ve been using it for a while, now, and nothing serious like the destruction of my hard drive happened but I cannot guarantee that it won&#8217;t happen to you. you&#8217;ve been warned.
from the new-and-shiny [...]]]></description>
			<content:encoded><![CDATA[<p>the first, alpha quality release of Tweet is available <a href="http://live.gnome.org/Tweet">here</a>.</p>
<div style="text-align:center"><a id="p276" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/06/finally-woken/tweet-020/" title="Tweet 0.2.0"><img id="image276" src="http://log.emmanuelebassi.net/wp-content/2008/06/tweet.png" alt="Tweet 0.2.0" /></a></div>
<p>I&#8217;d like to stress out that this is an <em>alpha quality</em> release; I&#8217;ve been using it for a while, now, and nothing serious like the destruction of my hard drive happened but I cannot guarantee that it won&#8217;t happen to you. you&#8217;ve been warned.</p>
<p>from the new-and-shiny department:</p>
<ul>
<li>use NetworkManager to detect a connection change</li>
<li>scroll wheel support</li>
<li>nice gradients on the speech bubble</li>
<li>more readable datetime stamps on each status</li>
<li>update the status view with just the new statuses instead of reloading everything</li>
</ul>
<p>from the stuff-still-missing department:</p>
<ul>
<li>an icon &mdash; can I have an icon? please, pretty please with sugar on top?</li>
<li>follow/unfollow users</li>
<li>direct messages</li>
<li>show a particular user</li>
<li>show followers and following</li>
<li>add a control to open a browser on the current status</li>
<li>show error messages instead of silently failing</li>
</ul>
<p>and finally, from the would-be-nice department:</p>
<ul>
<li>use <a href="http://folks.o-hand.com/iain/gypsy/">Gypsy</a> to update the location</li>
<li>exporting the status archive</li>
</ul>
<p>if you want to give a hand, just clone the repository:</p>
<pre>
  git clone git://github.com/ebassi/tweet.git
</pre>
<p>and hack away! <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/06/finally-woken/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pogo Stick</title>
		<link>http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/#comments</comments>
		<pubDate>Fri, 30 May 2008 21:02:25 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>fun</category>

		<category>clutter</category>

		<category>tweet</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/</guid>
		<description><![CDATA[apparently, some people &#8212; and I&#8217;m looking at you, Pippin &#8212; said that the Tweet repository is hard to find: you actually have to search in my blog.
well, not anymore: Tweet on GNOME Live
complete with a screenshot of the new UI, as suggested by Matthew Allum:

]]></description>
			<content:encoded><![CDATA[<p>apparently, some people &mdash; and I&#8217;m looking at you, Pippin &mdash; said that the Tweet repository is hard to find: you actually have to search in my blog.</p>
<p>well, not anymore: <a href="http://live.gnome.org/Tweet">Tweet on GNOME Live</a></p>
<p>complete with a screenshot of the new UI, as suggested by Matthew Allum:</p>
<div style="text-align:center"><a id="p273" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/tweet-pogo-style/" title="Tweet - Pogo style"><img id="image273" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet.png" alt="Tweet - Pogo style" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Road to Somewhere</title>
		<link>http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/#comments</comments>
		<pubDate>Fri, 23 May 2008 21:08:01 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>C</category>

		<category>fun</category>

		<category>clutter</category>

		<category>tweet</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/</guid>
		<description><![CDATA[well, after eating my dog food for a while, it seems that Tweet is starting to get more useful.
first of all, now Tweet has an authentication dialog which allows you to enter your username and password the first time you run it:

and even verify them beforehand:


then you get the list of statuses from the people [...]]]></description>
			<content:encoded><![CDATA[<p>well, after eating my dog food for a while, it seems that Tweet is starting to get more useful.</p>
<p>first of all, now Tweet has an authentication dialog which allows you to enter your username and password the first time you run it:</p>
<div style="text-align:center"><a id="p269" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/authentication1/" title="Authentication/1"><img id="image269" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-auth-1.png" alt="Authentication/1" /></a></a></div>
<p>and even verify them beforehand:</p>
<div style="text-align:center"><a id="p270" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/authentication2/" title="Authentication/2"><img id="image270" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-auth-2.png" alt="Authentication/2" /></a></a></div>
<div style="text-align:center"><a id="p271" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/authentication3/" title="Authentication/3"><img id="image271" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-auth-3.png" alt="Authentication/3" /></a></a></div>
<p>then you get the list of statuses from the people you&#8217;re following:</p>
<div style="text-align:center"><a id="p267" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/loading/" title="Loading"><img id="image267" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-loading.png" alt="Loading" /></a></div>
<p>you can scroll around using your mouse, and tap a row to get more informations about the status and the user:</p>
<div style="text-align:center"><a href="http://folks.o-hand.com/ebassi/tweet-navigation.ogg"><img id="image268" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-navigation.png" alt="Navigation" /></a>
<p style="font-size:80%"><em>click on the screenshot&#8230;</em></p>
</div>
<p>as you can see, the <acronym title="User Interface">UI</acronym> is geared towards the touchscreen usage, but I plan to add key navigation soon.</p>
<p>still, there&#8217;s a lot to add: support for viewing your own statuses, direct messages, the list of people you&#8217;re following and the people following you &mdash; even the error messages are just printed to the console, even though I&#8217;m working on that.</p>
<p>the bits I&#8217;m most proud of:</p>
<ul>
<li>the GTK+ integration: I&#8217;m retrieving the style information straight from the <code>GtkWindow</code> embedding the Clutter stage, and even if I had to fight with the utter mess that is the themeing code, I was able to gather enough to make Clutter play nice with a GTK+ environment<sup><a href="#footnote-1-264" id="footnote-link-1-264" class="footnote-link footnote-identifier-link" title="in the screencast the scrollbar handle color, for instance, comes from the theme as well as the font">1</a></sup>;</li>
<li>the small animation API I implemented on top of the Clutter animation framework, requiring a single function (plus two completely generic classes) to <a href="http://en.wikipedia.org/wiki/Tweening">tween</a> an actor between two states; for instance:
<pre style="font-size:80%">
tweet_actor_animate (info, <span style="color:purple">TWEET_LINEAR</span>, <span style="color:red">250</span>,
                     <span style="color:red">&#8220;y&#8221;</span>, tweet_interval_new (<span style="color:purple">G_TYPE_INT</span>, y + padding, <span style="color:red">100</span> + padding),
                     <span style="color:red">&#8220;height&#8221;</span>, tweet_interval_new (<span style="color:purple">G_TYPE_INT</span>, <span style="color:red">10</span>, (height - (<span style="color:red">100</span> * <span style="color:red">2</span>))),
                     <span style="color:red">&#8220;opacity&#8221;</span>, tweet_interval_new (<span style="color:purple">G_TYPE_UCHAR</span>, <span style="color:red">0</span>, <span style="color:red">196</span>),
                     <span style="color:purple">NULL</span>);
</pre>
<p> this is the code that animates the status information actor that appears overlayed on top of the status view<sup><a href="#footnote-2-264" id="footnote-link-2-264" class="footnote-link footnote-identifier-link" title="this kind of utility API is easy to achieve given the power and flexibility of the underlying framework &mdash; but it obviously limits what you can and cannot do, and if you ty to coerce it into being more generic you start losing bits and pieces and a simple API starts getting in your way instead of helping you; that&#8217;s why Clutter&#8217;s animation framework might seem complicated at first: it&#8217;s trying very hard to allow you to build whatever animation you have in mind instead of limiting you">2</a></sup>; I&#8217;d like to thank <a href="http://codecave.org/">pippin</a> for the idea about the API behaviour;</li>
<li>Twitter-GLib, the generic API for accessing Twitter throught its <a href="http://en.wikipedia.org/wiki/RESTful">RESTful</a> API, which thanks to LibSoup has been a breeze to write even in a clunky and not-at-all-web-two-point-oh-buzzword-compliant language like C;</li>
<li>the fact that Tweet is written in a very reusable manner (apart from the base scrollable list which comes from Tidy), with every piece neatly abstracted into its own class.</li>
<li>finally, the fact that after almost a year of basically working on libraries only I can still sit down and get an application from scratch to a usable state in a couple of weeks in my spare time &mdash; even if I have to write a library to get it done. <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p>by the way: is any artist out there interested in making an icon for Tweet? I really would like to avoid using Twitter&#8217;s own icon.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-264" class="footnote">in the screencast the scrollbar handle color, for instance, comes from the theme as well as the font [<a href="#footnote-link-1-264" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-264" class="footnote">this kind of utility API is easy to achieve given the power and flexibility of the underlying framework &mdash; but it obviously limits what you can and cannot do, and if you ty to coerce it into being more generic you start losing bits and pieces and a simple API starts getting in your way instead of helping you; that&#8217;s why <a href="http://www.clutter-project.org">Clutter</a>&#8217;s <a href="http://www.clutter-project.org/docs/clutter/stable/clutter-animations.html">animation framework</a> might seem complicated at first: it&#8217;s trying very hard to allow you to build whatever animation you have in mind instead of limiting you [<a href="#footnote-link-2-264" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Some Things Come From Nothing</title>
		<link>http://log.emmanuelebassi.net/archives/2008/05/some-things-come-from-nothing/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/05/some-things-come-from-nothing/#comments</comments>
		<pubDate>Mon, 19 May 2008 19:04:09 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>clutter</category>

		<category>conference</category>

		<category>crack</category>

		<category>git</category>

		<category>json-glib</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/05/some-things-come-from-nothing/</guid>
		<description><![CDATA[json-glib: 0.6 is out! please: download it, test it, use it. as far as I know, it has been packaged for Debian unstable, and has entered the NEW queue (kudos to Rob Bradford, esquire and fine gentleman).
debian: with the release of Hardy I decided to switch back to Debian after three years of Ubuntu. even [...]]]></description>
			<content:encoded><![CDATA[<p><strong>json-glib</strong>: 0.6 is <a href="http://mail.gnome.org/archives/gnome-announce-list/2008-May/msg00006.html">out</a>! please: download it, test it, use it. as far as I know, it has been packaged for Debian unstable, and has entered the <code>NEW</code> queue (<em>kudos</em> to Rob Bradford, esquire and fine gentleman).</p>
<p><strong>debian</strong>: with the release of Hardy I decided to switch back to Debian after three years of Ubuntu. even though there are still some rough edges in Lenny, the support for laptops has definitely improved a lot and so I got back to my old love. starting from Gutsy, I found myself increasingly at odds with Ubuntu decisions and even though I upgraded my wife&#8217;s laptop to Hardy, I&#8217;m really glad I got back to Debian.</p>
<p><strong>clutter/1</strong>: apparently, I&#8217;ll give a lightning talk about our reference toolkit for Clutter at this year&#8217;s GUADEC, in Istanbul. Øyvind proposed it for me because, regardless of being on the paper committee, I actually forgot the deadline for the <acronym title="Call For Papers">CFP</acronym> &mdash; <em>whoops</em>, maybe I shouldn&#8217;t have said that. <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  with the Tidy lightning talk and the <em>Clutter guts</em> talk given by <a href="http://butterfeet.org">Matthew</a>, we decided for a high-level/low-level approach, instead of going for the usual <em>this is teh Clutter, look at teh bling</em> kind of talk. if you want to understand Clutter, Matthew&#8217;s talk is definitely where you want to be; as we all know:</p>
<blockquote><p>
  <em>Clutter = Clean and nice API + Performance + Portability + Integration = ♥</em>
</p></blockquote>
<p><em style="font-size:80%">from my Clutter talk at FOSDEM</em></p>
<p>so, if you want to know <strong>how</strong> Clutter creates love, get to Istanbul this July. <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>tweet</strong>: I started <a href="http://twitter.com/ebassi/statuses/815084728">eating my own dogfood</a>. <a href="http://folks.o-hand.com/ebassi/tweet-20080519.png">Tweet</a> is by no means complete or even guaranteed not to turn you into a goat and eat your breakfast &mdash; but now it works well enough for reading your own timeline and sending new statuses; and it doesn&#8217;t require <code>trunk</code> of anything any more, thanks to a Tidy transplant. I&#8217;m using Tweet as a way to see what kind of API is needed to properly integrate a Clutter canvas into a GTK+ application: colors, fonts, etc. if you want to try it out, contribute or just mock my insanity:</p>
<pre>
  git clone <a href="http://github.com/ebassi/tweet/tree/master">git://github.com/ebassi/tweet.git</a>
</pre>
<p><strong>clutter/2</strong>: we&#8217;re really close to a 0.7 release, which will mark the beginning of the <em>slushy</em> phase of the API; as far as documentation goes, we&#8217;re in pretty good shape already, at 93% for the Clutter namespace, and another 80% for the Cogl namespace. bindings will need to be updated &mdash; but the amount of new API is not that big, so it&#8217;s not going to be a long wait. I&#8217;m making a note here: <strong>huge success</strong>.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/05/some-things-come-from-nothing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sincerest Forms of Flattery</title>
		<link>http://log.emmanuelebassi.net/archives/2008/04/sincerest-forms-of-flattery/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/04/sincerest-forms-of-flattery/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 12:57:36 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>GNOME</category>

		<category>fun</category>

		<category>announce</category>

		<category>clutter</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/04/sincerest-forms-of-flattery/</guid>
		<description><![CDATA[tidy: they say that imitation is the sincerest form of flattery:



the actual amount of code is quite small, and it&#8217;s already available in Tidy.
challenges: Luca dared me into making a Clutter-based coverflow-like plugin for Rhythmbox, but it was Iain that picked the challenge up and wrote some basic code for it. I, on the other [...]]]></description>
			<content:encoded><![CDATA[<p><strong>tidy</strong>: they say that <em>imitation is the sincerest form of flattery</em>:</p>
<div style="text-align:center">
<a href="http://folks.o-hand.com/ebassi/tidy-boo-yah.ogg"><img id="image253" src="http://log.emmanuelebassi.net/wp-content/2008/03/tidy-boo-yah-thumb.png" alt="TidyFingerToggle" /></a>
</div>
<p>the actual amount of code is quite small, and it&#8217;s already available in <a href="http://svn.o-hand.com/view/tidy/trunk/tidy/tidy-finger-toggle.h">Tidy</a>.</p>
<p><strong>challenges</strong>: <a href="http://elleuca.blogspot.com/">Luca</a> <a href="http://mail.gnome.org/archives/desktop-devel-list/2008-April/msg00203.html">dared</a> me into making a Clutter-based coverflow-like plugin for Rhythmbox, but it was Iain that picked the challenge up and <a href="http://mail.gnome.org/archives/desktop-devel-list/2008-April/msg00209.html">wrote</a> some basic code for it. I, on the other hand, don&#8217;t like coverflow for browsing my music collection, so I finally decided to write something for the Eye of GNOME &mdash; a <a href="http://en.wikipedia.org/wiki/Ken_Burns_Effect">Ken Burns effect</a> slide show. it&#8217;s not at all finished, and if nobody <a href="http://mail.gnome.org/archives/desktop-devel-list/2008-April/msg00211.html">picks</a> it up, I&#8217;ll try and do my best to have it ready for GNOME 2.24, if <acronym title="Eye of GNOME">EOG</acronym> maintainers want it, of course. it&#8217;s not the best display of Clutter features &mdash; except the animation framework &mdash; but if you have hardware acceleration it will make slideshows look a lot nicer.</p>
<p><strong>json-glib</strong>: this weekend I <a href="http://mail.gnome.org/archives/gnome-announce-list/2008-April/msg00061.html">released</a> the first developers snapshot of JSON-GLib 0.6; the API is stable, the test suite is rocking and this release finally fixes the last bit needed for full RFC 4627 compliance (Unicode escaping). I&#8217;m probably going to release 0.6.0 in a couple of weeks.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/04/sincerest-forms-of-flattery/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Good Intentions/2</title>
		<link>http://log.emmanuelebassi.net/archives/2008/04/good-intentions2/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/04/good-intentions2/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 21:30:50 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>developer</category>

		<category>gtk</category>

		<category>clutter</category>

		<category>crack</category>

		<category>json-glib</category>

		<category>glib</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/04/good-intentions2/</guid>
		<description><![CDATA[gtk+: I&#8217;ve been working again on the RecentManager and in trunk you&#8217;ll see some new stuff, namely:

use GIO to determine the MIME type of a URI, on every platform supported
use the file monitoring API to avoid polling the storage file
add a GtkSettings property for clamping the recently used resources list to a 30 days limit

more [...]]]></description>
			<content:encoded><![CDATA[<p><strong>gtk+</strong>: I&#8217;ve been working again on the <a href="http://library.gnome.org/devel/gtk/stable/GtkRecentManager.html">RecentManager</a> and in <code>trunk</code> you&#8217;ll see some new stuff, namely:</p>
<ul>
<li>use GIO to determine the MIME type of a URI, on every platform supported</li>
<li>use the file monitoring API to avoid polling the storage file</li>
<li>add a GtkSettings property for clamping the recently used resources list to a 30 days limit</li>
</ul>
<p>more stuff I&#8217;d like to add is:</p>
<ul>
<li>small parser changes to <a href="http://library.gnome.org/devel/glib/stable/glib-Bookmark-file-parser.html">GBookmarkFile</a>, to reflect changes in the spec</li>
<li>bulk addition, for applications storing multiple items when quitting</li>
<li>new API needed to follow the usability review in bug <a href="http://bugzilla.gnome.org/show_bug.cgi?id=349541">349541</a></li>
<li>moving the RecentItem icon code to GIO, and add API to extract the thumbnail</li>
</ul>
<p><strong>twitter</strong>: I&#8217;ve been using <a href="http://twitter.com">Twitter</a> a lot in the past two weeks; it&#8217;s nice, it makes it easier to copy and paste a quote or a thought, and the 160 characters limit is an interesting challenge. As it&#8217;s been ages since I last wrote an application<sup><a href="#footnote-1-261" id="footnote-link-1-261" class="footnote-link footnote-identifier-link" title="lately all I&#8217;ve been doing was writing libraries">1</a></sup>, I decided to start writing a Twitter reader/writer &mdash; using <a href="http://www.gtk.org">GTK+</a>, <a href="http://www.clutter-project.org">Clutter</a> and Tidy; without much thinking, I opened gvim and started writing code in C<sup><a href="#footnote-2-261" id="footnote-link-2-261" class="footnote-link footnote-identifier-link" title="hey, that&#8217;s what I do for a living, it&#8217;s hard to switch off; plus, I could reuse some of the platform libraries">2</a></sup> &mdash; so, the obvious thing that happened was that I ended up writing a library <em>yet again</em> in order to use Twitter&#8217;s web API. luckily for me, libsoup has now a really nice API to work with; all you need is <code>GET</code> and <code>POST</code> to their RESTful API, retrieve the result, parse it through JSON-GLib, hide everything inside a new GObject and you have a wrapper around a web service. the application, you say? oh, I was sure I forgot something. well, it&#8217;s <a href="http://github.com/ebassi/tweet/tree/master">coming along</a> &mdash; it just needs some work still.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-261" class="footnote">lately all I&#8217;ve been doing was writing libraries [<a href="#footnote-link-1-261" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-261" class="footnote">hey, that&#8217;s what I do for a living, it&#8217;s hard to switch off; plus, I could reuse some of the platform libraries [<a href="#footnote-link-2-261" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/04/good-intentions2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Good Intentions</title>
		<link>http://log.emmanuelebassi.net/archives/2008/04/good-intentions/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/04/good-intentions/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 14:15:24 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>announce</category>

		<category>ohand</category>

		<category>clutter</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/04/good-intentions/</guid>
		<description><![CDATA[unique: this morning I released version 0.9.4 of libunique, everyone (least) favourite library for writing single instance applications. it&#8217;s mostly a bug fixing release, and since I&#8217;ve decided to release 1.0.0 soon, this is also the first release candidate for the 1.0 milestone. I&#8217;ve also moved the git repository to github, so you can clone [...]]]></description>
			<content:encoded><![CDATA[<p><strong>unique</strong>: this morning I released version 0.9.4 of <a href="http://live.gnome.org/LibUnique">libunique</a>, everyone (least) favourite library for writing single instance applications. it&#8217;s mostly a bug fixing release, and since I&#8217;ve decided to release 1.0.0 soon, this is also the first release candidate for the 1.0 milestone. I&#8217;ve also moved the git repository to github, so you can clone it with:</p>
<pre>
  git clone git://github.com/ebassi/unique.git
</pre>
<p>I plan to add back a new x11 backend for the 1.2 release, targeting small embedded environments were D-Bus might not be an option, and support for a <code>--replace</code> command line switch. after that, I&#8217;ll try to get the same functionalities into GLib/GTK+, as part of the future &#8220;desktop platform&#8221; module.</p>
<p><strong>Clutter</strong>: I did a 0.6.2 release of both the <a href="http://lists.o-hand.com/clutter/0951.html">core</a> and the <a href="http://lists.o-hand.com/clutter/1019.html">Python bindings</a>, but things are afoot in <code>trunk</code>. we recently landed the multi-stage branch, which means that you&#8217;ll be able to create multiple windows and multiple GtkClutterEmbed widgets per application with Clutter 0.8. we&#8217;re also about to land the massive COGL rewrite that <a href="http://ivanleben.blogspot.com/">Ivan Leben</a> of ShivaVG fame did &mdash; which will make the GL and GLES abstraction more powerful, will reduce the code duplication and in general will rock your world. Neil Roberts has been doing loads of work on the native Win32 backend: he not only made it possible to run Clutter on WGL, but also use the GtkClutterEmbed on Windows natively:</p>
<div style="text-align:center"><a class="imagelink" href="http://log.emmanuelebassi.net/wp-content/2008/04/clutter-gtk-win32.png" title="GtkClutter on win32"><img id="image257" src="http://log.emmanuelebassi.net/wp-content/2008/04/clutter-gtk-win32.thumbnail.png" alt="GtkClutter on win32" /></a></div>
<p>now, only the Quartz backend is missing the party &mdash; <em>hint hint, nudge nudge</em>.</p>
<p><strong>OpenedHand</strong>: we&#8217;re <a href="http://o-hand.com/jobs/">hiring</a>!
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/04/good-intentions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rhyme the rhyme well</title>
		<link>http://log.emmanuelebassi.net/archives/2008/04/rhyme-the-rhyme-well/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/04/rhyme-the-rhyme-well/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 21:43:34 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>GNOME</category>

		<category>developer</category>

		<category>clutter</category>

		<category>crack</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/04/rhyme-the-rhyme-well/</guid>
		<description><![CDATA[Jason, it&#8217;s not just the canvas: writing a simple 2D canvas is trivial &#8212; that&#8217;s why a lot of applications end up writing their own homegrown one.
The hard bits are the animation framework, the event handling and down to the integration with the existing platform. A generic canvas is hard, and you probably don&#8217;t want [...]]]></description>
			<content:encoded><![CDATA[<p>Jason, it&#8217;s not just <a href="http://jasondclinton.livejournal.com/65125.html">the canvas</a>: writing a simple 2D canvas is trivial &mdash; that&#8217;s why a lot of applications end up writing their own homegrown one.</p>
<p>The hard bits are the animation framework, the event handling and down to the integration with the existing platform. A generic canvas is hard, and you probably don&#8217;t want it to be developed inside gtk+ (not even for 3.0) &mdash; just like Cairo is not developed inside gtk+ but supersedes part of gtk+&#8217;s API.</p>
<p>As for 3D acceleration &mdash; I&#8217;m obviously biased here, so everyone should take what I write with a <del datetime="2008-04-10T21:32:48+00:00">grain</del>truckload of salt &mdash; but I maintain my view that if GNOME (and Linux) started heavily pushing towards more support for OpenGL, then we could get more market share<sup><a href="#footnote-1-256" id="footnote-link-1-256" class="footnote-link footnote-identifier-link" title="think Compiz, and how many more users it brought home just with a spinning cube">1</a></sup>, more visibility and thus more leverage to make the currently closed source drivers more open. Intel understood this; AMD is now getting it; I&#8217;m pretty sure nVidia will &mdash; or they will be simply pushed into irrelevance by the open drivers developed by the community<sup><a href="#footnote-2-256" id="footnote-link-2-256" class="footnote-link footnote-identifier-link" title="unless you are a gamer, and need the very best card as soon as it&#8217;s out just to play Crisis">2</a></sup>. Let&#8217;s face it: other platforms and toolkits are pushing heavily on hardware accelerated 3D effects.</p>
<p>Let&#8217;s start aggressively work to get the platform into the XXI century.</p>
<p><strong>update@2008-10-11T12:21+0100</strong> &mdash; just as a sidenote: if you have a good CPU, Mesa and software rendering, Clutter <em>will work</em>. It won&#8217;t be fast for some operations (like scaling and, possibly, rotating), but in that case you should probably start contributing to Mesa to make it fast (there&#8217;s a lot of room for improvement).
</p>
<ol start="1" class="footnotes"><li id="footnote-1-256" class="footnote">think Compiz, and how many more users it brought home just with a spinning cube [<a href="#footnote-link-1-256" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-256" class="footnote">unless you are a gamer, and need the very best card as soon as it&#8217;s out just to play Crisis [<a href="#footnote-link-2-256" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/04/rhyme-the-rhyme-well/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Berlin/3</title>
		<link>http://log.emmanuelebassi.net/archives/2008/03/berlin3/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/03/berlin3/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 00:35:00 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>gtk</category>

		<category>clutter</category>

		<category>conference</category>

		<category>hackfest</category>

		<category>berlin</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/03/berlin3/</guid>
		<description><![CDATA[second and third day of the hackfest, edited on day five
on tuesday, Behdad and I started working on OpenGL integration inside GTK+. as stated multiple times on the Bugzilla entry, what we both would like is a Cairo-like integration of GL inside the available drawing systems in GTK+. in short: not a specialized widget like [...]]]></description>
			<content:encoded><![CDATA[<p><em>second and third day of the hackfest, edited on day five</em></p>
<p>on tuesday, Behdad and I started working on OpenGL integration inside GTK+. as stated multiple times on the Bugzilla entry, what we both would like is a Cairo-like integration of GL inside the available drawing systems in GTK+. in short: not a specialized widget like GtkGLArea, which would make it difficult &mdash; or plainly impossible without jumping through a long series of hoops. in flames. tied. and blindfolded &mdash; to integrate GL inside existsing projects; and not the incredible API dump that GtkGLExt is.</p>
<p>the design we mostly agreed on was a shared object inside GTK+, containing the GL context abstraction object, and two simple calls to delimit the drawing code, wait for vblank and swap the GL buffers. plus, an easy to use wrapper around the <code>texture_from_pixmap</code> extension, to allow drawing with cairo on a Pixmap and then have it pushed into the GL pipeline.</p>
<p>Carl arrived on wednesday, and partecipated at the scene graph BoF we held. the BoF itself was pretty straightforward: we read the slides that Havoc sent on the mailing list and discussed the various points. we all agreed on a lot of points &mdash; and we tried to define the problem space more deeply<sup><a href="#footnote-1-252" id="footnote-link-1-252" class="footnote-link footnote-identifier-link" title="We did not always succeed in this, but the issue at hand is quite large and it&#8217;s understandable">1</a></sup>. being there, I could bring to the table my experience in the past two years<sup><a href="#footnote-2-252" id="footnote-link-2-252" class="footnote-link footnote-identifier-link" title="It&#8217;s really two years? holy crap! The time really flew&#8230;">2</a></sup> with the design and implementation of Clutter. some of the attendees were already familiar with it &mdash; something very satisfying &mdash; and I could expand some points in Havoc&#8217;s slides about Clutter that have been recently fixed or are going to be fixed in this cycle. the biggest point is that the scene graph should integrate with Cairo, in order to allow applications and people to gently merge both the 2D drawing of surfaces into a full 3D environment; I&#8217;ll leave to Carl to explain the Cairo side, because he&#8217;s obviously better at this than I am. <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>the operative result of the scene graph discussion was that Clutter emerged as an already powerful and established solution for this problem space, and given that it already nicely integrates with GTK+, we can work towards the common goal of making it &#8220;the GTK+ canvas&#8221;, outside the actual library so that it can grow unrestrained and experiment in new directions.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-252" class="footnote">We did not always succeed in this, but the issue at hand is quite large and it&#8217;s understandable [<a href="#footnote-link-1-252" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-252" class="footnote">It&#8217;s really two years? holy crap! The time really flew&#8230; [<a href="#footnote-link-2-252" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/03/berlin3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Let It Take You</title>
		<link>http://log.emmanuelebassi.net/archives/2008/03/let-it-take-you/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/03/let-it-take-you/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 15:51:58 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>clutter</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/03/let-it-take-you/</guid>
		<description><![CDATA[Murray, just a short reply to your points:
I sometimes feel I’d like to just put actors on a rail, twist that rail about, connect some actors together with struts or springs, start them moving, let the user push and pull them around within constraints, and trigger extra behaviour when they reach certain positions, or reach [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.murrayc.com/blog/permalink/2008/03/03/clutter-tutorial-done-for-now/">Murray</a>, just a short reply to your points:</p>
<blockquote><p>I sometimes feel I’d like to just put actors on a rail, twist that rail about, connect some actors together with struts or springs, start them moving, let the user push and pull them around within constraints, and trigger extra behaviour when they reach certain positions, or reach each other.</p></blockquote>
<p>What you want is a physics engine hooked up into Clutter; it&#8217;s possible, Pippin has been doing some preliminary work on it, and it would solve the more &#8220;physical&#8221; interaction model. But it&#8217;s not always what you want your UI to look like and it&#8217;s not always a good model to employ, especially if you cannot interact physically with the UI - like shaking it, rotating it, use multi-touch surfaces.</p>
<blockquote><p>Clutter is now a very basic API.</p></blockquote>
<p> You make it sound like it&#8217;s a bad thing. Well, it&#8217;s not: it&#8217;s exactly what we want it to be like. No constraints on the UI structure or behaviour &mdash; those belong to toolkits developed <strong>on top</strong> of Clutter. Like Tidy, which <strong>is</strong> a shared library (it even installs a pkg-config file), but it will not be released as a tarball because we&#8217;d like to keep it as an experimental ground, read: breaking stuff, to see how and what should Clutter provide to implement an accelerated and animated toolkit. Also, as you note, in embedded environments you&#8217;ll want to style and create your entire stack: instead of raping and twisting GTK+ themeing until you don&#8217;t know that you&#8217;re using GTK+ anymore &mdash; and losing a lot of time in the process &mdash; you can use a standard low level API and develop your toolkit on top of it. It&#8217;s not optimal, but I think it&#8217;s a step in the right direction to make the GNOME mobile stack a lot more useful and flexible.</p>
<blockquote><p>Neither you or Clutter should want to reimplement the huge amount of UI logic that is, for instance, in GTK+</p></blockquote>
<p>That is why you can embed Clutter inside a GTK+ application, and hopefully you&#8217;ll soon be able to embed GTK+ widgets inside Clutter.</p>
<p>In short: Clutter was never meant or designed or developed to be a complete replacement for GTK+ on the desktop. On the desktop is an API for allowing hardware accelerated UIs embedded into current applications (photo slide shows for Eog; music library browsing for Rhythmbox; login user browser for GDM; and these are just the first items that come to mind). In the mobile environment arena, Clutter is meant to be used as a cornerstone - along with GLib, GStreamer and the rest of the GNOME mobile stack - for developing a new kind of UI, where the desktop guidelines and style don&#8217;t apply.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/03/let-it-take-you/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Travelling Band/Back</title>
		<link>http://log.emmanuelebassi.net/archives/2008/02/travelling-bandback/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/02/travelling-bandback/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 22:03:31 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>fosdem</category>

		<category>clutter</category>

		<category>conference</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/02/travelling-bandback/</guid>
		<description><![CDATA[finally, back at home after FOSDEM 2008. the last leg of the trip back from Bruxelles has been exceptionally longer because the London Metropolitan Network on weekends is, apparently, made of fail.
the Clutter talk on saturday went, in my opinion, quite well; lots of people listened to my ramblings and watched my simple slide show. [...]]]></description>
			<content:encoded><![CDATA[<p>finally, back at home after FOSDEM 2008. the last leg of the trip back from Bruxelles has been exceptionally longer because the London Metropolitan Network on weekends is, apparently, made of fail.</p>
<p>the <a href="http://www.clutter-project.org">Clutter</a> talk on saturday went, in my opinion, quite well; lots of people listened to my ramblings and watched my simple slide show. about the talk: it was my first with a slightly modified <a href="http://en.wikipedia.org/wiki/Lawrence_Lessig">Lessig method</a> approach and I have to say that it&#8217;s been a very satisfactory experience - nonetheless because it removes the need to put slides online, which I never end up doing anyway<sup><a href="#footnote-1-243" id="footnote-link-1-243" class="footnote-link footnote-identifier-link" title="I&#8217;ve got a git repository with the small application I wrote to give the talk with, so if you want it you can always ask me for the URL to clone">1</a></sup>.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-243" class="footnote">I&#8217;ve got a git repository with the small application I wrote to give the talk with, so if you want it you can always ask me for the URL to clone [<a href="#footnote-link-1-243" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/02/travelling-bandback/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Enterlude</title>
		<link>http://log.emmanuelebassi.net/archives/2008/02/enterlude/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/02/enterlude/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 14:51:04 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>announce</category>

		<category>clutter</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/02/enterlude/</guid>
		<description><![CDATA[I&#8217;ve just sent this to the Clutter mailing list, but I guess that more exposure is fine
as some of you might already know, we have started working on a reference &#8220;toolkit&#8221; based on Clutter called Tidy.
Tidy is a simple library containing some useful actors and interfaces which can be used by applications developers; it aims [...]]]></description>
			<content:encoded><![CDATA[<p><em>I&#8217;ve just sent this to the Clutter mailing list, but I guess that more exposure is fine</em></p>
<p>as some of you might already know, we have started working on a reference &#8220;toolkit&#8221; based on Clutter called Tidy.</p>
<p>Tidy is a simple library containing some useful actors and interfaces which can be used by applications developers; it aims to be simple and yet provide some high-level classes that Clutter won&#8217;t provide.</p>
<p>it is by no mean complete, or aiming to replace other toolkits; you can think of it as a reference implementation for a toolkit based on Clutter.</p>
<p>Tidy works as a standalone toolkit, but it can also be used as a copy-and-paste repository, like libegg for the gtk+ stack; because of this, it doesn&#8217;t provide any kind of API or ABI guarantee, and it probably won&#8217;t be released in form of tarballs. it can be seen as a constant work in progress.</p>
<p>right now, Tidy is composed of these classes:</p>
<ul>
<li>TidyActor - a base actor class, implementing stylable actors, with padding and alignment</li>
<li>TidyButton - a simple button class</li>
<li>TidyFrame - a container capable of aligning its only child</li>
<li>TidyListView - a list view using <code>ClutterModel</code> to introspect its structure and contents
<ul>
<li>TidyCellRenderer - base cell renderer class</li>
<li>TidyCellRendererDefault - default cell renderer</li>
<li>TidyListColumn - base column class</li>
<li>TidyListColumnDefault - default column</li>
</ul>
</li>
<li>TidyTextureFrame - a texture that efficiently clones a background image so that it can stretch the entire size allocation</li>
<li>TidyProxyTexture - a texture class that efficiently caches the source file
<ul>
<li>TidyTextureCache - a cache for textures loaded from on-disk data</li>
</ul>
</li>
<li>TidyTextureReflection - an actor using GL to compute a reflection of the parent texture (imported from the toys)</li>
<li>TidyStylable - base interface for stylable objects
<ul>
<li>TidyStyle - storage class for a style</li>
</ul>
</li>
<li>TidyScrollable - base interface for scrollable actors
<ul>
<li>TidyAdjustment - object for clamping a value between two boundaries (with quantum increments support)</li>
<li>TidyScrollBar - scroll bar actor controlling an adjustment</li>
<li>TidyViewport - scrollable viewport controlled by a pair of adjustments</li>
</ul>
</li>
</ul>
<p><strong>Update@2008-02-07T10:01Z</strong>: after this announcement, <a href="http://chrislord.net/blog/">Chris</a> added two new actors:</p>
<ul>
<li>TidyScrollView - a viewport with scoll bars</li>
<li>TidyFingerScroll - a viewport with kinetic scrolling</li>
</ul>
<p>Plus a lot of bug fixes.</p>
<p>there are examples for basically every class and functionality under the tests/ directory.</p>
<p>since everybody want screencasts these days:</p>
<div style="text-align:center">
<ul style="list-style-type:none">
<li style="float:left;padding-right:10px;"><a href="http://folks.o-hand.com/ebassi/tidy-style-buttons.ogg"><img src="http://folks.o-hand.com/ebassi/tidy-style-buttons-thumb.png"/></a></li>
<li style="float:left;padding-right:10px;"><a href="http://folks.o-hand.com/ebassi/tidy-viewport.ogg"><img src="http://folks.o-hand.com/ebassi/tidy-viewport-thumb.png"/></a></li>
<li style="float:left;padding-right:10px;"><a href="http://folks.o-hand.com/ebassi/tidy-list-view.ogg"><img src="http://folks.o-hand.com/ebassi/tidy-list-view-thumb.png"/></a></li>
</ul>
</div>
<div style="clear:both"> </div>
<p>this is still in the prototyping stage; meaning: if it breaks (and it will break) you get to keep both the pieces. also, there are rough edges and missing functionality. we&#8217;ll keep working on it and adding new classes between now and Clutter 0.6 (and after), and also use Tidy as a testing ground for Clutter functionality and staging ground for actors/data structures/interfaces.</p>
<p>you can check out Tidy from SVN using:</p>
<pre>
  svn co http://svn.o-hand.com/repos/tidy/trunk tidy
</pre>
<p>or browse the repository from your web browser via:</p>
<pre>
  <a href="http://svn.o-hand.com/repos/tidy/trunk/">http://svn.o-hand.com/repos/tidy/trunk/</a> (raw)
  <a href="http://svn.o-hand.com/view/tidy/trunk/">http://svn.o-hand.com/view/tidy/trunk/</a> (viewcvs)
</pre>
<p>in other, Clutter-related news:</p>
<ul>
<li>Iain has been working on a <a href="http://blogs.gnome.org/iain/2008/02/04/never-thought-youd-write-a-browser-cos-html-is-so-passe/">Clutter and WebKit-based browser actor</a>; you&#8217;ll find a very cool screencast of it on Iain&#8217;s blog.</li>
<li>In Clutter trunk we landed initial support for <acronym title="Frame Buffer Object">FBO</acronym>s and we&#8217;re fixing bugs/updating bindings/updating documentation toward the 0.6.0 release.</li>
<li>It&#8217;s a bit old, but I&#8217;ve been updating the Vala bindings for Clutter and Clutter-GTK, so you can now use all the bling with Vala; you&#8217;ll need Vala trunk, but it&#8217;s worth it.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/02/enterlude/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kingdom of Spain</title>
		<link>http://log.emmanuelebassi.net/archives/2008/01/kingdom-of-spain/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/01/kingdom-of-spain/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 23:14:37 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>General</category>

		<category>announce</category>

		<category>clutter</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/01/kingdom-of-spain/</guid>
		<description><![CDATA[Clutter: Today I released the first developers snapshot of Clutter 0.6 - Clutter 0.5.0. The full announcement is on the Clutter blog, and since it&#8217;s very long, I won&#8217;t copy and paste it here. You can grab 0.5.0 here; as usual, this is a unstable snapshot, and it&#8217;s meant to be used to play with [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Clutter</strong>: Today I released the first developers snapshot of Clutter 0.6 - Clutter 0.5.0. The <a href="http://www.clutter-project.org/blog/?p=39">full announcement</a> is on the Clutter blog, and since it&#8217;s very long, I won&#8217;t copy and paste it here. You can grab 0.5.0 <a href="http://www.clutter-project.org/sources/clutter/0.5/">here</a>; as usual, this is a unstable snapshot, and it&#8217;s meant to be used to play with the new API, start binding it and find the inevitable bugs that might have creeped in - and help us fixing them as well. <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Last week I also went through the huge list of changes, additions and removals in the public API; the result is a collection of seven emails (<a href="http://lists.o-hand.com/clutter/0580.html">1</a>, <a href="http://lists.o-hand.com/clutter/0581.html">2</a>, <a href="http://lists.o-hand.com/clutter/0582.html">3</a>, <a href="http://lists.o-hand.com/clutter/0583.html">4</a>, <a href="http://lists.o-hand.com/clutter/0584.html">5</a>, <a href="http://lists.o-hand.com/clutter/0585.html">6</a> and <a href="http://lists.o-hand.com/clutter/0586.html">7</a>) I sent on the <a href="http://lists.o-hand.com/clutter/">clutter-list</a> - complete of mistakes which I can only attribute to the amount of food, wine and beer I had during the Xmas break.</p>
<p>I&#8217;m incredibly proud of how much Clutter grew since the 0.4 release we did after GUADEC; the amount of bug fixes alone makes it worth to check it out - and the new features list is impressive. A lot happened, and a lot more will happen in the near future; <a href="http://folks.o-hand.com/~ebassi/tidy-button.png">some</a> <a href="http://folks.o-hand.com/~ebassi/tidy-list-view.png">things</a> are already here - but will be announced in due time.</p>
<p>As always, <em>kudos</em> to everyone that has helped by filing bugs and patches; started writing  bindings; and last, but not least, contributed documentation.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/01/kingdom-of-spain/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Stinging Velvet</title>
		<link>http://log.emmanuelebassi.net/archives/2007/10/stinging-velvet/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/10/stinging-velvet/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 19:21:48 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>GNOME</category>

		<category>C</category>

		<category>announce</category>

		<category>clutter</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/10/stinging-velvet/</guid>
		<description><![CDATA[Clutter - If release 0.4 rocked hard, release 0.6 of Clutter will blow your mind away. Just to list some features landed in the past couple of weeks after ClutterScript got in:

new event handling, borrowing from the W3C DOM event - that is, two event phases: capture, which traverses the scene from the stage to [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Clutter</strong> - If release 0.4 rocked hard, release 0.6 of <a href="http://www.clutter-project.org">Clutter</a> will blow your mind away. Just to list some features landed in the past couple of weeks after <code>ClutterScript</code> got in:</p>
<ul>
<li><strong>new event handling</strong>, borrowing from the W3C DOM event - that is, two event phases: <em>capture</em>, which traverses the scene from the stage to the actor that received the event, and <em>bubble</em> which traverses the scene from the actor to the stage. You can block the event chain in any point of both phases by simply returning <code>TRUE</code> in the signal handlers (like GTK+); <em>kudos</em> to <a href="http://butterfeet.org/">mallum</a> and Pippin</li>
<li><strong>improved text scaling</strong>, at least for downscaling at ~50%; <em>kudos</em> to <a href="http://codecave.org/">Pippin</a></li>
<li><strong>build and test on win32</strong> using the SDL backend, complete with VS2005 build files; <em>kudos</em> to <a href="http://www.qoheleth.uklinux.net/blog/">tf</a></li>
<li><strong>time-based timelines</strong>, so you can define a <code>ClutterTimeline</code> by giving its length in milliseconds; and without even breaking the API.</li>
</ul>
<p>Still, there&#8217;s plenty more coming - so keep looking at <code>trunk</code>.</p>
<p><strong>JSON-GLib</strong> - The <a href="http://folks.o-hand.com/~ebassi/docs/json-glib/">code base</a> has been consolidated a lot while working on <code>ClutterScript</code>, so I feel confident about making a release of the out-of-tree repository. The release is bagged, tagged and signed as <code>json-glib-0.2.1</code> in the git repository<sup><a href="#footnote-1-233" id="footnote-link-1-233" class="footnote-link footnote-identifier-link" title="As usual, at http://folks.o-hand.com/~ebassi/git/json-glib.git">1</a></sup>. You can grab the tarball <a href="http://folks.o-hand.com/~ebassi/sources/json-glib-0.2.1.tar.gz">here</a>. Work on seamless <code>GObject</code>-JSON (de)serialization will continue in the master branch towards a 0.4.0 release. <strong>Update@2007-10-16T23:30+0100</strong>: obviously, as soon as I got back home and checked the repository I found two bugs in the generator code; hence, <em>brown paper bag release</em> 0.2.1. Tarball, documentation and tag updated.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-233" class="footnote">As usual, at http://folks.o-hand.com/~ebassi/git/json-glib.git [<a href="#footnote-link-1-233" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/10/stinging-velvet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rome Wasn&#8217;t Built in a Day</title>
		<link>http://log.emmanuelebassi.net/archives/2007/10/rome-wasnt-built-in-a-day/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/10/rome-wasnt-built-in-a-day/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 09:33:39 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>developer</category>

		<category>clutter</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/10/rome-wasnt-built-in-a-day/</guid>
		<description><![CDATA[People often arrive on the #clutter channel1 with troubles building Clutter from SVN: dependencies, installation in non-common prefixes, etc.
Luckily, GNOME has Jhbuild, which is easy to set up2 and also allows custom modulesets for handling dependencies inside a separate root - to avoid messing up your box.
So, if you want to play with Clutter, here&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>People often arrive on the <code>#clutter</code> channel<sup><a href="#footnote-1-232" id="footnote-link-1-232" class="footnote-link footnote-identifier-link" title="IRC: irc.gnome.org - join today!">1</a></sup> with troubles building <a href="http://www.clutter-project.org">Clutter</a> from SVN: dependencies, installation in non-common prefixes, etc.</p>
<p>Luckily, GNOME has <a href="http://live.gnome.org/Jhbuild">Jhbuild</a>, which is easy to set up<sup><a href="#footnote-2-232" id="footnote-link-2-232" class="footnote-link footnote-identifier-link" title="the wiki page linked has it running in less than ten easy steps">2</a></sup> and also allows custom modulesets for handling dependencies inside a separate root - to avoid messing up your box.</p>
<p>So, if you want to play with Clutter, here&#8217;s two Jhbuild modulesets:</p>
<ul>
<li><a href="http://folks.o-hand.com/~ebassi/clutter-0.4.modules">clutter-0.4.modules</a> - for the stable branch of Clutter, if you are developing applications</li>
<li><a href="http://folks.o-hand.com/~ebassi/clutter-0.6.modules">clutter-0.6.modules</a> - for the development branch of Clutter, if you want to contribute to Clutter itself, or you want to write bindings for it</li>
</ul>
<p>Just download the moduleset file of the branch you want to use, copy it into the <code>modulesets</code> directory of the Jhbuild checkout and then:</p>
<pre>
  jhbuild -m clutter-0.4 build pyclutter
</pre>
<p>or, if you have a fresh checkout of Jhbuild, simply do:</p>
<pre>
  jhbuild -m http://folks.o-hand.com/~ebassi/clutter-0.4.modules build pyclutter
</pre>
<p><em>thanks to Frederic Peters for fixing remote modulesets and pointing this out</em></p>
<p>The command lines above will build the stable Python bindings for the stable branch of Clutter, fetching all the needed dependencies. If you&#8217;re stuck on some external dependency, though, feel free to drop into <code>#clutter</code> and ask for help<sup><a href="#footnote-3-232" id="footnote-link-3-232" class="footnote-link footnote-identifier-link" title="be sure to specify which distribution you have">3</a></sup>.</p>
<p><strong>Update@2007-10-12T17:51+0100</strong>: I&#8217;ve added the following meta-packages:</p>
<ul>
<li><em>meta-clutter-core</em>, depending on Clutter</li>
<li><em>meta-clutter-suite</em>, depending on <em>meta-clutter-core</em>, Clutter-GStreamer, Clutter-GTK+ and Clutter-Cairo</li>
<li><em>meta-clutter-python</em>, depending on <em>meta-clutter-suite</em> and PyClutter</li>
</ul>
<p>You can use the meta-packages to pull in everything you need. As soon as I figure out a way to reliably depend on the other languages runtime environments, I&#8217;ll probably add their own meta-packages and a <em>meta-clutter-bindings</em> as well.</p>
<p>Have fun!
</p>
<ol start="1" class="footnotes"><li id="footnote-1-232" class="footnote">IRC: irc.gnome.org - join today! [<a href="#footnote-link-1-232" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-232" class="footnote">the wiki page linked has it running in less than ten easy steps [<a href="#footnote-link-2-232" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-3-232" class="footnote">be sure to specify which distribution you have [<a href="#footnote-link-3-232" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/10/rome-wasnt-built-in-a-day/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
