<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet Collabora</title>
  <updated>2012-05-17T07:16:16Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Anonymous Coward</name>
  </author>
  <id>http://planet.collabora.co.uk/atom.xml</id>
  <link href="http://planet.collabora.co.uk/atom.xml" rel="self"/>
  <link href="http://planet.collabora.co.uk/" rel="alternate"/>

  <entry xml:lang="en">
    <id>http://wm161.net/?p=850</id>
    <link href="http://wm161.net/2012/05/16/musings-on-the-linux-audio-stack/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=musings-on-the-linux-audio-stack" rel="alternate" type="text/html"/>
    <title>Trever Fischer: Musings on the linux audio stack</title>
    <summary>I spent some free time today getting caught up on the large backlog of phonon-gstreamer bugs. Towards the end, I started to have delusions of grandeur: Imagine a phonon-gstreamer codebase that doesn't require supporting a zillion different audio frameworks, ...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I spent some free time today getting caught up on the large backlog of phonon-gstreamer bugs. Towards the end, I started to have delusions of grandeur: Imagine a phonon-gstreamer codebase that doesn’t require supporting a zillion different audio frameworks, and instead belays that task to something that I don’t have to maintain.</p>
<p>My question here, is how many people would throw a fit if phonon-gstreamer dropped support for ALSA and OSS, and forced everyone to use pulseaudio by way of GStreamer’s excellent pulseaudio support?</p>
<p>Hold on, lower your pitchforks for a minute. Let us consider the audio framework landscape in the modern world:</p>
<ul>
<li>Pulseaudio is the One True Way for audio playback in Gnome</li>
<li>For 90% of the support questions we handle in #kde-multimedia, the solution is “use pulseaudio”.</li>
<li>Pulseaudio can handle using OSS, ALSA, Bluetooth, or whatever your audio output is, through one consistent entry point</li>
<li>It is a total headache to figure out any bugs in your audio when music goes from Amarok-&gt;Phonon-&gt;Phonon-GStreamer-&gt;(ALSA, OSS, Pulseaudio, god knows what)-&gt;Speakers-&gt;Earholes</li>
</ul>
<p><span style="font-size: small;"><span style="line-height: 24px;">Additionally, I really don’t feel like testing phonon-gstreamer on all those different kernel-level interfaces with exotic setups every time I fix a bug and am afraid I’d introduce another twelve. The PulseAudio folks seem to do a fantastic job at that already. Phonon isn’t meant for real-time playback or production studio quality audio. Thats what Jack is meant for.</span></span></p>
<p><span style="font-size: small;"><span style="line-height: 24px;">I can’t think of a good reason why we shouldn’t stand on the shoulders of giants by making PulseAudio handle all the hard stuff on Unix involving massaging PCM formats, equalizers, matching playback category with output device, enumerating outputs both real and virtual, volume control, etc.</span></span></p>
<p><span style="font-size: small;"><span style="line-height: 24px;">If you can, leave a comment on this post. I’m not making an official statement saying that I’m definitely removing ALSA and OSS support from phonon-gstreamer, I’m merely asking for feedback to see what can be done to fix things at all levels in the audio stack.</span></span></p>
<p class="wp-flattr-button"/> <p><a href="http://wm161.net/blog/?flattrss_redirect&amp;id=850&amp;md5=b5fc0c218eb66ef6fc69cabedfdcd66f" target="_blank" title="Flattr"><img alt="flattr this!" src="http://wm161.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png"/></a></p></div>
    </content>
    <updated>2012-05-16T19:51:45Z</updated>
    <category term="Fedora"/>
    <category term="Gnome"/>
    <category term="KDE"/>
    <author>
      <name>Trever</name>
    </author>
    <source>
      <id>http://wm161.net</id>
      <link href="http://wm161.net/browse/linux/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://wm161.net" rel="alternate" type="text/html"/>
      <subtitle>Your daily source of everything!</subtitle>
      <title>wm161.net » Linux</title>
      <updated>2012-05-16T20:01:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://wm161.net/?p=848</id>
    <link href="http://wm161.net/2012/05/16/zeitgeist-improvements-with-genetic-algorithms/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=zeitgeist-improvements-with-genetic-algorithms" rel="alternate" type="text/html"/>
    <title>Trever Fischer: Zeitgeist improvements with genetic algorithms</title>
    <summary>Continuing with my previous post about the Zeitgeist team's improvements with regards to speed, there's a nifty tool in the sources I wrote yesterday that uses a genetic algorithm to find the slowest queries you can throw at the ...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Continuing with my previous post about the Zeitgeist team’s improvements with regards to speed, there’s <a href="http://cgit.freedesktop.org/zeitgeist/zeitgeist/tree/tools/development/slow_query_finder.py">a nifty tool in the sources</a> I wrote yesterday that uses a genetic algorithm to find the slowest queries you can throw at the engine.</p>
<p>If you’re not familiar with genetic algorithms, here’s a brief review of how they work:</p>
<ul>
<li>Start off with an array of numbers, with each index corresponding to a particular attribute of the problem.</li>
<li>Evaluate the fitness of that genome</li>
<li>Simulate evolution of the successful genomes by crossing, mutations, etc, just as you would with real DNA chromosomes</li>
</ul>
<p>In the case of this Zeitgeist tool, the chromosome refers to a query, and each allele (index of the array) refers to an attribute of the query. Here’s a relevant comment from the sources:</p>
<pre># Chromosome to data mapping:
# 0, 1 - Timerange begin and end. If both are zero, we use timerange.always()
# 2 - The search type. Anything over 30 is a dead individual.
# 3-5 - Specify template properties. Anything besides 0 and 1 is dead.
# 3 - Specify a subject interpretation
# 4 - Specify a subject manifestation
# 5 - Specify an event actor</pre>
<p>Using the super cool pyevolve library, implementing a genetic algorithm is super easy:</p>
<pre>def eval_func(chromosome):
  query = buildQuery(chromosome)
  if query is None:
    return 0

  start = time.time()
  results = engine.find_events(*query)
  overall = (time.time() - start)
  return (results["find_events"]*2+results["find_event_ids"]*4+results["get_events"])*1000

genome = G1DList.G1DList(6)
genome.evaluator.set(eval_func)
ga = GSimpleGA.GSimpleGA(genome)
ga.evolve(freq_stats = 1)
query = buildQuery(ga.bestIndividual())
assert query is not None
print query, len(engine.find_events(*query))</pre>
<p>Let it run for a long while on a big database, and you end up with a query that takes forever. Due to how evolution works, it isn’t <strong>the</strong> longest running query, but it is certainly one that takes a long time.</p>
<p class="wp-flattr-button"/> <p><a href="http://wm161.net/blog/?flattrss_redirect&amp;id=848&amp;md5=5db83903327398bd3c510388b2fbee2d" target="_blank" title="Flattr"><img alt="flattr this!" src="http://wm161.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png"/></a></p></div>
    </content>
    <updated>2012-05-16T16:43:29Z</updated>
    <category term="Fedora"/>
    <category term="Gnome"/>
    <category term="KDE"/>
    <category term="Uncategorized"/>
    <author>
      <name>Trever</name>
    </author>
    <source>
      <id>http://wm161.net</id>
      <link href="http://wm161.net/browse/linux/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://wm161.net" rel="alternate" type="text/html"/>
      <subtitle>Your daily source of everything!</subtitle>
      <title>wm161.net » Linux</title>
      <updated>2012-05-16T20:01:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.halon.org.uk/?p=21</id>
    <link href="http://blog.halon.org.uk/2012/05/life-eula/" rel="alternate" type="text/html"/>
    <title>Neil McGovern: What if life was subjected to a EULA?</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p/></div>
    </content>
    <updated>2012-05-16T16:35:45Z</updated>
    <category term="Geek"/>
    <category term="Politics"/>
    <author>
      <name>Neil McGovern</name>
    </author>
    <source>
      <id>http://blog.halon.org.uk</id>
      <link href="http://blog.halon.org.uk/category/geek/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blog.halon.org.uk" rel="alternate" type="text/html"/>
      <subtitle>Politics, tech and herding cats</subtitle>
      <title>Liberal Murmurs » Geek</title>
      <updated>2012-05-16T16:45:55Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://wm161.net/?p=844</id>
    <link href="http://wm161.net/2012/05/15/zeitgeist-optimizations/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=zeitgeist-optimizations" rel="alternate" type="text/html"/>
    <title>Trever Fischer: Zeitgeist optimizations</title>
    <summary>The Zeitgeist team has been hard at work lately. We recently moved from Launchpad and Bzr to freedesktop.org and git, just in time for the 0.9 release. Since then, Seif and I have been hammering away at making a ...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The Zeitgeist team has been hard at work lately. We recently moved from Launchpad and Bzr to freedesktop.org and git, just in time for the 0.9 release. Since then, Seif and I have been hammering away at making a bunch of speed improvements and trying to scale the engine to be able to handle a few billion events just as fast as it can handle a few hundred thousand.</p>
<p>Our first experiment has been focusing on the sqlite indexes. This one index tweak appears to increase our benchmark speeds by almost 45%:</p>
<pre id="comment_text_8">CREATE INDEX event_timestamp_subj_interp_subj_id_id
                   ON event(timestamp, subj_interpretation, subj_id, id)</pre>
