<?xml version="1.0"?>
<rss version="2.0">
<channel>
	<title>planet.freedesktop.org</title>
	<link>http://planet.freedesktop.org</link>
	<language>en</language>
	<description>planet.freedesktop.org - http://planet.freedesktop.org</description>

<item>
	<title>Dave Airlie: initial kms for radeon r500 atombios pushed</title>
	<guid>urn:lj:livejournal.com:atom1:airlied:61839</guid>
	<link>http://airlied.livejournal.com/61839.html</link>
	<description>AMD today announced the source code to that atom parser from their kgrids project, I've been playing with this code for a few weeks to see if we could use it for kernel modesetting (kms).&lt;br /&gt;&lt;br /&gt;So I've just pushed my initial radeon kms code to the &quot;gem-modesetting&quot; branch of the drm git tree.&lt;br /&gt;The corresponding DDX code is in the radeon-gem-ms branch of my personal xf86-video-ati repo.&lt;br /&gt;&lt;br /&gt;This contains 2 major things - and doesn't contain lots of other major things:&lt;br /&gt;&lt;br /&gt;1. GEM style API to userspace layered on top of TTM internals. &lt;br /&gt;   - Only really does pinned allocations - no superioctl support yet, working with Jerome on tying that down.&lt;br /&gt;&lt;br /&gt;2. atombios parser from AMD + modesetting code.&lt;br /&gt;   - This only support rs690 and r500 devices so far. We don't have r600 code in the drm tree properly yet,&lt;br /&gt;     and legacy bios is TODO.&lt;br /&gt;&lt;br /&gt;So the major TODOs are:&lt;br /&gt;&lt;br /&gt;add support for modesetting on legacy cards (r100/r200/r300/r400) - ported from -ati driver. We need a fixed point&lt;br /&gt;implementation of the bandwidth calculation code.&lt;br /&gt;&lt;br /&gt;proper command submission - Jerome is looking into this and I think we have a solid plan. for now I'm just abusing the old&lt;br /&gt;style command submission routines with GEM ioctl.&lt;br /&gt;&lt;br /&gt;3D - cmdbuf work on the Mesa drivers needed, RH has some in-progress code.&lt;br /&gt;&lt;br /&gt;EXA pixmaps - still using one big EXA offscreen area, probably need to move to EXA pixmaps for DRI2 and also to use the superioctl properly.</description>
	<pubDate>Fri, 25 Jul 2008 23:08:42 +0000</pubDate>
</item>
<item>
	<title>The Irregular Radeon Development Companion: new ATOM parser</title>
	<guid>http://tirdc.livejournal.com/22940.html</guid>
	<link>http://tirdc.livejournal.com/22940.html</link>
	<description>Alex Deucher (agd5f) just announced the following on the X.Org mailing lists:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;AMD is pleased to release a new atom parser which is more suitable for&lt;br /&gt;inclusion in the Linux kernel.&lt;br /&gt;You can download the new ATOM parser here:&lt;br /&gt;&lt;a href=&quot;http://www.x.org/docs/AMD/kgrids-atom.zip&quot;&gt;http://www.x.org/docs/AMD/kgrids-atom.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;Alex Deucher&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So what does this mean? This means that AMD is working on getting drm modesetting (also refered as kernel modesetting) to work with Atom-BIOS based cards (R500+). This is great news since the original Atom-BIOS parser (currently used in xf86-video-ati and the atom-support branch of xf86-video-radeonhd) was never targeted for inclusion in the Linux kernel.&lt;br /&gt;&lt;br /&gt;Right now you can't really test the code. You got to wait until it is picked up either by the DDX drivers (xf86-video-ati or xf86-video-radeonhd) or by the DRM modesetting approaches in progress for radeon right now. It's most likely that the parser will no be picked up within the next few days but within a short timeframe.</description>
	<pubDate>Fri, 25 Jul 2008 22:17:17 +0000</pubDate>
</item>
<item>
	<title>Lennart Poettering: String Pools</title>
	<guid>http://0pointer.de/blog/projects/string-pools</guid>
	<link>http://0pointer.de/blog/projects/string-pools.html</link>
	<description>&lt;p&gt;In part 2.4.3 of Ulrich Drepper's excellent &lt;i&gt;&lt;a href=&quot;http://people.redhat.com/drepper/dsohowto.pdf&quot;&gt;How To Write Shared
Libraries&lt;/a&gt;&lt;/i&gt; (which unfortunately is a bit out-of-date these days) Ulrich
suggests replacing arrays of constant strings by a single concatenated string
plus an index lookup table, to avoid unnecessary relocations during startup of
ELF programs. Maintaining this &lt;i&gt;string pool&lt;/i&gt; is however troublesome,
it is hard to read and difficult to edit. In appendix B Ulrich
lists an example C excerpt which contains some code for simplifying the
maintaining of such strings pools, after an idea from Bruno Haible. In my
opinion however that suggestion is not that much simpler, and requires
splitting off the actual strings into a seperate source file. Ugly!&lt;/p&gt;

&lt;p&gt;Some Free Software uses string pools to speed up relocation, e.g. &lt;a href=&quot;http://svn.gnome.org/viewvc/gtk%2B/trunk/gdk/x11/gdksettings.c?view=markup&quot;&gt;GTK+&lt;/a&gt;.
Some development tools like &lt;a href=&quot;http://www.gnu.org/software/gperf/manual/html_node/Gperf-Declarations.html&quot;&gt;gperf&lt;/a&gt;
contain support for string pools.&lt;/p&gt;

&lt;p&gt;All solutions for string pool maintaining I could find on the Internet were not exactly
beautiful. Either they were completely manual, manual plus a validity checking
tool, or very very cumbersome. Googling around I was unable to find a satisfactory tool for this purpose&lt;sup&gt;[1]&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;After &lt;a href=&quot;http://blog.flameeyes.eu/&quot;&gt;Diego Petteno&lt;/a&gt; complained about
my heavy use of arrays of constant strings in &lt;a href=&quot;http://git.0pointer.de/?p=libatasmart.git&quot;&gt;libatasmart&lt;/a&gt; I sat down to
change the situation, and wrote &lt;tt&gt;&lt;a href=&quot;http://git.0pointer.de/?p=libatasmart.git;a=blob;f=strpool.c;hb=master&quot;&gt;strpool.c&lt;/a&gt;&lt;/tt&gt;,
a simple parser for a very, very minimal subset of C, written in plain ANSI C.
It looks for two special comment markers &lt;tt&gt;/* %STRINGPOOLSTART% */&lt;/tt&gt; and
&lt;tt&gt;/* %STRINGPOOLSTOP% */&lt;/tt&gt;, moves all immediate strings between those
markers into a common string pool and rewrites the input with the strings
replaced by indexes. Code accessing those strings must use the
special &lt;tt&gt;_P()&lt;/tt&gt; macro. With these minimal changes to a
source file, passing it through &lt;tt&gt;strpool.c&lt;/tt&gt; will automatically rewrite
it to a string-poolized version. The nice thing about this is that the
necessary changes in the source are minimal, and the code stays compilable with
and without passing it through the &lt;tt&gt;strpool.c&lt;/tt&gt; preprocessor.&lt;/p&gt;

&lt;p&gt;Here's an example. First the original non-string-poolized version:&lt;/p&gt;

&lt;pre&gt;
static const char* const table[] = {
	&quot;waldo&quot;,
	&quot;uxknurz&quot;,
	&quot;foobar&quot;,
	&quot;fubar&quot;
};

static int main(int argc, char* argv[]) {
	printf(&quot;%s\n&quot;, table[2]);
	return 1;
}
&lt;/pre&gt;

&lt;p&gt;For later use with &lt;tt&gt;strpool.c&lt;/tt&gt; we change this like this:&lt;/p&gt;

&lt;pre&gt;
&lt;b&gt;#ifndef STRPOOL
#define _P(x) x
#endif&lt;/b&gt;

&lt;b&gt;/* %STRINGPOOLSTART% */&lt;/b&gt;
static const char* const table[] = {
	&quot;waldo&quot;,
	&quot;uxknurz&quot;,
	&quot;foobar&quot;,
	&quot;fubar&quot;
};
&lt;b&gt;/* %STRINGPOOLSTOP% */&lt;/b&gt;

static int main(int argc, char* argv[]) {
	printf(&quot;%s\n&quot;, &lt;b&gt;_P&lt;/b&gt;(table[2]));
	return 1;
}
&lt;/pre&gt;

&lt;p&gt;When passed through &lt;tt&gt;strpool.c&lt;/tt&gt; this will be rewritten as:&lt;/p&gt;

&lt;pre&gt;
&lt;b&gt;/* Saved 3 relocations, saved 0 strings (0 b) due to suffix compression. */
static const char _strpool_[] =
	&quot;waldo\0&quot;
	&quot;uxknurz\0&quot;
	&quot;foobar\0&quot;
	&quot;fubar\0&quot;;
#ifndef STRPOOL
#define STRPOOL
#endif
#ifndef _P
#define _P(x) (_strpool_ + ((x) - (const char*) 1))
#endif&lt;/b&gt;

#ifndef STRPOOL
#define _P(x) x
#endif

/* %STRINGPOOLSTART% */
static const char* const table[] = {
	&lt;b&gt;((const char*) 1)&lt;/b&gt;,
	&lt;b&gt;((const char*) 7)&lt;/b&gt;,
	&lt;b&gt;((const char*) 15)&lt;/b&gt;,
	&lt;b&gt;((const char*) 22)&lt;/b&gt;
};
/* %STRINGPOOLSTOP% */

static int main(int argc, char* argv[]) {
	printf(&quot;%s\n&quot;, _P(table[2]));
	return 1;
}
&lt;/pre&gt;

&lt;p&gt;All three versions can be compiled directly with gcc. However, the version
that was passed through &lt;tt&gt;strpool.c&lt;/tt&gt; compresses the number of
relocations for the table array from 4 to 1. Which isn't much of a
difference, but the larger your tables are the more relevant the difference in
the number of necessary relocations gets.&lt;/p&gt;

&lt;p&gt;A more realistic example is &lt;a href=&quot;http://git.0pointer.de/?p=libatasmart.git;a=blob;f=atasmart.c;hb=master&quot;&gt;atasmart.c&lt;/a&gt; which after being preprocessed with &lt;tt&gt;strpool.c&lt;/tt&gt; looks like &lt;a href=&quot;http://0pointer.de/public/atasmart.strpool.c&quot;&gt;this&lt;/a&gt;. In this specific example the number of necessary startup relocations goes down from &gt; 100 to 9.&lt;/p&gt;

&lt;p&gt;I am note sure if the parser is 100% correct, but it works fine with all sources I tried. It even does suffix compression like gcc does for normal strings too.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;b&gt;Footnotes&lt;/b&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;[1] Or maybe I just suck in googling? Anyone has a suggestion for such a tool?&lt;/small&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 25 Jul 2008 21:32:00 +0000</pubDate>
</item>
<item>
	<title>Christian Schaller: Back from Turkey</title>
	<guid>http://blogs.gnome.org/uraeus/2008/07/25/back-from-turkey/</guid>
	<link>http://blogs.gnome.org/uraeus/2008/07/25/back-from-turkey/</link>
	<description>&lt;p&gt;So a little later than &amp;#8216;everybody else&amp;#8217; I am now back from Turkey. Wim and I had both decided we needed some vacation and since we where going to Turkey for GUADEC it would be a great opportunity for us to travel around and see the area. Our original plan included climbing Mount Arrarat and visiting Georgia and Armenia, but trouble getting climbing permit combined with some german tourists getting kidnapped on Mount Arrarat by Kurd sepratists got us to adjust our plans. We ended up instead travelling down to cities such as Urfa (Edessa) and Harran, spending some days in Cappadocia and finally visiting Pamukkale and Ephesos. Had a blast of a time although Wim seemed a little less enthusiastic about females of the Korean and Taiwanese variety than me. Could of course just be that &amp;#8216;Hello Kitty&amp;#8217; panties fail to get his sap boiling &lt;img src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/face-smile.png&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt; &lt;/p&gt;
&lt;p&gt;For anyone travelling to Turkey I think spending 2-3 days in &lt;a href=&quot;http://www.goreme.org/&quot;&gt;Göreme&lt;/a&gt; is an absolute must. It is a charming backpacker town with a lot of the hotels carved out of volcanic rock. A little gimmicky in the sense that the locals no longer live in the rocks for the most part, but the area is something which just have to be experienced.&lt;/p&gt;
&lt;p&gt;Although we enjoyed the food I think it is safe to say that neither myself or Wim will be eating salad with cucumber and tomato, sprinkled with a little lemon anytime soon. 10+ days in a row is enough for a while &lt;img src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/face-smile.png&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt; &lt;/p&gt;
&lt;p&gt;One thing I started wondering about while travelling around was the enormous expectations by local people for what an EU membership would mean for the people of Turkey, ranging from the EU solving all minority rights issues for Kurds, Armenians and Alavis, west European living standards and salaries for everyone, to solidifying Turkeys secular traditions. While the EU will for certain help push Turkey in the right direction on these issues, I can&amp;#8217;t help but wonder if a future EU membership for Turkey might end up being a big lettdown compared to the expectation level I experienced.&lt;/p&gt;</description>
	<pubDate>Fri, 25 Jul 2008 15:35:18 +0000</pubDate>
</item>
<item>
	<title>Dave Airlie: gdbing the X server with xkb ... finally..</title>
	<guid>urn:lj:livejournal.com:atom1:airlied:61658</guid>
	<link>http://airlied.livejournal.com/61658.html</link>
	<description>So for a long time if you ran X inside gdb, gdb would die badly when X forked xkbcomp. X hackers have worked around this by either running -kb or attaching gdb after X is started for many years.&lt;br /&gt;&lt;br /&gt;I finally found it by accident this morning, I was working on some modesetting things, and had been gdb'ing the  X server fine, when suddenly it started doing the wierd hang, I realised I'd just enabled direct rendering code and initialised the lock.&lt;br /&gt;&lt;br /&gt;Now the kernel has this really really really really dirty hack for the DRM that I'm not 100% sure we really need anymore. The original drm designers decided that if a DRI client held the lock then if it died it might crash the GPU, so they got this special signal blocking code into the Linux kernel which we use to block certains signals across lock hold. When the lock drops, the process gets the signal. Of course one of these signals was one gdb was using to stop the X server and the X server always holds the lock when running so it got confused when an blockable signals somehow managed to block itself :)&lt;br /&gt;&lt;br /&gt;Now the fixes for this are &lt;br /&gt;&lt;br /&gt;a) kill the notifier stuff, I'm not sure it ever mattered, I at least could kill it for modesetting drivers as we have a lot more&lt;br /&gt;control over the GPU from the kernel.&lt;br /&gt;b) Have the X server drop the DRI lock around certain operations like xkb execing xkbcomp etc.. this seems worse.&lt;br /&gt;&lt;br /&gt;What I've done for now in drm git is just not set the notifier up for the &quot;master&quot; process, i.e. the X server. This will at least allow people to debug their X servers with xkb.</description>
	<pubDate>Fri, 25 Jul 2008 03:42:33 +0000</pubDate>
