<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.6(BH)" -->
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Planet Maemo: category &quot;feed:a04bb39280ce918c658ed6060b2e8b81&quot;</title>
        <description>Blog entries from Maemo community</description>
        <link>http://maemo.org/news/planet-maemo/</link>
        <lastBuildDate>Sun, 05 Apr 2026 05:56:56 +0000</lastBuildDate>
        <generator>FeedCreator 1.7.6(BH)</generator>
        <language>en</language>
        <managingEditor>planet@maemo.org</managingEditor>
        <item>
            <title>Broken GTalk calls</title>
            <link>https://blog.barisione.org/2011/06/23/broken-gtalk-calls/</link>
            <description><![CDATA[
<p>Recently Google updated their XMPP servers to use <a href="http://xmpp.org/extensions/xep-0166.html">standard Jingle</a> for audio and video calls; see the <a href="http://xmpp.org/2011/06/the-future-is-jingle/">“Google: The Future is Jingle”</a> post on xmpp.org for some more details.<br />
This would be good news for us, except that, by doing so, they broke calls in telepathy-gabble (so in Empathy, the N900 and MeeGo) in multiple ways.</p>
<p>Luckily GTalk developers were really cooperative and they agreed on fixing their servers and <a href="http://blogs.gnome.org/wjjt/">Will</a> and <a href="http://www.ocrete.ca/">Olivier</a> already <a href="https://bugs.freedesktop.org/show_bug.cgi?id=38352">fixed Gabble</a> too. The new version of Gabble (0.12.2 for the stable branch and 0.13.1 for the development one) should make calls work again on the desktop, MeeGo and on Harmattan (i.e. the N9 and N950) too.<br />
For the N900 we don&#8217;t have any way to release updates, but Google will push an update to their servers (in the next week or two hopefully) with a N900-specific workaround.</p>
<p>Sadly video calls on the N900 will keep not working; the version of gst-dsp on the N900 doesn&#8217;t properly handle changes in the parameters of the stream <img src="https://i0.wp.com/farm1.static.flickr.com/217/458651161_e4a46b807b_o.png" alt=":(" />.</p>
<p><strong>Update:</strong> just to be clear, this affects only calls from GTalk to gabble. Calls in the other direction still work and calls between two devices of Gabble work too.</p>
<span class="net_nemein_favourites">5 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=6ce5238a9db711e0913a015db5e023252325&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/6ce5238a9db711e0913a015db5e023252325/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=6ce5238a9db711e0913a015db5e023252325&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/6ce5238a9db711e0913a015db5e023252325/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Thu, 23 Jun 2011 16:19:57 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-6ce5238a9db711e0913a015db5e023252325</guid>
        </item>
        <item>
            <title>Folks and QtContacts</title>
            <link>https://blog.barisione.org/2010/11/17/folks-and-qtcontacts/</link>
            <description><![CDATA[
<p>At the moment I&#8217;m at the MeeGo conference in Dublin, finally finding a bit of time to blog on what I have been working on for the past 2 weeks. The conference is really well organised and <a href="http://en.wikipedia.org/wiki/Aviva_Stadium">the location</a> is a bit unusual but awesome. For me, the best thing about this conference seems to be the possibility of meeting so many people that I know because of GNOME, Collabora and Maemo/MeeGo. Considering that Collabora is now employing several KDE people, this conference is also a good way to meet more KDE developers while awaiting for the Desktop Summit in Berlin.</p>
<p align="center" class="img"><a href="http://farm5.static.flickr.com/4110/5177887607_146b08cbbf_z.jpg"><img src="https://i0.wp.com/farm5.static.flickr.com/4110/5177887607_146b08cbbf_z.jpg" alt="" class="scaled" width="400" /></a><br /><small>The Aviva stadium</small></p>
<p>Nowadays, Empathy uses <a href="http://telepathy.freedesktop.org/wiki/Folks">libfolks</a> to access contacts and to merge multiple contacts (called personas in Folks) into a single “meta-contact” (called individual).<br />
On MeeGo, on the other hand, it seems that <a href="http://doc.qt.nokia.com/qtmobility-1.1-tp/contacts.html">QtContacts</a> (part of QtMobility) is the future. QtContacts is just an API and relies on backends for the actual access to contacts, so why not trying to have QtContacts using libfolks? In the last weeks I worked a bit on writing a QtFolks backed for QtContacts and a small demo written in QML to show what the backend can do.</p>
<p align="center" class="img"><a href="http://www.flickr.com/photos/barisione/5178092055/"><img src="https://i0.wp.com/farm5.static.flickr.com/4145/5178092055_9b4d9596f9_z.jpg" alt="The demo showing some of my XMPP contacts" /></a><br /><small>The demo showing some of my XMPP contacts</small></p>
<p>Folks doesn&#8217;t just want to be a library for IM contacts, but a generic library to access all of your contacts. The next logical step was to add extra backends to access more sources of contacts.<br />
If you use the Facebook XMPP server, you can already have access to Facebook friends and chat with them, but you don&#8217;t get all the information that are available through the web API. This is why I modified the <a href="http://git.collabora.co.uk/?p=meego-facebook-plugins.git;a=summary">Facebook libsocialweb plugin</a> to also access Facebook contacts and added new interfaces to libfolks to expose this information. Moreover, we can rely of the Facebook ID to automatically merge the persona from the Facebook XMPP and the one from the Facebook web API into a single individual.</p>
<p align="center" class="img"><a href="http://www.flickr.com/photos/barisione/5178698478/"><img src="https://i0.wp.com/farm5.static.flickr.com/4154/5178698478_fc5f70044a_z.jpg" alt="A contact with multiple IM addresses and information coming from Facebook too" /></a><br /><small>A contact with multiple IM addresses and information coming from Facebook too</small></p>
<span class="net_nemein_favourites">12 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=f0f6557ef23e11dfb2f5935ab51552b952b9&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/f0f6557ef23e11dfb2f5935ab51552b952b9/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=f0f6557ef23e11dfb2f5935ab51552b952b9&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/f0f6557ef23e11dfb2f5935ab51552b952b9/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Wed, 17 Nov 2010 10:40:42 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-f0f6557ef23e11dfb2f5935ab51552b952b9</guid>
        </item>
        <item>
            <title>Feature complete custom ringtones</title>
            <link>https://blog.barisione.org/2010/08/31/feature-complete-custom-ringtones/</link>
            <description><![CDATA[
<p>I finally released a version of  “Custom ringtones for your contacts” that implements every basic feature I wanted to have for a first stable version, so I think it deserves being called 1.0 <img src="https://i0.wp.com/farm1.static.flickr.com/189/458651157_780851832e_o.png" alt=":)" />.<br />
Apart from some bug fixes, this new version is translatable and allow you to set a ringtone for callers with a hidden phone number and for contacts not in your address book. The new settings are available from the address book settings dialog.</p>
<p align="center" class="img"><a href="http://farm5.static.flickr.com/4135/4944744955_108980613e_b.jpg"><img src="https://i0.wp.com/farm5.static.flickr.com/4135/4944744955_108980613e_b.jpg" alt="The settings dialog with the extra ringtone buttons" class="scaled" width="400" /></a><br /><small>The settings dialog with the extra ringtone buttons</small></p>
<p>For now there is only an Italian translation, but any help to get more is appreciated. Don&#8217;t worry, there are just 8 strings to translate!<br />
To propose a new translation just go to the <a href="http://www.transifex.net/projects/p/ringtoned/c/per-contact-ringtones/">Transifex component page</a>, download the .pot source file, add the translations to it, login to Transifex, and upload the file by pressing “Add a new translation” and setting as target file “po/XX.po” (where “XX” it the language code, for instance “fi” for Finnish, “de” for German, etc.). If you don&#8217;t know how to use gettext translation files I suggest using <a href="http://www.poedit.net/">Poedit</a> or <a href="http://projects.gnome.org/gtranslator/">gtranslator</a>.</p>
<p>The custom ringtones application is now available both from <a href="http://wiki.maemo.org/Extras-testing">extras-testing</a> and from my personal repository:</p>
<p align="center" class="img"><a href="http://people.collabora.co.uk/~bari/maemo/per-contact-ringtones.install"><img src="https://i0.wp.com/people.collabora.co.uk/~bari/maemo/ac_install_icon.png" style="border:0;" alt="Install per-contact-ringtones" /></a><br /><small><a href="http://people.collabora.co.uk/~bari/maemo/per-contact-ringtones.install">Install from my personal repository</a><br />(follow the link on the N900 browser)</small></p>
<p><b>Update:</b> I released version 1.0.1 containing some new translations: German (by NightShift79), French (by Alban Crequy), Brazilian Portuguese (by Humberto Sgrott Reis) and Swedish (by Andreas Henriksson). I will add more when I receive more.</p>
<p><b>Update 2:</b> I released version 1.0.2 containing a crasher fix and some new translations: Albanian (by Ilir Gjika), Dutch (by Daniel Holsboer) and Spanish (by Fernando Borrego Polo).</p>
<p><b>Update 3:</b> I released version 1.0.3 containing some new translations: Russian (by Misha Ketslah), Norwegian (by Stian Husemoen), Korean (by KwangHee Cho), Czech (by Pavel Fric), Hungrarian (by Balázs Bárány) and Romanian (by Bogdan Vernescu).</p>
<span class="net_nemein_favourites">21 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=bfb57690b51511df9a3c496baff205e405e4&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/bfb57690b51511df9a3c496baff205e405e4/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=bfb57690b51511df9a3c496baff205e405e4&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/bfb57690b51511df9a3c496baff205e405e4/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Tue, 31 Aug 2010 14:38:50 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-bfb57690b51511df9a3c496baff205e405e4</guid>
        </item>
        <item>
            <title>Ringtoned 0.2.4 (now with vibration!)</title>
            <link>https://blog.barisione.org/2010/08/23/ringtoned-024-now-with-vibration/</link>
            <description><![CDATA[
<p>I just released ringtoned 0.2.4 with a fix to make the N900 able to vibrate again when a call is received.<br />
Ringtoned (displayed in the application manager as “Custom ringtones for your contacts”) is available <a href="http://wiki.maemo.org/Extras-devel">from extras-devel</a> (that contains a lot of other <em>unstable</em> software!) or from my personal repository:</p>
<p align="center" class="img"><a href="http://people.collabora.co.uk/~bari/maemo/per-contact-ringtones.install"><img src="https://i0.wp.com/people.collabora.co.uk/~bari/maemo/ac_install_icon.png" style="border:0;" alt="Install per-contact-ringtones" /></a><br /><small><a href="http://people.collabora.co.uk/~bari/maemo/per-contact-ringtones.install">Install from my personal repository</a><br />(follow the link on the N900 browser)</small></p>
<p>This release fixes the last major reproducible bugs, but I&#8217;m sure there are more. If you find any please <a href="https://bugs.maemo.org/enter_bug.cgi?product=ringtoned">report them in the bugzilla</a> explaining clearly what you are doing, what you would expect to happen and what happens instead. A log attached to the bugzilla entry is very useful to understand what is going on, and can be easily created by opening a terminal and giving this command:</p>
<pre>
ringtonedctl -d stop startwait &gt; /home/user/MyDocs/ringtoned.log 2&gt;&amp;1
</pre>
<p>Then attach the <code>ringtoned.log</code> file that is in your documents directory to the bug report.</p>
<span class="net_nemein_favourites">16 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=8e34ed72aed411df92fc7513906c1e051e05&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/8e34ed72aed411df92fc7513906c1e051e05/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=8e34ed72aed411df92fc7513906c1e051e05&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/8e34ed72aed411df92fc7513906c1e051e05/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Mon, 23 Aug 2010 15:39:48 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-8e34ed72aed411df92fc7513906c1e051e05</guid>
        </item>
        <item>
            <title>Ringtoned 0.2.1</title>
            <link>https://blog.barisione.org/2010/08/16/ringtoned-021/</link>
            <description><![CDATA[
<p>The Fremantle daemon that decodes ringtones seems to have a bug that, in some cases, makes it produce wave files with an invalid size in them. These files cannot be played by libcanberra, so it meant that some ringtones couldn&#8217;t be played when you receive a phone call. I just released ringtoned 0.2.1 with a work around for the bug, please let me know if this version works better for you.</p>
<p>Anyway, I got <a href="https://bugs.maemo.org/enter_bug.cgi?product=ringtoned">a new component in the Meamo Bugzilla for ringtoned</a>, so please report bugs there.</p>
<p><b>Update 2:</b> I released ringtoned 0.2.2 that just adds some more debugging info to make my life easier.</p>
<span class="net_nemein_favourites">10 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=c10500f2a95c11df9fa9e5bc00a5c0aec0ae&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/c10500f2a95c11df9fa9e5bc00a5c0aec0ae/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=c10500f2a95c11df9fa9e5bc00a5c0aec0ae&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/c10500f2a95c11df9fa9e5bc00a5c0aec0ae/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Mon, 16 Aug 2010 16:39:54 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-c10500f2a95c11df9fa9e5bc00a5c0aec0ae</guid>
        </item>
        <item>
            <title>Faster custom ringtones</title>
            <link>https://blog.barisione.org/2010/08/14/faster-custom-ringtones/</link>
            <description><![CDATA[
<p>Several people complained that <a href="https://blog.barisione.org/2010-07/custom-ringtones-for-your-contacts/">my custom ringtones application</a> is too slow when receiving calls, so I started analysing what ringtoned does when a new call is received. The three main operations in this case are creating the object that represents a call after retrieving all the needed information (caller ID, etc.) from Telepathy, looking up the contact that matches the caller and playing the ringtone.<br />
The Telepathy bit just needed to be slightly smarter, but was already quite fast. The contact look up was already very fast, unless you have so many contacts to make your address book unusable.<br />
The code that needed more optimisation was the one that plays ringtones. It turned out that using GStreamer with playbin2 (the element able to detect and play all the supported file types) is not fast enough for this use case. I tried different approaches and in the end I decided to always use uncompressed wave files and stream them directly to PulseAudio.<sup>[1]</sup><br />
Note that GStreamer is not the best solution just in <b>this very specific</b> case, for all the other use cases GStreamer is still the best solution.</p>
<p>After these changes I was really expecting to get very good performances, but it was still quite slow. My analysis was showing that, since when ringtoned gets notified from Telepathy of the existence of a new call to when it starts streaming to PulseAudio, less than 0.1 seconds passes, so why was it still slow?<br />
At this point I tried using <a href="http://willthompson.co.uk/bustle/">bustle</a> to generate graphs of the D-Bus activity when a call is received. The graphs showed that the delay was not ringtoned&#8217;s fault, but a bug in Maemo causing a freeze that made the dispatching of new calls about 4 seconds slower when ringtoned was running. Somebody is now working on the bug and trying to figure out why it&#8217;s happening, in the meantime I&#8217;m working around it watching for new calls in a different way.<sup>[2]</sup></p>
<p>Ringtoned and the related packages are available in Maemo extras-devel under the name “Custom ringtones for your contacts”. If you don’t want to add the extras-devel repository (as it contains a lot of unstable software, you have been warned!), you can download ringtoned directly from my personal repository:</p>
<p align="center" class="img"><a href="http://people.collabora.co.uk/~bari/maemo/per-contact-ringtones.install"><img src="https://i0.wp.com/people.collabora.co.uk/~bari/maemo/ac_install_icon.png" style="border:0;" alt="Install per-contact-ringtones" /></a><br /><small><a href="http://people.collabora.co.uk/~bari/maemo/per-contact-ringtones.install">Install from my personal repository</a><br />(follow the link on the N900 browser)</small></p>
<p>The only known big problem left is that ringtoned breaks vibration, I will fix it in the next days/week.</p>
<p><b>Update:</b> It looks like MyContacts is incompatible with ringtoned, so you cannot use these two programs together.</p>
<p><small><b>[1]</b> The file is uncompressed in background, so you can still use any type of file for ringtones. Just notice that, when you update from a previous version, the first time you receive a call from a contact that already had a custom ringtone you will get the default ringtone and not the custom one as previous versions were not generating the uncompressed file.</small><br />
<small><b>[2]</b> For people interested in Telepathy: the freeze happens if there is an observer running, even if at that point the dispatching to observers didn&#8217;t start yet! The (ugly, but effective) solution was to just listens to the NewChannels signal directly. When the Maemo bug will be fixed I will revert my code to use an observer.</small></p>
<span class="net_nemein_favourites">14 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=d3b20ba2a7ca11df8a0aa5d21aebe852e852&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/d3b20ba2a7ca11df8a0aa5d21aebe852e852/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=d3b20ba2a7ca11df8a0aa5d21aebe852e852&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/d3b20ba2a7ca11df8a0aa5d21aebe852e852/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Sat, 14 Aug 2010 16:31:28 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-d3b20ba2a7ca11df8a0aa5d21aebe852e852</guid>
        </item>
        <item>
            <title>Disappearing plugins</title>
            <link>https://blog.barisione.org/2010/08/11/disappearing-plugins/</link>
            <description><![CDATA[
<p>If you have any application that adds buttons to the address book (like the <a href="https://blog.barisione.org/2010-06/finding-the-duplicate-contacts-in-your-address-book/">contacts merger</a>), you could have noticed that the buttons recently disappeared. This happened because of a bug in Monorail, the IM file transfer application.<br />
<a href="http://alban.apinc.org/blog/">Alban</a> already fixed this bug and uploaded a new version to extras-devel. This new version also fixes other bugs, including a crash caused by the sharing plugin in Conboy.</p>
<p><b>Update:</b> Note that you need to reboot or kill osso-addressbook after updating monorail to see the plugins again.</p>
<span class="net_nemein_favourites">10 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=fe698bf8a55511df9ea0a3acac30fb53fb53&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/fe698bf8a55511df9ea0a3acac30fb53fb53/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=fe698bf8a55511df9ea0a3acac30fb53fb53&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/fe698bf8a55511df9ea0a3acac30fb53fb53/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Wed, 11 Aug 2010 14:22:16 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-fe698bf8a55511df9ea0a3acac30fb53fb53</guid>
        </item>
        <item>
            <title>Custom ringtones for your contacts</title>
            <link>https://blog.barisione.org/2010/07/09/custom-ringtones-for-your-contacts/</link>
            <description><![CDATA[
<p>Yesterday I finished implementing the first release of a new program (ringtoned, i.e. ringtone daemon, i.e. I don&#8217;t have any imagination for program names) that allows setting a custom ringtone for specific contacts. Ringtoned tries to integrate nicely with the system:</p>
<ul>
<li>You can select the default ringtone in Settings → Profiles as usual</li>
<li>To set a custom ringtone you go to the Contacts application, select the contact and press the new “Set custom ringtone” button in the menu</li>
<li>The dialog to set custom ringtones tries to be a perfect copy of the dialog to set the global ringtone</li>
<li>It works both for normal phone calls and GTalk/SIP/Skype calls, thanks to <a href="http://telepathy.freedesktop.org/wiki/">Telepathy</a></li>
<li>The ringtone is played only when the normal one would be played and at the same volume, thanks to some <a href="http://www.pulseaudio.org/">PulseAudio</a> magic</li>
</ul>
<p>Ringtoned also <em>tries</em> not to break your phone, if for any reasons it crashes the default behaviour <em>should</em> be restored. Nevertheless, this is just version 0.1, so it could be full of bugs and could make you miss phone calls. You have been warned! Moreover, replacing the default ringtone components with something more complex could make the ringtone start slightly later in case of heavy load, see <a href="https://blog.barisione.org/2010-07/how-hard-can-it-be/">my previous blog post</a>. You have been warned again!</p>
<p>If you still want to give it a try, ringtoned is now in <a href="http://wiki.maemo.org/Extras-devel">Maemo extras-devel</a> under the name “Custom ringtones for your contacts”. If you don&#8217;t want to add the extras-devel repository (as it contains a lot of unstable software), you can download ringtoned directly from my personal repository:</p>
<p align="center" class="img"><a href="http://people.collabora.co.uk/~bari/maemo/per-contact-ringtones.install"><img src="https://i0.wp.com/people.collabora.co.uk/~bari/maemo/ac_install_icon.png" style="border:0;" alt="Install per-contact-ringtones" /></a><br /><small><a href="http://people.collabora.co.uk/~bari/maemo/per-contact-ringtones.install">Install from my personal repository</a><br />(follow the link on the N900 browser)</small></p>
<p>If you are interested in the source code, it&#8217;s in <a href="http://git.collabora.co.uk/?p=user/bari/ringtoned.git;a=summary">Collabora&#8217;s git repositories</a>.</p>
<p>The are two major features that are missing at the moment: the ability to set a custom ringtone for anonymous phone calls and for calls from an unknown number, and the ability to set ringtones for groups and not only for single contacts. The former feature should be easy and it mainly just requires some UI, so it will be hopefully implemented shortly.<br />
Groups are more difficult to implement because they are not supported at all by the Maemo address book; I would first have to implement support for groups and then add ringtones for the groups. I hope to be able to find time for this, but I cannot guarantee anything.</p>
<p>In a future post I will explain the architecture of ringtoned and how to extend it: the code that chooses the custom ringtone is actually just a small plugin of the ringtone daemon and it&#8217;s possible to write other similar plugins for different needs.</p>
<span class="net_nemein_favourites">13 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=9a9d54628b4511df9001732076ba25102510&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/9a9d54628b4511df9001732076ba25102510/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=9a9d54628b4511df9001732076ba25102510&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/9a9d54628b4511df9001732076ba25102510/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Fri, 09 Jul 2010 08:02:51 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-9a9d54628b4511df9001732076ba25102510</guid>
        </item>
        <item>
            <title>How hard can it be? (Or why you don’t have custom per contact ringtones on Maemo)</title>
            <link>https://blog.barisione.org/2010/07/07/how-hard-can-it-be/</link>
            <description><![CDATA[
<p>Often in blogs, forums or IRC you can find people complaining of missing features in some programs (<a href="http://www.penny-arcade.com/comic/2004/03/19/">and some of them are very rude</a>). While they can be right sometimes, other times they just make me angry because they don&#8217;t know how difficult writing software can be, and they don&#8217;t understand the difference between a semi-working prototype and a proper stable application written by professional developers, designed by professional UI designers and tested by professional testers.</p>
<p>Implementing some features can actually be quite difficult and it could be better to skip those from your product and focus on other things; on the N900 one of these missing features is the ability to set customised ringtones for specific contacts.<br />
Several people wondered how hard it can be, after all a lot of old phones do it. What they don&#8217;t consider is that, in many ways, the N900 is not a traditional phone and is more similar to a small computer. On the other hand, the N900 still needs to be reliable to be certified as a phone; for ringtones this means that the ringtone should be played as soon as the phone call is received, or the user could miss it.<br />
Now suppose your N900 is under heavy load due to multitasking (<em>real</em> multitasking, like on a normal computer) and you receive a phone call from a friend; being a close friend that often calls you, you have an MP3 ringtone set just for him. The phone has to look up for the contact corresponding to the phone number, load the file from the (slow) memory card, load the libraries for playing the ringtone, uncompress the file, and finally play it. All of this on a phone under heavy load with most programs swapped out of memory!<br />
To workaround this problem the N900 <abbr title="I never worked on this part of Maemo and I never saw the code, so I just know what I discovered by myself">seems</abbr> to do some tricks: the ringtone is uncompressed into a (big) WAV file and saved on the faster (but small) internal memory, and the component playing the ringtone is memlocked (i.e. never removed from memory). Of course, you cannot do this for all the possible ringtones or the already small disk space would be used immediately. Choosing not to uncompress the files, on the other hand, would mean keeping loaded in memory all the possible codecs.</p>
<p>Does this mean that it&#8217;s impossible to have a different ringtone for a specific contact on Maemo? No, it just means that if you want it you have to be ready to accept that the ringtone could start playing a couple of seconds later in some <em>uncommon</em> heavy load conditions. When you are ready to do that you just have to wait a couple of days, so that I can polish and publish the program I wrote to have custom ringtones <img src="https://i0.wp.com/farm1.static.flickr.com/205/458651139_21126b48de_o.png" alt=":D" /></p>
<p>In other news, I&#8217;m going to GUADEC for the whole week: see you there!</p>
<p align="center" class="img"><a href="http://www.guadec.org/"><img src="https://i0.wp.com/www.guadec.org/img/guadec-oranje.png" alt="I'm going to GUADEC" /></a></p>
<span class="net_nemein_favourites">17 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=1f716d088a0711df9c325582290dcbd4cbd4&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/1f716d088a0711df9c325582290dcbd4cbd4/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>2 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=1f716d088a0711df9c325582290dcbd4cbd4&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/1f716d088a0711df9c325582290dcbd4cbd4/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Wed, 07 Jul 2010 19:42:46 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-1f716d088a0711df9c325582290dcbd4cbd4</guid>
        </item>
        <item>
            <title>Contacts merger in Maemo extras</title>
            <link>https://blog.barisione.org/2010/06/20/contacts-merger-in-maemo-extras/</link>
            <description><![CDATA[
<p>Just a quick post to inform the N900 users that didn&#8217;t enable the extras-devel or extras-testing repositories that the contacts merger has been promoted to Maemo extras. Just look for “Merge your duplicate contacts” in the application manager and enjoy <img src="https://i0.wp.com/farm1.static.flickr.com/189/458651157_780851832e_o.png" alt=":)" /></p>
<span class="net_nemein_favourites">26 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=283fbd287d1811dfb9cc8b1e1655492d492d&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/283fbd287d1811dfb9cc8b1e1655492d492d/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=283fbd287d1811dfb9cc8b1e1655492d492d&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/283fbd287d1811dfb9cc8b1e1655492d492d/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Sun, 20 Jun 2010 12:55:40 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-283fbd287d1811dfb9cc8b1e1655492d492d</guid>
        </item>
        <item>
            <title>Handling phone numbers</title>
            <link>http://blog.barisione.org/2010-06/handling-phone-numbers/</link>
            <description><![CDATA[
<p>I&#8217;m often asked questions about the handling and parsing of phone numbers, so I&#8217;m going to explain how we do it on Maemo 5. I hope this can be useful also for developers of other applications.</p>
<p>There is no unique standardised way to write phone numbers; in the UK the phone number of the Buckingham Palace Visitor Office can be written as 02073212233, <abbr title="This is a common but wrong way to indicate that the “0” can be omitted if the international prefix is used">+44 (0)20 7321 2233</abbr>, 0044 207 321 2233, etc. If you omit the international prefix +44, the number 02073212233 could be used by somebody else in another country, for instance to me it looks like a phone number for somebody living in Milan.</p>
<p>When storing a phone number you should keep it as you got it, including spaces, parenthesis, etc.<br />
When you want to use the number you should drop all the useless characters, but keep the extensions numbers. For instance 44-555-P1 would become 44555P1, which means: call the Vodafone UK balance information number 44555, pause for some seconds waiting for the recorded voice to start speaking, and send a 1 (i.e. ask for a text message with the remaining minutes for this month).</p>
<p>When comparing phone numbers to see if they belong to the same contact you also want to strip all the extra digits sent after a pause as those are not really part of the phone number. At this point you still have to somehow handle the craziness of international and local prefixes, for instance all these numbers <em>could</em> be a valid way to call the same person in <a href="http://en.wikipedia.org/wiki/San_Marino">San Marino</a>: <span title="Calling from Italy or San Marino">0549 123 456</span>, <span title="Calling from anywhere using the San Marino calling code (+378)">+378 0549 123 456</span>, <span title="Calling from anywhere using the Italian calling code (+39)">+39 0549 123 456</span>, <span title="Calling from a country where the international call prefix is 00">0039 0549 123 456</span>, <span title="Calling from a country where the international call prefix is 011, like the US">011 39 0549 123 456</span>.<br />
How do phones handle this? Just by comparing the last 7 digits of the phone number, that is the minimum length used <a href="https://bugs.maemo.org/show_bug.cgi?id=7227#c8" title="Bugs happening only in Qatar for the win!">somewhere</a> for phone numbers.<br />
This of course leaves a chance of false matches, but as you can see there is no real generic solution for this.</p>
<p>Here&#8217;s some code to show how to handle phone numbers. I used Python as a sort of pseudo-language, so I preferred readability for non-Python developers over good pythonic code.</p>
<pre>
extension_chars <span style='color:#808030; '>=</span> <span style='color:#808030; '>(</span><span style='color:#0000e6; '>'p'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'P'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'w'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'W'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'x'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'X'</span><span style='color:#808030; '>)</span>

<span style='color:#800000; font-weight:bold; '>def</span> normalize_phone_number<span style='color:#808030; '>(</span>number<span style='color:#808030; '>)</span><span style='color:#808030; '>:</span>
    common_delimiters <span style='color:#808030; '>=</span> <span style='color:#808030; '>(</span><span style='color:#0000e6; '>','</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'.'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'('</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>')'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'-'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>' '</span><span style='color:#808030; '>,</span>
                         <span style='color:#0000e6; '>'\t'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'/'</span><span style='color:#808030; '>)</span>
    valid_digits <span style='color:#808030; '>=</span> <span style='color:#808030; '>(</span><span style='color:#0000e6; '>'#'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'*'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'0'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'1'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'2'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'3'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'4'</span><span style='color:#808030; '>,</span>
                    <span style='color:#0000e6; '>'5'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'6'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'7'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'8'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'9'</span><span style='color:#808030; '>)</span>

    normalized <span style='color:#808030; '>=</span> <span style='color:#0000e6; '>''</span>

    <span style='color:#800000; font-weight:bold; '>for</span> digit <span style='color:#800000; font-weight:bold; '>in</span> number<span style='color:#808030; '>:</span>
        <span style='color:#800000; font-weight:bold; '>if</span> digit <span style='color:#800000; font-weight:bold; '>in</span> extension_chars<span style='color:#808030; '>:</span>
            <span style='color:#696969; '># Keep the extension characters P, W and X,</span>
            <span style='color:#696969; '># but be sure they are upper case.</span>
            digit <span style='color:#808030; '>=</span> digit<span style='color:#808030; '>.</span>upper<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span>
        <span style='color:#800000; font-weight:bold; '>elif</span> digit <span style='color:#808030; '>=</span><span style='color:#808030; '>=</span> <span style='color:#0000e6; '>'+'</span><span style='color:#808030; '>:</span>
            <span style='color:#696969; '># "+" is valid only at the beginning of phone</span>
            <span style='color:#696969; '># numbers or after the number suppression</span>
            <span style='color:#696969; '># prefix. (No idea why we support only this</span>
            <span style='color:#696969; '># GSM code, but not the VSC ones.)</span>
            <span style='color:#800000; font-weight:bold; '>if</span> normalized <span style='color:#800000; font-weight:bold; '>not</span> <span style='color:#800000; font-weight:bold; '>in</span> <span style='color:#808030; '>(</span><span style='color:#0000e6; '>''</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'*31#'</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>'#31#'</span><span style='color:#808030; '>)</span><span style='color:#808030; '>:</span>
                <span style='color:#800000; font-weight:bold; '>print</span> <span style='color:#0000e6; '>'Wrong "+" in "%s"'</span> <span style='color:#808030; '>%</span> number
                <span style='color:#696969; '># Skip this "+".</span>
                <span style='color:#800000; font-weight:bold; '>continue</span>
        <span style='color:#800000; font-weight:bold; '>elif</span> digit <span style='color:#800000; font-weight:bold; '>in</span> common_delimiters<span style='color:#808030; '>:</span>
            <span style='color:#696969; '># Skip this delimiter.</span>
            <span style='color:#800000; font-weight:bold; '>continue</span>
        <span style='color:#800000; font-weight:bold; '>elif</span> digit <span style='color:#800000; font-weight:bold; '>in</span> valid_digits<span style='color:#808030; '>:</span>
            <span style='color:#696969; '># Ok, let's keep it.</span>
            <span style='color:#800000; font-weight:bold; '>pass</span>
        <span style='color:#800000; font-weight:bold; '>else</span><span style='color:#808030; '>:</span>
            <span style='color:#696969; '># What is this? It doesn't seem valid but we</span>
            <span style='color:#696969; '># just keep it</span>
            <span style='color:#800000; font-weight:bold; '>print</span> <span style='color:#0000e6; '>'Unknown character "%s" in "%s"'</span> <span style='color:#808030; '>%</span> \
                    <span style='color:#808030; '>(</span>digit<span style='color:#808030; '>,</span> number<span style='color:#808030; '>)</span>

        normalized <span style='color:#808030; '>+</span><span style='color:#808030; '>=</span> digit

    <span style='color:#800000; font-weight:bold; '>return</span> normalized

<span style='color:#800000; font-weight:bold; '>def</span> remove_extension_chars<span style='color:#808030; '>(</span>number<span style='color:#808030; '>)</span><span style='color:#808030; '>:</span>
    clean <span style='color:#808030; '>=</span> <span style='color:#0000e6; '>''</span>

    <span style='color:#800000; font-weight:bold; '>for</span> digit <span style='color:#800000; font-weight:bold; '>in</span> number<span style='color:#808030; '>:</span>
        <span style='color:#800000; font-weight:bold; '>if</span> digit <span style='color:#800000; font-weight:bold; '>in</span> extension_chars<span style='color:#808030; '>:</span>
            <span style='color:#696969; '># Extension character, drop this character and</span>
            <span style='color:#696969; '># the rest of the string.</span>
            <span style='color:#800000; font-weight:bold; '>break</span>

        clean <span style='color:#808030; '>+</span><span style='color:#808030; '>=</span> digit

    <span style='color:#800000; font-weight:bold; '>return</span> clean

<span style='color:#800000; font-weight:bold; '>def</span> phone_numbers_equal<span style='color:#808030; '>(</span>number1<span style='color:#808030; '>,</span> number2<span style='color:#808030; '>)</span><span style='color:#808030; '>:</span>
    number1 <span style='color:#808030; '>=</span> normalize_phone_number<span style='color:#808030; '>(</span>number1<span style='color:#808030; '>)</span>
    number1 <span style='color:#808030; '>=</span> remove_extension_chars<span style='color:#808030; '>(</span>number1<span style='color:#808030; '>)</span>

    number2 <span style='color:#808030; '>=</span> normalize_phone_number<span style='color:#808030; '>(</span>number2<span style='color:#808030; '>)</span>
    number2 <span style='color:#808030; '>=</span> remove_extension_chars<span style='color:#808030; '>(</span>number2<span style='color:#808030; '>)</span>

    <span style='color:#696969; '># Compare only the last 7 digits.</span>
    <span style='color:#696969; '># If one of the numbers is shorter than 7 digits it's</span>
    <span style='color:#696969; '># important that the comparison is done on the full</span>
    <span style='color:#696969; '># length of the numbers and not only on the last tiny</span>
    <span style='color:#696969; '># bits of the 2 numbers.</span>
    <span style='color:#800000; font-weight:bold; '>return</span> number1<span style='color:#808030; '>[</span><span style='color:#808030; '>-</span><span style='color:#008c00; '>7</span><span style='color:#808030; '>:</span><span style='color:#808030; '>]</span> <span style='color:#808030; '>=</span><span style='color:#808030; '>=</span> number2<span style='color:#808030; '>[</span><span style='color:#808030; '>-</span><span style='color:#008c00; '>7</span><span style='color:#808030; '>:</span><span style='color:#808030; '>]</span>
</pre>
<p align="center" class="img"><small>Python code for handling phone numbers<br /><a href="http://people.collabora.co.uk/~bari/phone.py">(Download the full code with tests)</a></small></p>
<p>If you are handling phone numbers on Maemo 5, there are already some useful functions to use: <a href="http://maemo.org/api_refs/5.0/5.0-final/libebook/libebook-e-book-util.html#e-normalize-phone-number">e_&#8203;normalize_&#8203;phone_&#8203;number</a>, <a href="http://maemo.org/api_refs/5.0/5.0-final/libosso-abook/libosso-abook-osso-abook-util.html#osso-abook-phone-numbers-equal">osso_&#8203;abook_&#8203;phone_&#8203;numbers_&#8203;equal</a>, <a href="http://maemo.org/api_refs/5.0/5.0-final/libosso-abook/OssoABookContact.html#osso-abook-contact-matches-phone-number">osso_&#8203;abook_&#8203;contact_&#8203;matches_&#8203;phone_&#8203;number</a> and <a href="http://maemo.org/api_refs/5.0/5.0-final/libosso-abook/libosso-abook-osso-abook-util.html#osso-abook-query-phone-number">osso_&#8203;abook_&#8203;query_&#8203;phone_&#8203;number</a>.</p>
<span class="net_nemein_favourites">18 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=611654fe778711df984b7b42eb9790ed90ed&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/611654fe778711df984b7b42eb9790ed90ed/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=611654fe778711df984b7b42eb9790ed90ed&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/611654fe778711df984b7b42eb9790ed90ed/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Mon, 14 Jun 2010 07:21:51 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-611654fe778711df984b7b42eb9790ed90ed</guid>
        </item>
        <item>
            <title>Contacts merger 0.1.3 in Maemo extras-testing</title>
            <link>http://blog.barisione.org/2010-06/contacts-merger-013-in-maemo-extras/</link>
            <description><![CDATA[
<p>Since my <a href="http://blog.barisione.org/2010-06/finding-the-duplicate-contacts-in-your-address-book/">previous post about the contacts merger</a>, I fixed a crash, made it handle better broken vcards, improved the partial matching and made the installer quit the address book when the plugin is installed, so no reboot is needed.<br />
The new 0.1.3 merger is now available in <a href="http://wiki.maemo.org/Extras-testing">Maemo extras-testing</a>, just look for “Merge your duplicate contacts” in the application manager.</p>
<h4>What&#8217;s next</h4>
<p>Suppose I <em>could</em> have some spare time to write some <em>small</em> applications relating to the N900 address book; what would you want me to work on? The application should be small and not require changes to the closed source components. Suggestions are welcome in the comments, but I cannot assure you anything <img src="http://farm1.static.flickr.com/189/458651157_780851832e_o.png" alt=":)" /></p>
<p><small><b>Update:</b> I meant extras-testing of course, not extras</small></p>
<span class="net_nemein_favourites">22 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=cb12c040734511dfac340f82131b2be32be3&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/cb12c040734511dfac340f82131b2be32be3/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>1 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=cb12c040734511dfac340f82131b2be32be3&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/cb12c040734511dfac340f82131b2be32be3/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Tue, 08 Jun 2010 20:47:46 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-cb12c040734511dfac340f82131b2be32be3</guid>
        </item>
        <item>
            <title>Finding duplicate contacts in your address book</title>
            <link>http://blog.barisione.org/2010-06/finding-the-duplicate-contacts-in-your-address-book/</link>
            <description><![CDATA[
<p>One of the common complaints about the Maemo address book is that it&#8217;s easy to get a lot of duplicate contacts as the address book is able to pull your contacts from various IM services. From the beginning there has been a way to merge duplicates, but it meant manually going through all of your contacts hunting down the duplicates.<br />
Today I finished writing the first version of a program that tries to automatically detect duplicates based on the IM names, emails, phone numbers and names. Of course this is just based on heuristics; you still have to go through the list and select the contacts that you want to merge. You can find this utility under the name “Merge your duplicate contacts” in the application manager and it&#8217;s available in <a href="http://wiki.maemo.org/Extras-devel#How_to_activate_Extras-devel">Maemo extras-devel</a>. Remember that extras-devel contains unstable software: enable it only if you really know what you are doing!<br />
After installing Contacts Merger you have to reboot your phone<sup>[1]</sup> and then you will get a “Find duplicate contacts” button in the menu of the main address book window.</p>
<p align="centre" class="img"><a href="http://farm5.static.flickr.com/4010/4667729768_034435a3d0_b.jpg"><img src="http://farm5.static.flickr.com/4010/4667729768_034435a3d0_b.jpg" alt="The window suggesting the possible merges" class="scaled" width="400" /></a><br /><small>The window suggesting the possible merges</small></p>
<p><b>Update:</b> I released 0.1.1 that fixes a crasher in case of malformed contacts.</p>
<p><b>Update 2:</b> Forgot to say <a href="http://git.collabora.co.uk/?p=user/bari/contacts-merger.git;a=summary">where to get the code</a>.</p>
<p><small><b>[1]</b> Sadly the address book doesn&#8217;t automatically load newly installed plugins without a restart; see <a href="https://bugs.maemo.org/show_bug.cgi?id=10542" alt="Maemo bugzilla: Reboot needed after installing the contacts merger">bug #10542</a>.</small></p>
<span class="net_nemein_favourites">20 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=e9d7cf6e6fb411df96e089e009ab9d5e9d5e&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/e9d7cf6e6fb411df96e089e009ab9d5e9d5e/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>2 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=e9d7cf6e6fb411df96e089e009ab9d5e9d5e&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/e9d7cf6e6fb411df96e089e009ab9d5e9d5e/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Fri, 04 Jun 2010 08:21:20 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-e9d7cf6e6fb411df96e089e009ab9d5e9d5e</guid>
        </item>
        <item>
            <title>Plugins for the N900 address book</title>
            <link>http://blog.barisione.org/2010-05/plugins-for-the-n900-address-book/</link>
            <description><![CDATA[
<p>Finally the new update for Maemo 5 is out; it&#8217;s good to see that months of bug fixes and new features are finally available to everybody! One of the new features, not directly visible to users, is that developers can now add new buttons to the Contacts application menu. At the beginning we wanted to make the plugin system more powerful, but sadly it required too many changes and we didn&#8217;t have enough time to finish and test it properly.</p>
<p align="centre" class="img"><a href="http://farm5.static.flickr.com/4005/4638741953_03df615705_o.png"><img src="http://farm5.static.flickr.com/4005/4638741953_03df615705_o.png" alt="A “Hello World” button added by the example plugin" class="scaled" width="400" /></a><br /><small>A “Hello World” button added by the example plugin</small></p>
<p>To add new buttons you have to create a new object that derives from <code>OssoABookMenuExtension</code> and implements the required methods. For an example of this, see the <a href="http://maemo.gitorious.org/osso-abook-plugin-example/osso-abook-plugin-example">example on gitorious</a> that <a href="http://taschenorakel.de/mathias/">Mathias</a> wrote and the <a href="http://maemo.org/api_refs/5.0/5.0-final/libosso-abook/OssoABookMenuExtension.html">API documentation</a>.<br />
Please, don&#8217;t go crazy with this new feature and don&#8217;t add 2000 different buttons to the menu!</p>
<span class="net_nemein_favourites">15 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=87bdad16681c11dfa534e1131af032503250&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/87bdad16681c11dfa534e1131af032503250/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=87bdad16681c11dfa534e1131af032503250&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/87bdad16681c11dfa534e1131af032503250/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Tue, 25 May 2010 16:06:48 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-87bdad16681c11dfa534e1131af032503250</guid>
        </item>
        <item>
            <title>Merge back your Facebook contacts</title>
            <link>http://blog.barisione.org/2010-05/merge-back-your-facebook-contacts/</link>
            <description><![CDATA[
<p>As I said in <a href="http://blog.barisione.org/2010-05/facebook-and-the-n900-address-book/">my previous blog post</a>, some changes in the Facebook XMPP servers lead to the unmerging of the Facebook contacts that were merged with local contacts in the N900 address book. To fix this problem I wrote the small utility Facebook migrator, now available in <a href="http://wiki.maemo.org/Extras-testing">Maemo extras-testing</a>, that automatically merges back your contacts. Please remember that extras-testing contains unstable software and mine is not an exception! The source code is available on the <a href="http://git.collabora.co.uk/?p=user/bari/fb-migrator.git;a=summary">Collabora git repositories</a>.</p>
<p>If you have any feedback, please let me know in the comments to this post. The only known issue at the moment is that saving your contacts is quite slow, but I didn&#8217;t bother making it fast considering that it&#8217;s just a one time operation.</p>
<h3>Wordpress troubles</h3>
<p>In other news, I noticed that I don&#8217;t get an email notification anymore when somebody comments on my blog, but a simple PHP script that uses the <code>mail()</code> function sends emails correctly. In the logs I don&#8217;t see anything useful and I&#8217;m sure the notifications are not in the spam folder. Does anybody have any suggestion on how to debug this?</p>
<span class="net_nemein_favourites">13 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=2ce8e95c645011dfad8e9dde2cdccec1cec1&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/2ce8e95c645011dfad8e9dde2cdccec1cec1/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=2ce8e95c645011dfad8e9dde2cdccec1cec1&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/2ce8e95c645011dfad8e9dde2cdccec1cec1/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Thu, 20 May 2010 20:21:50 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-2ce8e95c645011dfad8e9dde2cdccec1cec1</guid>
        </item>
        <item>
            <title>Facebook and the N900 address book</title>
            <link>http://blog.barisione.org/2010-05/facebook-and-the-n900-address-book/</link>
            <description><![CDATA[
<p>The N900 address book can merge multiple contacts into a single entity: if you have a friend that has a phone number, an email address, a Jabber user name, a MSN one and so on, then you can merge all of the different entities into a single meta-contact.</p>
<p align="centre" class="img"><a href="http://farm4.static.flickr.com/3525/4031796040_62de75ded3_o.png"><img src="http://farm4.static.flickr.com/3525/4031796040_62de75ded3_o.png" alt="Locally stored details and an IM user name in the same contact" class="scaled" /></a><br /><small>Locally stored details and an IM user name in the same contact</small></p>
<p>The different IM contacts are tracked through their username and should be immutable<sup><small>[1]</small></sup>, but yesterday Facebook changed all the IDs from something like “u123456789@chat.facebook.com” to “-123456789@chat.facebook.com”. For the address book this means that all the previous contacts were deleted from the IM roster and new contacts were added, so you get duplicate contacts. Moreover, when a contact is removed from the roster we leave the IM user name in the contact details, if you click the button you can add the contact back to one of your rosters. In the Facebook case this means that you end up with all of your meta-contacts with a useless button that cannot do nothing.</p>
<p>The fix for this is to remove the old IDs and merge your contacts again, simple but tedious. A better way to do it is to be patient and wait until I finish a program that will do it for you in a few click <img src="http://farm1.static.flickr.com/218/458651141_54bbc48288_o.png" alt=";)" /></p>
<p><b>Update:</b> I finished and release the program, see <a href="http://blog.barisione.org/2010-05/merge-back-your-facebook-contacts/">my blog post about Facebook migrator</a>.</p>
<p><small>[1] Actually, some changes in the IDs are possible for normalisation purposes; if you add “FooBar@example.COM” it will become “foobar@example.com” in your roster. (And yes, the normalisation is buggy in PR1.1, but it will be fixed in PR1.2.)</small></p>
<span class="net_nemein_favourites">18 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=fe1c87405eb511dfbb63b77b29d9163a163a&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/fe1c87405eb511dfbb63b77b29d9163a163a/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=fe1c87405eb511dfbb63b77b29d9163a163a&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/fe1c87405eb511dfbb63b77b29d9163a163a/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Thu, 13 May 2010 16:46:23 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-fe1c87405eb511dfbb63b77b29d9163a163a</guid>
        </item>
        <item>
            <title>GTK surprises on Maemo</title>
            <link>http://blog.barisione.org/2010-05/gtk-surprises-on-maemo/</link>
            <description><![CDATA[
<p>Sometimes the creation of the contact chooser used on the N900 can be slow so, using callgrind and kcachegrind, I tried to understand what is the source of the slowness. This lead me to find some unexpected, and apparently undocumented, differences between upstream GTK and the Maemo version.</p>
<p align="centre" class="img"><a href="http://farm5.static.flickr.com/4012/4576575676_7c4bee3997_o.png"><img src="http://farm5.static.flickr.com/4012/4576575676_7c4bee3997_o.png" alt="The Maemo 5 contact chooser" class="scaled" /></a><br /><small>The Maemo 5 contact chooser</small></p>
<p>The widget contains a GtkTreeView that uses a model with just one column for the contact objects. How can its creation be so slow? To my surprise most of the time was spent decompressing the avatar images!<br />
The avatars of the contacts are loaded, scaled and cropped in the <a href="http://library.gnome.org/devel/gtk/stable/GtkTreeViewColumn.html#gtk-tree-view-column-set-cell-data-func">cell data function</a> of the GtkTreeViewColumn as, for various reasons, we cannot cache on disk the resulting image or generate it before the creation of the widget. Following calls of the cell data function for the same row won&#8217;t need to generate the avatar anymore. Doing non-trivial operations in the cell data function is not the nicest thing to do, but this should not be a problem as the cell data function is called only for the visible rows, right? No, at least not on Maemo!<br />
To verify it just try <a href="http://people.collabora.co.uk/~bari/tmp/cell-test.c">this example program</a>: on Maemo the <code>cell_func()</code> function is called once per item in the model plus once per visible item, elsewhere only once per visible item.</p>
<p>After a bit of investigation together with <a href="http://people.gnome.org/~csaavedra/">Claudio</a>, we discovered that on Maemo there is a function called <code>gtk_&#8203tree_&#8203view_&#8203column_&#8203get_&#8203cell_&#8203data_&#8203hint()</code> that returns <code>GTK_&#8203TREE_&#8203CELL_&#8203DATA_&#8203HINT_&#8203KEY_&#8203FOCUS</code>, <code>GTK_&#8203TREE_&#8203CELL_&#8203DATA_&#8203HINT_&#8203SENSITIVITY</code> or <code>GTK_&#8203TREE_&#8203CELL_&#8203DATA_&#8203HINT_&#8203ALL</code>. The hint tells you why the function was called; in the example code the function is called on the hidden rows only to get their sensitivity so there is no need to set the “<code>pixbuf</code>” property of the cell at this point.</p>
<p>Just this tiny change in the address book code makes the contact chooser open much faster if you have a lot of contacts with big avatars, like the ones that <a href="http://hermes.garage.maemo.org/">Hermes</a> creates. On the other hand the delayed loading made the scrolling become non-smooth <img src="http://farm1.static.flickr.com/217/458651161_e4a46b807b_o.png" alt=":(" /><br />
To fix the scrolling I had to implement some asynchronous loading of the avatars. The contact chooser now tries to load as many avatars as possible in idle moments and also tries to load first the avatars for the contacts that the user is more likely to see. The results seem quite good; now the contact list is fast, scrolling is smooth and the delayed loading of avatars should not be visible in normal cases.</p>
<span class="net_nemein_favourites">17 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=50206904575811df84eecbccff30ca8cca8c&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/50206904575811df84eecbccff30ca8cca8c/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=50206904575811df84eecbccff30ca8cca8c&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/50206904575811df84eecbccff30ca8cca8c/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Tue, 04 May 2010 08:07:44 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-50206904575811df84eecbccff30ca8cca8c</guid>
        </item>
        <item>
            <title>jid-to-email</title>
            <link>http://blog.barisione.org/2010-02/jid-to-email/</link>
            <description><![CDATA[
<p>During the Christmas holidays I managed to find some time to write a couple of small programs related to the address book on the N900; they are nothing too fancy (no UI, no proper packaging, not the best code quality, etc.) as I wrote them for my personal use, but I still think it could be useful to share them with other people.</p>
<p>The one I&#8217;m talking about today is a simple command-line utility that adds an email address to your contacts based on the Jabber ID (or on the ID of other protocols). This is very useful to me as in Collabora we all have a roster automatically filled with the other Collaborans, this way I can automatically have their email addresses in my address book.</p>
<p>This cannot be done automatically for all the contact as, usually, it&#8217;s not true that a Jabber ID is also a valid email address (for instance it&#8217;s not true for jabber.org users), but it&#8217;s true at least for the GMail and Collabora servers.</p>
<p>If you want to try jid-to-email get the <a href="http://people.collabora.co.uk/~bari/jid-to-email">already compiled arm executable</a> or <a href="http://git.collabora.co.uk/?p=user/bari/jid-to-email.git;a=summary">the source code</a>. <b>Remember to take a backup</b> before trying it, I don&#8217;t want to be blamed if something goes horribly wrong <img src="http://farm1.static.flickr.com/218/458651141_54bbc48288_o.png" alt=";)" />.</p>
<p>The program accepts two arguments: the vcard field for the IM protocol and a regular expression. For instance, if you cd to the directory where the program is and do “./jid-to-email X-JABBER @collabora.co.uk”, an email address will be added to all the contacts that have a Jabber ID containing “@collabora.co.uk”. Similarly “./jid-to-email X-JABBER &#8216;@g(oogle)?mail\.com&#8217;” will add an email address to all the contacts with a Jabber ID containing “@gmail.com” or “@googlemail.com”. You could also try using “X-MSN” to do the same thing for contacts that use their GMail address as MSN ID.</p>
<p>Please, let me know if you know any other server where the Jabber ID is always a valid email address.</p>
<p>By the way, this week-end I&#8217;m going to Brussels for FOSDEM: hope to meet a lot of GNOME people there!</p>
<p align="centre" class="img"><a href="http://www.fosdem.org"><img src="http://www.fosdem.org/promo/going-to" alt="I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting" /></a></p>
<span class="net_nemein_favourites">12 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=2b65df5210b011df80407308e882f228f228&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/2b65df5210b011df80407308e882f228f228/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=2b65df5210b011df80407308e882f228f228&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/2b65df5210b011df80407308e882f228f228/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Wed, 03 Feb 2010 08:37:00 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-2b65df5210b011df80407308e882f228f228</guid>
        </item>
        <item>
            <title>Early Christmas</title>
            <link>http://blog.barisione.org/2009-12/early-christmas/</link>
            <description><![CDATA[
<p>It looks like Santa Claus arrived early for the Collabora employees <img src="http://farm1.static.flickr.com/205/458651139_21126b48de_o.png" alt=":D" /></p>
<p align="center" class="img"><a href="http://www.flickr.com/photos/barisione/4171063869/"><img src="http://farm3.static.flickr.com/2538/4171829148_ea37c76e01_o.jpg" alt="The N900 pyramid" /></a><br /><small>N900 pyramid, and sadly some of them didn&#8217;t arrive yet</small></p>
<span class="net_nemein_favourites">24 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=68eb0622e4c811de912a1d2708372f272f27&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/68eb0622e4c811de912a1d2708372f272f27/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>1 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=68eb0622e4c811de912a1d2708372f272f27&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/68eb0622e4c811de912a1d2708372f272f27/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Wed, 09 Dec 2009 13:00:00 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-68eb0622e4c811de912a1d2708372f272f27</guid>
        </item>
        <item>
            <title>Contacts on Maemo</title>
            <link>http://blog.barisione.org/2009-10/contacts-on-maemo/</link>
            <description><![CDATA[
<p>After the Maemo Summit the details on the address book application and framework in Maemo 5 are finally completely public so I can openly talk about what <a href="http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Using_Generic_Platform_Components/Using_Address_Book_API">I worked on</a> during the past year and, even better, I actually have a smartphone that runs this software! (Thanks to Nokia that gave out 300 N900s, but I will talk about this in my next post)</p>
<p align="center" class="img"><a href="http://www.flickr.com/photos/barisione/4031795864/"><img src="http://farm3.static.flickr.com/2567/4031795864_86a282108f.jpg" alt="Contacts on the N900" class="scaled" /></a><br /><small>Contacts on the N900</small></p>
<p align="center" class="img"><a href="http://www.flickr.com/photos/barisione/4031796040/"><img src="http://farm4.static.flickr.com/3525/4031796040_33e4c44322.jpg" alt="Contact details" class="scaled" /></a><br /><small>Contact details</small></p>
<p>As you can see from the screenshots, the Contacts application has everything you would expect from a normal phone address book but it also tightly integrates IM. Your local, Jabber/GTalk and Skype contacts will appear in the same address book and, if you have a friend on multiple IM protocols, you can easily merge all the contacts into a single entity.</p>
<p>My main task has been making the component responsible for the IM part of the address book work properly, this component is an evolution-data-server backend (recently <a href="http://maemo.gitorious.org/eds-backend-telepathy/eds-backend-telepathy">released under LGPL</a>) that acts as a bridge between the Telepathy IM framework and evolution-data-server. See the <a href="http://maemo.gitorious.org/eds-backend-telepathy/eds-backend-telepathy/blobs/raw/master/README">README file</a> for more details.<br />
Sadly the library on top of evolution-data-server that does the magic contact merging and contains the widgets used on Maemo is not open, but there is <a href="https://bugs.maemo.org/show_bug.cgi?id=5549">some hope for it</a>.</p>
<p align="center" class="img"><a href="http://farm3.static.flickr.com/2646/4031042575_4769654a27_o.png"><img src="http://farm3.static.flickr.com/2548/4031810672_d240ffdee4_o.png" alt="Address book components" /></a><br /><small>Address book components</small></p>
<p>At the Maemo Summit I also gave a talk on Telepathy and how it&#8217;s used on Maemo, both for messaging/VOIP and for the contacts integration. The slides are available in <a href="http://people.collabora.co.uk/~bari/slides/telepathy-maemo-summit-2009.pdf">PDF</a> or in <a href="http://people.collabora.co.uk/~bari/slides/telepathy-maemo-summit-2009.odp">OpenOffice.org format</a> (but for some reason colours look wrong in some recent versions of OpenOffice).</p>
<span class="net_nemein_favourites">34 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=07a4ae44be3611deb136c929886840d740d7&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/07a4ae44be3611deb136c929886840d740d7/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=07a4ae44be3611deb136c929886840d740d7&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/07a4ae44be3611deb136c929886840d740d7/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Marco Barisione &lt;marco.barisione@collabora.co.uk&gt;</author>
            <category>feed:a04bb39280ce918c658ed6060b2e8b81</category>
            <pubDate>Wed, 21 Oct 2009 10:20:49 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-07a4ae44be3611deb136c929886840d740d7</guid>
        </item>
    </channel>
</rss>