<p id="comment_text_8">And here’s the graph to prove it:</p>
<p><a href="http://wm161.net/blog/wp-content/uploads/2012/05/chart_1-2.png"><img alt="" class="aligncenter size-medium wp-image-845" height="132" src="http://wm161.net/blog/wp-content/uploads/2012/05/chart_1-2-300x132.png" title="zeitgeist query speeds" width="300"/></a></p>
<p>Shorter lines are better. Blue is the 0.9 release, and the orange is the tiny index change. All of our raw data is in <a href="https://docs.google.com/spreadsheet/pub?key=0AmIxH9d4RTDidGpIUldYQ3NuZDAxdmRzdGo0N0xobUE&amp;output=html">this google spreadsheet</a>, so feel free to have a look. I can’t guarantee that you’ll immediately understand the information, but I’m open to explain it to those interested.</p>
<p> </p>
<p class="wp-flattr-button"/> <p><a href="http://wm161.net/blog/?flattrss_redirect&amp;id=844&amp;md5=8af60f82be7bcf11c2c1ec1508855d01" target="_blank" title="Flattr"><img alt="flattr this!" src="http://wm161.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png"/></a></p></div>
    </content>
    <updated>2012-05-15T12:54:35Z</updated>
    <category term="Fedora"/>
    <category term="Gnome"/>
    <category term="KDE"/>
    <author>
      <name>Trever</name>
    </author>
    <source>
      <id>http://wm161.net</id>
      <link href="http://wm161.net/browse/linux/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://wm161.net" rel="alternate" type="text/html"/>
      <subtitle>Your daily source of everything!</subtitle>
      <title>wm161.net » Linux</title>
      <updated>2012-05-16T20:01:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://arunraghavan.net/?p=1333</id>
    <link href="http://arunraghavan.net/2012/05/pulseaudio-2-0-twice-the-goodness/" rel="alternate" type="text/html"/>
    <title>Arun Raghavan: PulseAudio 2.0: Twice The Goodness!</title>
    <summary>That’s right, it’s finally out! Thanks go out to all our contributors for the great work (there’s too many — see the shortlog!). The highlights of the release follow. Head over to the announcement or release notes for more details. Dynamic sample rate switching by Pierre-Louis Bossart: This makes PulseAudio even more power efficient. Jack [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>That’s right, it’s finally out! Thanks go out to all our contributors for the great work (there’s too many — see the shortlog!). The highlights of the release follow. Head over to the <a href="http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-May/013538.html">announcement</a> or <a href="http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/2.0">release notes</a> for more details.</p>

<ul>
<li><p>Dynamic sample rate switching by Pierre-Louis Bossart: This makes PulseAudio even more power efficient.</p></li>
<li><p>Jack detection by David Henningsson: Separate volumes for your laptop speakers and headphones, and more stuff coming soon.</p></li>
<li><p>Major echo canceller improvements by me: Based on the <tt>WebRTC.org</tt> audio processing library, we now do better echo cancellation, remove the need to fiddle with the mic volume knob and have fixed <acronym title="Acoustic Echo Cancellation">AEC</acronym> between laptop speakers and a USB webcam mic.</p></li>
<li><p>A virtual surround module by Niels Ole Salscheider: Try it out for some virtual surround sound shininess!</p></li>
<li><p>Support for Xen guests by Giorgos Boutsiouki: Should make audio virtualisation in guests more efficient.</p></li>
</ul>

<p><a href="http://arunraghavan.net/wp-content/uploads/pa-releases.jpg"><img alt="We don't always make a release, but when we do, it's awesome" class="aligncenter size-medium wp-image-1334" height="300" src="http://arunraghavan.net/wp-content/uploads/pa-releases-239x300.jpg" title="pa-releases" width="239"/></a></p>

<p>Special thanks from me to <a href="http://www.collabora.com/projects/pulseaudio/">Collabora</a> for giving me some time for upstream work.</p>

<p>Packages are available on Gentoo, Arch, and probably soon on other distributions if they’re not already there.</p></div>
    </content>
    <updated>2012-05-12T10:50:34Z</updated>
    <category term="Blog"/>
    <category term="collabora"/>
    <category term="f/oss"/>
    <category term="gentoo"/>
    <category term="gnome"/>
    <category term="pulseaudio"/>
    <author>
      <name>Arun</name>
    </author>
    <source>
      <id>http://arunraghavan.net</id>
      <link href="http://arunraghavan.net/tag/foss/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://arunraghavan.net" rel="alternate" type="text/html"/>
      <subtitle>Extremely pithy tagline here</subtitle>
      <title>Arun Raghavan » f/oss</title>
      <updated>2012-05-12T11:01:20Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blogs.gnome.org/wjjt/?p=945</id>
    <link href="http://blogs.gnome.org/wjjt/2012/05/11/maps-and-clocks-and-contact-locations/" rel="alternate" type="text/html"/>
    <title>Will Thompson: Maps and clocks and contact locations</title>
    <summary>Once upon a time, three intrepid individuals made Empathy publish your location to your contacts, and show your contacts’ locations on a map. Today, I noticed that the Location tab is missing from Preferences—I guess Debian’s Empathy is built without GeoClue support for some reason—and as a result the map looks rather forlorn, what with [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Once upon a time, <a href="http://blog.pierlux.com/index.html">three</a> <a href="http://dgh.livejournal.com/">intrepid</a> <a href="http://alban-apinc.blogspot.co.uk/">individuals</a> made Empathy publish your location to your contacts, and <a href="http://blog.pierlux.com/index.html%3Fp=943.html">show your contacts’ locations on a map</a>. Today, I noticed that the <i>Location</i> tab is missing from <i>Preferences</i>—I guess Debian’s Empathy is built without GeoClue support for some reason—and as a result the map looks rather forlorn, what with none of my contacts publishing their location:</p>
<p><img alt="Empathy's empty Contact Map View window" class="center frame" height="355" src="http://blogs.gnome.org/wjjt/files/2012/05/map.png" width="439"/></p>
<p>A map is an obvious demo to build, but I don’t think it’s that useful (even when it had more than zero contacts on it, I never looked at it).<sup><a class="footnote-link footnote-identifier-link" href="http://blogs.gnome.org/wjjt/2012/05/11/maps-and-clocks-and-contact-locations/#footnote_0_945" id="identifier_0_945" title="Top designers agree! To quote Allan Day, &amp;#8220;I could live without contacts on a map  &amp;#8221;.">1</a></sup> So what would be more useful? For starters, here’s some “relevant art” from Skype, showing a contact’s local time in their tooltip:</p>
<p><img alt="Ra&#xFA;l's Skype tooltip shows it's 6am where he is." class="center frame" height="106" src="http://blogs.gnome.org/wjjt/files/2012/05/rgsskype1.png" width="245"/></p>
<p>Adding that to Empathy might be a useful first step. But unlike Skype, it’s possible to use this information outside the IM app. So, if I spend a lot of time chatting to friends in Melbourne and New York, why not automatically add those timezones to <a href="https://live.gnome.org/Design/Apps/Clock#Tentative_Design">GNOME Clocks</a>? (The last two mock-ups in that section look particularly bare—perhaps the names of some contacts could show up in the space where “local time” does for Boston.)</p>
<p>For this to be useful, of course, someone would have to fix the publishing of location information in the first place. But if fixing it produced a more compelling feature than a map, it would not be such a thankless task.</p>
<ol class="footnotes"><li class="footnote" id="footnote_0_945">Top designers agree! To quote Allan Day, “I could live without contacts on a map <img alt=";)" class="wp-smiley" src="http://blogs.gnome.org/wjjt/wp-content/mu-plugins/tango-smilies/tango/face-wink.png"/> ”.</li></ol></div>
    </content>
    <updated>2012-05-11T13:20:05Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>Will Thompson</name>
    </author>
    <source>
      <id>http://blogs.gnome.org/wjjt</id>
      <link href="http://blogs.gnome.org/wjjt/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blogs.gnome.org/wjjt" rel="alternate" type="text/html"/>
      <subtitle>wjt</subtitle>
      <title>This is not your bugtracker.</title>
      <updated>2012-05-17T07:15:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-7201445798030158398.post-9215617195848499780</id>
    <link href="http://ppaalanen.blogspot.com/2012/05/wayland-anti-fud.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default/9215617195848499780" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default/9215617195848499780" rel="self" type="application/atom+xml"/>
    <link href="http://ppaalanen.blogspot.com/2012/05/wayland-anti-fud.html" rel="alternate" type="text/html"/>
    <title>Pekka Paalanen: Wayland anti-FUD</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I was replying to an email, and got side-tracked into writing some Wayland anti-FUD. There are lots of myths about Wayland out there, so I thought to better make it into a blog post.<br/><br/>This post is about the very small overhead of a Wayland (system) compositor, and why <a href="http://wayland.freedesktop.org/">Wayland</a> over network will be much better than X-over-ssh.<br/><br/>I predict that on desktops and other systems that may have accounts for more than one person, there will actually be <i>two</i> Wayland compositors stacked. There is a system compositor at the bottom, handling fast user switching, replacing VT switching, etc., and then a session compositor that actually provides the desktop environment. This is not my idea, it has been written in the <a href="http://wayland.freedesktop.org/faq.html">Wayland FAQ</a> under "Is Wayland replacing the X server?" for a long time.<br/><br/>My point is: <b>Wayland compositors will not make 3D games suck </b>because of compositing. While explaining why, I also continue to explaining why <b>network transparency will not suck</b> either. Now, do not mix up these things, I am <b>not</b> claiming that remoting 3D games over network will magically become feasible.<br/><br/><a name="more"/>The overhead of adding a system compositor in the Wayland stack will be very small. A system compositor normally does not do any real work for compositing, it only takes the buffer handle from a client compositor, and flips it onto the screen. No rendering and no image copying involved in the system compositor.<br/><br/>It is the same with a full-screen game vs. any Wayland compositor: the compositor will not do any real work. A game renders its image into a buffer, passes the buffer handle to the compositor, and the compositor tells the hardware to scan out the buffer. No extra copying, no extra rendering.<br/><br/>The overhead that will appear with adding a system compositor, is relaying input events and buffer flips. The amount of data is small, and at least buffer flips will happen at most once per vertical refresh per monitor. There is also the idea of relaying input events only once per frame. This means that CPU process context switches will increase only by few per frame, when adding another compositor in the stack. Ideally the increase is 2 per frame: a switch to system compositor, system compositor handles input and output, and a switch back.<br/><br/>The overhead can be this small, because the protocol has been designed to avoid round-trips. A round-trip means that one process is waiting for another to reply before it can continue. The protocol also favors batching: accumulate a bunch of data, and then send as a batch. Both of these principles minimize the number CPU process context switches.<br/><br/>Because of these design principles, no Wayland developer is worried about the performance of a possible network transparency layer. Minimizing CPU context switches translates directly to minimizing the effect of network latency. Some believe, that even a simple Wayland network transport which practically just relays the Wayland protocol messages as is, and adds transferring of buffer data, will clearly outperform the traditional X-over-ssh.<br/><br/>Now, if you still claim that X-over-ssh would be better, you a) underestimate the effect of latency, and b) forget that modern applications do not send small rendering commands through the X protocol like 10-20 years ago. Modern applications render their content client-side, and send <i>images</i> to the X server. Wayland simply makes images the only way to send content to the server, allowing to drop the whole rendering machinery from the server and avoiding a huge amount of protocol.<br/><br/><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/7201445798030158398-9215617195848499780?l=ppaalanen.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2012-05-11T07:16:02Z</updated>
    <published>2012-05-11T07:16:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="games"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="network"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="wayland"/>
    <author>
      <name>pq</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06263850515835057642</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-7201445798030158398</id>
      <category term="graphics"/>
      <category term="wayland"/>
      <category term="network"/>
      <category term="music"/>
      <category term="games"/>
      <category term="ID3"/>
      <category term="android"/>
      <category term="screensaver"/>
      <category term="N9"/>
      <category term="GL"/>
      <category term="X"/>
      <author>
        <name>pq</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06263850515835057642</uri>
      </author>
      <link href="http://ppaalanen.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://ppaalanen.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <title>Pekka Paalanen</title>
      <updated>2012-05-15T08:41:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-3711269760993993197.post-7431625763851882508</id>
    <link href="http://vincentsanders.blogspot.com/feeds/7431625763851882508/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://vincentsanders.blogspot.com/2012/05/netsurf-at-show.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/3711269760993993197/posts/default/7431625763851882508" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/3711269760993993197/posts/default/7431625763851882508" rel="self" type="application/atom+xml"/>
    <link href="http://vincentsanders.blogspot.com/2012/05/netsurf-at-show.html" rel="alternate" type="text/html"/>
    <title>Vincent Sanders: NetSurf at a show</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The <a href="http://www.wrocc.org.uk/show/">wakefield RISC OS show</a> is an event the <a href="http://www.netsurf-browser.org/">NetSurf</a> project has attended for a long time. in fact since <a href="http://www.drobe.co.uk/extra/riscos2005/DSC00263.JPG">2005</a> when the "stand" was a name on an A4 sheet through <a href="http://www.iconbar.com/news/wakefield2006/wakefield2006-Pages/Image47.html">2006</a>, <a href="http://www.wrocc.org.uk/show/2007/photo.php?pic=6">2007</a>, <a href="http://www.wrocc.org.uk/show/2008/photo.php?pic=16">2008</a>, <a href="http://www.wrocc.org.uk/show/2009/photo.php?pic=22">2009</a>, <a href="http://www.wrocc.org.uk/show/2010/photo.php?pic=3">2010</a> to <a href="http://www.wrocc.org.uk/show/2011/photo.php?pic=1">2011</a> we have always been present.<br/><br/><a href="http://farm9.staticflickr.com/8009/7135951851_e3e850e116_o_d.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://farm9.staticflickr.com/8009/7135951851_e3e850e116_o_d.jpg" width="320"/></a>The event has changed in that time from a large affair with many exhibitors to a small specialist interest event with a handful of stands. I <a href="http://www.flickr.com/photos/29254252@N06/sets/72157629949546419/">took some pictures this year</a> which give a fair impression of the event.<br/><br/>We were seriously considering not attending this year as 2011 had seen us barely break even on donations versus expenses to attend. However we decided that the projects annual <a href="http://www.grayoxinn.co.uk/">Grey Ox Inn</a> post event dinner was probably worth making the effort.<br/><br/>So we all met up in a hotel just off the M1 near Wakefield and set up our table. And although NetSurf as a project now has much more usage on other platforms we still represent the principle browser for the RISC OS platform!<br/><br/>We had a pleasant time, talked to a lot of users and made our expenses back in donations. Overall an amusing Saturday. Based on the size of the event and number and age of the attendees, I fear the RISC OS may be destined for the history books.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/3711269760993993197-7431625763851882508?l=vincentsanders.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2012-05-08T18:55:30Z</updated>
    <published>2012-05-08T18:55:00Z</published>
    <author>
      <name>Vincent Sanders</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/02686407477776093281</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-3711269760993993197</id>
      <category term="home"/>
      <category term="PSU DIY"/>
      <category term="holiday snow"/>
      <category term="diy"/>
      <category term="phones"/>
      <category term="Cats"/>
      <category term="catchup"/>
      <category term="Collabora"/>
      <category term="vala"/>
      <category term="software"/>
      <category term="quiet week"/>
      <category term="garage"/>
      <category term="entropy"/>
      <category term="Netsurf"/>
      <category term="change"/>
      <category term="music"/>
      <category term="reprap"/>
      <category term="weekend"/>
      <category term="wind"/>
      <category term="c programming"/>
      <category term="kids"/>
      <category term="time"/>
      <category term="car"/>
      <author>
        <name>Vincent Sanders</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02686407477776093281</uri>
      </author>
      <link href="http://vincentsanders.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/3711269760993993197/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://vincentsanders.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/3711269760993993197/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>Vincents Random Waffle</title>
      <updated>2012-05-15T09:32:58Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-3711269760993993197.post-1823419831766570283</id>
    <link href="http://vincentsanders.blogspot.com/feeds/1823419831766570283/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://vincentsanders.blogspot.com/2012/05/repaying-debt.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/3711269760993993197/posts/default/1823419831766570283" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/3711269760993993197/posts/default/1823419831766570283" rel="self" type="application/atom+xml"/>
    <link href="http://vincentsanders.blogspot.com/2012/05/repaying-debt.html" rel="alternate" type="text/html"/>
    <title>Vincent Sanders: Repaying a debt</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Some debts are merely financial and some easily repaid but some require repayment in kind . Few debts are more important to me personally than a favour earned by a good friend.<br/><br/>Several years ago, before I started this blog, I replaced the kitchen in my house. Finances were tight at the time and I had to do the entire refit with only limited professional help. Because of this I imposed upon Mark Hymers and Steve Gran to come and assist me. They worked tirelessly for three days over a bank holiday for no immediate reward.<br/><br/><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://farm8.staticflickr.com/7094/6999689228_fc7c5a0093_o_d.jpg" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://farm8.staticflickr.com/7094/6999689228_fc7c5a0093_o_d.jpg" width="320"/></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Mark and Steve with a drill</td></tr></tbody></table>This weekend I had the opportunity to assist Mark with his own kitchen refit and reply my debt.<br/><br/>Although the challenges have been different on this build they were, nonetheless present, including walls which were most definitely not square and affixing cabinets 10mm too high so the doors could not close.<br/><br/>We also got to make a hole for a 125mm extractor which was physically demanding and not a little tiring (Steve actually wielding the drill had a fabulous aim)<br/><br/>I took <a href="http://www.flickr.com/photos/29254252@N06/sets/72157629972389389/">some photos</a> to document the process which has resulted in an image which is positively threatening, though the two of them are nice people really!<br/><br/>All in all a pleasant weekend with friends, the whole favour thing was really moot, I would have done it for a friend anyway.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/3711269760993993197-1823419831766570283?l=vincentsanders.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2012-05-08T18:10:04Z</updated>
    <published>2012-05-08T18:10:00Z</published>
    <author>
      <name>Vincent Sanders</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/02686407477776093281</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-3711269760993993197</id>
      <category term="home"/>
      <category term="PSU DIY"/>
      <category term="holiday snow"/>
      <category term="diy"/>
      <category term="phones"/>
      <category term="Cats"/>
      <category term="catchup"/>
      <category term="Collabora"/>
      <category term="vala"/>
      <category term="software"/>
      <category term="quiet week"/>
      <category term="garage"/>
      <category term="entropy"/>
      <category term="Netsurf"/>
      <category term="change"/>
      <category term="music"/>
      <category term="reprap"/>
      <category term="weekend"/>
      <category term="wind"/>
      <category term="c programming"/>
      <category term="kids"/>
      <category term="time"/>
      <category term="car"/>
      <author>
        <name>Vincent Sanders</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02686407477776093281</uri>
      </author>
      <link href="http://vincentsanders.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/3711269760993993197/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://vincentsanders.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://www.blogger.com/feeds/3711269760993993197/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>Vincents Random Waffle</title>
      <updated>2012-05-15T09:32:58Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-7315082937191410180.post-2998295939728353435</id>
    <link href="http://derekforeman.blogspot.com/feeds/2998295939728353435/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://derekforeman.blogspot.com/2012/04/androgenizer-porting-libtoolized.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/7315082937191410180/posts/default/2998295939728353435" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/7315082937191410180/posts/default/2998295939728353435" rel="self" type="application/atom+xml"/>
    <link href="http://derekforeman.blogspot.com/2012/04/androgenizer-porting-libtoolized.html" rel="alternate" type="text/html"/>
    <title>Derek Foreman: Androgenizer - porting libtoolized software to android, the easy way</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">My employer - <a href="http://www.collabora.com/">Collabora</a> - has been putting some developer resources into enabling some interesting open source technologies on Android.<br/><br/>One of the immediate stumbling blocks we encountered was Android's build system - each project has at least one file named Android.mk - potentially more in subdirectories.  These files are parsed by GNU Make, and use Google's collection of variables and macros to define "modules".<br/><br/>All of the libraries we've been interested in porting so far have used autoconf for generating their Makefiles.  Not just Makefiles, of course, as autoconf also does dependency checking and creates a config.h file with a collection of pre-processor defines generated from the target environment.<br/><br/>The naive approach of just manually generating the Android.mk files has a few drawbacks.  All of this information is already available in various other files, and any time those files need to be changed the Android.mk files will  need updating as well, increasing the maintenance load for the project.  Further, bundling a pre-generated Android config.h with a project that doesn't exclusively target Android is somewhat unpopular, and we'd like to be able to upstream as much of this work as possible.  The cherry on top of the sundae is that building an application via the NDK sometimes requires a slightly different Android.mk than building the same library from inside the "external" directory of a full Android distribution.<br/><br/>I present to you the Androgenizer - A tool for automatically generating Android.mk files.  We can provide a single static top level Android.mk for a project to setup a call to configure and some environment variables for setting up pkg-config to only see our androgenized libraries instead of the build computer's local libraries. Then Android.mk target rules are added to any appropriate Makefile.am files.  These rules call androgenizer with the variables already used to generate regular Makefiles and androgenizer spits out appropriate Android.mk files.<br/><br/>Androgenizer tests for the environment variable "ANDROGENIZER_NDK" and if it's set it will generate Android.mk files appropriate for building an application with Google's Android Native Development Kit, otherwise it will generate files appropriate for being built as part of an android system image.<br/><br/>While it doesn't completely trivialize porting a library to Android - there's still a bit of work to be done setting up the static Android.mk files we need to bootstrap the build, and sometimes Android's C library is missing important functionality - it eliminates the need to maintain a second identical list of source files and takes care of handling the difference between building with NDK and building in-system.<br/><br/>Anyone interested can find the git repository <a href="http://cgit.collabora.com/git/android/androgenizer.git">here</a><br/><br/>And for some examples of usage, check out some of the cool work being done with it:<br/><a href="http://gstreamer.freedesktop.org/wiki/GstreamerAndroid_InstallInstructions">http://gstreamer.freedesktop.org/wiki/GstreamerAndroid_InstallInstructions </a><br/><a href="http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/">http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/</a><br/><a href="http://ppaalanen.blogspot.in/2012/04/first-light-from-weston-on-android.html">http://ppaalanen.blogspot.in/2012/04/first-light-from-weston-on-android.html</a><br/><br/>Gstreamer's an especially good example, as it's been ported as both an NDK built application and as an integrated set of system libraries.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/7315082937191410180-2998295939728353435?l=derekforeman.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2012-05-02T17:16:29Z</updated>
    <published>2012-04-30T21:21:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="Collabora"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="Android"/>
    <author>
      <name>Derek Foreman</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/11092521642466255455</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-7315082937191410180</id>
      <category term="Android"/>
      <category term="Collabora"/>
      <author>
        <name>Derek Foreman</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/11092521642466255455</uri>
      </author>
      <link href="http://derekforeman.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/7315082937191410180/posts/default/-/Collabora" rel="self" type="application/atom+xml"/>
      <link href="http://derekforeman.blogspot.com/search/label/Collabora" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <title>Derek's Blog</title>
      <updated>2012-05-03T14:37:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="es-ES">
    <id>http://luisbg.blogalia.com//historias/71750</id>
    <link href="http://luisbg.blogalia.com//historias/71750" rel="alternate" type="text/html"/>
    <title>Luis de Bethencourt: snappy in gnome</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><center><img src="http://i.imgur.com/zPfUa.png?1" width="300"/></center>
