<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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>Iocane powder</title>
	<link>http://blogs.gnome.org/xan</link>
	<description>Just another GNOME Blogs weblog</description>
	<pubDate>Sat, 19 Apr 2008 22:01:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>History Meme</title>
		<link>http://blogs.gnome.org/xan/2008/04/19/history-meme/</link>
		<comments>http://blogs.gnome.org/xan/2008/04/19/history-meme/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 22:01:43 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2008/04/19/history-meme/</guid>
		<description><![CDATA[Dr. Vollmer&#8217;s Cut:
$ history &#124; awk ‘{a[$2]++}END{for(i in a){print a[i] ” ” i}}’ &#124; sort -rn &#124; head
1 emacs
]]></description>
			<content:encoded><![CDATA[<p><code><a href="http://mariusv.wordpress.com/2008/04/19/history-meme/">Dr. Vollmer&#8217;s</a> Cut:</code></p>
<p><code>$ history | awk ‘{a[$2]++}END{for(i in a){print a[i] ” ” i}}’ | sort -rn | head<br />
1 emacs</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2008/04/19/history-meme/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Joining LiTL</title>
		<link>http://blogs.gnome.org/xan/2008/04/14/joining-litl/</link>
		<comments>http://blogs.gnome.org/xan/2008/04/14/joining-litl/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 16:33:57 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[gnome]]></category>

		<category><![CDATA[job]]></category>

		<category><![CDATA[litl]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2008/04/14/joining-litl/</guid>
		<description><![CDATA[Let&#8217;s play by the rules:
Who? Havoc and some other guys. And myself. And some other people without a blog (hello jobi).
What? I&#8217;m joining LiTL.
Where? Ye Olde London Town.
When? Next week, actually.
Why? To do The Right Thing. Or maybe it was the other way around? For the details you&#8217;ll have to wait, but I hope it&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s play by <a href="http://en.wikipedia.org/wiki/5_Ws">the rules</a>:</p>
<p>Who? <a href="http://log.ometer.com/">Havoc</a> and some <a href="http://blogs.gnome.org/lucasr/">other</a> <a href="http://blogs.gnome.org/tko">guys</a>. And myself. And some other people without a blog (hello jobi).</p>
<p>What? I&#8217;m joining <a href="http://www.litl.com">LiTL</a>.</p>
<p>Where? Ye Olde <a href="http://en.wikipedia.org/wiki/London">London</a> Town.</p>
<p>When? Next week, actually.</p>
<p>Why? To do <a href="http://www.ccil.org/jargon/jargon_33.html#TAG1507">The Right Thing</a>. Or maybe it was the <a href="http://www.jwz.org/doc/worse-is-better.html">other way around</a>? For the details you&#8217;ll have to wait, but I hope it&#8217;ll be worth it; or better yet, you could <a href="http://litl.com/jobs/index.html">join the company</a> <img src='http://blogs.gnome.org/xan/wp-content/mu-plugins/tango-smilies/face-smile.png' alt=':)' class='wp-smiley' width='16' height='16' /> </p>
<p>P.S: <a href="http://en.wikipedia.org/wiki/Second_Spanish_Republic">¡Feliz Día! </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2008/04/14/joining-litl/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Epiphany ♥ WebKit</title>
		<link>http://blogs.gnome.org/xan/2008/04/06/epiphany-%e2%99%a5-webkit/</link>
		<comments>http://blogs.gnome.org/xan/2008/04/06/epiphany-%e2%99%a5-webkit/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 22:25:25 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2008/04/06/epiphany-%e2%99%a5-webkit/</guid>
		<description><![CDATA[When I said a few weeks ago that an important announcement would be made about the future of Epiphany some people told me it was really obvious what was coming. Seeing the reaction of some to the now public announcement, it seems there&#8217;s still some room for disbelief. Maybe the date didn&#8217;t help too much, [...]]]></description>
			<content:encoded><![CDATA[<p>When I <a href="http://blogs.gnome.org/xan/2008/03/16/advancements-in-gtk-flavored-web-engines/">said a few weeks ago</a> that an important announcement would be made about the future of Epiphany some people told me it was really obvious what was coming. Seeing the reaction of some to the now <a href="http://mail.gnome.org/archives/epiphany-list/2008-April/msg00000.html">public announcement</a>, it seems there&#8217;s still some room for disbelief. Maybe the date didn&#8217;t help too much, but hey, the whole point of April the 1st is to make you doubt. If all the news are obviously false it&#8217;s not really that much fun.</p>
<p>So, yes:</p>
<ul>
<li>Starting from now Epiphany trunk is WebKit only, and we&#8217;ll slowly get rid of the abstraction layer.</li>
<li>We aim to release an usable browser for 2.24, but if we can&#8217;t make it the 2.22 branch will be released instead. The 2.22 branch will be maintained as long as it&#8217;s needed.</li>
<li>We have started (thanks Diego!) a <a href="http://live.gnome.org/Epiphany/WebKit/TODO">TODO list</a> for the WebKit backend. I&#8217;ll try to work more on this in the coming days.</li>
<li>Help, as usual, is welcome!</li>
</ul>
<p>I should have blogged about this before, but I spent the whole week abroad working on some world domination stuff. Should blog about that soon too&#8230; (guys, nudge nudge, wake up).</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2008/04/06/epiphany-%e2%99%a5-webkit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Leaving Nokia</title>
		<link>http://blogs.gnome.org/xan/2008/03/19/leaving-nokia/</link>
		<comments>http://blogs.gnome.org/xan/2008/03/19/leaving-nokia/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 13:14:46 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[leaving]]></category>

		<category><![CDATA[nokia]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2008/03/19/leaving-nokia/</guid>
		<description><![CDATA[I&#8217;ll be leaving Nokia by the end of next. It&#8217;s been a sometimes fun, sometimes strange ride, but it&#8217;s time to move on to new and bigger (or maybe not so big?) challenges.
Long live to the three-letter toolkit team! (fer, mdk, tko, luc, xan).
 Update:  Now, that&#8217;s a coincidence
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be leaving Nokia by the end of next. It&#8217;s been a sometimes fun, sometimes strange ride, but it&#8217;s time to move on to new and bigger (or maybe not so big?) challenges.</p>
<p>Long live to the three-letter toolkit team! (<a href="http://www.gnome.org/~fherrera/blog/">fer</a>, <a href="http://www.mdk.org.pl/">mdk</a>, <a href="http://blogs.gnome.org/tko">tko</a>, <a href="http://oluc.blogspot.com">luc</a>, <a href="http://blogs.gnome.org/xan">xan</a>).</p>
<p><strong> Update</strong>:  Now, <a href="http://blogs.gnome.org/lucasr/2008/03/19/leaving-nokia/">that&#8217;s</a> a <a href="http://blogs.gnome.org/tko/2008/03/19/leaving-nokia/">coincidence</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2008/03/19/leaving-nokia/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Advancements in GTK+-flavored Web Engines</title>
		<link>http://blogs.gnome.org/xan/2008/03/16/advancements-in-gtk-flavored-web-engines/</link>
		<comments>http://blogs.gnome.org/xan/2008/03/16/advancements-in-gtk-flavored-web-engines/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 01:05:45 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[berlin]]></category>

		<category><![CDATA[epiphany]]></category>

		<category><![CDATA[gnome]]></category>

		<category><![CDATA[gtk]]></category>

		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2008/03/16/advancements-in-gtk-flavored-web-engines/</guid>
		<description><![CDATA[Already back from the Berlin GTK+ Hackfest (managed to not blog even once from there, a bit lame). All the awesomeness that happened has been covered by our fantastic hackers, so I&#8217;ll focus an what happened in the &#8221;Web Room&#8221;, where hacking on webkit/gtk+ and epiphany with tko, alp and chpe went on all week [...]]]></description>
			<content:encoded><![CDATA[<p>Already back from the <a href="http://live.gnome.org/action/login/GTK+/Hackfest2008/">Berlin GTK+ Hackfest</a> (managed to not blog even once from there, a bit lame). All the awesomeness that happened has been covered by our fantastic hackers, so I&#8217;ll focus an what happened in the &#8221;Web Room&#8221;, where hacking on webkit/gtk+ and epiphany with <a href="http://blogs.gnome.org/tko/">tko</a>, <a href="http://www.atoker.com/blog/">alp</a> and chpe went on all week long.</p>
<p>We did some great advancements that week: we landed the <a href="http://bugs.webkit.org/show_bug.cgi?id=15229">pango font backend</a>, the <a href="http://bugs.webkit.org/show_bug.cgi?id=16476">soup http backend</a>, more progress on the plugin patch (first time I personally see youtube working on webkit/gtk), plans for glib-based unicode management, better windows support for the GTK+ port, a long nice chat with <a href="http://blogs.gnome.org/otte/">Company</a> about native flash integration with swfdec&#8230; we also had some long discusions about the future of Epiphany, and an announcement will be made soon <img src='http://blogs.gnome.org/xan/wp-content/mu-plugins/tango-smilies/face-smile.png' alt=':)' class='wp-smiley' width='16' height='16' /> </p>
<p>By the end of the week I decided to get started with the cookies support for the soup backend. When I had a working parser (based on code from the old gtk-webcore, really nice) I decided to contact Dan Winship to talk about my plans. As it usually happens, he already had most of the work done, which he kindly published on a branch (see the <a href="http://bugzilla.gnome.org/show_bug.cgi?id=522125">bug</a>). Around this point I got hit by libc &#8216;<a href="https://launchpad.net/bugs/201673">happenings</a>&#8216; in Ubuntu, and I spent most of the remaining hackfest time restoring my laptop.</p>
<p>Anyway, already on lovely Finnish soil and while waiting for a movie in a nice cafeteria near <a href="http://www.kamppi.fi/">Kamppi</a> I fixed some bugs in the libsoup code for cookies, massaged some APIs and added enough glue in WebKit to get this going:</p>
<p><a href="http://blogs.gnome.org/xan/files/2008/03/ihascookies.png" title="hildon"><img src="http://blogs.gnome.org/xan/files/2008/03/ihascookies.png" alt="I Has Cookies" align="middle" height="258" width="337" /></a></p>
<p>When we finish and commit this and get authentication going (integrated with GNOME Keyring of course!) I think I&#8217;ll switch to it as main browser; brave souls from all over are of course welcome to do the same so we can find and fix as many bugs as possible before 2.24. Exciting times ahead!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2008/03/16/advancements-in-gtk-flavored-web-engines/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Facts in the Case of Mr. Epifanio Navegared</title>
		<link>http://blogs.gnome.org/xan/2007/12/14/the-facts-in-the-case-of-mr-epifanio-navegared/</link>
		<comments>http://blogs.gnome.org/xan/2007/12/14/the-facts-in-the-case-of-mr-epifanio-navegared/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 23:40:50 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2007/12/14/the-facts-in-the-case-of-mr-epifanio-navegared/</guid>
		<description><![CDATA[It&#8217;s been almost 5 months since the last time I blogged about Epiphany. Attentive followers may have noticed that there hasn&#8217;t been any Epiphany releases in the 2.21.x cycle so far; why? I&#8217;m glad you ask!
First, the GtkMozEmbed situation was a bit chaotic, and we were not really sure if we&#8217;d manage to have trunk [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been <a href="http://blogs.gnome.org/xan/2007/07/24/if-you-see-the-buddha-on-the-road-port-it-to-gtk/">almost 5 months</a> since the last time I blogged about Epiphany. Attentive followers may have noticed that there hasn&#8217;t been any Epiphany releases in the 2.21.x cycle so far; why? I&#8217;m glad you ask!</p>
<p>First, the GtkMozEmbed situation was a bit chaotic, and we were not really sure if we&#8217;d manage to have trunk in release quality levels by 2.22. Thankfully it seems the embed code will <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=408238">travel in time</a> a bit, which will allow us to not take any drastic meassure<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=408238"></a>. With that sorted out it seems likely know that Epiphany 2.22 will simply support both Gecko 1.8 and 1.9 through the archane but well known art known as &#8220;massive #ifdef mess from Hell&#8221;.</p>
<p>Second: WebKit! A <strong>lot</strong> has happened since July:</p>
<ul>
<li>The embed code went through a massive refactoring: after quite a few late night hacking sessions, tens of thousands of lines of code touched, the final demise of EphyTab and other events, now it&#8217;s much easier to implement in a sane way more complete backends for the browser. As a result of this, many previously missing features of the WebKit port started to work with no need of new APIs on the engine side.</li>
<li>The Epiphany team has grown a few more wizards: thanks to Cosimo, Cyril, Jan and all the others who have recently helped with code, translations or support.</li>
<li>WebKit/GTK+ itself is progressing at an astonishing pace: there is a great team, patches and features flow every day, and the Apple engineers are extremely helpful and supportive. There&#8217;s always something to do, so come to #webkit and #webkit-gtk on <a href="http://freenode.net/">FreeNode</a> an <a href="http://trac.webkit.org/projects/webkit/wiki/HackingGtk">join the party</a>. Go WebKit/GTK+ team!</li>
</ul>
<p>So: 2.21.4 will be released this weekend. Get it, test it, the WebKit backend works now much better than the code we shipped in 2.20.x. 2.22 will be released, as always, <a href="http://live.gnome.org/TwoPointTwentyone">to the day</a>; Mozila backend will be as awesome as usual and hopefully WebKit&#8217;s will be more or less dogfood-quality by then. But, 2.24? Man. 2.24 is going to be so awesome<a href="http://perkypants.org/"> Jeff Waugh</a> has promised he will personally go to your house and recite &#8220;Dónde están mis pantalones&#8221; in 25 languages when you download it. Honest.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2007/12/14/the-facts-in-the-case-of-mr-epifanio-navegared/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Cyclomatic Horror From Outer Space</title>
		<link>http://blogs.gnome.org/xan/2007/10/25/the-cyclomatic-horror-from-outer-space/</link>
		<comments>http://blogs.gnome.org/xan/2007/10/25/the-cyclomatic-horror-from-outer-space/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 17:26:35 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2007/10/25/the-cyclomatic-horror-from-outer-space/</guid>
		<description><![CDATA[I don&#8217;t really remember how we got there, but a couple of days ago at the office we ended up talking about the complexity of the codebase we have to deal with. Tommi mentioned the McCabe cyclomatic complexity, &#8220;which may be considered a broad measure of soundness and confidence for a program&#8220;. According to the [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t really remember how we got there, but a couple of days ago at the office we ended up talking about the complexity of the codebase we have to deal with. <a href="http://blogs.gnome.org/tko">Tommi</a> mentioned the <a href="http://www.sei.cmu.edu/str/descriptions/cyclomatic_body.html">McCabe cyclomatic complexity</a>, &#8220;<em>which </em><font face="Helvetica,Geneva,Arial,Times" size="-1"><em>may be considered a broad measure of <em>soundness</em> and <em>confidence</em> for a program</em>&#8220;. According to the <a href="http://en.wikipedia.org/wiki/Cyclomatic_complexity">Wikipedia article</a> it &#8220;</font><em>directly measures the number of linearly independent paths through a program&#8217;s <a href="http://en.wikipedia.org/wiki/Source_code" title="Source code">source code</a></em>&#8220;. And there&#8217;s this little table, with some pre-defined thresholds:</p>
<table border="3">
<tr>
<td><font size="-1"><strong>Cyclomatic<br />
Complexity</strong></font></td>
<td><font size="-1"><strong>Risk<br />
Evaluation</strong></font></td>
</tr>
<tr>
<td><font size="-1">1-10</font></td>
<td><font size="-1">a simple program, without much<br />
risk</font></td>
</tr>
<tr>
<td><font size="-1">11-20</font></td>
<td><font size="-1">more complex, moderate risk</font></td>
</tr>
<tr>
<td><font size="-1">21-50</font></td>
<td><font size="-1">complex, high risk program</font></td>
</tr>
<tr>
<td><font size="-1">greater than 50</font></td>
<td><font size="-1">untestable program (very high<br />
risk)</font></td>
</tr>
</table>
<p>Well, fair enough. You always have to be a little skeptic about this kind of data, but it might give you some insights about a codebase. So &#8220;apt-get install pmccabe&#8221;, a tool to &#8220;<em>calculate McCabe cyclomatic complexity or non-commented line counts for C and C++ programs</em>&#8220;. The man page says:</p>
<p>The obvious application of pmccabe is illustrated by the following which gives a list of the &#8220;top ten&#8221; most complex functions:</p>
<p>pmccabe *.c | sort -nr | head -10</p>
<p>Sounds like fun! Let&#8217;s run it on the gtk/ directory in gtk+&#8230; (drum rolls):</p>
<table border="1">
<tr>
<td><strong>Cyclomatic complexity</strong></td>
<td><strong>Lines of code</strong></td>
<td><strong>Function name</strong></td>
</tr>
<tr>
<td>119</td>
<td>337</td>
<td>gtk_notebook_calculate_tabs_allocation</td>
</tr>
<tr>
<td>119</td>
<td>744</td>
<td>gtk_tree_view_bin_expose</td>
</tr>
<tr>
<td>89</td>
<td>467</td>
<td>gtk_tree_view_column_cell_process_action</td>
</tr>
<tr>
<td>88</td>
<td>545</td>
<td>update_node (in gtkuimanager.c)</td>
</tr>
<tr>
<td>68</td>
<td>404</td>
<td>gtk_tree_view_button_press</td>
</tr>
<tr>
<td>68</td>
<td>381</td>
<td>gtk_toolbar_size_allocate</td>
</tr>
<tr>
<td>64</td>
<td>218</td>
<td>gtk_im_context_simple_filter_keypress</td>
</tr>
<tr>
<td>64</td>
<td>230</td>
<td>gtk_tree_view_key_press</td>
</tr>
<tr>
<td>59</td>
<td>243</td>
<td>gtk_menu_handle_scrolling</td>
</tr>
<tr>
<td>58</td>
<td>175</td>
<td>gtk_clist_motion</td>
</tr>
</table>
<p>Some of the functions are <strong>way</strong> past the threshold for intractability (and all of them surpass it), and GtkTreeView has 4 of the 10 most complex functions in gtk according to McCabe. I suppose you can extract many lessons from here, but I&#8217;ll only give one humble suggestion: we need regression testing for gtk, and we need it yesterday, as it seems that no human being can hack on some parts of gtk without breaking something <img src='http://blogs.gnome.org/xan/wp-content/mu-plugins/tango-smilies/face-smile.png' alt=':)' class='wp-smiley' width='16' height='16' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2007/10/25/the-cyclomatic-horror-from-outer-space/feed/</wfw:commentRss>
		</item>
		<item>
		<title>N810 and new GTK+/Hildon stack</title>
		<link>http://blogs.gnome.org/xan/2007/10/17/n810-and-new-gtkhildon-stack/</link>
		<comments>http://blogs.gnome.org/xan/2007/10/17/n810-and-new-gtkhildon-stack/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 18:33:05 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2007/10/17/n810-and-new-gtkhildon-stack/</guid>
		<description><![CDATA[
As others have alread commented, the new tablet is now out. But I&#8217;m a software guy, so I&#8217;ll talk about the software it runs and let others dissect the hardware.
As Michael says we had to break the API to unfuck cleanup the mess that was our stack until now. This sucks, but I think the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.gnome.org/xan/files/2007/10/hildon-m-en-s-thumb.jpg" title="hildon"><img src="http://blogs.gnome.org/xan/files/2007/10/hildon-m-en-s-thumb.jpg" alt="hildon" /></a></p>
<p>As <a href="http://www.mdk.org.pl/2007/10/17/nokia-n810-announced" title="others">others</a> have alread commented, the new tablet is now out. But I&#8217;m a software guy, so I&#8217;ll talk about the software it runs and let others dissect the hardware.</p>
<p>As Michael says we had to break the API to <strike>unfuck</strike> cleanup the mess that was our stack until now. This sucks, but I think the benefits are worth it: we now use a slightly modified (but ABI compatible, unlike before) GTK+ 2.10.12, the most egregious crack is gone from Hildon, you have cairo, which is used to render almost all the text you see on the device (but use it with moderation please, it&#8217;s not a speed demon yet :)), the theming infrastructure is greatly improved, etc.</p>
<p>The <a href="http://live.gnome.org/Maemo/Gtk210Changes">differences</a> in our GTK+ are documented for a change, and there&#8217;s an on-going effort to provide a coherent start page for the platform at <a href="http://live.gnome.org/Hildon/">live.gnome.org/Hildon</a>. Now we need the validation of the community, so please <a href="https://stage.maemo.org/svn/maemo/projects/haf/trunk/hildon-audit/">port</a> your apps and write new and excellent free software for Hildon.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2007/10/17/n810-and-new-gtkhildon-stack/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GTK+ hacking with Emacs, a small trick</title>
		<link>http://blogs.gnome.org/xan/2007/10/08/gtk-hacking-with-emacs-a-small-trick/</link>
		<comments>http://blogs.gnome.org/xan/2007/10/08/gtk-hacking-with-emacs-a-small-trick/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 20:20:22 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2007/10/08/gtk-hacking-with-emacs-a-small-trick/</guid>
		<description><![CDATA[I always like to read others people hacking tips, mostly because I suck a lot at using any tool correctly and I am almost always enlightened by them. Today I&#8217;ll try to contribute one small trick to the pool.
I remember the last time I posted something about gtk-look.el, someone asked me: &#8220;Why would you want [...]]]></description>
			<content:encoded><![CDATA[<p>I always like to read others people hacking tips, mostly because I suck a lot at using any tool correctly and I am almost always enlightened by them. Today I&#8217;ll try to contribute one small trick to the pool.</p>
<p>I remember the last time I posted something about <a href="http://blogs.gnome.org/xan/2007/04/13/origami-rose/" title="gtk-look.el">gtk-look.el</a>, someone asked me: &#8220;Why would you want to use that? You know about devhelp right?&#8221;. My answer at that point was &#8220;It&#8217;s faster and I like to get the help inside emacs if it&#8217;s possible&#8221;. Those are quite valid points on their own, but today I can add more benefits: meet <a href="http://www.emacswiki.org/cgi-bin/wiki/Icicles" title="Icicles">Icicles</a>.</p>
<p>The short description of Icicles is that it adds super-powers to any emacs mini-buffer interaction, among other things. But as always, an example is more instructive than a thousand words.</p>
<p>Say we are merrily hacking on our GTK+ application with GtkTreeView (a classical mistake), and we have, as always, forgotten how to set a treeview in multiple selection mode. No problem, let&#8217;s look it up. First, we press C-h C-j , bind in our box to &#8216;gtk-look&#8217;. After that we type &#8217;selection&#8217;, as we&#8217;re pretty sure the function will contain that name.</p>
<p><a href="http://blogs.gnome.org/xan/files/2007/10/selection.png" title="selection"><img src="http://blogs.gnome.org/xan/files/2007/10/selection.png" alt="selection" /></a></p>
<p>Now we press S-TAB, which is Apropos-Complete in Icicles (ie, show me any string that contains my input).</p>
<p><a href="http://blogs.gnome.org/xan/files/2007/10/stab.png" title="S-TAB"><img src="http://blogs.gnome.org/xan/files/2007/10/stab.thumbnail.png" alt="S-TAB" /></a></p>
<p>Well, there&#8217;s quite a few huh? No problem, let&#8217;s narrow the search with M-*, aka Match-Also-Regexp. This will filter our result with everthing than does not match our input, akin to adding an extra grep to end of a pipe in a shell. So, as we are interested in GtkTreeView, we do M-* tree S-TAB:</p>
<p><a href="http://blogs.gnome.org/xan/files/2007/10/narrow.png" title="Narrow it down"><img src="http://blogs.gnome.org/xan/files/2007/10/narrow.png" alt="Narrow it down" /></a></p>
<p>That&#8217;s better! In fact I think I see what I want now, gtk_tree_selection_set_mode. So once more&#8230; M-* set_mode S-TAB&#8230; There&#8217;s only one hit now, so Icicles will select it automatically for us in the mini-buffer:</p>
<p><a href="http://blogs.gnome.org/xan/files/2007/10/bingo.png" title="Bingo"><img src="http://blogs.gnome.org/xan/files/2007/10/bingo.png" alt="Bingo" /></a></p>
<p>Enter, and we open it in our browser of choice (w3m for emacs here):</p>
<p><a href="http://blogs.gnome.org/xan/files/2007/10/doc.png" title="Doc"><img src="http://blogs.gnome.org/xan/files/2007/10/doc.png" alt="Doc" /></a></p>
<p>Yep, that was it.</p>
<p>Of course the beauty of this is that we did all that pretty fast and without moving our hands from the keyboard.</p>
<p>There are other cool things here, like the ability to save any completion to a cache to speed up things massively. Say, if you hack on GTK+ you are bound to cycle through its docs many times, so save only the gtk API reference search to a cache file and start your completions from there. See <a href="http://www.emacswiki.org/cgi-bin/wiki/Icicles_-_Persistent_Completions" title="Persistent Completions">this</a> for more details.</p>
<p>This of course barely scratches the surface, so if you use emacs I recommend you to spend some time in the <a href="http://www.emacswiki.org/cgi-bin/wiki/Icicles" title="Icicles">Icicles</a> wiki, install it and play with it. You won&#8217;t be disappointed.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2007/10/08/gtk-hacking-with-emacs-a-small-trick/feed/</wfw:commentRss>
		</item>
		<item>
		<title>If you see the Buddha on the road, port it to GTK+</title>
		<link>http://blogs.gnome.org/xan/2007/07/24/if-you-see-the-buddha-on-the-road-port-it-to-gtk/</link>
		<comments>http://blogs.gnome.org/xan/2007/07/24/if-you-see-the-buddha-on-the-road-port-it-to-gtk/#comments</comments>
		<pubDate>Tue, 24 Jul 2007 22:07:05 +0000</pubDate>
		<dc:creator>xan</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/xan/2007/07/24/if-you-see-the-buddha-on-the-road-port-it-to-gtk/</guid>
		<description><![CDATA[Ok, there&#8217;s something to play with now for the very early adopters:

 Checkout Epiphany trunk (http://svn.gnome.org/svn/epiphany/trunk/)
Apply the patch on bug 459333
Checkout WebKit trunk (http://svn.webkit.org/repository/webkit/trunk)
Build and install the GTK port:

cd WebKit


WebKitTools/Scripts/build-webkit &#8211;qmakearg=WEBKIT_INC_DIR=$PREFIX/include/WebKit &#8211;qmakearg=WEBKIT_LIB_DIR=$PREFIX/lib &#8211;gdk
cd WebKitBuild/Release &#38;&#38; make install
For me the path to the pc file was broken and had to fix it in the Makefile, will [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, there&#8217;s something to play with now for the very early adopters:</p>
<ul>
<li> Checkout Epiphany trunk (http://svn.gnome.org/svn/epiphany/trunk/)</li>
<li>Apply the patch on <a href="http://bugzilla.gnome.org/show_bug.cgi?id=459333" title="bug 459333">bug 459333</a></li>
<li>Checkout WebKit trunk (http://svn.webkit.org/repository/webkit/trunk)</li>
<li>Build and install the GTK port:
<ul>
<li>cd WebKit</li>
</ul>
<ul>
<li>WebKitTools/Scripts/build-webkit &#8211;qmakearg=WEBKIT_INC_DIR=$PREFIX/include/WebKit &#8211;qmakearg=WEBKIT_LIB_DIR=$PREFIX/lib &#8211;gdk</li>
<li>cd WebKitBuild/Release &amp;&amp; make install</li>
<li>For me the path to the pc file was broken and had to fix it in the Makefile, will open a bug tomorrow</li>
</ul>
</li>
<li>Compile Epiphany with &#8211;with-engine=webkit flag</li>
<li>I didn&#8217;t say it would be easy</li>
</ul>
<p>If everything succeeds you should be able to launch the browser and load URLs from the entry. Beware that the port is very basic, so almost nothing will work. A lot of work is needed both in ephy and webkit, if you want to help come to #epiphany at irc.gnome.org or #webkit at irc.freenode.org.</p>
<p>Some (IMHO) exciting ideas are on the backburner for WebKit-GTK, so stay tuned. The basic summary would be that this could become the really integrated browser GNOME deserves, down to the engine level.</p>
<p>PS: following the tradition of silly hackergotchies someone might want to use <a href="http://flickr.com/photo_zoom.gne?id=874158255&amp;context=set-72157600965437812&amp;size=l">this</a> for mine. Photo by the crazy Peruvian (aka Diego).</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/xan/2007/07/24/if-you-see-the-buddha-on-the-road-port-it-to-gtk/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