</item>
<item>
	<title>John (J5) Palmieri: Interesting news out of the Intel camp</title>
	<guid>http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/</guid>
	<link>http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/</link>
	<description>&lt;p&gt;It seems that &lt;a href=&quot;http://www.theregister.co.uk/2008/07/23/moblin_reworked/&quot;&gt;Moblin will be switching from Ubuntu to Fedora Linux as their base operating system&lt;/a&gt;.  I&amp;#8217;m interested in finding out the underlying reasoning for such a move.  The stated reason is because they wanted to use RPM instead of DEB.  I can&amp;#8217;t quite buy that but perhaps that is because having come from both camps I think that packaging is an implementation detail that too many people put way too much stock in.  This has the effect of causing unnecessary emotional splits within the community resulting in animosity which often overshadows real threats.&lt;/p&gt;
&lt;p&gt;The second reason given, which has to do with building a community is pretty broad but more believable.  Fedora has made huge strides while also sticking to its guns in the freedom department and being valuable upstream contributors.  It may be that we sacrificed short term gains which can be gotten via a bit more differentiation, or out of the box &amp;#8220;just works&amp;#8221; on closed hardware but as companies are being convinced to open up their specs and open drivers are being written, a large portion of which is being done by Fedora developers working upstream, little of the short term gains matter much.&lt;/p&gt;
&lt;p&gt;I suspect the real reason is somewhere in the community vein, staring with the Kernel and X team developers who work tirelessly making sure their work is fit for upstream consumption and can be supported in the long term.  Following their lead the rest falls naturally out of that single notion of moving Linux forward as a whole.  Kudo&amp;#8217;s to all my Fedora friends - keep moving forward.&lt;/p&gt;
[read this post in: &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Car&quot;&gt;ar&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Cde&quot;&gt;de&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Ces&quot;&gt;es&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Cfr&quot;&gt;fr&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Cit&quot;&gt;it&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Cja&quot;&gt;ja&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Cko&quot;&gt;ko&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Cpt&quot;&gt;pt&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Cru&quot;&gt;ru&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/24/interesting-news-out-of-the-intel-camp/&amp;amp;langpair=en%7Czh-CN&quot;&gt;zh-CN&lt;/a&gt; ]</description>
	<pubDate>Thu, 24 Jul 2008 20:48:11 +0000</pubDate>
</item>
<item>
	<title>Thomas Vander Stichele: GTK question</title>
	<guid>http://thomas.apestaart.org/log/2008/07/24/gtk-question/</guid>
	<link>http://thomas.apestaart.org/log/2008/07/24/gtk-question/</link>
	<description>&lt;p&gt;We have a lot of text labels in Flumotion where we put mid-sentence newlines just so that once in a while the line gets broken and doesn&amp;#8217;t push the containing widget out wider than we want it to be.&lt;/p&gt;
&lt;p&gt;Obviously this is a bogus way of doing things, but even our resident GTK+ wizard, Johan Dahlin, didn&amp;#8217;t have a ready answer for what the right way to do this is.  So - how should we do it so that text gets flown correctly without mid-paragraph newlines and without ultra-wide widgets ?&lt;/p&gt;
&lt;p&gt;The answer is probably superobvious.&lt;/p&gt;</description>
	<pubDate>Thu, 24 Jul 2008 16:23:30 +0000</pubDate>
</item>
<item>
	<title>Lennart Poettering: PulseAudio 0.9.11 released</title>
	<guid>http://0pointer.de/blog/projects/pulseaudio-0.9.11</guid>
	<link>http://0pointer.de/blog/projects/pulseaudio-0.9.11.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;https://tango.0pointer.de/pipermail/pulseaudio-discuss/2008-July/002083.html&quot;&gt;I just relased PulseAudio 0.9.11&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It's an awesome release. To learn more about why, read the linked email, and &lt;a href=&quot;http://0pointer.de/blog/projects/pulse-glitch-free.html&quot;&gt;this&lt;/a&gt; and &lt;a href=&quot;http://0pointer.de/blog/projects/jeffrey-stedfast.html&quot;&gt;maybe this blog story&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://pulseaudio.org/&quot;&gt;&lt;img src=&quot;http://pulseaudio.org/chrome/site/patitle.png&quot; width=&quot;345&quot; height=&quot;70&quot; alt=&quot;PulseAudio logo&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 24 Jul 2008 13:32:00 +0000</pubDate>
</item>
<item>
	<title>Bastien Nocera: Totem article: "Movie Magic"</title>
	<guid>tag:blogger.com,1999:blog-977684764667858073.post-2929797871589438249</guid>
	<link>http://www.hadess.net/2008/07/totem-article-movie-magic.html</link>
	<description>&lt;a href=&quot;http://tecnocode.co.uk/&quot;&gt;Philip&lt;/a&gt; will be happy. The author of &lt;a href=&quot;http://www.linux-magazine.com/issues/2008/93/movie_magic&quot;&gt;this article for Linux Magazine UK&lt;/a&gt; is full of praise for the YouTube plugin. Good work Philip!&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://bp2.blogger.com/_2o81e3u4ZFU/SIiDeqbiKJI/AAAAAAAAAKM/C_2YySS2WqY/s1600-h/foo.png&quot;&gt;&lt;img src=&quot;http://bp2.blogger.com/_2o81e3u4ZFU/SIiDeqbiKJI/AAAAAAAAAKM/C_2YySS2WqY/s320/foo.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5226571930372548754&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description>
	<pubDate>Thu, 24 Jul 2008 13:23:00 +0000</pubDate>