<br/>

<br/>
Good news!
<br/>
snappy is now in GNOME, and by that I mean:
<br/>

<br/>
<ul><li>Web page: <a href="http://projects.gnome.org/snappy">projects.gnome.org/snappy</a>
<br/>
</li><li>Source code: <a href="http://git.gnome.org/snappy">git.gnome.org/snappy</a>
<br/>
</li><li>Mailing list: <a href="http://mail.gnome.org/mailman/listinfo/snappy-list">snappy-list@gnome.org</a>
<br/>
</li><li>Bugzilla: <a href="http://bugzilla.gnome.org/browse.cgi?product=snappy">bugzilla.gnome.org</a>
<br/>
</li><li>Live: <a href="http://live.gnome.org/snappy">live.gnome.org</a></li></ul>
<br/>

<br/>
snappy is now officially a GNOME project!
<br/>
You can play with it, discuss it and report bugs all inside the GNOME umbrella... please do, no excuses!
<br/>

<br/>
snappy is an open source media player that gathers the power and flexibility of <a class="http" href="http://gstreamer.freedesktop.org">gstreamer</a> inside the comfort of a minimalistic <a class="http" href="http://www.clutter-project.org">clutter</a> interface.</div>
    </summary>
    <updated>2012-05-02T13:45:07Z</updated>
    <source>
      <id>http://luisbg.blogalia.com/</id>
      <author>
        <name>d33p</name>
      </author>
      <link href="http://luisbg.blogalia.com/" rel="alternate" type="text/html"/>
      <link href="http://luisbg.blogalia.com/rdf.xml" rel="self" type="application/rdf+xml"/>
      <rights>Copyright d33p</rights>
      <subtitle>luis de bethencourt's blog about the technological freedom world.</subtitle>
      <title>the phrygian cap</title>
      <updated>2012-05-17T07:15:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://arunraghavan.net/?p=1329</id>
    <link href="http://arunraghavan.net/2012/05/androidifying-your-autotools-build-the-easy-way/" rel="alternate" type="text/html"/>
    <title>Arun Raghavan: Androidifying your autotools build the easy way</title>
    <summary>Derek Foreman has finally written up a nice blog post about his Androgenizer tool, which we’ve used for porting PulseAudio, GStreamer, Wayland, Telepathy and most of their dependencies to Android. If you’ve got an autotools-based project that you’d like to build on Android, whether on the NDK or system-wide this is really useful.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://derekforeman.blogspot.ca/">Derek Foreman</a> has finally written up a nice blog post about his <a href="http://cgit.collabora.com/git/android/androgenizer.git/tree/README.txt">Androgenizer</a> tool, which we’ve used for porting PulseAudio, GStreamer, Wayland, Telepathy and most of their dependencies to Android.</p>

