<?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>ᛏᚦ</title>
	<atom:link href="http://blogs.gnome.org/tthurman/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/tthurman</link>
	<description>Thomas Thurman does not like cold meals because of broken applications.</description>
	<lastBuildDate>Mon, 09 Nov 2009 07:25:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Your mountains so lofty</title>
		<link>http://blogs.gnome.org/tthurman/2009/11/09/your-treetops-so-tal/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/11/09/your-treetops-so-tal/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 07:25:07 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=495</guid>
		<description><![CDATA[There has been quite a bit of discussion on the GNOME wiki about how CSS themes could be improved.  I would very much like your feedback too.  (The section numbers are taken from the Cowbell documentation.)
Also, I am not sure whether to add optional CSS theming support into standard Metacity and then split it [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://spectrum.myriadcolours.com/~marnanel/finland-morning/people.jpg" alt="" width="640" height="360" align="right" />There has been quite a bit of <a href="http://live.gnome.org/Metacity/CowbellDiscussion">discussion on the GNOME wiki</a> about how CSS themes could be improved.  I would very much like your feedback too.  (The section numbers are taken from the <a href="http://people.collabora.co.uk/~tthurman/cowbell/doc/">Cowbell documentation</a>.)</p>
<p>Also, I am not sure whether to add optional CSS theming support into standard Metacity and <em>then</em> split it out into libcowbell so it can be easily used by other WMs, or to do the libcowbell split first.  It&#8217;s probably simpler the second way, but the first brings more immediate and obvious results.</p>
<p>I wrote a poem the other day:</p>
<p><strong>April in Paris</strong></p>
<p><em>The sea lies solid under ice,<br />
The blizzard seldom stops;<br />
The glögi&#8217;s running freely<br />
In friendly coffee-shops;<br />
The trams still run and life goes on<br />
And still I can&#8217;t remember<br />
Why no-one ever calls a song<br />
&#8220;Helsinki in November&#8221;.</em></p>
<p>(It&#8217;s actually far more like this in December, so maybe I should make that the month; but then you&#8217;d all know that I was employing poetic licence. February even more, but then it wouldn&#8217;t rhyme.)</p>
<p>I went to <a href="http://www.anglican.fi/">St Nicholas&#8217;s</a> yesterday, where everyone was very friendly as usual, and they held a minute&#8217;s silence for Remembrance Sunday.  It seems that a lot of people are posting &#8220;what my grandfather did in the war&#8221; stories, so <a href="http://www.bbc.co.uk/ww2peopleswar/stories/26/a9002026.shtml">here are the exploits of my own grandfather, Bob Thurman</a>.</p>
<p>I have expanded my old triolets blog into a site called <a href="http://triolets.org">triolets.org</a>.  Here&#8217;s another I recently wrote for <a href="http://firinel.org">Fin</a>:<br />
<em>To sleep next to you<br />
when the weather is cold<br />
is trusted and true.<br />
To sleep next to you<br />
is decades from new<br />
yet it never grows old<br />
to sleep next to you<br />
when the weather is cold.</em></p>
<p>On the plane over here, and occasionally in the evenings, I played around with automatic translation into <a href="http://shavian.org.uk/">Shavian</a>.  We&#8217;ve had <a href="https://answers.launchpad.net/rosetta/+question/84771">some problems using Launchpad for translation</a>, so I experimented with doing things upstream the old-fashioned way.  Though the translation is automatic, it needs to be hand-checked; otherwise, things like XML elements get translated.  But it&#8217;s a quick and simple thing to do, and<a href="http://l10n.gnome.org/languages/en%40shaw/gnome-2-30/ui/"> I&#8217;ve checked quite a few of them already</a>.  I know some of the people reading this are interested in Shavian, so if you want to join in, <a href="http://www.mail-archive.com/ubuntu-l10n-en-shaw@lists.launchpad.net/msg00007.html">please do</a>.  Once we get GNOME in Shavian, we will of course automatically have GNOME in Deseret, Unifon and Tengwar.  I imagine having everything marked up in a phonemic alphabet might actually be useful for screen readers, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/11/09/your-treetops-so-tal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS on window borders experimental layout language</title>
		<link>http://blogs.gnome.org/tthurman/2009/10/29/css-on-window-borders-experimental-layout-language/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/10/29/css-on-window-borders-experimental-layout-language/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 20:37:21 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=493</guid>
		<description><![CDATA[I&#8217;m happy to announce the first experimental version of Metacity with support for CSS window borders (&#8221;Cowbell&#8221;).  This work was largely supported by Collabora Ltd.
You can:

download the tarball;
read the documentation (it&#8217;s not as boring as you might imagine);
review the source history.

This diagram should explain everything, perhaps.
I would especially like to hear from:

theme artists, to [...]]]></description>
			<content:encoded><![CDATA[<p><a title="cowbell by Craft*ology, on Flickr" href="http://www.flickr.com/photos/abielskas/38635788/"><img src="http://farm1.static.flickr.com/33/38635788_bf5794aecb.jpg" alt="cowbell" width="500" height="393" align="right" /></a>I&#8217;m happy to announce the first experimental version of Metacity with support for CSS window borders (&#8221;Cowbell&#8221;).  This work was largely supported by <a href="http://www.collabora.co.uk">Collabora Ltd</a>.</p>
<p>You can:</p>
<ul>
<li><a href="http://people.collabora.co.uk/~tthurman/cowbell/download/">download the tarball</a>;</li>
<li><a href="http://people.collabora.co.uk/~tthurman/cowbell/doc/index.html">read the documentation</a> (it&#8217;s not as boring as you might imagine);</li>
<li><a href="http://git.gnome.org/cgit/metacity/log/?h=cowbell">review the source history</a>.</li>
</ul>
<p><a href="http://people.collabora.co.uk/~tthurman/cowbell/doc/elements.svg">This diagram should explain everything</a>, perhaps.</p>
<p>I would especially like to hear from:</p>
<ul>
<li>theme artists, to let me know whether it&#8217;s adequately powerful;</li>
<li>anyone else interested in hacking on this with me;</li>
<li>the GTK client-side decoration people, so that we can harmonise the way we represent things;</li>
<li>people who know a lot about CSS and can offer insights into the suitability of the way we represent things;</li>
<li>people who know a lot about the Dublin Core and can offer insights into whether our metadata system uses it appropriately;</li>
<li>maintainers of other window managers (especially Mutter), so we can talk about including CSS support in other window managers;</li>
<li>everyone else, to suggest which of the <a href="http://people.collabora.co.uk/~tthurman/cowbell/doc/x341.html">directions for future development</a> are most interesting.</li>
</ul>
<p>I think it may perhaps be helpful to set up a Cowbell mailing list, so that we can compare notes on implementations.  For example, I haven&#8217;t written down anywhere how to place an image to the right of the title, which is commonly needed (you use <a href="http://www.w3.org/TR/css3-background/#border-images">border-image</a>).</p>
<p><a href="http://www.flickr.com/photos/abielskas/38635788/">Photo</a> &copy; Craft*ology, cc-by-nc.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/10/29/css-on-window-borders-experimental-layout-language/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Wednesday in brief</title>
		<link>http://blogs.gnome.org/tthurman/2009/10/22/wednesday-in-brief/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/10/22/wednesday-in-brief/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 15:40:44 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=487</guid>
		<description><![CDATA[
Spent most of the day hacking CSS and window managers.
Posted a message to the release team, which came back as a haiku.
Later, went with Rio, Katie, and SaraMae to the rather early Halloween parade.
Discovered that triolets.org wasn&#8217;t registered, and registered it in case I ever decide to build a triolet bake-off site where all the [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://marnanel.org/pics/magic"><img src="http://marnanel.org/pics/sm_magic" width="350" height="305" alt="" align="right"/></a>Spent most of the day hacking <a href="http://people.collabora.co.uk/~tthurman/cowbell/">CSS and window managers</a>.</li>
<li>Posted a message to the release team, <a href="http://mail.gnome.org/archives/release-team/2009-October/msg00044.html">which came back as a haiku</a>.</li>
<li>Later, went with <a href="http://rhmt.org">Rio</a>, <a href="http://tajasel.org">Katie</a>, and SaraMae to the rather early Halloween parade.</li>
<li>Discovered that <a href="http://triolets.org">triolets.org</a> wasn&#8217;t registered, and registered it in case I ever decide to build a triolet bake-off site where all the people who love to write triolets can try to build the best one.  On the other hand, <a href="http://blogs.gnome.org/triolets/">maybe there&#8217;d just be me</a> and <a href="http://www.cs.rice.edu/~ssiyer/minstrels/poems/176.html">Hilaire Belloc there</a>.</li>
<li><a href="http://marnanel.org/projects/404sonnet/">I released the 404 sonnet under Creative Commons</a>, but you already heard about that.</li>
<li><a href="http://www.armynavysales.com/p-553-marine-overcoat.aspx">&#8220;Well, they only asked me to crop out the head.&#8221;</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/10/22/wednesday-in-brief/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cowbell, Shavian and a sonnet</title>
		<link>http://blogs.gnome.org/tthurman/2009/10/21/cowbell-shavian-and-a-sonnet/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/10/21/cowbell-shavian-and-a-sonnet/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 17:48:32 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=484</guid>
		<description><![CDATA[I haven&#8217;t posted for a while.  Here are four things:

Collabora have been supporting the CSS-on-window-borders project recently by letting me work on it during work hours.  Here is a status update.
Recent updates to shavian.org.uk include a gentle Shavian tutorial and translations of all the recent XKCDs into Shavian.
Many years ago, I wrote a sonnet for [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t posted for a while.  Here are four things:</p>
<ol>
<li><a href="http://www.collabora.co.uk">Collabora</a> have been supporting <a href="http://people.collabora.co.uk/~tthurman/cowbell/">the CSS-on-window-borders project</a> recently by letting me work on it during work hours.  Here is <a href="http://blogs.gnome.org/metacity/2009/10/21/now-with-more-cowbell/">a status update</a>.</li>
<li>Recent updates to <a href="http://shavian.org.uk">shavian.org.uk</a> include a <a href="http://shavian.org.uk/learn/">gentle Shavian tutorial</a> and <a href="http://shavian.org.uk/xkcd/feed">translations of all the recent XKCDs into Shavian</a>.</li>
<li>Many years ago, I wrote a sonnet for use on a server&#8217;s custom 404 page:<br />
<blockquote><p><em>So many years have passed since first you sought<br />
the lands beyond the edges of the sky,<br />
so many moons reflected in your eye,<br />
(familiar newness, fear of leaving port),<br />
since first you sought, and failed, and learned to fall,<br />
(first hope, then cynicism, silent dread,<br />
the countless stars, still counting overhead<br />
the seconds to your final voyage of all…)<br />
and last, in glory gold and red around<br />
your greatest search, your final quest to know!<br />
yet… ashes drift, the embers cease to glow,<br />
and darkened life in frozen death is drowned;<br />
and ashes on the swell are seen no more.<br />
The silence surges. <strong>Error 404</strong>.</em></p></blockquote>
<p>It&#8217;s been spreading itself around, mostly without my permission, so <a href="http://marnanel.org/projects/404sonnet/">I&#8217;m releasing it under a Creative Commons licence</a>.  Fly free, little sonnet!  Please feel free to copy it onto your own sites, and if you would, let me know you&#8217;ve done so.</li>
<li>I need to write more of the Maemo tutorials.  They will be coming soon.  Sorry; things have been busy.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/10/21/cowbell-shavian-and-a-sonnet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu en@Shaw</title>
		<link>http://blogs.gnome.org/tthurman/2009/10/05/ubuntu-in-shavian/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/10/05/ubuntu-in-shavian/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 02:58:56 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=480</guid>
		<description><![CDATA[There has been a small surge of interest in translating (or transliterating) Ubuntu into the Shavian alphabet, possibly by means of the automated transliterator I mentioned a few weeks ago.
A small team has formed; if anyone else would like to join, they will be most welcome.  I&#8217;m a bit busy to do a huge amount [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://marnanel.org/pics/lj/ubuntu-shavian" alt="" width="162" height="162" align="right" />There has been a small surge of interest in translating (or transliterating) Ubuntu into <a href="http://en.wikipedia.org/wiki/Shavian">the Shavian alphabet</a>, possibly by means of <a href="http://shavian.org.uk/set/">the automated transliterator</a> I mentioned a few weeks ago.</p>
<p><a href="https://launchpad.net/~ubuntu-l10n-en-shaw">A small team has formed</a>; if anyone else would like to join, they will be most welcome.  I&#8217;m a bit busy to do a huge amount of the work, but I am providing support and some of my existing transliteration resources.  Also, <a href="https://wiki.ubuntu.com/ShavianTeam">wiki pages are being worked on</a>.  And discussion, most of it <em>in</em> the alphabet, is continuing on <a href="irc://irc.freenode.net/%23ubuntu-l10n-en-shaw"><tt>#ubuntu-l10n-en-shaw</tt></a> on freenode.  See you there, perhaps.</p>
<p>If this works out, it will be simple to produce <a href="http://en.wikipedia.org/wiki/Deseret_alphabet">Deseret</a> and <a href="http://at.mansbjorkman.net/">Tengwar</a> transliterations of Ubuntu as well.  Is anyone interested in those?</p>
<p>In unrelated news, the book I mentioned in my last post now has <a href="http://borrowable.net">its own website</a>, where you can read <a href="http://borrowable.net/exeat">some of the story</a> for yourself.</p>
<p>(Logo mashup by permission.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/10/05/ubuntu-in-shavian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dragons and hawks</title>
		<link>http://blogs.gnome.org/tthurman/2009/09/27/dragons-and-hawks/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/09/27/dragons-and-hawks/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 02:24:35 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=477</guid>
		<description><![CDATA[A few things which have happened recently:

Katie arrived to spend some time here with us.  It&#8217;s wonderful having her here again.
I&#8217;ve been spending some time preparing a discussion of CSS window border theming which I&#8217;m hoping to run at the Boston summit.
I posted a screencast of robotfindskitten on the N900.
We went to Hawk Mountain [...]]]></description>
			<content:encoded><![CDATA[<p>A few things which have happened recently:</p>
<ul>
<li><a href="http://tajasel.org">Katie</a> arrived to spend some time here with us.  <a href="http://firinel.livejournal.com/2612424.html">It&#8217;s wonderful having her here again.</a></li>
<li>I&#8217;ve been spending some time preparing a discussion of CSS window border theming which I&#8217;m hoping to run at <a href="http://live.gnome.org/Boston2009">the Boston summit</a>.</li>
<li>I posted <a href="http://www.youtube.com/watch?v=gNOYJLvttOY">a screencast of robotfindskitten on the N900</a>.</li>
<li>We went to <a href="http://www.hawkmountain.org">Hawk Mountain</a> today with <a href="http://floatyfish.livejournal.com/profile">Amy</a> and <a href="http://onib.livejournal.com/profile">John</a>.</li>
<li>When we were there, <a href="http://floatyfish.livejournal.com/918800.html">I gave Amy her birthday present</a>, which was <a href="http://www.amazon.com/Not-Ordinarily-Borrowable/dp/1449517544">a book</a> I wrote for her.  It&#8217;s the story of a scholar whose studies are interrupted when her library books are stolen by a dragon.  You can <a href="http://marnanel.org/borrowable">read the first chapter</a> here, if you like.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/09/27/dragons-and-hawks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Happy birthday, Commander Jameson</title>
		<link>http://blogs.gnome.org/tthurman/2009/09/21/happy-birthday-commander-jameson/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/09/21/happy-birthday-commander-jameson/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 13:17:24 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=475</guid>
		<description><![CDATA[BBC: Twenty-five years of Elite.

]]></description>
			<content:encoded><![CDATA[<p>BBC: <a href="http://news.bbc.co.uk/2/hi/technology/8261272.stm">Twenty-five years of <cite>Elite</cite>.</a></p>
<p><img src="http://spectrum.myriadcolours.com/~marnanel/bbc-maemo-elite"></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/09/21/happy-birthday-commander-jameson/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing apps for the N900, part 4&#8211; the power of DBus</title>
		<link>http://blogs.gnome.org/tthurman/2009/09/13/writing-apps-for-the-n900-part-4-the-power-of-dbus/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/09/13/writing-apps-for-the-n900-part-4-the-power-of-dbus/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 03:26:52 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[maemo]]></category>
		<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=468</guid>
		<description><![CDATA[There is a contents page for all these posts.
Matters arising from last time. Several people have been replying to these posts as if I was the embodiment of the Maemo team.  Although I worked on some really interesting parts of the desktop as part of a team from Collabora, I didn&#8217;t have anything to [...]]]></description>
			<content:encoded><![CDATA[<p>There is <a href="http://blogs.gnome.org/tthurman/2009/09/06/n900-tutorial-contents/">a contents page for all these posts</a>.</p>
<p><strong>Matters arising from last time.</strong> Several people have been replying to these posts as if I was the embodiment of the Maemo team.  Although I worked on some really interesting parts of the desktop as part of a team from <a href="http://www.collabora.co.uk">Collabora</a>, I didn&#8217;t have anything to do with the package format or anything like that, and I&#8217;m writing these posts as an individual (and I welcome corrections).  If you want to ask about the rationale behind anything here, there might be people who would know more at <a href="http://talk.maemo.org">talk.maemo.org</a>.</p>
<p><strong>It&#8217;s a grand life on the buses.</strong> One of the many wonderful things to happen to the free desktop in recent years has been the invention of <a href="http://www.freedesktop.org/wiki/Software/dbus">DBus</a> as the glue to stick it all together; it&#8217;s gone a long way towards <a href="http://primates.ximian.com/~miguel/bongo-bong.html">making Unix not suck</a>.  Maemo sticks together with DBus just as much as GNOME or KDE do, which means we can interact with system services fairly painlessly.   And if we don&#8217;t know how to do something, we can always run <a href="http://linux.die.net/man/1/dbus-monitor">dbus-monitor</a>, use some other program to do what we wanted to do, and see how <em>it</em> managed.  Then we know what to google for when we&#8217;re looking for the official documentation.</p>
<p><strong>Sharing is good. </strong>So today we&#8217;re going to be adding a &#8220;share&#8221; button to the app, so that we can tell our friends when we find an interesting link on reddit, and we&#8217;re going to be doing it using only a DBus client.  Adding the entry to the menu is pretty trivial:</p>
<p><img src="http://www.gnome.org/~tthurman/pics/maemo/selector-02.png" alt="Selector with the 'share' item added" /></p>
<p>Now, let&#8217;s consider how we might want to share things with people:</p>
<ul>
<li><strong>Microblogging (twitter, identi.ca&#8230;): </strong>yes, definitely.  You can very simply post a message to an account on one of these systems using DBus services provided by a library called <a href="http://microfeed.org/">microfeed</a>.  We&#8217;ll add an optional dependency on that library, and assume that people who are using it will already have set it up (using <a href="http://mauku.henrikhedberg.com/">Mauku</a> or something similar).</li>
<li><strong>Email:</strong> certainly.  We can interact with the email subsystem using DBus services provided by <a href="http://modest.garage.maemo.org/">modest</a>.</li>
<li><strong>IM:</strong> yes, but&#8230;  We could do this by <a href="http://maemo.org/api_refs/5.0/beta/libosso-abook/OssoABookContactChooser.html">putting up a dialogue from the address book</a>, waiting for them to choose a contact, and then sending the message using <a href="http://telepathy.freedesktop.org/">Telepathy</a>. But that&#8217;s not what we want; what we <em>want</em> is to start a conversation: we want to put up the IM window with the link as a sent message and allow the recipient to respond.  I don&#8217;t know a good way of doing <em>that</em>, but maybe you do.</li>
<li><strong>&#8220;Sharing services&#8221;</strong> usually means file hosting services like <a href="http://share.ovi.com/">share.ovi.com</a>, and isn&#8217;t really the sort of thing that concerns us here&#8211; even if the link&#8217;s to an image, you probably don&#8217;t want to upload a second copy of the image to your Ovi account.</li>
<li><strong><a href="http://maemo.org/api_refs/5.0/beta/bluez/">Bluetooth</a>:</strong> probably overkill (do people really send URLs over bluetooth?  <a href="http://discussion.forum.nokia.com/forum/showthread.php?t=102923">Apparently they do, actually</a>, so maybe we&#8217;ll add that later.)</li>
</ul>
<p>But let&#8217;s stick with microblogging and email for now.  I&#8217;ve created a rather rough version of this idea as a separate file, <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-06/sharing.c">sharing.c</a>, in case it could be separately useful to someone else.  This brings us up to <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-06/">raeddit-06</a> (<a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-06.patch">diff to raeddit-05</a>, <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-06/.git">git cloneable</a>, and <a href="http://maemo.org/packages/package_instance/view/fremantle_extras-devel_free_armel/raeddit/0.60-1/">available from maemo-extras</a>).  When the user taps &#8220;Share&#8221;, this part of the program will put up another selector listing &#8220;Email&#8221; and as many microblogging services as it can find:</p>
<p><img src="http://www.gnome.org/~tthurman/pics/maemo/selector-sharing.png" alt="Sharing selector" /></p>
<p>Let&#8217;s say we choose Twitter; then <a href="http://twitter.com/marnanel/status/3945184187">the message gets posted</a>, and we can go and check it in Mauku or the web browser:</p>
<p><img src="http://www.gnome.org/~tthurman/pics/maemo/successful-tweet.png" alt="Successful tweet" /></p>
<p>Behold the power of DBus!</p>
<p>Next time we&#8217;ll be adding the ability to view images in-process rather than launching the web browser, and we&#8217;ll be learning about a rather wonderful innovation called <a href="http://maemo.org/api_refs/5.0/beta/hildon/HildonStackableWindow.html">&#8220;stackable windows&#8221;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/09/13/writing-apps-for-the-n900-part-4-the-power-of-dbus/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Writing apps for the N900, part 3 &#8212; touch selectors</title>
		<link>http://blogs.gnome.org/tthurman/2009/09/10/writing-apps-for-the-n900-part-3/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/09/10/writing-apps-for-the-n900-part-3/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 19:54:44 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[maemo]]></category>
		<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=460</guid>
		<description><![CDATA[There is a contents page for all these posts.
Matters arising from last time: There&#8217;s been some very helpful feedback:

 Colin Watson pointed out that debhelper 7 makes building debian/rules files far, far simpler.  But Jonny Lamb told us that Maemo doesn&#8217;t ship with debhelper 7.
 A Nokian emailed me to point out that in [...]]]></description>
			<content:encoded><![CDATA[<p>There is <a href="http://blogs.gnome.org/tthurman/2009/09/06/n900-tutorial-contents/">a contents page for all these posts</a>.</p>
<p><strong>Matters arising from last time:</strong> There&#8217;s been some very helpful feedback:</p>
<ul>
<li> Colin Watson <a href="http://blogs.gnome.org/tthurman/2009/09/06/writing-apps-for-the-n900-part-2-packaging/comment-page-1/#comment-748">pointed out</a> that debhelper 7 makes building debian/rules files far, far simpler.  But Jonny Lamb <a href="http://blogs.gnome.org/tthurman/2009/09/06/writing-apps-for-the-n900-part-2-packaging/comment-page-1/#comment-756">told us</a> that Maemo doesn&#8217;t ship with debhelper 7.</li>
<li> A Nokian emailed me to point out that in Maemo 5, application icons should be 48&#215;48, and that 26&#215;26 is from Maemo 4.  (26&#215;26 will still work, though, as we saw.)</li>
<li> Several people pointed out that the &#8220;B&#8221; in &#8220;<tt>XB-Maemo-Icon-26</tt>&#8221; <a href="http://www.debian.org/doc/debian-policy/ch-controlfields.html#s5.7">stands for &#8220;binary&#8221;</a>.</li>
<li> And someone on Reddit <a href="http://www.reddit.com/r/linux/comments/9ifaa/reddit_for_the_n900_raeddit/c0cx311">said</a> that &#8220;raeddit&#8221; is not a particularly wonderful name.  This is true, and I&#8217;m open to better suggestions.  I didn&#8217;t want to call it &#8220;reddit&#8221; without asking the reddit admins!</li>
</ul>
<p>Today we&#8217;re going to introduce another new widget which is specific to Maemo.  The program currently opens the target site when you click a link. Last time, we promised to make it put up a menu of possibilities, instead:</p>
<p><img src="http://www.gnome.org/~tthurman/pics/maemo/selector-example.png" alt="" /></p>
<p><strong>Selectors. </strong>This is called a <a href="http://maemo.org/api_refs/5.0/alpha/libhildon/HildonTouchSelector.html">HildonTouchSelector</a>, and it pops up (so to speak) all over the place. It can live inside any window, but it also has its own special kind of dialogue called a <a href="http://maemo.org/api_refs/5.0/alpha/libhildon/HildonPickerDialog.html">HildonPickerDialog</a>.  It&#8217;s very like a combo box, but much easier to use with your fingers.</p>
<p>You see that the program behind the selector is blurred out: that&#8217;s to show that it&#8217;s not available.  If you were to tap the blurred area, the selector would close without making any choices, and you would return to the rest of the program.  You can also see that the switcher button at top left is not blurred: that&#8217;s because the selector is only modal, not <em>system</em>-modal.  You can&#8217;t interact further with <em>this</em> program until you deal with the selector, but you&#8217;re free to switch to another program or start a new one.</p>
<p><strong>What do we actually need? </strong>Now, before we dive into coding, let&#8217;s think about what we need from any representation of one of the lines in the menus.</p>
<ul>
<li>We will need to ask it for the text to appear in the menu.</li>
<li>And it should be able to decline to appear in the menu.  For example, &#8220;vote up&#8221; should only appear if you&#8217;re logged in.</li>
<li>We will need to ask it to deploy, if it&#8217;s chosen.</li>
</ul>
<p><strong>How could we best implement that?</strong></p>
<ul>
<li>The <em>fairly</em> elegant way would be a set of singleton classes all implementing a common interface.</li>
<li>The <em>very</em> elegant way would be a set of DBus services.  That way, third parties could come along and add new menu options.</li>
<li>And perhaps we&#8217;ll do it the very elegant way later.  But this is a quick and simple tutorial, so&#8230;</li>
</ul>
<p><strong> We&#8217;ll use a set of callbacks.</strong></p>
<ul>
<li>Each callback takes a representation of the post, and a boolean&#8211; true if we&#8217;re preparing, false if we&#8217;re deploying&#8211; and returns a <tt>char*</tt>.</li>
<li>If we&#8217;re preparing, the <tt>char*</tt> is the name that will appear in the menu, and should be freed by the caller.</li>
<li>But if we&#8217;re preparing, the callback may also return <tt>NULL</tt>, to decline to appear in the menu.</li>
<li>If we&#8217;re deploying, the callback should always return <tt>NULL</tt>.</li>
<li>We promise not to ask a callback to deploy if it returned <tt>NULL</tt> in the preparation stage.</li>
</ul>
<p>A small amount of extra work brings us to <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-05/">raeddit-05</a> (<a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-05.patch">diff to raeddit-04</a>, <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-05/.git">git cloneable</a>, and <a href="http://maemo.org/packages/package_instance/view/fremantle_extras-devel_free_armel/raeddit/0.50-1/">available from maemo-extras</a>).  This contains two callbacks: one to visit the actual site, and one to visit the comments page on reddit.  It looks like this:</p>
<p><img src="http://www.gnome.org/~tthurman/pics/maemo/selector-01.png" alt="Selector with two entries" /></p>
<p>It&#8217;s already much more useful this way, but it&#8217;s looking a bit bare with only two entries.  Clearly we can&#8217;t put in &#8220;vote up&#8221; or &#8220;vote down&#8221; until we allow the user to log in.  We could easily put in <a href="http://www.reddit.com/shirt/9ifaa/">the ability to buy a shirt</a>, but there seem more important things to do first.</p>
<p>For example, every good mobile application needs a &#8220;share&#8221; button.  So next time we&#8217;ll be looking at how to add an entry which lets us IM or email the link to our friends, or <a href="http://microfeed.org/">post the link to twitter or identi.ca</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/09/10/writing-apps-for-the-n900-part-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Writing apps for the N900, part 2 &#8212; packaging</title>
		<link>http://blogs.gnome.org/tthurman/2009/09/06/writing-apps-for-the-n900-part-2-packaging/</link>
		<comments>http://blogs.gnome.org/tthurman/2009/09/06/writing-apps-for-the-n900-part-2-packaging/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:18:10 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[planet]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/tthurman/?p=456</guid>
		<description><![CDATA[Here&#8217;s a list of all these posts, which I&#8217;ll keep updated as I add new ones.
Matters arising from last time. A number of people asked, in the comments here and on Y Combinator, whether the change to using Qt instead of GTK in Maemo 6 will mean that Maemo 5 apps will need to be [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s <a href="http://blogs.gnome.org/tthurman/2009/09/06/n900-tutorial-contents/">a list of all these posts</a>, which I&#8217;ll keep updated as I add new ones.</p>
<p><strong>Matters arising from last time.</strong> A number of people asked, <a href="http://blogs.gnome.org/tthurman/2009/09/03/writing-apps-for-the-n900-part-1/comment-page-1/#comment-716">in the comments here</a> and <a href="http://news.ycombinator.com/item?id=806273">on Y Combinator</a>, whether the change to using Qt instead of GTK in <a href="http://wiki.maemo.org/Task:Maemo_roadmap/Harmattan">Maemo 6</a> will mean that Maemo 5 apps will need to be rewritten.  I think it&#8217;s understandable that the switch will make people ask this question, but I don&#8217;t foresee any problems.  If you want to write Qt applications, you can write them now under Maemo 5 and they&#8217;ll run; if you write GTK applications now, they will still run under Maemo 6 when it comes out.   The GTK libraries won&#8217;t stop shipping with Maemo just because Qt becomes the primary toolkit.</p>
<p><strong>Work behind the scenes.</strong> Today we&#8217;re talking about packaging.  The version of raeddit we wrote last time downloads all the data from reddit and <em>then</em> puts up a window.  If you&#8217;re on a slow connection, this could take several seconds.  The Maemo guidelines say programs should put up a window as soon as possible, and indeed if they don&#8217;t put one up within a fairly long amount of time, the desktop assumes they&#8217;ve stalled and puts up a message to tell the user there was a problem.</p>
<p>So I&#8217;ve modified raeddit to put up the window immediately it launches, and to load the data in a separate thread.  I <em>was</em> simply going to put up <a href="http://maemo.org/api_refs/5.0/pre-alpha/apis/libhildon-2.1.24/hildon-hildon-gtk.html#hildon-gtk-window-set-progress-indicator">one of those whirly &#8220;please wait&#8221; symbols in the titlebar</a>, but <a href="http://rhmt.org">my ten-year-old user interface consultant</a> told me that percentage-loaded bars are much more helpful.  So I made the change to <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/raeddit.c">version 04</a> (<a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04.patch">diff to version 03</a>), but since it has little to do with writing Maemo apps in particular, I&#8217;m not going to go into great detail about it.  This also involved a slight change to the reddit client library, so that it could call a callback every so often to update the progress bar.  The <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/greddit2.c">new version</a> is backward-compatible with the old.</p>
<p><strong>Where to find the files.</strong> <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/">The files we&#8217;re going to talk about</a> are at the link; if you&#8217;d like a local copy you can get one with</p>
<blockquote><p><tt>git clone http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/.git</tt></p></blockquote>
<p><strong>So, packaging.</strong> Packaging under Maemo isn&#8217;t much different from packaging under Debian or Ubuntu.  I said last time that I wasn&#8217;t going to replicate the contents of existing tutorials, and there are plenty of good packaging tutorials out there.  But I&#8217;ll bend the rule a little in order to tell you what I changed to turn this into a packaged program.</p>
<p><strong>The Makefile.</strong> Last time we were compiling by hand, but now we need the package to be capable of building itself.  We could use autotools, but we&#8217;re trying to keep things really simple.  So here&#8217;s <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/Makefile">a simple Makefile</a> that knows how to compile and install the program.</p>
<p><strong>But what do we need to install?</strong></p>
<ul>
<li>The compiled binary itself, into <tt>/usr/bin</tt>.</li>
<li><a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/raeddit.desktop">A desktop file</a>, into <tt>/usr/share/applications</tt>.  This tells the desktop where to find the program, how to launch it, and what the icon is.   The moment you drop the file into that directory, through installing the package or otherwise, the desktop will pick it up and add it to the menus.  The file is pretty straightforward, but if you want the full details you can <a href="http://standards.freedesktop.org/desktop-entry-spec/latest/">read the spec</a>.</li>
<li><img src="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/raeddit.png" alt="The reddit alien" align="right" /> An icon for the desktop file to refer to.  We&#8217;ll use the obvious candidate&#8211; the reddit alien&#8211; and hope the reddit admins don&#8217;t mind us borrowing their logo to refer to their site.</li>
</ul>
<p><strong>The debian/ directory.</strong> That&#8217;s all very well, but we also need some instructions about how the package should be put together.  These live in <a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/debian/">the debian/ directory</a>.  There are only three you really need to concern yourself with:</p>
<ul>
<li><a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/debian/rules"><strong>debian/rules</strong></a> is another Makefile to explain how to package the program.  (Now you understand the in-joke with <a href="http://shop.kernelconcepts.de/product_info.php?products_id=106&amp;osCsid=d770102ef140ec831bceba93b7a087ee">that shirt</a>).  I&#8217;ve been using the same debian/rules with minor ad hoc tweaks for a while now; you can probably adapt it.</li>
<li><strong><a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/debian/changelog">debian/changelog</a></strong> needs to say, at the very least, the date, your name, &#8220;initial release&#8221;, and that this is (say) version 0.01.</li>
<li><strong><a href="http://www.gnome.org/~tthurman/pics/maemo/raeddit-04/debian/control">debian/control</a></strong> is mostly self-explanatory, but there&#8217;s one thing you need to know&#8230;</li>
</ul>
<p><strong>Adding an icon to debian/control.</strong> If we added the basic package to App Manager, it would appear like this:</p>
<p><img src="http://www.gnome.org/~tthurman/pics/maemo/app-nologo.png" alt="Package in the Maemo repository" /></p>
<p>The blue square means that it doesn&#8217;t have an icon.  App Manager isn&#8217;t going to download and unpack every package just to see whether we&#8217;ve included an icon, so we need to include one in debian/control, which will make its way into the package index.  However, there&#8217;s not as much room, so it needs to be just 26&#215;26.  We&#8217;ll just show the alien&#8217;s head:  <img src="http://www.gnome.org/~tthurman/pics/maemo/reddit26.png" alt="" /> All we have to do to get it into debian/control is to <a href="http://en.wikipedia.org/wiki/Uuencoding">uuencode</a> it (producing <a href="http://www.gnome.org/~tthurman/pics/maemo/reddit26.uue">this result</a>) and then put it into debian/control, indented by one space, under the heading <tt>XB-Maemo-Icon-26:</tt>.  (No, I don&#8217;t know what the B is for either.)</p>
<p>This makes our entry in App Manager much prettier:<br />
<img src="http://www.gnome.org/~tthurman/pics/maemo/app-withlogo.png" alt="Package in the Maemo repository" /></p>
<p><strong>Building it.</strong> So now all we need to do is to run <tt>dpkg-buildpackage</tt> on our package, copy it to the phone, and install it.  Rather than show how to do that here, I&#8217;ll just show you <a href="http://www.gnome.org/~tthurman/pics/maemo/package-04.log">a log of me doing it</a>, since it&#8217;s quite a mechanical process.</p>
<p><strong>Firing it up.</strong> And now we can load the program from the ordinary menu and run it.  I would show you screenshots, but I think screencasts are far more fun.  So <a href="http://www.youtube.com/watch?v=sGfwPWXoNr4">here&#8217;s a quick video on YouTube of raeddit in use</a>.  I&#8217;ve added <a href="http://maemo.org/packages/view/raeddit/">the current version of raeddit</a>, such as it is, to maemo-extras, so that you can actually install it with App Manager if you feel so inclined.</p>
<p><strong>One quick plug:</strong> if you&#8217;d like to see a longer screencast of a more advanced Maemo 5 program, I&#8217;m working on a location-aware system to find nearby belltowers hung for English full-circle change ringing.  It uses the database from <a href="http://dove.cccbr.org.uk/">Dove&#8217;s Guide</a>.  You can see <a href="http://www.youtube.com/watch?v=aJLIJwOzwEM">a screencast of the work in progress</a> here.</p>
<p>Next time, when the user clicks a post, instead of going straight to the linked site we&#8217;ll figure out how to put up one of these menus:</p>
<p><img src="http://www.gnome.org/~tthurman/pics/maemo/selector-example.png" alt="Example of a Hildon selector" /></p>
<p>After that, who knows?  I added a long list of possibilities to <a href="http://blogs.gnome.org/tthurman/2009/09/03/writing-apps-for-the-n900-part-1/">the previous post</a>, so feel free to advocate as to which you&#8217;d like to see fixed first.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/tthurman/2009/09/06/writing-apps-for-the-n900-part-2-packaging/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>