</item>
<item>
	<title>Peter Hutterer: Input configuration in a nutshell.</title>
	<guid>tag:blogger.com,1999:blog-6112936277054198647.post-1342646335909232315</guid>
	<link>http://who-t.blogspot.com/2008/07/input-configuration-in-nutshell.html</link>
	<description>Once upon a time, we had a number of free operating systems. Linux, BSDs, emacs, XFree86, you name it. Then one of them chose to be less like one and become a windowing system instead (which was supposed to it's job from the beginning, albeit it kinda forgot about it halfway there). The principle of DTRT was embraced and the almighty xorg.conf file was given the handshake and shown the door. These days, X starts without a config file these days, and everything just works.&lt;br /&gt;&lt;br /&gt;Most of the time. When it doesn't it's usually ugly. So here's a guide on how to configure input devices with recent servers. This guide includes&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  a quick overview of the evdev input driver&lt;/li&gt;&lt;li&gt;how to set up input hotplugging.&lt;/li&gt;&lt;li&gt;what to do in the xorg.conf&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;First, if you're not running Linux you can stop reading. Keep your config file, make sure you reference your input devices in the ServerLayout section, and start porting the evdev kernel module to your OS of choice.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;A quick overview of the evdev input driver&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://cgit.freedesktop.org/xorg/driver/xf86-input-evdev/&quot;&gt;xf86-input-evdev&lt;/a&gt; is the hotplugging-capable input driver to be used for mice and keyboards (and other devices, if appropriate). One main difference is that it uses devices files such as&lt;span&gt; /dev/input/event0&lt;/span&gt; instead of &lt;span&gt;/dev/input/mouse0&lt;/span&gt; (like the mouse driver does for example). The other big difference is that it can query the kernel about the capabilities about each device and set up itself correctly. So if you point a device to&lt;span&gt; /dev/input/event0&lt;/span&gt;, it will automatically set itself up as mouse or keyboard, as appropriate.&lt;br /&gt;The second important thing is that it puts a grab on the device file (not the same as a pointer/keyboard grab in X!). This grab gives us two benefits: the device will not send events to the collector devices (e.g. &lt;span&gt;/dev/input/mice&lt;/span&gt;) anymore. And if anyone else tries to grab the device they will fail. So we can ensure that only one process receives events from this device.&lt;br /&gt;&lt;br /&gt;What does all this mean to us now?&lt;br /&gt;We can change our mice and keyboards in the xorg.conf to use the evdev driver instead. As device, we can either specify &lt;span&gt;/dev/input/eventX&lt;/span&gt;, but these numbers may change on reboot. Look into the &lt;span&gt;/dev/input/by-id&lt;/span&gt; and &lt;span&gt;/dev/input/by-path&lt;/span&gt; directory. I recommend to always use&lt;span&gt; /dev/input/by-id/MyMouseName-event-mouse&lt;/span&gt; as device instead of the eventX files. Note that you'll find &lt;span&gt;MyMouseName-mouse &lt;/span&gt;and &lt;span&gt;MyMouseName-event-mouse&lt;/span&gt;, of which only the latter will work with evdev. Ignore the former.&lt;br /&gt;The big benefit is simply that you can configure multiple devices quite easily now. Simply set up InputDevice sections for each device and the X server will treat them as different devices. This is quite useful if you're using MPX.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span&gt;How to set up input hotplugging&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Writing xorg.conf sections is not only boring, it's also quite pointless in most cases. So let's let the server find input devices automagically. The two ingredients are HAL and DBus. At startup, the server queries HAL over DBus for a list of devices and adds them one-by-one.&lt;br /&gt;&lt;br /&gt;All you need to do is configure HAL so the server adds the devices with the right options.&lt;br /&gt;You must merge the key &lt;span&gt;input.x11_driver&lt;/span&gt;. Look at &lt;a href=&quot;http://cgit.freedesktop.org/xorg/xserver/tree/config/x11-input.fdi&quot;&gt;x11-input.fdi&lt;/a&gt;. This file should reside in &lt;span&gt;/etc/hal/fdi/policy/&lt;/span&gt;, and it tells HAL to merge the evdev driver for each mouse and keyboard It also merges some Xkb options for keyboards.&lt;br /&gt;Important: the server will not add devices unless they have input.x11_driver set. If you end up with no devices at all, then your HAL setup is probably broken.&lt;br /&gt;&lt;br /&gt;To test your installation, run &lt;span&gt;hal-device&lt;/span&gt; to obtain a list of all devices and look for the&lt;span&gt; input.x11*&lt;/span&gt; keys. If they are not present, modify the fdi file and restart HAL.&lt;br /&gt;&lt;br /&gt;Your X server is now hot-plug capable. It will add all mice and keyboards automatically, even if you add/remove them at runtime. There's modified fdi files floating around to add hotplug for wacom tablets and synaptics touchpad, finding them is left as an exercise for the reader.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;What to do with the xorg.conf&lt;/span&gt;&lt;br /&gt;We have two configuration files now. Yay. One is xorg.conf, the other one is the fdi file. And they both don't know about each other, leading to interesting results. The server parses xorg.conf first, then gets the devices through HAL. And here we have a big culprit: if add a InputDevice section with the mouse driver, it will conflict with the evdev driver. Evdev grabs the files, remember? So when all mice are added through the HAL evdev hotplugging mechanism, all mice stop sending to the &lt;span&gt;/dev/input/mice&lt;/span&gt; file. So although you still have a valid input device in the server, it will never emit any events.&lt;br /&gt;The only solution here? Either stop hotplugging alltogether by adding &lt;span&gt;Option &quot;AutoAddDevices&quot; &quot;off&quot; &lt;/span&gt;in your ServerLayout, or modify the fdi file that it doesn't merge &lt;span&gt;input.x11_driver&lt;/span&gt; for the specific mice you don't want hotplugged (or all mice).&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Troubleshooting list:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;I have no input devices and compiled the server myself.&lt;/span&gt; Install &lt;span&gt;libhal-dev&lt;/span&gt; and &lt;span&gt;libdbus-dev&lt;/span&gt;, re-run configure and recompile.&lt;/li&gt;&lt;li&gt;&lt;span&gt;I have no input devices.&lt;/span&gt; HAL setup needs to be configured. Make sure the &lt;span&gt;x11-input.fdi&lt;/span&gt; file is in &lt;span&gt;/etc/hal/fdi/policy&lt;/span&gt;, and that &lt;span&gt;hal-device&lt;/span&gt; lists mice and keyboards with &lt;span&gt;input.x11_driver = &quot;evdev&quot;&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span&gt;My xorg.conf settings are ignored.&lt;/span&gt; HAL adds your devices without settings, and evdev grabs all devices away. Modify the fdi and add your settings there, or add &lt;span&gt;Option &quot;AutoAddDevices&quot; &quot;off&quot;&lt;/span&gt; to your ServerLayout. Note that this will stop input hotplugging.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;I'm getting a &quot;Grab failed&quot; in the logs&lt;/span&gt;. You have two evdev input devices pointing to the same device file. This usually only happens if you have a xorg.conf entry with an evdev, and then HAL tries to add the same device again. You can ignore this warning.&lt;/li&gt;&lt;li&gt;&lt;span&gt;I have devices in my xorg.conf but still don't get any devices.&lt;/span&gt; Your ServerLayout doesn't reference the input devices and your HAL setup is broken. Add &lt;span&gt;Option &quot;AllowEmptyInput&quot; &quot;off&quot;&lt;/span&gt; to your ServerLayout or simply reference the InputDevice sections in the ServerLayout. While you're at it, you may also want to configure HAL.&lt;/li&gt;&lt;li&gt;&lt;span&gt;My touchpad is slow.&lt;/span&gt; Check the logs if the touchpad is added with the evdev driver. If so, modify the fdi file to merge synaptics as &lt;span&gt;input.x11_driver&lt;/span&gt;, or add a InputDevice section in your xorg.conf (must be referenced by the ServerLayout).&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;Evdev doesn't support option &quot;XYZ&quot;.&lt;/span&gt; Add a feature request to &lt;a href=&quot;http://bugs.freedesktop.org/show_bug.cgi?id=16699&quot;&gt;X.Org Bug 16699&lt;/a&gt;. Bugs with patches get preference.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;</description>
	<pubDate>Thu, 24 Jul 2008 10:30:28 +0000</pubDate>
</item>
<item>
	<title>Simos Xenitellis: Layout editor keyboard</title>
	<guid>http://simos.info/blog/?p=715</guid>
	<link>http://simos.info/blog/archives/715</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://simos.info/blog/wp-content/uploads/2008/07/screenshot-keyboardlayouteditor.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-716&quot; title=&quot;screenshot-keyboardlayouteditor&quot; src=&quot;http://simos.info/blog/wp-content/uploads/2008/07/screenshot-keyboardlayouteditor-300x172.png&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;172&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a screenshot of the keyboard for the layout editor. The keyboard is a widget which is composed of individual widgets of each key.&lt;/p&gt;
&lt;p&gt;I did not use glade-3 for the keyboard at this time. Although it is possible to create custom widgets in Python and install them in Glade, the current distributed packages are &lt;a href=&quot;http://www.nabble.com/Python-catalog-to-support-python-widgets-at-runtime-td17658517.html&quot; target=&quot;_blank&quot;&gt;missing something&lt;/a&gt;, thus it would be messy when others try to use the editor. It&amp;#8217;s a good experience to do all by hand anyway.&lt;/p&gt;
&lt;p&gt;When creating a layout, you drag and drop characters on the keyboard. The editor shows a table with characters though it would be possible to drag characters from gucharmap as well.&lt;/p&gt;
&lt;p&gt;The next step is to get an intuitive UI so that when you drop a character on a key, the key expands (a popup appears) showing the available four positions to receive the character.&lt;/p&gt;</description>
	<pubDate>Thu, 24 Jul 2008 06:42:31 +0000</pubDate>
</item>
<item>
	<title>Daniel Stone: some metrics</title>
	<guid>http://www.fooishbar.org/blog/tech/x/metrics-2008-07-24-03-10.html</guid>
	<link>http://www.fooishbar.org/blog/tech/x/metrics-2008-07-24-03-10.html</link>
	<description>Make of them what you will.
&lt;br /&gt;&lt;br /&gt;
&lt;tt&gt;daniels@psyence:~/x/xorg/xserver% wc -l **/*.[ch] | tail -1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;730420 total&lt;br /&gt;
daniels@psyence:~/x/xorg/xserver% git diff -p xorg-server-0_99_1.. | diffstat | tail -1&lt;br /&gt;
&amp;nbsp;2747 files changed, 178062 insertions(+), 628051 deletions(-)&lt;br /&gt;
daniels@psyence:~/x/xorg/xserver% echo $((628051-178062))&lt;br /&gt;
449989&lt;/tt&gt;</description>
	<pubDate>Thu, 24 Jul 2008 00:15:18 +0000</pubDate>
</item>
<item>
	<title>David Zeuthen: Linux Plumbers Conference CFP extended!</title>
	<guid>http://blog.fubar.dk/?p=100</guid>
	<link>http://blog.fubar.dk/?p=100</link>
	<description>&lt;p&gt;I rarely blog these days, doing the &lt;a href=&quot;http://twitter.com/davidz25&quot;&gt;Twitter&lt;/a&gt; thing instead and all. Anyway. The &lt;a href=&quot;http://www.linuxplumbersconf.org/cfp/&quot;&gt;Call for Papers&lt;/a&gt; for the &lt;a href=&quot;http://www.linuxplumbersconf.org/&quot;&gt;Linux Plumbers Conference&lt;/a&gt; in September in lovely &lt;a href=&quot;http://en.wikipedia.org/wiki/Portland%2C_Oregon&quot;&gt;Portland, Oregon&lt;/a&gt; &lt;a href=&quot;http://lwn.net/Articles/291189/&quot;&gt;has been extended&lt;/a&gt; until &lt;b&gt;July 31st 2008&lt;/b&gt;. It&amp;#8217;s a conference about the core infrastructure of Linux systems: the part of the system where userspace and the kernel interface. It&amp;#8217;s the first conference where the focus is specifically on getting together the kernel people who work on the userspace interfaces and the userspace people who have to deal with kernel interfaces. It&amp;#8217;s supposed to be a place where all the people doing infrastructure work sit down and talk, so that each other understands better what the requirements and needs of the other are, and where we can work towards fixing the major problems we currently have with our lower-level APIs.&lt;/p&gt;
	&lt;p&gt;I&amp;#8217;m running the &amp;#8220;Desktop Integration&amp;#8221; microconf at Plumbers. I have two goals for the microconf. One is to be informative about what&amp;#8217;s going on in the dusty hallways between the &lt;a href=&quot;http://kernel.org&quot;&gt;Kernel&lt;/a&gt; and the &lt;a href=&quot;http://www.freedesktop.org&quot;&gt;Free Desktop&lt;/a&gt;. Which I think is important at a place like Plumbers where we&amp;#8217;re going to a lot of people working on similar problems present. The other goal is to actually try and make some headway on actual problems that require people from multiple communities working together. Such as some of the work &lt;a href=&quot;http://blogs.gnome.org/mccann&quot;&gt;Jon&lt;/a&gt; is focusing on, e.g. how to make fast-user-switching, multi-seat and terminal services Just Work(tm).&lt;/p&gt;
	&lt;p&gt;The conference is expected to sell out pretty quickly so it&amp;#8217;s a good idea to go ahead and &lt;a href=&quot;http://linuxplumbersconf.org/register/&quot;&gt;register for Plumbers Conference&lt;/a&gt; instead of &lt;a href=&quot;http://en.wikipedia.org/wiki/Procrastinate&quot;&gt;procrastinating&lt;/a&gt; about doing it!&lt;/p&gt;
	&lt;p&gt;&lt;a href=&quot;http://www.linuxplumbersconf.org/&quot; border=&quot;0&quot;&gt;&lt;img src=&quot;http://www.linuxplumbersconf.org/images/banner.png&quot; alt=&quot;Linux Plumbers Conference&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;See you in Portland!
&lt;/p&gt;</description>
	<pubDate>Wed, 23 Jul 2008 17:46:37 +0000</pubDate>
</item>
<item>
	<title>Adam Jackson: Words, words, words</title>
	<guid>urn:lj:livejournal.com:atom1:ajaxxx:59792</guid>
	<link>http://ajaxxx.livejournal.com/59792.html</link>
	<description>The &lt;a href=&quot;https://admin.fedoraproject.org/voting/vote/relnamef10&quot;&gt;Fedora 10 name elections&lt;/a&gt; are open.  My totally awesome name suggestion for F9 (Bathysphere) lost by a slim margin, so now I'm lobbying harder for decent names.  So here's what you should vote for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Whiskey Run, because whiskey is awesome, and the potential for a whiskeyrunner theme in the artwork is excellent.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Saltpetre, because it's a double-whammy connection with Sulphur (British variant spelling, and component of gunpowder), and gunpowder -&amp;gt; steampunk art -&amp;gt; awesome.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Farnsworth, because Futurama.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Cambridge, because Red Hat Linux 10 would have been Cambridge, and we finally made it to version 10 of something.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Every time you vote for something else, God detonates a kitten.</description>
	<pubDate>Wed, 23 Jul 2008 14:34:49 +0000</pubDate>
</item>
<item>
	<title>Lennart Poettering: Linux Plumbers Conference CFP Extended!</title>
	<guid>http://0pointer.de/blog/projects/plumbersconf-2</guid>
	<link>http://0pointer.de/blog/projects/plumbersconf-2.html</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://www.linuxplumbersconf.org/cfp/&quot;&gt;Call for Papers&lt;/a&gt; for
the &lt;a href=&quot;http://www.linuxplumbersconf.org/&quot;&gt;Linux Plumbers Conference&lt;/a&gt;
in September in Portland, Oregon &lt;a href=&quot;http://lwn.net/Articles/291189/&quot;&gt;has been extended&lt;/a&gt; until &lt;b&gt;July 31st 2008&lt;/b&gt;. It's a conference
about the core infrastructure of Linux systems: the part of the system where
userspace and the kernel interface. It's the first conference where the focus
is specifically on getting together the kernel people who work on the
userspace interfaces and the userspace people who have to deal with kernel
interfaces. It's supposed to be a place where all the people doing
infrastructure work sit down and talk, so that each other understands better
what the requirements and needs of the other are, and where we can work
towards fixing the major problems we currently have with our lower-level
APIs.&lt;/p&gt;

&lt;p&gt;I am running the Audio microconf of the Plumbers Conference. Audio
infrastructure on Linux is still heavily fragmented. Pro, desktop and embedded worlds are
almost completely seperate worlds. While we have quite good driver support the
user experience is far from perfect, mostly due because our infrastructure is
so balkanized. Join us at the Plumbers Conference and help to fix this! If you are doing &lt;b&gt;audio infrastructure work&lt;/b&gt; on Linux, make sure to attend and &lt;b&gt;submit a paper!&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://linuxplumbersconf.org/register/&quot;&gt;Sign up soon!&lt;/a&gt; &lt;a href=&quot;http://linuxplumbersconf.org/cfp/&quot;&gt;Send in your paper early!&lt;/a&gt; The conference is expected to sell out pretty quickly!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.linuxplumbersconf.org&quot;&gt;&lt;img src=&quot;http://www.linuxplumbersconf.org/images/banner.png&quot; alt=&quot;Plumbers Logo&quot; width=&quot;475&quot; height=&quot;88&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See you in Portland!&lt;/p&gt;</description>
	<pubDate>Wed, 23 Jul 2008 11:39:00 +0000</pubDate>
</item>
<item>
	<title>Bastien Nocera: Better late than never</title>
	<guid>tag:blogger.com,1999:blog-977684764667858073.post-318059065371482492</guid>
	<link>http://www.hadess.net/2008/07/better-late-than-never.html</link>
	<description>Back in the day, I used my paycheck to buy the top-notch MP3 player that was the &lt;a href=&quot;http://en.wikipedia.org/wiki/Rio_500&quot;&gt;Rio500&lt;/a&gt;. Unfortunately, I forgot it in the back pocket on my plane seat when flying over to Raleigh for my Red Hat induction. And then I used one of my first new job paycheck to buy a second generation (and very very expensive) iPod.&lt;br /&gt;&lt;br /&gt;You could say that hacking on Walk500, a front-end to that great player is the reason why I'm hacking on GNOME these days.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://bp0.blogger.com/_2o81e3u4ZFU/SIcDQihF9tI/AAAAAAAAAKE/kS9ojwkFH68/s1600-h/walk500-0.9-songlist.jpg&quot;&gt;&lt;img src=&quot;http://bp0.blogger.com/_2o81e3u4ZFU/SIcDQihF9tI/AAAAAAAAAKE/kS9ojwkFH68/s320/walk500-0.9-songlist.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5226149475265148626&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I couldn't bear the thought anymore, and bought a Rio500 on eBay for $5. Hacking on it half-an-hour at a time, I cleaned up &lt;a href=&quot;http://rio500.sourceforge.net/&quot;&gt;the code&lt;/a&gt;. The latest release of the modern era is &lt;a href=&quot;https://sourceforge.net/project/showfiles.php?group_id=1944&amp;amp;package_id=1893&quot;&gt;available on SourceForge&lt;/a&gt;.</description>
	<pubDate>Wed, 23 Jul 2008 10:01:00 +0000</pubDate>
</item>
<item>
	<title>Matthias Hopf: Finger(s) Crossed</title>
	<guid>urn:lj:livejournal.com:atom1:emmes:1520</guid>
	<link>http://emmes.livejournal.com/1520.html</link>
	<description>If the doctor is content with the situation the metal in my finger is removed today. Then I'll be able to type normally again, yippee! Ok, after some painful weeks stretching and strengthening the muscles... ;-)&lt;br /&gt;&lt;br /&gt;Wish me luck.</description>
	<pubDate>Wed, 23 Jul 2008 09:57:47 +0000</pubDate>
</item>
<item>
	<title>Thomas Vander Stichele: I was almost home scot-free</title>
	<guid>http://thomas.apestaart.org/log/2008/07/22/i-was-almost-home-scot-free/</guid>
	<link>http://thomas.apestaart.org/log/2008/07/22/i-was-almost-home-scot-free/</link>
	<description>&lt;p&gt;Don&amp;#8217;t know anymore how I landed on &lt;a href=&quot;http://www.plausiblydeniable.com/opinion/gsf.html&quot;&gt;Five Geek Social Fallacies&lt;/a&gt; but I was feeling good about myself not feeling very afflicted with any of them.  That is, until I hit number 5.&lt;/p&gt;
&lt;p&gt;Yes, I admit to having bouts of &amp;#8216;oh-you-didn&amp;#8217;t-invite-me-what&amp;#8217;s-wrong-with-us&amp;#8217;, and its inverse, &amp;#8216;oh-my-god-there-are-not-enough-chairs-for-all-the-people-I-should-be-inviting-I-will-end-up-on-a-lot-of-no-invite-lists&amp;#8217;.&lt;/p&gt;
&lt;p&gt;If you saw me in either mode at some point in life feel free to let me know if you notice any improvement at all on this front.&lt;/p&gt;</description>
	<pubDate>Tue, 22 Jul 2008 21:17:19 +0000</pubDate>
</item>
<item>
	<title>Jesse Barnes: Waiting for vblank...</title>
	<guid>http://virtuousgeek.org/blog/28@http://virtuousgeek.org/blog/</guid>
	<link>http://virtuousgeek.org/blog/index.php/2008/07/22/waiting_for_vblank</link>
	<description>&lt;p&gt;Will the vblank-rework branch ever be ready to merge upstream?  With some recent work by Michel and myself, I really hope so.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s a little distressing that such a simple thing could cause so much trouble.  The motivation for reworking vblank in the DRM branch was easy enough:  save CPU power by turning off interrupts when possible.  Not interrupting the CPU lets it sleep deeper and longer, potentially saving quite a bit of power.  Getting rid of the 60 or so vertical blank event interrupts per second when they weren&amp;#8217;t needed seemed like a logical first step, and so vblank-rework was born.&lt;/p&gt;

&lt;p&gt;Being a good citizen in Linux land often means improving whole subsystems rather than stuffing a bunch of fancy features into individual drivers.  Working that way can be harder, but it spreads the benefits wider, and improves Linux as a whole.  So my efforts in the vblank-rework branch targetting the generic DRM vblank code, improving the driver APIs and making sure that all drivers could benefit from the new infrastructure, allowing them to disable interrupts when not needed.  However, that&amp;#8217;s where the &amp;#8220;harder&amp;#8221; part comes in:  every driver needed an update.  At first I thought, &amp;#8220;Hey this is a neat, new set of APIs, surely everyone will want to use them, I&amp;#8217;ll just convert the i915 driver (after some initial work on a radeon based laptop).&quot;.  Unfortunately, the DRM drivers are in dire need of attention, so after several months of waiting I ended up converting all the drivers myself, though only a few like radeon and i915 actually implement the API fully enough to disable interrupts.&lt;/p&gt;

&lt;p&gt;So far, so good.  I figured everything was fine and the shiny new branch was ready, so I merged it into the master DRM branch in preparation for an upstream push.  Then tragedy struck:  Michel&amp;#8217;s sharp eyes and testing discovered a potentially fatal bug.  While many GPUs provide a frame count register we can use to keep the vblank count accurate (necessary since OpenGL extensions expose an absolute count to applications for some reason), they&amp;#8217;re typically only updated at the leading edge of vactive.  This means that your application may wakeup at vactive time instead of vblank time, causing ugly tearing; exactly what you&amp;#8217;d like to avoid!  After a bit of back and forth and a couple of false starts (trying to work around the problem with solutions that turned out to be racy), we decided to go back to using the atomic counter (which is only updated at interrupt time) for wakeups, rather than the hw register, using the latter for keeping the counter accurate across interrupt disable periods.&lt;/p&gt;

&lt;p&gt;Which brings us to last week.  I hacked up the scheme described above and started testing.  As I found and fixed bugs (well actually Michel probably found most of them), I discovered that the API could actually be simplified a bit, and some of the code to compensate for corner cases was no longer necessary, so both the wraparound compensation logic in the pre/post modeset ioctl and the funky accounting we tried to do there could be removed.  The result, I hope, is ready for upstream finally.&lt;/p&gt;

&lt;p&gt;So where does that leave us, API-wise?  Well, on the userland front we have a new ioctl, &lt;code&gt;DRM_IOCTL_MODESET_CTL&lt;/code&gt;, with &lt;code&gt;_DRM_PRE_MODESET&lt;/code&gt; and &lt;code&gt;_DRM_POST_MODESET&lt;/code&gt; arguments.  It should be called with _DRM_PRE_MODESET in userland drivers prior to any activity that resets the hw frame counter (typically mode setting).  When the mode set completes, it should be called again with &lt;code&gt;_DRM_POST_MODESET&lt;/code&gt;.  These calls tell the kernel to account for any lost events so that the vblank count exposed to applications can stay accurate.&lt;/p&gt;

&lt;p&gt;On the driver front, there are a few different calls and callbacks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;drm_vblank_get&lt;/code&gt; - increase the refcount on the vblank counter&lt;/p&gt;
&lt;p&gt;This call just tells the core code that the caller is actively using the vblank counter for something, e.g. scheduled buffer swaps or a blocking vblank wait call.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;drm_vblank_put&lt;/code&gt; - decrease the refcount&lt;/p&gt;
&lt;p&gt;Tell the core you&amp;#8217;re done with the vblank counter.  When the refcount reaches 0, the kernel knows it can disable the interrupt at some point in the future.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;drm_vblank_init&lt;/code&gt; - initialize the core vblank code&lt;/p&gt;
&lt;p&gt;Should be called at driver load time or IRQ init ioctl time to init the core.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;driver.get_vblank_counter&lt;/code&gt; - return the current hw frame count&lt;/p&gt;
&lt;p&gt;Used by the core code to keep the count accurate across interrupt enable/disable periods.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;driver.enable_vblank&lt;/code&gt; - enable vblank interrupts on a given CRTC&lt;/p&gt;
&lt;p&gt;Used by the core to enable interrupts when the refcount increases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;driver.disable_vblank&lt;/code&gt; - disable vblank interrupts on a given CRTC&lt;/p&gt;
&lt;p&gt;Used by the core to disable interrupts after a timeout period if the refcount is 0.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With a few simple changes, a given DRM driver can support the new scheme to save power.  If you find bugs or have issues with the new APIs, let me know and/or file a bug at bugs.freedesktop.org.&lt;/p&gt;</description>
	<pubDate>Tue, 22 Jul 2008 19:29:11 +0000</pubDate>
</item>
<item>
	<title>Ian Romanick: Love the media</title>
	<guid>http://people.freedesktop.org/~idr/blog/index.php?post=20080722121545</guid>
	<link>http://people.freedesktop.org/~idr/blog/index.php?post=20080722121545</link>
	<description>&lt;p&gt;I guess I must be awesomely famous or something (probably &quot;or something&quot;).  My new job has &lt;a href=&quot;http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NjU5NA&quot;&gt;already been mentioned&lt;/a&gt; on Phoronix.com.  Unfortunately, the work that I will be doing to parallelize Mesa won't be for anything as glamorous as Larrabee.&lt;/p&gt;

&lt;p&gt;In fact, it will be for the complete opposite end of the spectrum.  We're seeing more and more chips, like Intel's own Atom, that trade wide, out-of-order pipelines for simpler, in-order cores with multiple threads per core.  On those types of architectures, especially when hardware TNL is not available, Mesa's performance is really, really bad.&lt;/p&gt;

&lt;p&gt;There is room for a lot of improvement even on more traditional systems with hardware TNL and processors with good single-threaded performance.  It is easy to find apps where lot of time is spent in the app, a lot of time is spent in the driver, and only one CPU is utilized.  Sure, the app developer could multi-thread the app, but why?  That means multi-threaded optimization needs to be done in N places (for N apps) instead of just one.&lt;/p&gt;

&lt;p&gt;Anyway...I guess I should get back to work now...&lt;/p&gt;</description>
	<pubDate>Tue, 22 Jul 2008 19:15:45 +0000</pubDate>
</item>
<item>
	<title>Oliver McFadden: To Hong Kong and Beyond.</title>
	<guid>urn:lj:livejournal.com:atom1:olivermcfadden:19622</guid>
	<link>http://olivermcfadden.livejournal.com/19622.html</link>
	<description>&lt;p&gt;We arrive in Hong Kong about a day ago, after a insanely long flight. I don't know whether it's just Air New Zealand who provides all of 4&quot; of leg room on Economy flights, or all airlines... It really sucks. I feel sorry for those who were continuing on to London Heathrow without any break.&lt;br /&gt;&lt;br /&gt;I didn't manage to sleep on the flight so I was only&amp;nbsp;barely awake during the morning, but we still had a good look around some of the shops and malls. We didn't have time to buy anything yet; the place is massive.&lt;br /&gt;&lt;br /&gt;I'll post some photos later tonight, or if not, they will be on Steve's Live Journal: http://dragonflamezor.livejournal.com/&lt;/p&gt;</description>
	<pubDate>Tue, 22 Jul 2008 14:22:21 +0000</pubDate>
</item>
<item>
	<title>Thomas Vander Stichele: modern life breaks down</title>
	<guid>http://thomas.apestaart.org/log/2008/07/22/modern-life-breaks-down/</guid>
	<link>http://thomas.apestaart.org/log/2008/07/22/modern-life-breaks-down/</link>
	<description>&lt;p&gt;when after 10 minutes of brushing your teeth and waiting for the short judder to indicate that you can stop brushing, you realize you&amp;#8217;re not actually holding an electric toothbrush.&lt;/p&gt;
&lt;p&gt;I guess I don&amp;#8217;t need to brush my teeth for the next 3 days.&lt;/p&gt;</description>
	<pubDate>Tue, 22 Jul 2008 09:32:10 +0000</pubDate>
</item>
<item>
	<title>Keith Packard: X output status july 2008</title>
	<guid>http://keithp.com/blogs/X_output_status_july_2008/</guid>
	<link>http://keithp.com/blogs/X_output_status_july_2008/</link>
	<description>&lt;p&gt;Ok, so I didn&amp;#8217;t get a lot of time for coding last week. And, this week
there&amp;#8217;s &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/content/home&quot;&gt;OSCON&lt;/a&gt;, so
coding time will be short again. I figured I should spend some time writing
up a brief report about where X output is at today.&lt;/p&gt;

&lt;h2&gt;Output Hotplug&lt;/h2&gt;

&lt;p&gt;I think this stuff is fairly solid these days, although we don&amp;#8217;t have much
in the way of auto-detection of monitor connect/disconnect. There are two
reasons here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The hardware notifies the operating system via an interrupt. Given
mode setting code in user space, dealing with interrupts is a huge pain
and hence hasn&amp;#8217;t been hooked up yet (see below).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Analog outputs (VGA, TV) do detection using impedance changes in the
output signal path. This means we have to keep them active if we want
to detect a connection. That takes a &lt;em&gt;lot&lt;/em&gt; of power (about 1W to light
up the VGA output without a monitor connected). What we could do is
detect when a monitor was unplugged; that&amp;#8217;s free.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are a few other random improvements that are coming soon, like CEA
additions to the EDID parsing code. These are additional data blocks that
follow the standard EDID data and are used for &amp;#8216;consumer electronics&amp;#8217;
devices. Supporting these should make more HDMI monitors &amp;#8216;just work&amp;#8217;. &lt;/p&gt;

&lt;h2&gt;Initial Mode Selection&lt;/h2&gt;

&lt;p&gt;Detecting connected monitors is fine, but one thing we haven&amp;#8217;t really solved
is what to do when you have more than one connected when the server starts.
My initial code would pick one &amp;#8216;primary&amp;#8217; monitor, light that up at its
preferred size and then pick modes for the other monitors which were as
close as possible to the primary monitor size without being larger.
Obviously, I liked that as it meant my laptop always came up looking correct
on the LVDS and my external VGA would show most of the screen.&lt;/p&gt;

&lt;p&gt;However, this was reported to confuse a lot of users. I can imagine that
starting the X server with one of the outputs connected but not turned on
would make for some &amp;#8216;interesting&amp;#8217; support calls. So, now the X server picks
a mode which all outputs can support and uses that everywhere. Sadly, this
means that my laptop panel gets some random scaled mode (usually 1024x768)
which looks quite awful.&lt;/p&gt;

&lt;p&gt;I think we need something better than either of these choices, but I&amp;#8217;m not
quite sure how it should work.&lt;/p&gt;

&lt;h2&gt;Kernel Mode Setting&lt;/h2&gt;

&lt;p&gt;A bunch of people, including Jesse Barnes and Dave Airlie, have been hacking
to move the output configuration code into the kernel. This will solve lots
of little problems, like how to display kernel panic messages, and how to
deal with interrupts for output hotplug.&lt;/p&gt;

&lt;p&gt;This code is up and running fairly well these days, but depends on a kernel
memory manager to deal with frame buffers. The integration of GEM into the
kernel is blocking this work, but I&amp;#8217;m hopeful that this will be sorted out
in the next couple of weeks.&lt;/p&gt;

&lt;h2&gt;GEM &amp;#8212; the Graphics Execution Manager&lt;/h2&gt;

&lt;p&gt;Work here was stalled for a few weeks while we sorted out memory channel
interleaving issues. Now things are moving again, and we&amp;#8217;re working on
getting it stable enough to merge into master. That means fixing a few more
critical bugs that the Intel QA team has identified.&lt;/p&gt;

&lt;p&gt;One of these bugs is that our GL conformance tests weren&amp;#8217;t working right;
that turned out to be caused by tests reading back data from the frame
buffer one pixel at a time. Our read-back path passed through the GEM memory
domain code to pull objects back from GTT space to CPU space. That meant
flushing the front, back and depth buffers from the CPU cache. With each of
those at 16MB, reading a single pixel took long enough that the tests would
time-out. Increasing the timeouts to &amp;#8216;way too long&amp;#8217; is making them run, but
tests which would complete in a few hours are now taking days.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ve got two different plans for fixing the read-back path:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Use pread to access precisely the data we need. This would involve
flushing a single cache line for the tests above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mapping the back buffer through the GTT. This would eliminate the need
to clflush anything as the GTT mappings are write combining and so reads
bypass the cache.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Eric is working on the former, and I&amp;#8217;m working on the latter. More news
later (this week?) when we see which one wins.&lt;/p&gt;

&lt;h2&gt;Composite Acceleration&lt;/h2&gt;

&lt;p&gt;With Owen Taylor&amp;#8217;s change to the glyph management code in the server, Eric
and Carl were able to change the driver to batch multiple glyph drawing
operations into a command buffer. Once Carl had this working, we went from
13000 glyphs/sec to 103000 glyphs/sec. Obviously we&amp;#8217;re hoping for even
larger improvements as a pure software solution is well over 1 million
glyphs/sec. Even still, 103000 glyphs/sec is enough to make my desktop
vastly more usable, and using the software path means losing a lot of other
useful acceleration.&lt;/p&gt;

&lt;h2&gt;DRI2 &amp;#8212; Redirected Direct Rendering&lt;/h2&gt;

&lt;p&gt;Right now, direct rendered GL applications (which is the fastest way we can
do GL at present) get drawn to a giant screen-sized back buffer and then
copied from there to the screen at swap buffers time. Because everyone
shares the same back buffer, you get to clip your drawing as if you were
drawing directly to the screen. While this normally doesn&amp;#8217;t matter much
(aside from some performance costs associated with lots of clip rectangles),
when you&amp;#8217;re running a compositing manager (like compiz), the 3D applications
end up ignoring the per-window offscreen pixmap and spam their output
directly to the real frame buffer.&lt;/p&gt;

&lt;p&gt;DRI2, written by Kristen Høgsberg, solves this by changing how direct
rendering works and giving everyone a private back-buffer to draw to. Now,
at buffer swap time, that private back-buffer can be copied to the window&amp;#8217;s
pixmap and compiz is happy.&lt;/p&gt;

&lt;p&gt;This work has been around for a few months, but depends on a TTM-based
memory manager. That dependency isn&amp;#8217;t very strong, and krh has promised to
fix it shortly. Once that&amp;#8217;s done, getting the GEM driver to support DRI2
won&amp;#8217;t take long, and we&amp;#8217;ll have our fully composited desktop running. With
luck, that&amp;#8217;ll happen before September.&lt;/p&gt;

&lt;h2&gt;Final Words&lt;/h2&gt;

&lt;p&gt;As you can see, we&amp;#8217;re nearing the end of our long X output rework saga, with
most of the pieces falling into place in the next month or two.&lt;/p&gt;</description>
	<pubDate>Tue, 22 Jul 2008 01:25:43 +0000</pubDate>
</item>
<item>
	<title>Alberto Ruiz: Back from GUADEC '08, back to Dublin</title>
	<guid>http://aruiz.typepad.com/siliconisland/2008/07/back-from-guade.html</guid>
	<link>http://aruiz.typepad.com/siliconisland/2008/07/back-from-guade.html</link>
	<description>&lt;p&gt;Okay, it's been a week already, but it was not only the back from GUADEC for me, but coming back to Dublin at the Sun offices as a full time employee.&lt;/p&gt;

&lt;p&gt;GUADEC has been great time, as usual, I would like to thanks Baris and the whole Istanbul team for their excellent job.&lt;/p&gt;

&lt;p&gt;Others have summarized the contents pretty well, so I won't go through that. However, which is been pretty clear to me is that this GUADEC has been an interesting start point towards leadership strength on the community.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;First, Stormy Peters as our Executive Director, this is probably the best decision that the board has made since I've got involved in GNOME, I'm pretty sure she's going to make a difference in the project's direction and focus, plus getting in touch with other parties to make them embrace our community and technology more and better than before. Go Stormy!&lt;/li&gt;

&lt;li&gt;Second, Gtk+ 3.0, okay, a lot of people have complained about certain details about the plan, however, we have a plan that can be discussed, and we have people committed to accomplish it, that is way far better than no having plan and no people at all. Big kudos to the Imendio guys and other Gtk+ heads for pushing this discussion further.&lt;/li&gt;

&lt;li&gt;And third, the GNOME release team for putting the 3.0 release with a better long term strategy for the desktop in the table. Again another leadership show that I highly appreciate.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;My talks went pretty well, however, the attendance to both the APOC and the Gtk+ one were pretty low since unfortunately both of them were on the after hours track. It was specially sad that no core Gtk+ hackers were around for the last one, I might extend the topic a little further and even propose a keynote next year as suggested by some Igalians (which were pretty much the 90% of the audience :-( ).&lt;/p&gt;

&lt;p&gt;And last but not least, the board have decided to go for Gran Canaria as next years' GUADEC, I'm pretty thankful to the board for trusting our proposal and I'll make sure that next year is at least as good as the previous ones. If you have any suggestions, feedback or if you want to volunteer for helping, don't hesitate to give us a shout at the guadec's mailing list.&lt;/p&gt;</description>
	<pubDate>Mon, 21 Jul 2008 12:12:55 +0000</pubDate>
</item>
<item>
	<title>Sergey V. Udaltsov: Misc</title>
	<guid>http://blogs.gnome.org/sudaltsov/2008/07/21/misc-2/</guid>
	<link>http://blogs.gnome.org/sudaltsov/2008/07/21/misc-2/</link>
	<description>&lt;p&gt;Regarding recent discussions related to (D)VCS for GNOME, I think people might fight interesting results of the &lt;a href=&quot;http://www.linux.org.ru/view-message.jsp?msgid=2949313&quot;&gt;voting&lt;/a&gt; on highly popular Russian Linux site (analog of Slashdot). The comments is all in Russian, but everyone can read and interpret the results&amp;#8230; (Just in case you care to follow the link, &amp;#8220;Не использую&amp;#8221;=&amp;#8221;Do not use&amp;#8221;). May be, staying with the current Subversion is not a bad idea, after all?;)&lt;/p&gt;
&lt;p&gt;Yesterday, I reformatted internal n810&amp;#8217;s flash from FAT32 to ext3. Why? Because root partition is too small and crouded. Now, I have several Megs of canola2 covers, this is too much for my small root&amp;#8230;&lt;/p&gt;
&lt;p&gt;BTW, I could not find the way to make canola use non-default place for disk covers (and symlinking to FAT32 partitions does not help - there are some issues with Russian dirnames).&lt;/p&gt;</description>
	<pubDate>Mon, 21 Jul 2008 09:11:04 +0000</pubDate>
</item>
<item>
	<title>Younes Manton: Up and running on real hardware</title>
	<guid>tag:blogger.com,1999:blog-4999358188713912074.post-1965077689323799597</guid>
	<link>http://bitblitter.blogspot.com/2008/07/up-and-running-on-real-hardware.html</link>
	<description>&lt;p&gt;I reached a nice milestone today: working playback on my Geforce 6200. Most of the work went into the winsys layer, with some bug fixes and workarounds in other places, but everything is up and running now. Unfortunately the output isn't perfect, there is some slight corruption here and there. I'm guessing it has to do with some dodgy assumptions I made about shader arithmetic (rounding, saturation, etc) that SoftPipe went along with but the GPU didn't. The other issue is that there is some severe slowdown when any 2D drawing happens on the rest of the desktop. I'm guessing this may be due locking when copying the backbuffer to the window, or maybe I'm completely soaking up the CPU.&lt;/p&gt;  &lt;p&gt;Currently nothing is optimized, I'm not even turning on compiler optimization, and I have a really slow prototype IDCT implementation performed on the CPU in place of the hardware version, so I'm sure I'm eating up a lot more CPU time than I will be by the end of the summer. I have a lot of different ideas on optimization that will target CPU usage and GPU fillrate usage, but given that I get almost full speed playback currently, I'm pretty confident that I'll be able to get HD playback by the end of SoC.&lt;/p&gt;  &lt;p&gt;As far as the winsys goes, I was able to use most of the current Nouveau winsys. Unfortunately the DRI stuff is buried within Mesa right now, so I had to extract a lot of things and create a standalone library to handle screens, drawables, the SAREA, etc. to be able to use DRI without including and linking with half of Mesa. The winsys interface is also simpler than Mesa's; there are only a few client calls, the backbuffer is handled in the state tracker, and the winsys doesn't have to create or call into the state tracker. It took me a while to realize why the Mesa winsys was set up the way it was, and that I could simpify things on my end.&lt;/p&gt;  &lt;p&gt;Here are some screen grabs:&lt;/p&gt;  &lt;a href=&quot;http://www.bitblit.org/gsoc/g3dvl/img9.jpg&quot;&gt;&lt;img src=&quot;http://www.bitblit.org/gsoc/g3dvl/img9_thumb.jpg&quot; alt=&quot;Coffee mug containing two pens and a feather.&quot; height=&quot;135&quot; width=&quot;181&quot; /&gt;&lt;/a&gt;  &lt;a href=&quot;http://www.bitblit.org/gsoc/g3dvl/img10.jpg&quot;&gt;&lt;img src=&quot;http://www.bitblit.org/gsoc/g3dvl/img10_thumb.jpg&quot; alt=&quot;Woman on the phone.&quot; height=&quot;159&quot; width=&quot;182&quot; /&gt;&lt;/a&gt;  &lt;a href=&quot;http://www.bitblit.org/gsoc/g3dvl/img11.jpg&quot;&gt;&lt;img src=&quot;http://www.bitblit.org/gsoc/g3dvl/img11_thumb.jpg&quot; alt=&quot;Windmill in the middle of a field of yellow flowers.&quot; height=&quot;135&quot; width=&quot;181&quot; /&gt;&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;http://www.bitblit.org/gsoc/g3dvl/img12.jpg&quot;&gt;&lt;img src=&quot;http://www.bitblit.org/gsoc/g3dvl/img12_thumb.jpg&quot; alt=&quot;Two cartoon characters (desktop visible).&quot; height=&quot;225&quot; width=&quot;360&quot; /&gt;&lt;/a&gt;  &lt;a href=&quot;http://www.bitblit.org/gsoc/g3dvl/img13.jpg&quot;&gt;&lt;img src=&quot;http://www.bitblit.org/gsoc/g3dvl/img13_thumb.jpg&quot; alt=&quot;Fighter jet flying through a clear sky (desktop visible).&quot; height=&quot;225&quot; width=&quot;360&quot; /&gt;&lt;/a&gt;</description>
	<pubDate>Mon, 21 Jul 2008 01:53:16 +0000</pubDate>
</item>
<item>
	<title>Dave Airlie: technology fail weekender...</title>
	<guid>urn:lj:livejournal.com:atom1:airlied:61213</guid>
	<link>http://airlied.livejournal.com/61213.html</link>
	<description>So this weekend was a total technology fail..&lt;br /&gt;&lt;br /&gt;so on Sat night Gia rented a DVD to watch on a laptop, I was all should be no problem with this, armed with my livna (and livna-development) repositories, I started off on laptop 1, Thinkpad T60P. totem pulled an immeditate choke with some useless error message. mplayer choked similiarly with a nice bonghits in the libdvdread error message. This I tracked down to the region not being set correctly, so I set the drive region to region 4, and then mplayer failed even harder in a tight loop with kill -9 the only way out. It looked like bad sectors or something in the kernel.&lt;br /&gt;&lt;br /&gt;So I went and tried it on laptop number 2, my Dell Insprion 6000, this machine is the oldest piece of kit I own and has been steadily on it way out the door (backlight flickers on/off due to dodgy connections internally). However it is also the only machine I have at home with a non-Linux OS on it, it has Windows XP. So I booted XP on it, stuck the disk in and it played fine, I then booted Linux on it and had the same problem as on the the other laptop. So I decided to let Gia use Windows XP to watch the DVD, I then unplugged the laptop before realising the battery was sitting on the bench (as it overheats a lot instead of charging nowadays.. and it isn't one of the goes on fire batteries either..). So it appears cutting the power wasn't such a good idea, as it appears the hard disk heads crashed or some such fail, as attempting to boot XP on the laptop after that gave a bad boot bluescreen and mounting the XP ntfs partition from Linux went into an ATA reset cycle.&lt;br /&gt;&lt;br /&gt;So I had to watch half the rugby (it wasn't a great game in the end), and then watch some movie with Matthew McConaughty in it, at least there was scuba diving in it, so it could have been worse.&lt;br /&gt;&lt;br /&gt;Then on Sunday on our way to the cinema, I drops my iphones on the grounds. Oh noes. My iphone volume buttons have been busted for a month or two in any case, but now the lock/power button decided to stop being useful. Of course my iphone is a US phone where I'm sure the warranty has been invalidated six ways from Tuesday at this point. So I'll probably have to go opens it ups and play with its insides. I've damaged a lot of phones in my life but the iphone has actually been the quickest to get broken, and considering I don't drink nearly as much as I used to this isn't a good showing for it.</description>
	<pubDate>Sun, 20 Jul 2008 23:14:08 +0000</pubDate>
</item>
<item>
	<title>Lennart Poettering: Oh, Solomon! He has outdone you!</title>
	<guid>http://0pointer.de/blog/photos/istanbul-domes</guid>
	<link>http://0pointer.de/blog/photos/istanbul-domes.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://0pointer.de/static/istanbul-domes&quot;&gt;&lt;img src=&quot;http://0pointer.de/static/domes-many&quot; width=&quot;800&quot; height=&quot;219&quot; alt=&quot;Domes&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wide-angle lenses are a great invention.&lt;/p&gt;</description>
	<pubDate>Sun, 20 Jul 2008 21:29:00 +0000</pubDate>
</item>
<item>
	<title>Jon Phillips: Thanksgiving trip visiting Gwen and Pat</title>
	<guid>http://rejon.org/2008/07/20/thanksgiving-trip-visiting-gwen-and-pat/</guid>
	<link>http://rejon.org/2008/07/20/thanksgiving-trip-visiting-gwen-and-pat/</link>
	<description>.flickr-photo { border: solid 2px #000000; }
.flickr-yourcomment { }
.flickr-frame { text-align: left; padding: 3px; }
.flickr-caption { font-size: 0.8em; margin-top: 0px; }

&lt;div class=&quot;flickr-frame&quot;&gt;
	&lt;a href=&quot;http://www.flickr.com/photos/deerfang/2072204172/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2180/2072204172_26e57cd96c.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/deerfang/2072204172/&quot;&gt;Thanks giving trip- visiting Gwen and Pat 3&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/deerfang/&quot;&gt;deerfang&lt;/a&gt;.&lt;/span&gt;
&lt;/div&gt;
&lt;p class=&quot;flickr-yourcomment&quot;&gt;
	This is &lt;a href=&quot;http://gwenwidmer.org&quot;&gt;Gwen Widmer&lt;/a&gt;, &lt;a href=&quot;http://patrickclancy.org&quot;&gt;Patrick Clancy&lt;/a&gt;, &lt;a href=&quot;http://rejon.org&quot;&gt;me&lt;/a&gt;, and &lt;a href=&quot;http://deerfang.org&quot;&gt;. I studies with Pat at &lt;/a&gt;&lt;a href=&quot;http://kcai.edu&quot;&gt;Kansas City Art Institute&lt;/a&gt; for undergrad and worked with Pat and Gwen on some early startups. You guys already know the connection with Lu.&lt;/p&gt;
&lt;p&gt;I should write a book about all the great people I have considered mentors (and friends) in the past. I think post iSummit, I will take a few days off to plan out the next 10 years or so &lt;img src=&quot;http://rejon.org/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;</description>
	<pubDate>Sun, 20 Jul 2008 05:02:59 +0000</pubDate>
</item>
<item>
	<title>Simon McVittie: Implementing D-Bus services with telepathy-glib</title>
	<guid>http://smcv.pseudorandom.co.uk/2008/04/16/tp-svc/</guid>
	<link>http://www.pseudorandom.co.uk/2008/04/16/tp-svc/</link>
	<description>&lt;div&gt;
	  &lt;p&gt;&lt;em&gt;(Part 1 of an ongoing series: shiny things in telepathy-glib)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote class=&quot;atom-summary&quot;&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;16:46&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;epmf&amp;gt;&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;tp-glib&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;made&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;magic&lt;/span&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p class=&quot;attribution&quot;&gt;—#telepathy, 2008-04-15&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class=&quot;atom-summary&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://www.robot101.net/&quot;&gt;Rob&lt;/a&gt; pointed out today that I'd been promising to blog about
&lt;a class=&quot;reference external&quot; href=&quot;http://darcs.collabora.co.uk/darcsweb.cgi?r=telepathy/telepathy-glib;a=summary&quot;&gt;telepathy-glib&lt;/a&gt; for several months and still haven't done so. I think
there's too much to cover in one blog post, so I'll start with the
oldest part - implementing a service (typically a Telepathy connection
manager).&lt;/p&gt;
&lt;p class=&quot;atom-summary&quot;&gt;While telepathy-glib is (obviously) intended for Telepathy
implementors, I think the ideas we've been implementing are likely
to be useful for any D-Bus API, particularly flexible/complex APIs
where an object implements many interfaces.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;introduction-to-telepathy-glib&quot;&gt;
&lt;h1&gt;Introduction to telepathy-glib&lt;/h1&gt;
&lt;p&gt;telepathy-glib started out as a collection of code extracted
from our XMPP connection manager, telepathy-gabble, but at
some point it grew beyond that into a wrapper around/partial
replacement for dbus-glib. We've been quite pleased with it,
really :-)&lt;/p&gt;
&lt;p&gt;My first major round of work on telepathy-glib, during the first half of
2007, was to split it out from telepathy-gabble (versions up to 0.5.9
were released as part of Gabble 0.5.x tarballs, in fact), leading to
the release of the 0.6.x stable branch in late September.&lt;/p&gt;
&lt;p&gt;This was very helpful for implementing connection managers -
Salut, Idle and telepathy-sofiasip (our connection managers for
link-local XMPP, IRC and SIP) all started off by forking/cargo-culting from
Gabble, and achieved huge code reductions by porting
to telepathy-glib. Also, &lt;a class=&quot;reference external&quot; href=&quot;http://www.willthompson.co.uk/&quot;&gt;Will Thompson&lt;/a&gt; used it in his Summer of
Code project, telepathy-haze, to go from nothing to a working
and useful Telepathy implementation based on &lt;a class=&quot;reference external&quot; href=&quot;http://developer.pidgin.im/&quot;&gt;libpurple&lt;/a&gt; in a
matter of a few months.&lt;/p&gt;
&lt;p&gt;The second major round of work, which I'll discuss in a later
article, added client code to telepathy-glib, obsoleting
the older/worse libtelepathy and allowing client programs
like Empathy and telepathy-stream-engine to be written using
telepathy-glib. In the process, I accidentally reinvented
DBusGProxy :-) More details to come later!&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;some-background-service-side-code-generation&quot;&gt;
&lt;h1&gt;Some background: service-side code generation&lt;/h1&gt;
&lt;div class=&quot;float-right figure&quot;&gt;
&lt;img alt=&quot;The secret Collabora code-generation process&quot; src=&quot;http://smcv.pseudorandom.co.uk/2008/04/generation-300.png&quot; /&gt;
&lt;p class=&quot;caption&quot;&gt;(credit: &lt;a class=&quot;reference external&quot; href=&quot;http://rhydd.org/&quot;&gt;daf&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Supporting D-Bus in the GObject world has always involved quite a lot of code
generation. The core API of dbus-glib is heavily reliant on varargs functions,
which aren't type-safe and are easy to get wrong.&lt;/p&gt;
&lt;p&gt;dbus-glib contains a program called dbus-binding-tool, which is meant to
generate reasonably sane GObject APIs for D-Bus objects. Unfortunately, it
seems to be intended to generate a whole GObject at a time.&lt;/p&gt;
&lt;p&gt;Early versions of telepathy-gabble used dbus-binding-tool plus a
script called &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;gengobject.py&lt;/span&gt;&lt;/tt&gt; to generate API stubs for the exported
objects; developers then filled in the blanks, and hey presto, we had a
GObject on D-Bus. This was fine up to a point, but had a couple of major
drawbacks.&lt;/p&gt;
&lt;p&gt;Whenever we changed the D-Bus API (quite common during the early development
of Telepathy), there was a very laborious and error-prone merging process.
We ended up with the following process:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;copy the D-Bus introspection XML from the telepathy-spec repository
into a directory &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;xml/pristine&lt;/span&gt;&lt;/tt&gt;
(actually, the canonical form for the spec was Python for a while, and we
had a script that exported a contrived object onto D-Bus and introspected
itself to get the XML - but that's another story!)&lt;/li&gt;
&lt;li&gt;preprocess the introspection XML to add the dbus-glib CFunctionName
annotation, resulting in a directory &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;xml/modified&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;run &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;dbus-binding-tool&lt;/span&gt;&lt;/tt&gt; and a Python script &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;gengobject.py&lt;/span&gt;&lt;/tt&gt; to generate
C source in &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;xml/src&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;three-way-diff the old version of &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;xml/src&lt;/span&gt;&lt;/tt&gt;, the new version of &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;xml/src&lt;/span&gt;&lt;/tt&gt;,
and the real C code in &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;src&lt;/span&gt;&lt;/tt&gt; to create a new version of &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;src&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;pray that the diff process hadn't randomly exchanged functions'
implementations&lt;/li&gt;
&lt;li&gt;update the resulting code in &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;src&lt;/span&gt;&lt;/tt&gt; so it worked&lt;/li&gt;
&lt;li&gt;check the whole mess back into darcs&lt;/li&gt;
&lt;li&gt;hope that nobody else had made changes that would result in darcs conflicts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you haven't yet gathered, this was a bit of a nightmare.&lt;/p&gt;
&lt;p&gt;Also, it was very easy to return the wrong thing from a method without
noticing - because all the APIs were varargs, the compiler didn't notice,
and the first we'd know about it was a mysterious segfault under certain
circumstances.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;how-telepathy-glib-fixes-code-generation&quot;&gt;
&lt;h1&gt;How telepathy-glib fixes code generation&lt;/h1&gt;
&lt;p&gt;telepathy-glib improves on this by taking advantage of this innocuous-looking
feature in dbus-glib:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
commit 355ef78d98d6fc65715845d56232199162cab12a
Author: Steve Frécinaux &amp;lt;steve istique net&amp;gt;
Date:   Thu Aug 17 11:48:20 2006 +0200

    Interface support for bindings.
&lt;/pre&gt;
&lt;p&gt;Instead of running dbus-binding-tool or creating GObjects with D-Bus
interfaces, we put the entire Telepathy spec through
&lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;glib-ginterface-gen.py&lt;/span&gt;&lt;/tt&gt;, a distant descendant of Gabble's &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;gengobject.py&lt;/span&gt;&lt;/tt&gt;.
For each interface in the spec, we generate a GInterface that mirrors the
D-Bus interface. Any GObject that implements the GInterface automatically
gets the D-Bus interface if it's exported onto D-Bus.&lt;/p&gt;
&lt;p&gt;There are a few non-obvious refinements, though:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;The signature of the method implementation is always in the mode that
dbus-glib calls &amp;quot;asynchronous&amp;quot;, where the method implementation can either
send a reply message before or after it returns.&lt;/p&gt;
&lt;p&gt;For &amp;quot;slow&amp;quot; methods, this is the only thing you can do. For instance, many
Telepathy D-Bus methods can't return anything until some TCP round-trips
to the server have happened.&lt;/p&gt;
&lt;p&gt;This is also the only thing you can do if you want to extract extra
information, like the sender's unique name, from the method-call message
(dbus-glib's &amp;quot;synchronous&amp;quot; API doesn't allow this to be done).&lt;/p&gt;
&lt;p&gt;For &amp;quot;fast&amp;quot; methods, sending a reply message before returning is just as
easy as using the &amp;quot;synchronous&amp;quot; API (it's just a difference of syntax), and
has an API consistent with that of the &amp;quot;slow&amp;quot; methods, making it easier
for service authors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;The layout of the GInterface vtable is private, and (auto-generated)
accessor functions are used to fill in implementations. This means our
ABI doesn't change just because we re-ordered functions in the spec.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;If no implementation is provided for a method, we just raise an appropriate
error (org.freedesktop.Telepathy.Errors.NotImplemented), rather than
suffering an assertion failure. This means we can safely add methods to
an interface.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;While we're generating code anyway, we generate some static inline wrapper
functions which wrap &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;dbus_g_method_return()&lt;/span&gt;&lt;/tt&gt;, to have type-safe method
returns. You can easily check that a method replies with correct types, by
checking that the implementation of Foo() replies by calling
tp_svc_some_interface_return_from_foo().&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Similarly, we generate wrapper functions to emit signals, to get type-safe
signal emission.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not all interfaces are stable enough to be included in telepathy-glib's stable
API and ABI, so some of our other projects include a copy of the telepathy-glib
code-generation tools, and generate their own &amp;quot;mini-telepathy-glib&amp;quot;
(traditionally in a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;/extensions/&lt;/span&gt;&lt;/tt&gt; directory) for their
implementation-specific (drafts of) interfaces. This isn't yet as polished as
it ought to be (mainly because we don't want to freeze the
augmented-introspection-XML format that we write the Telepathy spec in, because
it's rather ad-hoc and hackish in places) but it works quite well in practice.&lt;/p&gt;
&lt;p&gt;To see what this looks like in practice, have a look at the examples in
&lt;a class=&quot;reference external&quot; href=&quot;http://darcs.collabora.co.uk/darcsweb.cgi?r=telepathy/telepathy-glib;a=summary&quot;&gt;telepathy-glib&lt;/a&gt;, or at a Telepathy connection manager like &lt;a class=&quot;reference external&quot; href=&quot;http://darcs.collabora.co.uk/darcsweb.cgi?r=telepathy/telepathy-gabble;a=summary&quot;&gt;telepathy-gabble&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;mixins-and-base-classes&quot;&gt;
&lt;h1&gt;Mixins and base classes&lt;/h1&gt;
&lt;p&gt;Another feature of telepathy-glib which makes life easier for connection
manager authors is that it provides &amp;quot;mixins&amp;quot; and base classes which implement
some of the GInterfaces.&lt;/p&gt;
&lt;p&gt;There's absolutely nothing magic about the base classes - they don't have any
access to private implementation details of the GInterfaces, they just
implement them like everyone else does.&lt;/p&gt;
&lt;p&gt;The &amp;quot;mixins&amp;quot; are only slightly more magical - they store some extra state
inside the structures representing GObjects and their classes, and use it to
provide default implementations of some or all of the methods on a particular
interface (or two interfaces, in the case of the new TpMessageMixin).
I'll leave it up to &lt;a class=&quot;reference external&quot; href=&quot;http://www.robot101.net/&quot;&gt;Rob&lt;/a&gt; to explain those in greater detail, since I seem to
remember that he invented them :-P&lt;/p&gt;
&lt;p&gt;The examples and regression tests in telepathy-glib are quite good examples
of how these work in practice.&lt;/p&gt;
&lt;/div&gt;
	  &lt;/div&gt;</description>
	<pubDate>Sat, 19 Jul 2008 13:08:35 +0000</pubDate>
</item>
<item>
	<title>John (J5) Palmieri: Birthday Bash Done - Houston We Have Liftoff</title>
	<guid>http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/</guid>
	<link>http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/</link>
	<description>&lt;p&gt;All in all pretty good for a last minute event.  It ended up being a night at the good life bar as it was too much fun to leave.  People ended up rotating in and out all night and we all had a blast.  My dinner was pretty good.  The spinage was amazing but the steak was a little overdone.  The vodka martinis were also good but I would stay away from the mixed drinks as they didn&amp;#8217;t seem to be of the same quality.  I still prefer Om for martinis and cocktails but overall Good Life was pretty good.  Dancing was fun on such an intimate dance floor and we even had a show of the local hip hop dance crew showing off their moves.  Well it is 4 o&amp;#8217;clock here - a bit late for this old man.  I need to pack for my trip to Aruba on Sunday and am meeting someone for dinner tomorrow night.  I will be mostly absent for the next week as I try to relax and soak in some sun and beach but I will be checking e-main every once in awhile and my phone will still work for emergencies.&lt;/p&gt;
[read this post in: &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Car&quot;&gt;ar&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Cde&quot;&gt;de&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Ces&quot;&gt;es&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Cfr&quot;&gt;fr&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Cit&quot;&gt;it&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Cja&quot;&gt;ja&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Cko&quot;&gt;ko&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Cpt&quot;&gt;pt&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Cru&quot;&gt;ru&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/19/birthday-bash-done-houston-we-have-liftoff/&amp;amp;langpair=en%7Czh-CN&quot;&gt;zh-CN&lt;/a&gt; ]</description>
	<pubDate>Sat, 19 Jul 2008 08:01:02 +0000</pubDate>
</item>
<item>
	<title>Lennart Poettering: PulseAudio FUD</title>
	<guid>http://0pointer.de/blog/projects/jeffrey-stedfast</guid>
	<link>http://0pointer.de/blog/projects/jeffrey-stedfast.html</link>
	<description>&lt;p&gt;&lt;b&gt;Jeffrey Stedfast&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Jeffrey Stedfast seems to have made it his new &lt;a href=&quot;http://jeffreystedfast.blogspot.com/2008/06/pulseaudio-solution-in-search-of.html&quot;&gt;hobby&lt;/a&gt;
&lt;a href=&quot;http://jeffreystedfast.blogspot.com/2008/07/more-pulseaudio-problems.html&quot;&gt;to&lt;/a&gt;
&lt;a href=&quot;http://jeffreystedfast.blogspot.com/2008/07/pulseaudio-again.html&quot;&gt;bash&lt;/a&gt;
&lt;a href=&quot;http://jeffreystedfast.blogspot.com/2008/07/pulseaudio-i-told-you-so.html&quot;&gt;PulseAudio&lt;/a&gt;.
In a series of very negative blog postings he flamed my software and hence me
in best NotZed-like fashion.  Particularly interesting in this case is the
fact that he apologized to me privately on IRC for this behaviour shortly
after his first posting when he was critizised on &lt;tt&gt;#gnome-hackers&lt;/tt&gt; --
only to continue flaming and bashing in more blog posts shortly after. Flaming
is very much part of the Free Software community I guess. A lot of people do
it from time to time (including me). But maybe there are better places for
this than Planet Gnome. And maybe doing it for days is not particularly nice.
And maybe flaming sucks in the first place anyway.&lt;/p&gt;

&lt;p&gt;Regardless what I think about Jeffrey and his behaviour on Planet Gnome,
let's have a look on his trophies, the five &quot;bugs&quot; he posted:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=542296&quot;&gt;Not directly related to PulseAudio itself.&lt;/a&gt; Also, finding errors in code that is related to esd is not exactly the most difficult thing in the world.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=542391&quot;&gt;The same theme&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pulseaudio.org/ticket/320&quot;&gt;Fixed 3 months ago&lt;/a&gt;. It is certainly not my fault that this isn't available in Jeffrey's distro.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pulseaudio.org/ticket/322&quot;&gt;A real, valid bug report&lt;/a&gt;. Fixed in git a while back, but not available in any released version. May only be triggered under heavy load or with a bad high-latency scheduler.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pulseaudio.org/ticket/323&quot;&gt;A valid bug, but not really in PulseAudio&lt;/a&gt;. Mostly caused because the ALSA API and PA API don't really match 100%.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;OK, Jeffrey found a real bug, but I wouldn't say this is really enough to make all the fuss about. Or is it?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Why PulseAudio?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Jeffrey wrote something about '&lt;i&gt;solution looking for a problem&lt;/i&gt;' when
speaking of PulseAudio. While that was certainly not a nice thing to say it
however tells me one thing: I apparently didn't manage to communicate well
enough why I am doing PulseAudio in the first place. So, why am I doing it then?&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;There's so much more a good audio system needs to provide than just the
most basic mixing functionality. Per-application volumes, moving streams
between devices during playback, positional event sounds (i.e. click on the
left side of the screen, have the sound event come out through the left
speakers), secure session-switching support, monitoring of sound playback
levels, rescuing playback streams to other audio devices on hot unplug,
automatic hotplug configuration, automatic up/downmixing stereo/surround,
high-quality resampling, network transparency, sound effects, simultaneous
output to multiple sound devices are all features PA provides right now, and
what you don't get without it. It also provides the infrastructure for
upcoming features like volume-follows-focus, automatic attenuation of music on
signal on VoIP stream, UPnP media renderer support, Apple RAOP support,
mixing/volume adjustments with dynamic range compression, adaptive volume of
event sounds based on the volume of music streams, jack sensing, switching
between stereo/surround/spdif during runtime, ...&lt;/li&gt;

&lt;li&gt;And even for the most basic mixing functionality plain ALSA/dmix is not
really everlasting happiness. Due to the way it works all clients are forced
to use the same buffering metrics all the time, that means all clients are
limited in their wakeup/latency settings. You will burn more CPU than
necessary this way, keep the risk of drop-outs unnecessarily high and still
not be able to make clients with low-latency requirements happy. &lt;a href=&quot;http://0pointer.de/blog/projects/pulse-glitch-free.html&quot;&gt;'Glitch-Free'
PulseAudio&lt;/a&gt; fixes all this. Quite frankly I believe that 'glitch-free'
PulseAudio is the single most important killer feature that should be enough
to convince everyone why PulseAudio is the right thing to do. Maybe people
actually don't know that they want this. But they absolutely do, especially
the embedded people -- if used properly it is a must for power-saving during
audio playback. It's a pity that how awesome this feature is you cannot
directly see from the user interface.&lt;sup&gt;[1]&lt;/sup&gt;&lt;/li&gt;

&lt;li&gt;PulseAudio provides compatibility with a lot of sound systems/APIs that bare ALSA
or bare OSS don't provide.&lt;/li&gt;

&lt;li&gt;And last but not least, I love breaking Jeffrey's audio. It's just soo much fun, you really have to try it! ;-)&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;If you want to know more about why I think that PulseAudio is an important part of the modern Linux desktop audio stack, please &lt;a href=&quot;http://0pointer.de/public/foss.in-pulse.pdf&quot;&gt;read my slides from FOSS.in 2007&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Misconceptions&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Many people (like Jeffrey) wonder why have software mixing at all if you
have hardware mixing? The thing is, hardware mixing is a thing of the past,
modern soundcards don't do it anymore. Precisely for doing things like mixing
in software SIMD CPU extensions like SSE have been invented. Modern sound
cards these days are kind of &quot;dumbed&quot; down, high-quality DACs. They don't do
mixing anymore, many modern chips don't even do volume control anymore.
Remember the days where having a Wavetable chip was a killer feature of a
sound card? Those days are gone, today wavetable synthesizing is done almost
exlcusively in software -- and that's exactly what happened to hardware mixing
too. And it is good that way. In software mixing is is much easier to do
fancier stuff like DRC which will increase quality of mixing. And modern CPUs provide
all the necessary SIMD command sets to implement this efficiently.&lt;/p&gt;

&lt;p&gt;Other people believe that JACK would be a better solution for the problem.
This is nonsense. JACK has been designed for a very different purpose. It is
optimized for low latency inter-application communication. It requires
floating point samples, it knows nothing about channel mappings, it depends on
every client to behave correctly. And so on, and so on. It is a sound server
for audio production. For desktop applications it is however not well suited.
For a desktop saving power is very important, one application misbehaving
shouldn't have an effect on other application's playback; converting from/to
FP all the time is not going to help battery life either. Please understand
that for the purpose of pro audio you can make completely different
compromises than you can do on the desktop. For example, while having
'glitch-free' is great for embedded and desktop use, it makes no sense at all
for pro audio, and would only have a drawback on performance. So, please stop
bringing up JACK again and again. It's just not the right tool for desktop
audio, and this opinion is shared by the JACK developers themselves. &lt;/p&gt;

&lt;p&gt;Jeffrey thinks that audio mixing is nothing for userspace. Which is
basically what OSS4 tries to do: mixing in kernel space. However, the future
of PCM audio is floating points. Mixing them in kernel space is problematic because (at least on Linux) FP in kernel space is a no-no.
Also, the kernel people made clear more than once that maths/decoding/encoding like this
should happen in userspace. Quite honestly, doing the mixing in kernel space
is probably one of the primary reasons why I think that OSS4 is a bad idea.
The fancier your mixing gets (i.e. including resampling, upmixing, downmixing,
DRC, ...) the more difficulties you will have to move such a complex,
time-intensive code into the kernel.&lt;/p&gt;

&lt;p&gt;Not everytime your audio breaks it is alone PulseAudio's fault. For
example, the original flame of Jeffrey's was about the low volume that he
experienced when running PA. This is mostly due to the suckish way we
initialize the default volumes of ALSA sound cards. Most distributions have
simple scripts that initialize ALSA sound card volumes to fixed values like
75% of the available range, without understanding what the range or the
controls actually mean. This is actually a very bad thing to do. Integrated
USB speakers for example tend export the full amplification range via the
mixer controls. 75% for them is incredibly loud. For other hardware (like
apparently Jeffrey's) it is too low in volume. How to fix this has been
discussed on the ALSA mailing list, but no final solution has been presented
yet. Nonetheless, the fact that the volume was too low, is completely
unrelated to PulseAudio.&lt;/p&gt;

&lt;p&gt;PulseAudio interfaces with lower-level technologies like ALSA on one hand,
and with high-level applications on the other hand. Those systems are not
perfect. Especially closed-source applications tend to do very evil things
with the audio APIs (Flash!) that are very hard to support on virtualized
sound systems such as PulseAudio [2]. However, things are getting better. &lt;a href=&quot;http://pulseaudio.org/wiki/AlsaIssues&quot;&gt;My list of issues I found in
ALSA&lt;/a&gt; is getting shorter. Many applications have already been fixed.&lt;/p&gt;

&lt;p&gt;The reflex &quot;my audio is broken it must be PulseAudio's fault&quot; is certainly
easy to come up with, but it certainly is not always right.&lt;/p&gt;

&lt;p&gt;Also note that -- like many areas in Free Software -- development of the
desktop audio stack on Linux is a bit understaffed. AFAIK there are only two
people working on ALSA full-time and only me working on PulseAudio and other
userspace audio infrastructure, assisted by a few others who supply code and patches
from time to time, some more and some less.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;More Breakage to Come&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I now tried to explain why the audio experience on systems with PulseAudio
might not be as good as some people hoped, but what about the future? To be
frank: the next version of PulseAudio (0.9.11) will break even more things.
The 'glitch-free' stuff mentioned above uses quite a few features of the
underlying ALSA infrastructure that apparently noone has been using before --
and which just don't work properly yet on all drivers. And there are quite a
few drivers around, and I only have a very limited set of hardware to test
with.  Already I know that the some of the most popular drivers (USB and HDA)
do not work entirely correctly with 'glitch-free'.&lt;/p&gt;

&lt;p&gt;So you ask why I plan to release this code knowing that it will break
things? Well, it works on some hardware/drivers properly, and for the others I
know work-arounds to get things to work. And 0.9.11 has been delayed for too
long already. Also I need testing from a bigger audience. And it is not so
much 0.9.11 that is buggy, it is the code it is based on. 'Glitch-free' PA
0.9.11 is going to part of Fedora 10. Fedora has always been more bleeding
edge than other other distributions. Picking 0.9.11 just like that for an
'LTS' release might however be a not a good idea.&lt;/p&gt;

&lt;p&gt;So, please bear with me when I release 0.9.11. Snapshots have already
been available in Rawhide for a while, and hell didn't freeze over.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;The Distributions' Role in the Game&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Some distributions did a better job adopting PulseAudio than others. On the
good side I certainly have to list Mandriva, Debian&lt;sup&gt;[3]&lt;/sup&gt;, and
Fedora&lt;sup&gt;[4]&lt;/sup&gt;. OTOH Ubuntu didn't exactly do a stellar job. They didn't
do their homework. Adopting PA in a distribution is a fair amount of work,
given that it interfaces with so many different things at so many different
places. The integration with other systems is crucial. The information was all
out there, communicated on the wiki, the mailing lists and on the PA IRC
channel. But if you join and hang around on neither, then you won't get the
memo. To my surprise when Ubuntu adopted PulseAudio they moved into one of their
'LTS' releases rightaway &lt;sup&gt;[5]&lt;/sup&gt;. Which I guess can be called gutsy --
on the background that I work for Red Hat and PulseAudio is not part of RHEL
at this time. I get a lot of flak from Ubuntu users, and I am pretty sure the
vast amount of it is undeserving and not my fault.&lt;/p&gt;

&lt;p&gt;Why Jeffrey's distro of choice (SUSE?) didn't package &lt;tt&gt;pavucontrol&lt;/tt&gt; 0.9.6
although it has been released months ago I don't know. But there's &lt;a href=&quot;http://www.pulseaudio.org/ticket/320&quot;&gt;certainly no reason to whine about
that to me&lt;/a&gt; and bash me for it.&lt;/p&gt;

&lt;p&gt;Having said all this -- it's easy to point to other software's faults or
other people's failures. So, admitting this, PulseAudio is certainly not
bug-free, far from that. It's a relatively complex piece of software
(threading, real-time, lock-free, sensitive to timing, ...), and every
software has its bugs. In some workloads they might be easier to find than it
others. And I am working on fixing those which are found. I won't forget any
bug report, but the order and priority I work on them is still mostly up to me
I guess, right? There's still a lot of work to do in desktop audio, it will
take some time to get things completely right and complete. &lt;/p&gt;

&lt;p&gt;Calls for &quot;audio should just work (tm)&quot; are often heard. But if you don't
want to stick with a sound system that was state of the art in the 90's for
all times, then I fear things *will have* to break from time to time. And
Jeffrey, I have no idea what you are actually hacking on. Some people
mentioned something with Evolution. If that's true, then quite honestly,
&lt;i&gt;&quot;email should just work&quot;&lt;/i&gt;, too, shouldn't it? Evolution is not exactly
famous for it's legendary bug-freeness and stability, or did I miss something?
Maybe &lt;i&gt;you&lt;/i&gt; should be the one to start with making things &quot;just work&quot;, especially since
Evolution has been around for much longer already.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Back to Work&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Now that I responded to Jeffrey's FUD I think we all can go back to work
and end this flamefest! I wish people would actually try to understand
things before writing an insulting rant -- without the slightest clue -- but
with words like &quot;clusterfuck&quot;. I'd like to thank all the people who commented
on Jeffrey's blog and basically already said what I wrote here
now.&lt;/p&gt;

&lt;p&gt;So, and now I am off hacking a bit on PulseAudio a bit more -- or should
I say in Jeffrey's words: on my &lt;i&gt;clusterfuck&lt;/i&gt; that is an &lt;i&gt;epic fail&lt;/i&gt; and that &lt;i&gt;no desktop user needs&lt;/i&gt;?&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;b&gt;Footnotes&lt;/b&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;[1] BTW 'glitch-free' is nothing I invented, other OS have been doing something
like this for quite a while (Vista, Mac OS). On Linux however, PulseAudio is
the first and only implementation (at least to my knowledge).&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;[2] In fact, Flash 9 can not be made fully working on PulseAudio.
This is because the way Flash destructs it's driver backends is racy.
Unfixably racy, from external code. Jeffrey complained about Flash instability
in his second post. This is unfair to PulseAudio, because I cannot fix this.
This is like complaining that X crashes when you use binary-only
&lt;tt&gt;fglrx&lt;/tt&gt;.&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;[3] To Debian's standards at least. Since development of Debian is
very distributed the integration of such a system as PulseAudio is much more
difficult since in touches so many different packages in the system that are
kind of private property by a lot of different maintainers with different
views on things.&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;[4] I maintain the Fedora stuff myself, so I might be a bit biased on this one... ;-)&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;[5] I guess Ubuntu sees that this was a bit too much too early, too.
At least that's how I understood my invitation to UDS in Prague. Since that
summit I haven't heard anything from them anymore, though.&lt;/small&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 18 Jul 2008 15:02:00 +0000</pubDate>
</item>
<item>
	<title>John (J5) Palmieri: Birthday in Boston</title>
	<guid>http://www.j5live.com/2008/07/17/birthday-in-boston/</guid>
	<link>http://www.j5live.com/2008/07/17/birthday-in-boston/</link>
	<description>&lt;p&gt;I thought I was going to be on vacation for my birthday this year but it turns out I&amp;#8217;m leaving the day after so I decided to do something this Friday to celebrate with people in Boston.  I&amp;#8217;m going to have a small dinner with close friends at &lt;a href=&quot;http://www.goodlifebar.com/&quot;&gt;Good Life Bar&lt;/a&gt; around 8:00 and then perhaps some drinks at &lt;a href=&quot;http://jacobwirth.com/index.html&quot;&gt;Jacob Wirth&lt;/a&gt;.  In any case I&amp;#8217;ll be &lt;a href=&quot;http://identi.ca/j5&quot;&gt;microblogging my whereabouts on identi.ca&lt;/a&gt; so use it as an excuse to come down, drink a few beers and have a good time.&lt;/p&gt;
[read this post in: &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Car&quot;&gt;ar&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Cde&quot;&gt;de&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Ces&quot;&gt;es&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Cfr&quot;&gt;fr&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Cit&quot;&gt;it&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Cja&quot;&gt;ja&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Cko&quot;&gt;ko&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Cpt&quot;&gt;pt&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Cru&quot;&gt;ru&lt;/a&gt; &lt;a href=&quot;http://translate.google.com/translate?u=http://www.j5live.com/2008/07/17/birthday-in-boston/&amp;amp;langpair=en%7Czh-CN&quot;&gt;zh-CN&lt;/a&gt; ]</description>
	<pubDate>Fri, 18 Jul 2008 00:48:27 +0000</pubDate>
</item>
<item>
	<title>Jon Phillips: Cantocore.com Launched + Home Concert Preview Next WED</title>
	<guid>http://rejon.org/?p=863</guid>
	<link>http://rejon.org/2008/07/17/cantocore-site-launched-home-concert-preview/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://fabricatorz.com/2008/07/cantocorecom-launched-and-cantocore-home-concert-preview/&quot;&gt;Over at Fabricatorz we launched&lt;/a&gt; the &lt;a href=&quot;http://cantocore.com&quot;&gt;Cantocore.com&lt;/a&gt; website and are continuing to push on raising funds to fund selected artists projects. If you are in SF, we invite you to come to the Home Concert Preview next WED from 7-9. Tickets to the event are $50 and may be purchased at the door, or preferably, through paypal or contact &lt;a href=&quot;mailto:jhoover.charles@gmail.com&quot;&gt;jhoover.charles@gmail.com&lt;/a&gt; to process payment. &lt;/p&gt;
&lt;form target=&quot;paypal&quot; action=&quot;https://www.paypal.com/cgi-bin/webscr&quot; method=&quot;post&quot;&gt;
&lt;input type=&quot;image&quot; src=&quot;https://www.paypal.com/en_US/i/btn/x-click-but22.gif&quot; border=&quot;0&quot; name=&quot;submit&quot; alt=&quot;Make payments with PayPal - it's fast, free and secure!&quot; /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://www.paypal.com/en_US/i/scr/pixel.gif&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;&lt;/form&gt;
&lt;input type=&quot;hidden&quot; name=&quot;add&quot; value=&quot;1&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;cmd&quot; value=&quot;_cart&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;business&quot; value=&quot;jhoover.charles@gmail.com&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;item_name&quot; value=&quot;Ticket to Cantocore Home Concert Preview&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;amount&quot; value=&quot;50.00&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;no_shipping&quot; value=&quot;0&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;no_note&quot; value=&quot;1&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;currency_code&quot; value=&quot;USD&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;lc&quot; value=&quot;US&quot; /&gt;
&lt;input type=&quot;hidden&quot; name=&quot;bn&quot; value=&quot;PP-ShopCartBF&quot; /&gt;

&lt;p&gt;NOTE: If there is some other contribution to Cantocore by writing about the shows, contributing to the blog, helping record the event, please &lt;a href=&quot;http://rejon.org/contact&quot;&gt;contact me to discuss bypassing ticket price&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Good friend &lt;a href=&quot;http://christopherwillits.com/&quot;&gt;Christopher Willits&lt;/a&gt; will be performing along with Chinese musician &lt;a href=&quot;http://rejon.org/2008/07/17/cantocore-site-launched-home-concert-preview/&lt;a href=&quot;&gt;&lt;a href=&quot;&gt;&lt;a href=&quot;&gt;&lt;a href=&quot;&gt;&lt;a href=&quot;&gt;&lt;a href=&quot;&gt;&lt;a href=&quot;&gt;&lt;a href=&quot;http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;#038;friendid=78074194&quot;&gt;Ma Jie&lt;/a&gt;&amp;#8220;&gt;Ma Jie. Wine and snacks will be served as well! From the RSVP list it will be a great mix of interesting folks from the area. We have a cap of 70 people, so please do RSVP today. More about the &lt;a href=&quot;http://cantocore.com/2008/07/extended-rsvp-and-tickets-on-sale/&quot;&gt;launch, project, and Cantocore.com Home Concert Preview&lt;/a&gt;:&lt;/a&gt;&lt;/a&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Hi all, welcome to a new project which is a collaboration between &lt;a href=&quot;http://fabricatorz.com&quot;&gt;Fabricatorz&lt;/a&gt; and &lt;a href=&quot;http://garagebiennale.com&quot;&gt;Garage Biennale&lt;/a&gt;. Here are two levels of scale &lt;a href=&quot;http://cantocore.com/about/&quot;&gt;about the project&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#8220;Art show in &lt;a href=&quot;http://cantocore.com/can&quot;&gt;Guangzhou, China in September 2008&lt;/a&gt; and then in &lt;a href=&quot;http://cantocore.com/sfo&quot;&gt;San Francisco November 2008&lt;/a&gt;.&amp;#8221;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And, a few more sentences&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#8220;Garage Biennale and the Fabricatorz are bringing you Cantocore, a research project investigating contemporary art and culture between Canton (Guangdong) and cities around the world. The initial focus is a contemporary art exhibition with two versions of the same show in San Francisco and Guangzhou, China.&amp;#8221;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There is a solid &lt;a href=&quot;http://cantocore.com/artists&quot;&gt;line-up of artists&lt;/a&gt; working on projects at present for both shows with the main concept being the ideas of import and export where projects in both locations are the same, but different versions.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://deerfang.org&quot;&gt;Lu&lt;/a&gt; &lt;a href=&quot;http://deerfang.org/2008/07/14/artists-space-money/&quot;&gt;re-blogged the Cantocore Home Concert Preview we are doing next WED in SF&lt;/a&gt;, and so, I&amp;#8217;m pushing out this post about the &lt;a href=&quot;http://cantocore.com&quot;&gt;Cantocore project&lt;/a&gt; which is a contemporary art show that &lt;a href=&quot;http://deerfang.org&quot;&gt;Lu&lt;/a&gt;, &lt;a href=&quot;http://rejon.org&quot;&gt;myself&lt;/a&gt; and &lt;a href=&quot;http://justinhoover.com/&quot;&gt;Justin Hoover&lt;/a&gt; are pushing out this early September and November. The first instance of &lt;a href=&quot;http://cantocore.com&quot;&gt;Cantocore&lt;/a&gt; is to generate some funds to help in production of the artwork. No one is getting paid from the raising of monies to support art production, so we are putting on a concert to &lt;a href=&quot;http://cantocore.com/2008/07/extended-rsvp-and-tickets-on-sale/&quot;&gt;preview the artwork for the show&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Lu &lt;a href=&quot;http://deerfang.org/2008/07/14/artists-space-money/&quot;&gt;wrote about here&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;What it will take to make an art show. You will need three things: Artists, Space and Money! Sometimes these three things don&amp;#8217;t come so easy, don&amp;#8217;t they? &lt;/p&gt;
&lt;p&gt;These are the things we are pushing right now for &lt;a href=&quot;http://cantocore.com/&quot;&gt;Cantocore&lt;/a&gt; exhibition, a show in both Guangzhou China and San Francisco this fall. There is a home concert preview party coming Wednesday 7/23 to fund the production of the shows. I am not a very good sales woman, but really want to make this one works!  &lt;/p&gt;
&lt;p&gt;Visit &lt;a href=&quot;http://cantocore.com/&quot;&gt;Cantocore site&lt;/a&gt; for information about the show, artists, and detail about the preview concert. Performing musicians for the the preview concert are &lt;a href=&quot;http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;#038;friendid=78074194&quot;&gt;Ma Jie&lt;/a&gt; and &lt;a href=&quot;http://christopherwillits.com/&quot;&gt;Christopher Willits&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://deerfang.org/wp-content/uploads/2008/07/cantocore-flier-web.jpg&quot; alt=&quot;null&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And then there is a follow-up post on the Cantocore website:&lt;/p&gt;
&lt;p&gt;Cantocore Home Concert Preview is coming up next Wednesday July 23rd, 7-9 PM in San Francisco. Right now our RSVP deadline for this event is extended to Monday, July 21st. And tickets are on sale right now for &lt;strong&gt;$50 USD&lt;/strong&gt;! All money goes to the production of the Cantocore exhibition in Guangzhou and San Francisco. &lt;em&gt;And, all contributions will be rewarded with praise, promotion in printed materials and on this website.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This event is a preview of the coming exhibitions, and also a home concert featuring Chinese traditional instrument musician &lt;a href=&quot;http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;#038;friendid=78074194&quot;&gt;Ma Jie&lt;/a&gt; and electronic musician &lt;a href=&quot;http://christopherwillits.com/&quot;&gt;Christopher Willits&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;To reserve your tickets please do one of the following:&lt;/p&gt;
&lt;p&gt;Call Justin at 415-425-1647&lt;br /&gt;
Email: &lt;a href=&quot;mailto:jhoover.charles@gmail.com&quot;&gt;jhoover.charles@gmail.com&lt;/a&gt;&lt;br /&gt;
Or use Paypal option&lt;/p&gt;
&lt;form target=&quot;paypal&quot; action=&quot;https://www.paypal.com/cgi-bin/webscr&quot; method=&quot;post&quot;&gt;
&lt;input type=&quot;image&quot; src=&quot;https://www.paypal.com/en_US/i/btn/x-click-but22.gif&quot; border=&quot;0&quot; name=&quot;submit&quot; alt=&quot;Make payments with PayPal - it's fast, free and secure!&quot; /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://www.paypal.com/en_US/i/scr/pixel.gif&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;&lt;/form&gt;
&lt;/blockquote&gt;&lt;/blockquote&gt;

&lt;p&gt;We are eager to raise some funds from those interested in the ideas which will gain both a plug on the http://cantocore.com website and then in our printed material. Feel free to ask questions here on this blog post publicly, or &lt;a href=&quot;http://fabricatorz.com/contact&quot;&gt;send us email about this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Please participate in this project and if in SF, RSVP by next MONDAY, July 21 to come to the Cantocore Home Concert Preview.&lt;/p&gt;</description>
	<pubDate>Thu, 17 Jul 2008 23:44:39 +0000</pubDate>
</item>
<item>
	<title>Donnie Berkholz: Early coverage of Gentoo 2008.0</title>
	<guid>http://dberkholz.wordpress.com/?p=439</guid>
	<link>http://dberkholz.wordpress.com/2008/07/06/early-coverage-of-gentoo-20080/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Here&amp;#8217;s links to a few places that posted announcements for 2008.0. Go there and get involved by voting and commenting!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;slashdot&quot; href=&quot;http://linux.slashdot.org/linux/08/07/06/158214.shtml&quot; target=&quot;_blank&quot;&gt;Slashdot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;digg&quot; href=&quot;http://digg.com/linux_unix/Gentoo_Linux_2008_0_Released&quot; target=&quot;_blank&quot;&gt;Digg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;attachment_442&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;http://dberkholz.files.wordpress.com/2008/07/gentoo_20080_digg_frontpage_highlighted.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-442&quot; src=&quot;http://dberkholz.files.wordpress.com/2008/07/gentoo_20080_digg_frontpage_highlighted.png?w=300&amp;amp;h=187&quot; alt=&quot;Gentoo 2008.0 makes the Digg frontpage&quot; width=&quot;300&quot; height=&quot;187&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Gentoo 2008.0 makes the Digg frontpage&lt;/p&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title=&quot;reddit&quot; href=&quot;http://www.reddit.com/info/6qgth/&quot; target=&quot;_blank&quot;&gt;Reddit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;distrowatch&quot; href=&quot;http://distrowatch.com/?newsid=04982&quot; target=&quot;_blank&quot;&gt;DistroWatch&lt;/a&gt; (original announcement)&lt;a title=&quot;distrowatch&quot; href=&quot;http://distrowatch.com/?newsid=04982&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;lwn&quot; href=&quot;http://lwn.net/Articles/288846/&quot; target=&quot;_blank&quot;&gt;LWN.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;tuxmachines&quot; href=&quot;http://www.tuxmachines.org/node/28401&quot; target=&quot;_blank&quot;&gt;TuxMachines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;phoronix&quot; href=&quot;http://www.phoronix.com/scan.php?page=article&amp;amp;item=gentoo_2008&amp;amp;num=1&quot; target=&quot;_blank&quot;&gt;Phoronix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;osnews&quot; href=&quot;http://osnews.com/story/19981/Gentoo-Linux-2008.0-Released&quot; target=&quot;_blank&quot;&gt;OSNews&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;ostatic&quot; href=&quot;http://ostatic.com/167506-blog/gentoo-2008-0-released&quot; target=&quot;_blank&quot;&gt;OStatic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;heise&quot; href=&quot;http://www.heise-online.co.uk/news/Gentoo-2008-0-released--/111058&quot; target=&quot;_blank&quot;&gt;Heise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;linux format&quot; href=&quot;http://www.linuxformat.co.uk/modules.php?op=modload&amp;amp;name=News&amp;amp;file=article&amp;amp;sid=706&quot; target=&quot;_blank&quot;&gt;Linux Format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;clubic&quot; href=&quot;http://www.clubic.com/actualite-150428-linux-distribution-gentoo-2008-disponible.html&quot; target=&quot;_blank&quot;&gt;Clubic&lt;/a&gt; (Warning: French. &lt;a title=&quot;clubic translation&quot; href=&quot;http://translate.google.com/translate?u=http%3A%2F%2Fwww.clubic.com%2Factualite-150428-linux-distribution-gentoo-2008-disponible.html&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;sl=fr&amp;amp;tl=en&quot; target=&quot;_blank&quot;&gt;English translation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;fosswire&quot; href=&quot;http://fosswire.com/2008/07/07/gentoo-20080-released/&quot; target=&quot;_blank&quot;&gt;FOSSWire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;desktop linux&quot; href=&quot;http://www.desktoplinux.com/news/NS7194953396.html&quot; target=&quot;_blank&quot;&gt;DesktopLinux.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;linux magazine uk&quot; href=&quot;http://www.linux-magazine.com/online/news/gentoo_2008_0_with_new_installer&quot; target=&quot;_blank&quot;&gt;Linux Magazine (UK)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;internetnews&quot; href=&quot;http://internetnews.com./dev-news/article.php/3757461/Is+Gentoo+Ready+for+Latest+Linux+Release.htm&quot; target=&quot;_blank&quot;&gt;InternetNews.com&lt;/a&gt; &amp;#8212; The only one to do any real reporting &amp;amp; interviewing&lt;a title=&quot;internetnews&quot; href=&quot;http://internetnews.com./dev-news/article.php/3757461/Is+Gentoo+Ready+for+Latest+Linux+Release.htm&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;open source pixels&quot; href=&quot;http://www.opensourcepixels.com/news/new-gentoo-updates-installer-revises-profiles/&quot; target=&quot;_blank&quot;&gt;Open Source Pixels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;techgage&quot; href=&quot;http://techgage.com/news/gentoo_20080_released_offers_revamped_installer&quot; target=&quot;_blank&quot;&gt;Techgage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;linuxnews.pl&quot; href=&quot;http://linuxnews.pl/gentoo-20080-wydane/&quot; target=&quot;_blank&quot;&gt;LinuxNews.pl&lt;/a&gt; (&lt;a title=&quot;linuxnews.pl translation&quot; href=&quot;http://translate.google.com/translate?u=http%3A%2F%2Flinuxnews.pl%2Fgentoo-20080-wydane%2F&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;sl=pl&amp;amp;tl=en&quot; target=&quot;_blank&quot;&gt;English translation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;programas livres&quot; href=&quot;http://www.programaslivres.net/2008/07/08/gentoo-20080/&quot; target=&quot;_blank&quot;&gt;Programas Livres&lt;/a&gt; (Warning: Portuguese. &lt;a title=&quot;programas livres translation&quot; href=&quot;http://64.233.179.104/translate_c?u=http%3A%2F%2Fwww.programaslivres.net%2F2008%2F07%2F08%2Fgentoo-20080%2F&amp;amp;langpair=pt|en&amp;amp;hl=en&amp;amp;ie=UTF8&quot; target=&quot;_blank&quot;&gt;English translation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;linux journal&quot; href=&quot;http://www.linuxjournal.com/content/gentoo-countdown-reaches-zero&quot; target=&quot;_blank&quot;&gt;Linux Journal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;linux1.no&quot; href=&quot;http://linux1.no/blogg/omaha/3422/gentoo-20080-lansert&quot; target=&quot;_blank&quot;&gt;Linux1.no&lt;/a&gt; (&lt;a title=&quot;linux1.no translation&quot; href=&quot;http://translate.google.com/translate?u=http%3A%2F%2Flinux1.no%2Fblogg%2Fomaha%2F3422%2Fgentoo-20080-lansert&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;sl=no&amp;amp;tl=en&quot; target=&quot;_blank&quot;&gt;English translation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;pettinix&quot; href=&quot;http://www.pettinix.org/2008/07/06/rilasciata-gentoo-20080/&quot; target=&quot;_blank&quot;&gt;PettiNix&lt;/a&gt; (Warning: Italian. &lt;a title=&quot;pettinix translation&quot; href=&quot;http://translate.google.com/translate?u=http%3A%2F%2Fwww.pettinix.org%2F2008%2F07%2F06%2Frilasciata-gentoo-20080%2F&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;sl=it&amp;amp;tl=en&quot; target=&quot;_blank&quot;&gt;English translation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;linux.org.ru&quot; href=&quot;http://www.linux.org.ru/view-message.jsp?msgid=2910484&quot; target=&quot;_blank&quot;&gt;Linux.org.ru&lt;/a&gt; (&lt;a title=&quot;linux.org.ru translation&quot; href=&quot;http://translate.google.com/translate?u=http%3A%2F%2Fwww.linux.org.ru%2Fview-message.jsp%3Fmsgid%3D2910484&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;sl=ru&amp;amp;tl=en&quot; target=&quot;_blank&quot;&gt;English translation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;zdnet.co.uk&quot; href=&quot;http://news.zdnet.co.uk/software/0,1000000121,39444959,00.htm?r=42&quot; target=&quot;_blank&quot;&gt;ZDNet.co.uk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;distrowatch&quot; href=&quot;http://distrowatch.com/weekly.php?issue=20080707#news&quot; target=&quot;_blank&quot;&gt;DistroWatch Weekly &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There&amp;#8217;s also a ton of talk about Gentoo 2008.0 happening on &lt;a title=&quot;twitter&quot; href=&quot;http://twitter.com/home&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;, which I&amp;#8217;m following through the &lt;a title=&quot;summize gentoo search&quot; href=&quot;http://summize.com/search?q=gentoo&quot; target=&quot;_blank&quot;&gt;Summize search engine with a search for gentoo&lt;/a&gt;. I&amp;#8217;m also following &lt;a title=&quot;google blog search&quot; href=&quot;http://blogsearch.google.com/blogsearch_feeds?hl=en&amp;amp;q=gentoo+-glsa+-security+-packages.gentoo.org&amp;amp;ie=utf-8&amp;amp;num=10&quot; target=&quot;_blank&quot;&gt;blogs talking about Gentoo&lt;/a&gt;, and I have a &lt;a title=&quot;gentoo news search&quot; href=&quot;http://news.google.com/news?hl=en&amp;amp;ned=us&amp;amp;ie=UTF-8&amp;amp;q=%2Bgentoo+linux+-glsa&quot; target=&quot;_blank&quot;&gt;news search for Gentoo&lt;/a&gt; that I expect to pick up more later once more journalists pick up the news.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 1&lt;/strong&gt;: Added Phoronix, thanks to Denis Dupeyron (Calchan).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2&lt;/strong&gt;: Added OSNews&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 3&lt;/strong&gt;: Added OStatic, Heise, Linux Format, Clubic, FOSSWire, DesktopLinux.com, Linux Magazine (UK)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 4&lt;/strong&gt;: Added InternetNews.com&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 5&lt;/strong&gt;: Added Open Source Pixels, Techgage&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 6&lt;/strong&gt;: Added LinuxNews.pl, Programas Livres&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 7&lt;/strong&gt;: Added Linux Journal, Linux1.no, PettiNix, Linux.org.ru&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 8&lt;/strong&gt;: Added ZDNet.co.uk, DistroWatch Weekly&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/dberkholz.wordpress.com/439/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/dberkholz.wordpress.com/439/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/dberkholz.wordpress.com/439/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/dberkholz.wordpress.com/439/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/dberkholz.wordpress.com/439/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/dberkholz.wordpress.com/439/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/dberkholz.wordpress.com/439/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/dberkholz.wordpress.com/439/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/dberkholz.wordpress.com/439/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/dberkholz.wordpress.com/439/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/dberkholz.wordpress.com/439/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/dberkholz.wordpress.com/439/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=dberkholz.wordpress.com&amp;amp;blog=2962469&amp;amp;post=439&amp;amp;subd=dberkholz&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 17 Jul 2008 06:05:14 +0000</pubDate>
</item>
<item>
	<title>Donnie Berkholz: Gentoo: New release, &#8220;new&#8221; leadership</title>
	<guid>http://dberkholz.wordpress.com/?p=443</guid>
	<link>http://dberkholz.wordpress.com/2008/07/16/gentoo-new-release-new-leadership/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I wrote an article discussing &lt;a title=&quot;lwn.net&quot; href=&quot;http://lwn.net/SubscriberLink/290271/3abddaff429dd61f/&quot; 