<p>If you’ve got an autotools-based project that you’d like to build on Android, whether on the NDK or system-wide this is <em>really</em> useful.</p></div>
    </content>
    <updated>2012-05-01T19:48:15Z</updated>
    <category term="Blog"/>
    <category term="android"/>
    <category term="collabora"/>
    <category term="f/oss"/>
    <category term="pulseaudio"/>
    <category term="work"/>
    <author>
      <name>Arun</name>
    </author>
    <source>
      <id>http://arunraghavan.net</id>
      <link href="http://arunraghavan.net/tag/foss/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://arunraghavan.net" rel="alternate" type="text/html"/>
      <subtitle>Extremely pithy tagline here</subtitle>
      <title>Arun Raghavan » f/oss</title>
      <updated>2012-05-12T11:01:20Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blogs.gnome.org/wjjt/?p=925</id>
    <link href="http://blogs.gnome.org/wjjt/2012/04/30/a-brief-list-of-observed-meanings-of-the-word-port/" rel="alternate" type="text/html"/>
    <title>Will Thompson: A brief list of observed meanings of the word “port”</title>
    <summary>port (v): Reindent and reformat. empathy-time: port to TP coding style Update to compile against a backwards-incompatible version of an API. &lt;ocrete&gt; twi: I’m porting farstream to [GStreamer] 0.11 this week Rewrite to use a different widget set and network library. You should port Sojourner to Qt4! Reimplement in an entirely different programming language. Zeitgeist [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://en.wiktionary.org/wiki/port#Verb"><strong>port</strong></a> (v):</p>
<ol>
<li>
<p>Reindent and reformat.</p>
<blockquote>
<p><a href="http://git.gnome.org/browse/empathy/commit/?id=11de29cc7c7b7d6047837b51155b768b0e8f9a4b">empathy-time: port to TP coding style</a></p>
</blockquote>
</li>
<li>
<p>Update to compile against a backwards-incompatible version of an API.</p>
<blockquote>
<p><strong>&lt;ocrete&gt;</strong> twi: I’m porting farstream to [GStreamer] 0.11 this week</p>
</blockquote>
</li>
<li>
<p>Rewrite to use a different widget set and network library.</p>
<blockquote>
<p>You should port <a href="http://willthompson.co.uk/sojourner/">Sojourner</a> to Qt4!</p>
</blockquote>
</li>
<li>
<p>Reimplement in an entirely different programming language.</p>
<blockquote>
<p><a href="http://www.omgubuntu.co.uk/2011/11/zeitgeist-from-python-to-vala/">Zeitgeist has been ported from Python to Vala.</a></p>
</blockquote>
</li>
<li>
<p>Translate into a different data format.</p>
<blockquote>
<p>Using Semantics3’s web crawlers, we were able to get hold of the data within a half hour, after which we spent a further half hour cleaning up the data and <a href="http://blog.semantics3.com/how-we-built-an-ios-app-an-android-app-and-a-node-js-api-in-20-hours/">porting it to SQL.</a></p>
</blockquote>
</li>
</ol></div>
    </content>
    <updated>2012-04-30T15:00:42Z</updated>
    <category term="Lists"/>
    <author>
      <name>Will Thompson</name>
    </author>
    <source>
      <id>http://blogs.gnome.org/wjjt</id>
      <link href="http://blogs.gnome.org/wjjt/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blogs.gnome.org/wjjt" rel="alternate" type="text/html"/>
      <subtitle>wjt</subtitle>
      <title>This is not your bugtracker.</title>
      <updated>2012-05-17T07:15:20Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://arunraghavan.net/?p=1300</id>
    <link href="http://arunraghavan.net/2012/04/pulseaudio-on-android-part-2/" rel="alternate" type="text/html"/>
    <title>Arun Raghavan: PulseAudio on Android: Part 2</title>
    <summary>Some of you might’ve noticed that there has been a bunch of work happening here at Collabora on making cool open source technologies such as GStreamer, Telepathy, Wayland and of course, PulseAudio available on Android. Since my last blog post on this subject, I got some time to start looking at replacing AudioFlinger (recap: that’s [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Some of you might’ve noticed that there has been a bunch of work happening here at <a href="http://www.collabora.com/services/android/">Collabora</a> on making cool open source technologies such as <a href="http://gstreamer.freedesktop.org/modules/gst-android.html">GStreamer</a>, Telepathy, <a href="http://ppaalanen.blogspot.in/2012/04/first-light-from-weston-on-android.html">Wayland</a> and of course, <a href="http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/">PulseAudio</a> available on Android.</p>

<p>Since my last blog post on this subject, I got some time to start looking at replacing AudioFlinger (recap: that’s Android’s native audio subsystem) with PulseAudio (recap: that’s the awesome Linux audio subsystem). This work can be broken up into 3 parts: playback, capture, and policy. The roles of playback and capture are obvious. For those who aren’t aware of system internals, the policy bits take care of audio routing, volumes, and other such things. For example, audio should play out of your headphones if they’re plugged in, off Bluetooth if you’ve got a headset paired, or the speakers if nothing’s plugged in. Also, depending on the device, the output volume might change based on the current output path.</p>

<p>I started by looking at solving the playback problem first. I’ve got the first 80% of this done (as we all know, the second 80% takes at least as long ;) ). This is done by replacing the native <tt>AudioTrack</tt> playback API with a simple wrapper that translates into the <tt>libpulse</tt> PulseAudio client API. There’s bits of the API that seem to be rarely used(loops and markers, primarily), and I’ve not gotten around to those yet. Basic playback works quite well, and here’s a video showing this. (<em>Note: this and the next video will be served with yummy HTML5 goodness if you enabled the <a href="http://youtube.com/html5">YouTube HTML5 beta</a></em>).</p>



<p>(if the video doesn’t appear, you can <a href="http://www.youtube.com/watch?v=h9fxmOaW2Bw">watch it on YouTube</a>)</p>

<p>Users of PulseAudio might have spotted that this now frees us up to do some fairly nifty things. One such thing is getting remote playback for free. For a long time now, there has been support for streaming audio between devices running PulseAudio. I wrote up a quick app to show this working on the Galaxy Nexus as well. Again, seeing this working is a lot more impressive than me describing it here, so here’s another video:</p>



<p>(if the video doesn’t appear, you can <a href="http://www.youtube.com/watch?v=o5-phFVfZnQ">watch it on YouTube</a>)</p>

<p>This is all clearly work in progress, but you can find the code for the AudioTrack wrapper as <a href="http://people.collabora.com/~arun/android/frameworks-base-0001-First-stab-at-a-libpulse-based-AudioTrack-API.patch">a patch</a> for now. This will be a properly integrated tree that you can just pull and easily integrate into your Android build when it’s done. The PA Output Switcher app code is also available in <a href="http://cgit.collabora.com/git/user/arun/pa-output-switcher.git">a git repository</a>.</p>

<p>I’m hoping to be able to continue hacking on the capture and policy bits. The latter, especially, promises to be involved, since there isn’t always a 1:1 mapping between AudioFlinger and PulseAudio concepts. Nothing insurmountable, though. :) Watch this space for more updates as I wade through the next bit.</p></div>
    </content>
    <updated>2012-04-30T10:35:27Z</updated>
    <category term="Blog"/>
    <category term="android"/>
    <category term="collabora"/>
    <category term="f/oss"/>
    <category term="pulseaudio"/>
    <category term="work"/>
    <author>
      <name>Arun</name>
    </author>
    <source>
      <id>http://arunraghavan.net</id>
      <link href="http://arunraghavan.net/tag/foss/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://arunraghavan.net" rel="alternate" type="text/html"/>
      <subtitle>Extremely pithy tagline here</subtitle>
      <title>Arun Raghavan » f/oss</title>
      <updated>2012-05-12T11:01:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-7201445798030158398.post-4925532081569342873</id>
    <link href="http://ppaalanen.blogspot.com/2012/04/first-light-from-weston-on-android.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default/4925532081569342873" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default/4925532081569342873" rel="self" type="application/atom+xml"/>
    <link href="http://ppaalanen.blogspot.com/2012/04/first-light-from-weston-on-android.html" rel="alternate" type="text/html"/>
    <title>Pekka Paalanen: First light from Weston on Android</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">A couple of months ago, <a href="http://www.collabora.com/">Collabora</a> assigned me first to research and then make a proof of concept port of <a href="http://wayland.freedesktop.org/">Wayland</a> on <a href="http://www.collabora.com/services/android/">Android</a>. I had never even seen an Android before. Yesterday, Weston on Android achieved first light!<br/><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-ZWp5uNJbqAA/T5pidtLQUsI/AAAAAAAAADQ/ZTmOixl-MHs/s1600/GN-simple-shm-2012-04-27-120210.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="http://4.bp.blogspot.com/-ZWp5uNJbqAA/T5pidtLQUsI/AAAAAAAAADQ/ZTmOixl-MHs/s320/GN-simple-shm-2012-04-27-120210.jpg" width="320"/></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Galaxy Nexus running Weston and simple-shm.</td></tr></tbody></table><a name="more"/>That is a Samsung Galaxy Nexus smart phone, running a self-built image of <a href="http://source.android.com/index.html">Android 4.0.1</a>. Weston is driving the screen, where you see the <a href="http://ppaalanen.blogspot.com/2012/04/improved-appearance-for-simplest.html">simple-shm</a> Wayland client. There is no desktop nor wallpaper, because right now, simple-shm is the only ported client.<br/><br/>How is that possible? Android has no <a href="http://dri.freedesktop.org/wiki/">DRI</a>, no <a href="http://dri.freedesktop.org/wiki/DRM">DRM</a>, no <a href="http://en.wikipedia.org/wiki/Mode_setting">KMS</a> (the DRM API), no <a href="http://lists.freedesktop.org/archives/mesa-dev/2011-June/008726.html">GBM</a>, no <a href="http://www.mesa3d.org/">Mesa</a>, and for this device the graphics drivers are proprietary and I do not have access to the closed driver source.<br/><br/>Fortunately, Android's self-invented graphics stack has pretty similar requirements to Weston. All it took was to write a new Android specific backend for Weston, that interfaces to the Android APIs. Writing it took roughly three days.<br/><br/>And the rest of the two months? I spent some time in studying Android's graphics stack, but the majority of the time sunk into porting the minimum required library dependencies, <a href="http://cgit.freedesktop.org/wayland/wayland/">libwayland</a>, Weston, and simple-shm to the Android platform and build environment. Simply getting the Android build system to build stuff properly took a huge effort, and then I got to write <a href="http://lists.freedesktop.org/archives/wayland-devel/2012-April/003039.html">workarounds</a> to <a href="http://lists.freedesktop.org/archives/wayland-devel/2012-April/003114.html">features missing</a> in Android's C library (Bionic). Features, that we have taken for granted on standard Linux operating systems for years. I also had to completely remove signal handling and timers from libwayland, because signalfd and timerfd interfaces do not exist in Bionic. Those need to be reinvented still.<br/><br/>Android has gralloc and fb hardware abstraction layer (HAL) APIs. Hardware vendors are required to implement these APIs, and provide EGL and GL support libraries. These implementations are usually closed and proprietary. On top of these is the Android wrapper-libEGL, written in C++, open source. My first thought was to use the gralloc and fb HAL APIs directly, but turned out that the wrapper-libEGL does not support using them in the application side. Instead, I was forced to use some Android C++ API (there is no C API for this, as far as I can tell) to get access to the framebuffer in an EGL-compatible way. In the end, I had to write a lot less code than using the HALs directly.<br/><br/>The Android backend for Weston so far only provides basic graphics output to the screen, and offers (presumably) accelerated GLES2 via EGL for the server. No input devices are hooked up yet, so you cannot interact with Weston. I do not know how to get pageflip completion events (if possible?), so that is hacked over.<br/><br/>Simple-shm is the only client that runs for now. There is no support for EGL/GL in Wayland clients. Toytoolkit clients are waiting for Cairo and dependencies to be ported.<br/><br/>The framebuffer can be used by one program at a time. Normally that program is SurfaceFlinger, the Android system compositor. To be able to run Weston, I have to kill SurfaceFlinger and make sure it stays down. Killing SurfaceFlinger also kills the whole Android UI infrastructure. You cannot even power off the phone by pressing or holding down the physical power button!<br/><br/>A video about simple-shm running on Galaxy Nexus:<br/><div class="separator" style="clear: both; text-align: center;"/><br/>The sources with Android build integration and other hacks can be found here:<br/><ul><li><a href="http://cgit.collabora.com/git/user/pq/wayland.git/log/?h=android">http://cgit.collabora.com/git/user/pq/wayland.git/log/?h=android</a></li><li><a href="http://cgit.collabora.com/git/user/pq/wayland-demos.git/log/?h=android">http://cgit.collabora.com/git/user/pq/wayland-demos.git/log/?h=android</a></li><li><a href="http://cgit.collabora.com/git/user/pq/wayland_aggregate.git/">http://cgit.collabora.com/git/user/pq/wayland_aggregate.git/</a></li></ul>The wayland_aggregate is how I actually connect to the Android build system. Building is not trivial, and you cannot simply do a checkout and start compiling. You have to get the right Android tree for your device, add my local manifest (which still points to repositories on my hard drive, i.e., won't work for you), download and extract binary blobs, and whatnot. Be warned, I will rebase the above branches.<br/><br/>This is the beginning of pushing a Wayland stack into Android. Next I need to clean up, send stuff upstream, add input support, find out about that pageflip, reinvent signal handling and timerfd, and then move on to the second major task: supporting Wayland GL clients. I hope it is possible to implement the Wayland platform in the wrapper-libEGL.<br/><br/>This work is sponsored by Collabora, Ltd, and I also thank my fellow collaborans for guidance through the <a href="http://abstrusegoose.com/432">vast jungles of Android</a>.<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/7201445798030158398-4925532081569342873?l=ppaalanen.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2012-04-27T12:33:03Z</updated>
    <published>2012-04-27T12:33:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="android"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="wayland"/>
    <author>
      <name>pq</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06263850515835057642</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-7201445798030158398</id>
      <category term="graphics"/>
      <category term="wayland"/>
      <category term="network"/>
      <category term="music"/>
      <category term="games"/>
      <category term="ID3"/>
      <category term="android"/>
      <category term="screensaver"/>
      <category term="N9"/>
      <category term="GL"/>
      <category term="X"/>
      <author>
        <name>pq</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06263850515835057642</uri>
      </author>
      <link href="http://ppaalanen.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://ppaalanen.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <title>Pekka Paalanen</title>
      <updated>2012-05-15T08:41:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blogs.gnome.org/xclaesse/?p=185</id>
    <link href="http://blogs.gnome.org/xclaesse/2012/04/27/did-you-know-g_clear_objectpointer/" rel="alternate" type="text/html"/>
    <title>Xavier Claessens: Did you know g_clear_object/pointer() ?</title>
    <summary>g_clear_object() has been in glib since 2.28, and now g_clear_pointer() has landed in glib master (see bug #674634). Their typical usage is to implement GObject::dispose, or “goto out” pattern, previously you would write: void my_dispose (GObject *obj) { MyObject *self = (MyObject *) obj; if (self-&gt;priv-&gt;object != NULL) { g_object_unref (self-&gt;priv-&gt;object); self-&gt;priv-&gt;object = NULL; } [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>g_clear_object() has been in glib since 2.28, and now g_clear_pointer() has landed in glib master (see bug #<a href="https://bugzilla.gnome.org/show_bug.cgi?id=674634">674634</a>).<br/>
Their typical usage is to implement GObject::dispose, or “goto out” pattern, previously you would write:</p>
<pre>void my_dispose (GObject *obj)
{
  MyObject *self = (MyObject *) obj;
  if (self-&gt;priv-&gt;object != NULL)
    {
      g_object_unref (self-&gt;priv-&gt;object);
      self-&gt;priv-&gt;object = NULL;
    }
  if (self-&gt;priv-&gt;hash != NULL)
    {
      g_hash_table_unref (self-&gt;priv-&gt;hash);
      self-&gt;priv-&gt;my_hash = NULL;
    }
  etc...
}
</pre>
<p>or:</p>
<pre>void some_func ()
{
  GHashTable *tmp = NULL;

  ...
  if (error)
    goto out;

  tmp = g_hash_table_new();
  ...

out:
  if (tmp != NULL)
    g_hash_table_unref (tmp);
}
</pre>
<p>But now those becomes:</p>
<pre>void my_dispose (GObject *obj)
{
  MyObject *self = (MyObject *) obj;

  g_clear_object (&amp;self-&gt;priv-&gt;object);
  g_clear_pointer (&amp;self-&gt;priv-&gt;hash, g_hash_table_unref);
  etc...
}
</pre>
<p>or:</p>
<pre>void some_func ()
{
  GHashTable *tmp = NULL;

  ...
  if (error)
    goto out;

  tmp = g_hash_table_new();
  ...

out:
  g_clear_pointer (&amp;tmp, g_hash_table_unref);
}
</pre>
<p>As extra bonus, g_clear_object() and g_clear_pointer() are thread-safe. That means that 2 threads can clear the same pointer at the same time and it will be freed only once. I’ve heard some code needs thread-safe dispose…</p>
<p>Thanks to Simon McVittie for the original idea in telepathy-glib where we had tp_clear_object/pointer for years.</p></div>
    </content>
    <updated>2012-04-27T09:03:23Z</updated>
    <category term="Collabora"/>
    <category term="GNOME"/>
    <author>
      <name>xclaesse</name>
    </author>
    <source>
      <id>http://blogs.gnome.org/xclaesse</id>
      <link href="http://blogs.gnome.org/xclaesse/category/collabora/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blogs.gnome.org/xclaesse" rel="alternate" type="text/html"/>
      <subtitle>Just another GNOME Blogs weblog</subtitle>
      <title>Xavier Claessens » Collabora</title>
      <updated>2012-05-17T04:45:19Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.barisione.org/?p=554</id>
    <link href="http://blog.barisione.org/2012-04/better-notification-support/" rel="alternate" type="text/html"/>
    <title>Marco Barisione: Better notification support</title>
    <summary>Yesterday I released a new version of my message notification extension for gnome-shell (3.2 and 3.4), to install it or to update it just visit its page on extensions.gnome.org. The main feature in the new version is that it just handles notifications coming from well-known applications: Empathy, XChat, XChat-GNOME, Pidgin and notify-send. Handling the Empathy [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Yesterday I released a new version of my message notification extension for gnome-shell (3.2 and 3.4), to install it or to update it just visit its page on <a href="https://extensions.gnome.org/extension/150/message-notifier/">extensions.gnome.org</a>.</p>
<p>The main feature in the new version is that it just handles notifications coming from well-known applications: Empathy, XChat, XChat-GNOME, Pidgin and notify-send. Handling the Empathy notifications is easy because they are well integrated with the shell, but the other notifications required some hack because all the applications handle notifications in different ways. I did my best to make the notifications as useful as possible, similar to the Empathy ones, but there are some small limitations.<br/>
Some of the handled applications require plugins to show notification bubbles:</p>
<ul>
<li><b>Pidgin:</b> Click on the “Tools” menu and then “Plug-ins”. Make sure that the “Libnotify Popups” plugin is enabled. If the plugin is not in the list it means you need to install it. On Debian the package is called “pidgin-libnotify”, other distros should have a package with a similar name.</li>
<li><b>XChat-GNOME:</b> Click on the “Edit” menu and then “Preferences”. In the “Scripts and Plugins” tab make sure that “On-screen display” is enabled.</li>
<li><b>XChat:</b> Click on the “Settings” menu and then “Preferences”. In the “Alerts” tab make sure that “Show tray baloons” is enabled for both “Private Message” and “Highlighted Message”. If the notifications pile up in the bottom right corner of your screen and clicking on them does nothing, it means that XChat is using notify-send because it cannot find libnotify. I don’t know how to fix this issue on different distros, but I found a <a href="https://bugzilla.redhat.com/show_bug.cgi?id=693362">Red Hat bug explaining the problem</a>.</li>
</ul>
<p align="center" class="img"><a href="https://extensions.gnome.org/extension/150/message-notifier/"><img alt="Message notification" src="http://farm8.staticflickr.com/7120/6969999096_498aceaa05.jpg"/></a><br/><small>Notifications coming from Empathy and XChat-GNOME</small></p>
<p>Is there any other common application that you would like to be handled by my plugin? The only prerequisite is that they somehow use standard notification bubbles (and this means I cannot implement it for Skype).</p>
<p>If you are looking for the source code, it’s in <a href="http://cgit.collabora.com/git/user/bari/shell-message-notifier.git/">this git repository</a>.</p></div>
    </content>
    <updated>2012-04-27T08:11:19Z</updated>
    <category term="collabora"/>
    <category term="gnome"/>
    <category term="empathy"/>
    <category term="extension"/>
    <category term="gnome-shell"/>
    <category term="libnotify"/>
    <category term="message notifier"/>
    <category term="notify-send"/>
    <category term="pidgin"/>
    <category term="xchat"/>
    <category term="xchat-gnome"/>
    <author>
      <name>barisione</name>
    </author>
    <source>
      <id>http://blog.barisione.org</id>
      <link href="http://blog.barisione.org/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blog.barisione.org" rel="alternate" type="text/html"/>
      <title>Marco Barisione's Weblog</title>
      <updated>2012-05-10T13:15:34Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-7201445798030158398.post-3470322222453498362</id>
    <link href="http://ppaalanen.blogspot.com/2012/04/improved-appearance-for-simplest.html#comment-form" rel="replies" type="text/html"/>
    <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default/3470322222453498362" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default/3470322222453498362" rel="self" type="application/atom+xml"/>
    <link href="http://ppaalanen.blogspot.com/2012/04/improved-appearance-for-simplest.html" rel="alternate" type="text/html"/>
    <title>Pekka Paalanen: Improved appearance for the simplest Wayland client</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Of the <a href="http://wayland.freedesktop.org/">Wayland</a> demo clients in the <a href="http://cgit.freedesktop.org/wayland/weston/">Weston repository</a>, <a href="http://cgit.freedesktop.org/wayland/weston/tree/clients/simple-shm.c">simple-shm</a> is the simplest. All the related code is in that one file, and it interfaces directly with <a href="http://cgit.freedesktop.org/wayland/wayland/">libwayland</a>. It does not use GL or EGL, so it can be ran on systems where the EGL stack does not support the Wayland platform nor extensions. However, what it renders, is surprising:<br/><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-3oRbc_kbtlM/T5o6vPNidyI/AAAAAAAAACw/7HFwdk0gEXY/s1600/simple-shm.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://2.bp.blogspot.com/-3oRbc_kbtlM/T5o6vPNidyI/AAAAAAAAACw/7HFwdk0gEXY/s320/simple-shm.png" width="320"/></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The original simple-shm client on a Weston desktop.</td></tr></tbody></table><br/><a name="more"/>The square with apparently garbage texture is the original simple-shm. To any graphics developer, who does not know any better, that immediately looks like something is wrong with the image stride somewhere in the graphics stack. That really is what it was supposed to look like, not a bug.<br/><br/>I decided to <a href="http://lists.freedesktop.org/archives/wayland-devel/2012-April/003136.html">propose a different rendering</a>, that would not look so much like a bug, and had some real diagnostic value.<br/><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-vdbu2zMPGT8/T5pEVGJZUzI/AAAAAAAAADE/zJFe0wT4o8k/s1600/simple-shm-new-2.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://3.bp.blogspot.com/-vdbu2zMPGT8/T5pEVGJZUzI/AAAAAAAAADE/zJFe0wT4o8k/s320/simple-shm-new-2.png" width="320"/></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The proposed appearance of simple-shm, the way it is supposed to look like.</td></tr></tbody></table>The new appearance has some vertical bars moving from left to right, some horizontal bars moving upwards, and some circles that shrink into the center. With these, you can actually see if there is a stride bug somewhere, or non-uniform scaling. There is one more diagnostic feature.<br/><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-9-1xTdhonkE/T5pEUGK8QaI/AAAAAAAAAC8/Z3N_-QVC2OA/s1600/simple-shm-new-1.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://2.bp.blogspot.com/-9-1xTdhonkE/T5pEUGK8QaI/AAAAAAAAAC8/Z3N_-QVC2OA/s320/simple-shm-new-1.png" width="320"/></a></td></tr><tr><td class="tr-caption" style="text-align: center;">This is how the proposed simple-shm looks like when the X-channel is mistaken as alpha.</td></tr></tbody></table>Simple-shm uses XRGB buffers. If the compositor does not properly ignore the X-channel, and uses it as alpha, you will see a cross over the image. Depending on whether the compositor repaints what is below simple-shm or not, the cross will either saturate to white or show the background through. It is best to have a bright background picture to clearly see it.<br/><br/>I do hope no-one gets hypnotized by the animation. ;-)<div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/7201445798030158398-3470322222453498362?l=ppaalanen.blogspot.com" width="1"/></div></div>
    </content>
    <updated>2012-04-27T07:20:40Z</updated>
    <published>2012-04-27T07:17:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="graphics"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="wayland"/>
    <author>
      <name>pq</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06263850515835057642</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-7201445798030158398</id>
      <category term="graphics"/>
      <category term="wayland"/>
      <category term="network"/>
      <category term="music"/>
      <category term="games"/>
      <category term="ID3"/>
      <category term="android"/>
      <category term="screensaver"/>
      <category term="N9"/>
      <category term="GL"/>
      <category term="X"/>
      <author>
        <name>pq</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06263850515835057642</uri>
      </author>
      <link href="http://ppaalanen.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.blogger.com/feeds/7201445798030158398/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://ppaalanen.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <title>Pekka Paalanen</title>
      <updated>2012-05-15T08:41:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blogs.gnome.org/xclaesse/?p=182</id>
    <link href="http://blogs.gnome.org/xclaesse/2012/04/26/gtestdbus-test-your-dbus-app/" rel="alternate" type="text/html"/>
    <title>Xavier Claessens: GTestDBus – test your DBus app</title>
    <summary>Recently, I’ve been working on making GDBus’ unit test helpers as public API on libgio (see bug #672985). Thanks to the help from David Zeuthen, it landed in gio master as GTestDBus object. The basic idea is simple: g_test_dbus_up() starts a dbus-daemon and sets DBUS_SESSION_BUS_ADDRESS env variable. That means that your tests will then be [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Recently, I’ve been working on making GDBus’ unit test helpers as public API on libgio (see bug #<a href="https://bugzilla.gnome.org/show_bug.cgi?id=672985">672985</a>). Thanks to the help from David Zeuthen, it landed in gio master as <a href="http://git.gnome.org/browse/glib/tree/gio/gtestdbus.h">GTestDBus</a> object.</p>
<p>The basic idea is simple: g_test_dbus_up() starts a dbus-daemon and sets DBUS_SESSION_BUS_ADDRESS env variable. That means that your tests will then be using that private session bus instead of messing with user’s. When the unit test is done, call g_test_dbus_down() which will kill the dbus-daemon. Of course in the case you unit test fails and crash, it still make sure the dbus-daemon will be cleaned.</p>
<p>And finally, thanks to Alexander Larsson, it even works on win32.</p>
<p>Enjoy <img alt=":D" class="wp-smiley" src="http://blogs.gnome.org/xclaesse/wp-content/mu-plugins/tango-smilies/tango/face-smile-big.png"/> </p></div>
    </content>
    <updated>2012-04-26T19:10:28Z</updated>
    <category term="Collabora"/>
    <category term="GNOME"/>
    <author>
      <name>xclaesse</name>
    </author>
    <source>
      <id>http://blogs.gnome.org/xclaesse</id>
      <link href="http://blogs.gnome.org/xclaesse/category/collabora/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blogs.gnome.org/xclaesse" rel="alternate" type="text/html"/>
      <subtitle>Just another GNOME Blogs weblog</subtitle>
      <title>Xavier Claessens » Collabora</title>
      <updated>2012-05-17T04:45:19Z</updated>
    </source>
  </entry>

  <entry xml:lang="es-ES">
    <id>http://luisbg.blogalia.com//historias/71709</id>
    <link href="http://luisbg.blogalia.com//historias/71709" rel="alternate" type="text/html"/>
    <title>Luis de Bethencourt: Using emacs with etags</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I'm currently dealing with a very obfuscated and over-engineered codebase, with layers upon layers upon layers. There is always a silver linning though and I finally got around to learning how to use etags in emacs. I can't believe I waited this long to learn this feature, specially since it is so easy. 
<br/>

<br/>
etags lets you quickly locate a definition by its name anywhere in your code base.
<br/>

<br/>
<b>1.</b> First, you need to tag the code. Go to the base directory and run
<br/>

<br/>
<code>$ etags `find . -name "*.c" -o -name "*.h"`</code>
<br/>

<br/>
This will generate a 'TAGS' file.
<br/>

<br/>
<b>2.</b> Let emacs know about the tag file
<br/>

<br/>
<code>M-x visit-tag-table [location of the TAGS file]</code>
<br/>

<br/>
<b>3.</b> With the cursor on a function call do the following
<br/>

<br/>
<code>M-. (which is ALT-.)</code>
<br/>

<br/>
This will take you to the function definition anywhere in the entire directory structure
<br/>

<br/>
<b>4.</b> Now if you want to go back
<br/>

<br/>
<code>M-* (which is ALT-SHIFT-*)</code>
<br/>

<br/>

<br/>
Cool, isn't it? It gets better!
<br/>
That's not all you can do with the TAGS file. Imagine that you are dealing with very long function names or can't quite remember the exact name. No problem. Type the first few characters of the name, then press M-tab. Either the full function name will appear, or a window will pop up displaying a list of possible completions.
<br/>

<br/>
If you like this checkout <a href="http://www.emacswiki.org/emacs/TabCompletion#SmartTab">smart-tab</a>. It allows you to use the tab key to indent and tab complete function/variable names.
<br/>

<br/>
** Alternatively, you can use 'make tags' to generate the 'TAGS' file.</div>
    </summary>
    <updated>2012-04-26T08:00:11Z</updated>
    <source>
      <id>http://luisbg.blogalia.com/</id>
      <author>
        <name>d33p</name>
      </author>
      <link href="http://luisbg.blogalia.com/" rel="alternate" type="text/html"/>
      <link href="http://luisbg.blogalia.com/rdf.xml" rel="self" type="application/rdf+xml"/>
      <rights>Copyright d33p</rights>
      <subtitle>luis de bethencourt's blog about the technological freedom world.</subtitle>
      <title>the phrygian cap</title>
      <updated>2012-05-17T07:15:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://padovan.org/blog/?p=350</id>
    <link href="http://padovan.org/blog/2012/04/bluez-on-gsoc-accepted-students-announced/" rel="alternate" type="text/html"/>
    <title>Gustavo Padovan: BlueZ on GSoC: Accepted students announced</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Yesterday Google released the accepted students for this year’s Google Summer of Code and BlueZ will be participating with 4 students: Project: Bluetooth Replayer Student: Anton Weber Mentor: Anderson Lizardo Project: OBEX Filesystem In Userspace Student: Michał Poczwardowski Mentor: Vinicius Gomes Project: Implement … <a href="http://padovan.org/blog/2012/04/bluez-on-gsoc-accepted-students-announced/">Continue reading <span class="meta-nav">→</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Yesterday Google released the accepted students for this year’s <a href="http://google-melange.appspot.com/gsoc/homepage/google/gsoc2012">Google Summer of Code</a> and <a href="http://www.bluez.org">BlueZ</a> will be participating with 4 students:</p>
<p><strong>Project:</strong> <a href="http://google-melange.appspot.com/gsoc/project/google/gsoc2012/antweb/8001">Bluetooth Replayer</a><br/>
<strong>Student:</strong> Anton Weber<br/>
<strong>Mentor:</strong> Anderson Lizardo</p>
<p><strong>Project:</strong> <a href="http://google-melange.appspot.com/gsoc/project/google/gsoc2012/dmp/63002">OBEX Filesystem In Userspace</a><br/>
<strong>Student:</strong> Michał Poczwardowski<br/>
<strong>Mentor:</strong> Vinicius Gomes</p>
<p><strong>Project:</strong><a href="http://google-melange.appspot.com/gsoc/project/google/gsoc2012/rfonseca/4013"> Implement AVRCP 1.3 Controller Role</a><br/>
<strong>Student:</strong> Rafael Fonseca<br/>
<strong>Mentor:</strong> Luiz Augusto von Dentz</p>
<p><strong>Project:</strong> <a href="http://google-melange.appspot.com/gsoc/project/google/gsoc2012/xth1/4001">Visualization of Bluetooth traffic</a><br/>
<strong>Student:</strong> Thiago da Silva Arruda<br/>
<strong>Mentor:</strong> Gustavo Padovan</p>
<p>It is now community bonding time, where students get know their mentors and the community. We wish a great summer to all students.  :-)</p>
<p> </p></div>
    </content>
    <updated>2012-04-25T03:55:25Z</updated>
    <category term="bluez"/>
    <category term="free software"/>
    <category term="gsoc"/>
    <category term="bluetooth"/>
    <category term="collabora"/>
    <category term="linux kernel"/>
    <author>
      <name>Gustavo Padovan</name>
    </author>
    <source>
      <id>http://padovan.org/blog</id>
      <link href="http://padovan.org/blog/tag/collabora/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://padovan.org/blog" rel="alternate" type="text/html"/>
      <subtitle>free as in freedom</subtitle>
      <title>Gustavo Padovan » collabora</title>
      <updated>2012-04-25T04:15:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blogs.gnome.org/danni/?p=443</id>
    <link href="http://blogs.gnome.org/danni/2012/04/25/getting-the-glib-gdb-macros-with-your-own-installed-glib/" rel="alternate" type="text/html"/>
    <title>Danielle Madeley: Getting the GLib gdb macros with your own installed GLib</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">So there are these really cool debugging macros for GLib/GObject that do things like let you iterate GLists and pretty print GObjects and GHashTables and stuff that should nowadays be available in most distros. Unfortunately when you build your own … <a href="http://blogs.gnome.org/danni/2012/04/25/getting-the-glib-gdb-macros-with-your-own-installed-glib/">Continue reading <span class="meta-nav">→</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>So there are these really cool <a href="http://blogs.gnome.org/alexl/2009/09/21/archer-gdb-macros-for-glib/">debugging macros for GLib/GObject</a> that do things like let you iterate GLists and pretty print GObjects and GHashTables and stuff that should nowadays be available in most distros.</p>
<p>Unfortunately when you build your own GLib to develop against, it all breaks.</p>
<p>It turns out, gdb locates when to load these things by looking in <tt>$prefix/share/gdb/auto-load/</tt> and matching the sonames, so if you have libraries with a different soname (cause they’re new versions), or in a different prefix, it just doesn’t work.</p>
<p><a href="http://damien.lespiau.name/blog/2010/03/23/using-glibpy-and-gobjectpy-gdb-scripts/">Damien Lespiau</a> has a workaround for this that adds a command to load them from a path you can control with <tt>sys.path</tt>; which works. I looked a little for a generic solution to feed the autoloader from my GLib build prefix, but I haven’t found one yet.</p>
<p>Having now looked at this. I’m also excited about possibilities for combining this with GObject-Introspection to potentially do some useful things. I don’t know what the caveats are here yet, what’s safe to call and what’s not.</p></div>
    </content>
    <updated>2012-04-25T03:07:15Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>Danielle</name>
    </author>
    <source>
      <id>http://blogs.gnome.org/danni</id>
      <link href="http://blogs.gnome.org/danni/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blogs.gnome.org/danni" rel="alternate" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-nd/2.5/au/" rel="license"/>
      <subtitle>Danielle's technical stuffs</subtitle>
      <title>scrambled tofu</title>
      <updated>2012-05-17T07:15:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blogs.gnome.org/xclaesse/?p=176</id>
    <link href="http://blogs.gnome.org/xclaesse/2012/04/24/git-fork-quickly-publish-your-git-branches/" rel="alternate" type="text/html"/>
    <title>Xavier Claessens: git fork – quickly publish your git branches</title>
    <summary>When working with a new git project, I like to publish my patches in git branches on my public git server. I usually use the collabora git server, but some people also have account on freedesktop, etc. But it’s a bit long just to publish a branch: locally: git clone ssh://git.gnome.org/git/empathy locally: ssh git.collabora.co.uk collabora: [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>When working with a new git project, I like to publish my patches in git branches on my public git server. I usually use the collabora git server, but some people also have account on freedesktop, etc. But it’s a bit long just to publish a branch:</p>
<ol>
<li>locally: <kbd>git clone ssh://git.gnome.org/git/empathy</kbd></li>
<li>locally: <kbd>ssh git.collabora.co.uk</kbd></li>
<li>collabora: <kbd>cd public_html/git &amp;&amp; git init --bare git://git.gnome.org/empathy</kbd></li>
<li>locally: <kbd>git remote add xclaesse git+ssh://git.collabora.co.uk/git/user/xclaesse/empathy</kbd></li>
</ol>
<p>Note how GNOME urls are different in 1) and 3), not only the <kbd>ssh://</kbd> VS <kbd>git://</kbd> but also the extra <kbd>/git/</kbd> and it’s different with freedesktop.</p>
<p>So my first step to simplify this is to define insteadOf URLs in <kbd>~/.gitconfig</kbd> both locally and on server:</p>
<p>locally:</p>
<pre>[url "ssh://git.gnome.org/git/"]
    insteadof = gnome:
[url "git+ssh://git.collabora.co.uk/git/user/xclaesse/"]
    insteadof = collabora:</pre>
<p>on server:</p>
<pre>[url "git://git.gnome.org/"]
    insteadof = gnome:</pre>
<p>Now the steps are:</p>
<ol>
<li>locally: <kbd>git clone gnome:empathy</kbd></li>
<li>locally: <kbd>ssh git.collabora.co.uk</kbd></li>
<li>collabora: <kbd>cd public_html/git &amp;&amp; git init --bare gnome:empathy</kbd></li>
<li>locally: <kbd>git remote add xclaesse collabora:empathy</kbd></li>
</ol>
<p>Still I’m lazy so I don’t like sshing the server manually, so the final step is to add this git alias in your local <kbd>~/.gitconfig</kbd>:</p>
<pre>[alias]
    fork = !git config --get remote.origin.url | xargs -n 1 ssh git.collabora.co.uk \"cd ~/public_html/git &amp;&amp; git init --bare\"</pre>
<p>That will create a public repository for the project you’re currently in, just by typing “git fork”! Steps are now:</p>
<ol>
<li>locally: <kbd>git clone gnome:empathy</kbd></li>
<li>locally: <kbd>git fork</kbd></li>
<li>locally: <kbd>git remote add xclaesse collabora:empathy</kbd></li>
</ol></div>
    </content>
    <updated>2012-04-24T11:48:45Z</updated>
    <category term="Collabora"/>
    <category term="GNOME"/>
    <author>
      <name>xclaesse</name>
    </author>
    <source>
      <id>http://blogs.gnome.org/xclaesse</id>
      <link href="http://blogs.gnome.org/xclaesse/category/collabora/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blogs.gnome.org/xclaesse" rel="alternate" type="text/html"/>
      <subtitle>Just another GNOME Blogs weblog</subtitle>
      <title>Xavier Claessens » Collabora</title>
      <updated>2012-05-17T04:45:19Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://padovan.org/blog/?p=343</id>
    <link href="http://padovan.org/blog/2012/04/im-joining-collabora/" rel="alternate" type="text/html"/>
    <title>Gustavo Padovan: I’m joining Collabora</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">After more than 3 years working at ProFUSION embedded systems I decided it was time to a move: Today is my first day (of many) at Collabora Ltd. :-) I would like to take the opportunity to thank people at … <a href="http://padovan.org/blog/2012/04/im-joining-collabora/">Continue reading <span class="meta-nav">→</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>After more than 3 years working at ProFUSION embedded systems I decided it was time to a move: Today is my first day (of many) at <a href="http://collabora.co.uk" title="Collabora Ltd.">Collabora Ltd</a>. :-)</p>
<p>I would like to take the opportunity to thank people at ProFUSION for the time I’ve working there. Those were good times.</p>
<p>And for the Collaborans: I hope we will rock a lot together. I’ll keep updating this blog with posts about my work at Collabora.</p>
<p>See you around. ;-)</p></div>
    </content>
    <updated>2012-04-23T20:14:33Z</updated>
    <category term="free software"/>
    <category term="collabora"/>
    <category term="linux kernel"/>
    <author>
      <name>Gustavo Padovan</name>
    </author>
    <source>
      <id>http://padovan.org/blog</id>
      <link href="http://padovan.org/blog/tag/collabora/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://padovan.org/blog" rel="alternate" type="text/html"/>
      <subtitle>free as in freedom</subtitle>
      <title>Gustavo Padovan » collabora</title>
      <updated>2012-04-25T04:15:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="es-ES">
    <id>http://luisbg.blogalia.com//historias/71693</id>
    <link href="http://luisbg.blogalia.com//historias/71693" rel="alternate" type="text/html"/>
    <title>Luis de Bethencourt: the real enjoyment is in the doing</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><i> I like the *process*. I like writing software. I like trying to make things work better. In many ways, the end result is unimportant – it’s really just the excuse for the whole experience. It’s why I started Linux to begin with – sure, I kind of needed an OS, but I needed a *project* to work on more than I needed the OS.
<br/>

<br/>
In fact, to get a bit “meta” on this issue, what’s even more interesting than improving a piece of software, is to improve the *way* we write and improve software. Changing the process of making software has sometimes been some of the most painful parts of software development (because we so easily get used to certain models), but that has also often been the most rewarding parts. It is, after all, why “git” came to be, for example. And I think open source in general is obviously just another “process model” change that I think is very successful. [...]
<br/>

<br/>
It’s simply not the end that matters at all. It’s the means – the journey. The end result is almost meaningless. If you do things the right way, the end result *will* be fine too, but the real enjoyment is in the doing, not in the result.</i>
<br/>

<br/>
<center><b>Linus Torvalds</b></center>
<br/>

<br/>

<br/>
<p align="right"><a href="http://techcrunch.com/2012/04/19/an-interview-with-millenium-technology-prize-finalist-linus-torvalds/">(source interview with TechCrunch)</a></p></div>
    </summary>
    <updated>2012-04-23T12:45:08Z</updated>
    <source>
      <id>http://luisbg.blogalia.com/</id>
      <author>
        <name>d33p</name>
      </author>
      <link href="http://luisbg.blogalia.com/" rel="alternate" type="text/html"/>
      <link href="http://luisbg.blogalia.com/rdf.xml" rel="self" type="application/rdf+xml"/>
      <rights>Copyright d33p</rights>
      <subtitle>luis de bethencourt's blog about the technological freedom world.</subtitle>
      <title>the phrygian cap</title>
      <updated>2012-05-17T07:15:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.barisione.org/?p=544</id>
    <link href="http://blog.barisione.org/2012-04/updated-message-notifier-and-new-cooking-blog/" rel="alternate" type="text/html"/>
    <title>Marco Barisione: Updated message notifier and new cooking blog</title>
    <summary>A few months ago I wrote a gnome-shell extension that shows how many conversations with unread messages you have, so that I could stop missing incoming messages. I updated the extension so it now works better and it can also show what the incoming notifications are when you press the icon. You can get the [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A few months ago I wrote a gnome-shell extension that <a href="http://blog.barisione.org/2011-11/permanent-im-notifications/">shows how many conversations with unread messages you have</a>, so that I could stop missing incoming messages.<br/>
I updated the extension so it now works better and it can also show what the incoming notifications are when you press the icon. You can get the new version (and install it with just two clicks) from <a href="https://extensions.gnome.org/extension/150/message-notifier/">extensions.gnome.org</a>. If you previously installed the extension from git and you don’t have an update button on that page it could mean you need to first manually remove <code>~/.local/share/gnome-shell/extensions/message-notifier@shell-extensions.barisione.org/</code> and reload the shell (ALT-F2 and then type “r”).</p>
<p align="center" class="img"><a href="https://extensions.gnome.org/extension/150/message-notifier/"><img alt="Message notification" src="http://farm6.staticflickr.com/5447/7090334093_b40dfbf485.jpg"/></a></p>
<p>Note that the extension shows the number of conversations with new messages and not the number of messages; I don’t like seeing “2” up there if somebody just wrote me “hi” and then “how are you?”.</p>
<p>There is still a major problem with the extension. I wanted to be able to also see if somebody pinged me on IRC (I’m a XChat-GNOME user) so I don’t limit the count to active chat conversations, but I consider all the active notifications. I find this very useful to avoid missing something, but it means that the red icon will also appear every time banshee or rhythmbox change song. Suggestions on how to solve this?</p>
<p>Changing completely topic, I recently moved to a new home and, having a nice new kitchen (with dishwasher), I started cooking a lot again. I decided to start a new cooking blog called <a href="http://www.gnocchialpesto.co.uk/">gnocchialpesto.co.uk</a> to keep track of my recipes and share them with others. If you like food, in particular Italian one, take a look at it <img alt=":)" src="http://farm1.static.flickr.com/189/458651157_780851832e_o.png"/>.</p></div>
    </content>
    <updated>2012-04-19T15:46:17Z</updated>
    <category term="collabora"/>
    <category term="gnome"/>
    <category term="cooking"/>
    <category term="empathy"/>
    <category term="extension"/>
    <category term="gnocchialpesto.co.uk"/>
    <category term="gnome-shell"/>
    <category term="message notifier"/>
    <author>
      <name>barisione</name>
    </author>
    <source>
      <id>http://blog.barisione.org</id>
      <link href="http://blog.barisione.org/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blog.barisione.org" rel="alternate" type="text/html"/>
      <title>Marco Barisione's Weblog</title>
      <updated>2012-05-10T13:15:33Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blogs.gnome.org/danni/?p=439</id>
    <link href="http://blogs.gnome.org/danni/2012/04/18/experimenting-with-github/" rel="alternate" type="text/html"/>
    <title>Danielle Madeley: experimenting with github</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Apparently I’ve had a github account for ages, and never used it. Recently I’ve been using github a for some work I’ve been doing with Intel at Collabora. Anyway, I thought it might be neat to move some of my … <a href="http://blogs.gnome.org/danni/2012/04/18/experimenting-with-github/">Continue reading <span class="meta-nav">→</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Apparently I’ve had a github account for ages, and never used it. Recently I’ve been using github a for some work I’ve been doing with Intel at Collabora. </p>
<p>Anyway, I thought it might be neat to move some of my random personal projects and misc that were stored on <a href="http://cgit.collabora.com/git/user/danni">git.collabora.co.uk</a> to <a href="http://github.com/danni">github</a>.</p></div>
    </content>
    <updated>2012-04-17T22:44:12Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>Danielle</name>
    </author>
    <source>
      <id>http://blogs.gnome.org/danni</id>
      <link href="http://blogs.gnome.org/danni/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blogs.gnome.org/danni" rel="alternate" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-nd/2.5/au/" rel="license"/>
      <subtitle>Danielle's technical stuffs</subtitle>
      <title>scrambled tofu</title>
      <updated>2012-05-17T07:15:11Z</updated>
    </source>
  </entry>

  <entry xml:lang="es-ES">
    <id>http://luisbg.blogalia.com//historias/71646</id>
    <link href="http://luisbg.blogalia.com//historias/71646" rel="alternate" type="text/html"/>
    <title>Luis de Bethencourt: 1.0 &gt; vlc &gt; 0.10 &gt; mplayer</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Completely unscientific benchmark, just to get you salivating for GStreamer 1.0
<br/>

<br/>
<center><a href="http://people.freedesktop.org/~wtay/perf.png"><img src="http://people.freedesktop.org/~wtay/perf.png" width="800"/></a></center>
<br/>

<br/>
X = time, Y = CPU%
<br/>
gst 0.10 and 0.11 from git, vlc 1.1.12, vlc 2.0.1-0-gf432547, mplayer SVN-r33713-4.6.1
<br/>
test file: video: H.264 - audio: MPEG-4 AAC
<br/>

<br/>
(benchmark created by <a href="http://www.collabora.com/projects/gstreamer-interview/">Wim Taymans</a>)</div>
    </summary>
    <updated>2012-04-12T14:45:15Z</updated>
    <source>
      <id>http://luisbg.blogalia.com/</id>
      <author>
        <name>d33p</name>
      </author>
      <link href="http://luisbg.blogalia.com/" rel="alternate" type="text/html"/>
      <link href="http://luisbg.blogalia.com/rdf.xml" rel="self" type="application/rdf+xml"/>
      <rights>Copyright d33p</rights>
      <subtitle>luis de bethencourt's blog about the technological freedom world.</subtitle>
      <title>the phrygian cap</title>
      <updated>2012-05-17T07:15:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blogs.gnome.org/wjjt/?p=903</id>
    <link href="http://blogs.gnome.org/wjjt/2012/04/05/some-git-aliases/" rel="alternate" type="text/html"/>
    <title>Will Thompson: Some Git aliases.</title>
    <summary>Xavier suggested I blog my Git aliases. [alias] ci = commit -v prune-all = !git remote | xargs -n 1 git remote prune record = !git add -p &amp;&amp; git ci amend-record = !git add -p &amp;&amp; git ci --amend stoat = !toilet -f future STOATS update-master = !git checkout master &amp;&amp; git pull -r [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://blogs.gnome.org/xclaesse/">Xavier</a> suggested I blog my Git aliases.</p>
<pre>[alias]
	ci = commit -v
	prune-all = !git remote | xargs -n 1 git remote prune
	record = !git add -p &amp;&amp; git ci
	amend-record = !git add -p &amp;&amp; git ci --amend
	stoat = !toilet -f future STOATS
	update-master = !git checkout master &amp;&amp; git pull -r
	lol = log --graph --decorate --pretty=oneline --abbrev-commit
	lola = log --graph --decorate --pretty=oneline --abbrev-commit --all</pre>
<p>Mostly<sup><a class="footnote-link footnote-identifier-link" href="http://blogs.gnome.org/wjjt/2012/04/05/some-git-aliases/#footnote_0_903" id="identifier_0_903" title="No, I don&amp;#8217;t remember why I added git stoat either.">1</a></sup> self-explanatory.</p>
<dl>
<dt><kbd>git ci</kbd></dt>
<dd>Shorter than <kbd>git commit</kbd>, and <kbd>-v</kbd> shows you what you’re about to commit.</dd>
<dt><kbd>git prune-all</kbd></dt>
<dd>From <a href="https://git.wiki.kernel.org/articles/a/l/i/Aliases.html#Prune_all_your_stale_remote_branches">the Git wiki</a>.</dd>
<dt><kbd>git record</kbd>; <kbd>git amend-record</kbd></dt>
<dd>I started using these as a <a href="http://darcs.net/">Darcs</a> refugee, but they’re also a good way to avoid doing <kbd>git add -p &amp;&amp; git commit <b>-a</b></kbd> through overly-active muscle memory. I could probably simplify them to use <kbd>git commit -p</kbd>.</dd>
<dt><kbd>git lol</kbd>; <kbd>git lola</kbd></dt>
<dd>…come from <a href="http://blog.kfish.org/2010/04/git-lola.html">Conrad Parker</a>.</dd>
</dl>
<p>What’re your favourites?</p>
<ol class="footnotes"><li class="footnote" id="footnote_0_903">No, I don’t remember why I added <kbd>git stoat</kbd> either.</li></ol></div>
    </content>
    <updated>2012-04-05T10:10:25Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>Will Thompson</name>
    </author>
    <source>
      <id>http://blogs.gnome.org/wjjt</id>
      <link href="http://blogs.gnome.org/wjjt/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://blogs.gnome.org/wjjt" rel="alternate" type="text/html"/>
      <subtitle>wjt</subtitle>
      <title>This is not your bugtracker.</title>
      <updated>2012-05-17T07:15:20Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://wm161.net/?p=835</id>
    <link href="http://wm161.net/2012/04/04/welcome-to-git/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=welcome-to-git" rel="alternate" type="text/html"/>
    <title>Trever Fischer: Welcome to git!</title>
    <summary>Finally, the deed is done.

https://projects.kde.org/projects/kde/kdemultimedia

KDE Multimedia has finished migrating from subversion to git.



I'd like to thank everyone on the KDE sysadmin and multimedia teams for helping me sort things out and get it finished.

ninja edit: The sysadmins changed the link ...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Finally, the deed is done.</p>
<p><a href="https://projects.kde.org/projects/kde/kde-multimedia">https://projects.kde.org/projects/kde/kdemultimedia</a></p>
<p>KDE Multimedia has finished migrating from subversion to git.</p>
<p><a href="http://www.flickr.com/photos/dealingwith/4295488113/" title="GIT-STASH by dealingwith, on Flickr"><img alt="GIT-STASH" height="477" src="http://farm5.staticflickr.com/4014/4295488113_6c60aa41c6.jpg" width="385"/></a></p>
<p>I’d like to thank everyone on the KDE sysadmin and multimedia teams for helping me sort things out and get it finished.</p>
<p>ninja edit: The sysadmins changed the link minutes after I posted so the i18n teams wouldn’t have to tweak their scripts.</p>
<p class="wp-flattr-button"/> <p><a href="http://wm161.net/blog/?flattrss_redirect&amp;id=835&amp;md5=3404e81aadd7aa8dd9c5b1e4363ea4a1" target="_blank" title="Flattr"><img alt="flattr this!" src="http://wm161.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png"/></a></p></div>
    </content>
    <updated>2012-04-04T20:36:29Z</updated>
    <category term="Fedora"/>
    <category term="Gnome"/>
    <category term="KDE"/>
    <author>
      <name>Trever</name>
    </author>
    <source>
      <id>http://wm161.net</id>
      <link href="http://wm161.net/browse/linux/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://wm161.net" rel="alternate" type="text/html"/>
      <subtitle>Your daily source of everything!</subtitle>
      <title>wm161.net » Linux</title>
      <updated>2012-05-16T20:01:07Z</updated>
    </source>
  </entry>
</feed>

