<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>planet.freedesktop.org</title>
	<link rel="self" href="http://planet.freedesktop.org/atom.xml"/>
	<link href="http://planet.freedesktop.org"/>
	<id>http://planet.freedesktop.org/atom.xml</id>
	<updated>2012-02-13T01:16:32+00:00</updated>
	<generator uri="http://www.planetplanet.org/">http://intertwingly.net/code/venus/</generator>

	<entry>
		<title type="html" xml:lang="en">R_AMD64_PC32 error? There, I Fixed It!</title>
		<link href="https://blogs.oracle.com/alanc/entry/there_i_fixed_it"/>
		<id>https://blogs.oracle.com/alanc/entry/there_i_fixed_it</id>
		<updated>2012-02-11T17:38:36+00:00</updated>
		<content type="html" xml:lang="en">&lt;div style=&quot;width: 500px; float: right; margin: 0px 5px 5px;&quot;&gt;&lt;a href=&quot;http://thereifixedit.failblog.org/2010/08/27/white-trash-repairs-euro-ipod-charger/?utm_source=embed&amp;amp;utm_medium=web&amp;amp;utm_campaign=sharewidget&quot;&gt;&lt;img alt=&quot;thereifixedit.com - Euro Ipod Charger&quot; border=&quot;0&quot; src=&quot;http://thereifixedit.files.wordpress.com/2010/08/6be86e84-8319-4f3f-ab9d-8ae5113652d9.jpg&quot; title=&quot;thereifixedit.com - Euro Ipod Charger&quot; /&gt;&lt;/a&gt;&lt;br /&gt;see more &lt;a href=&quot;http://thereifixedit.failblog.org?utm_source=embed&amp;amp;utm_medium=web&amp;amp;utm_campaign=sharewidget&quot;&gt;There I Fixed It&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
I try to fairly regularly build recent git checkouts of all the upstream
modules from X.Org (at least all those listed in the current &lt;a href=&quot;http://cgit.freedesktop.org/xorg/util/modular/tree/build.sh&quot;&gt;build.sh&lt;/a&gt;) on Solaris.  
Normally I do this in 32-bit mode on x86 machines using the Sun compilers
on the latest Solaris 11 internal development build, but I also occasionally
do it in 64-bit mode, or with gcc compilers, or on a SPARC machine.   This
helps me catch issues that would break our builds when we integrate the new
releases before those releases happen.   (Ideally I'd set up a Solaris client
of the &lt;a href=&quot;http://tinderbox.x.org/&quot;&gt;X.Org tinderbox&lt;/a&gt;, but I've not
gotten around to that.)
&lt;/p&gt;
&lt;p&gt;Anyways, recently I finally decided to track down an error that only shows
up in the 64-bit builds of the &lt;a href=&quot;http://lists.x.org/archives/xorg-announce/2010-October/001511.html&quot;&gt;xscope&lt;/a&gt; protocol monitor/decoder for X11 on
Solaris.   The builds run fine up until the final link stage, which fails
with:
&lt;/p&gt;
&lt;pre style=&quot;clear: right;&quot;&gt;ld: fatal: relocation error: R_AMD64_PC32: file audio.o: symbol littleEndian: value 0x8086c355 does not fit
ld: fatal: relocation error: R_AMD64_PC32: file audio.o: symbol ServerHostName: value 0x8086b4fe does not fit
ld: fatal: relocation error: R_AMD64_PC32: file decode11.o: symbol LBXEvent: value 0x808664c3 does not fit
&lt;i&gt;(and over 150 more symbols that didn't fit)&lt;/i&gt;
&lt;/pre&gt;
&lt;p&gt;A google search turned up some &lt;a href=&quot;http://opensolaris.org/jive/thread.jspa?messageID=128240&quot;&gt;forum&lt;/a&gt; &lt;a href=&quot;http://opensolaris.org/jive/thread.jspa?messageID=128240&quot;&gt;posts&lt;/a&gt;, &lt;a href=&quot;https://blogs.oracle.com/rie/entry/my_relocations_don_t_fit&quot; title=&quot;My Relocations Don't Fit - Position Independence&quot;&gt;a blog post&lt;/a&gt;, and an &lt;a href=&quot;http://developers.sun.com/solaris/articles/about_amd64_abi.html&quot; title=&quot;Sun Studio 10 Compilers and the AMD64 ABI&quot;&gt;article on the AMD64 ABI support in the Sun Studio compilers&lt;/a&gt;.   And indeed, the solutions they offered did work - building with &lt;tt&gt;-Kpic&lt;/tt&gt; did allow the program to link.&lt;/p&gt;

&lt;p&gt;But is that really the best answer?   xscope is a simple program, and shouldn't be overflowing the normal memory model.   Once it linked, looking at the resulting binary was a bit shocking:

&lt;/p&gt;&lt;pre&gt;% /usr/gnu/bin/size  xscope
   text	   data	    bss	    dec	    hex	filename
 416753	   5256	2155921980	2156343989	808732b5	xscope

% /usr/bin/size -f xscope

23(.interp) + 32(.SUNW_cap) + 5860(.eh_frame_hdr) + 27200(.eh_frame)
 + 2964(.SUNW_syminfo) + 5944(.hash) + 4224(.SUNW_ldynsym)
 + 17784(.dynsym) + 14703(.dynstr) + 192(.SUNW_version)
 + 1482(.SUNW_versym) + 3168(.SUNW_dynsymsort) + 96(.SUNW_reloc)
 + 1944(.rela.plt) + 1312(.plt) + 291018(.text) + 33(.init) + 33(.fini)
 + 280(.rodata) + 38461(.rodata1) + 1376(.got) + 784(.dynamic)
 + 1952(.data) + 0(.bssf) + 1144(.picdata) + 0(.tdata) + 0(.tbss)
 + &lt;b&gt;2155921980(.bss)&lt;/b&gt; = 2156343989

% pmap -x `pgrep xscope`
26151:	./xscope
         Address     Kbytes        RSS       Anon     Locked Mode   Mapped File
0000000000400000        408        408          -          - r-x--  xscope
0000000000476000          8          8          8          - rw---  xscope
0000000000478000    2105388       1064       1064          - rw---  xscope
0000000080C83000         52         52         52          - rw---    [ heap ]
[....]
FFFFFD7FFFDF8000         32         32         32          - rw---    [ stack ]
---------------- ---------- ---------- ---------- ----------
        total Kb    2108668       3204       1300          -
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
Two gigabytes of &lt;a href=&quot;http://en.wikipedia.org/wiki/.bss&quot;&gt;.bss&lt;/a&gt; 
space allocated!?!?!  That can't be right.   Looking through the output of
the &lt;tt&gt;elfdump&lt;/tt&gt; and &lt;tt&gt;nm&lt;/tt&gt; programs a single symbol stood out:

&lt;/p&gt;&lt;pre&gt;Symbol Table Section:  .SUNW_ldynsym
     index    value              size              type bind oth ver shndx          name
&lt;i&gt;[...]&lt;/i&gt;
      [89]  0x00000000009ff280 0x0000000080280000  OBJT GLOB  D    1 .bss           FDinfo

[Index]   Value                Size                Type  Bind  Other Shndx   Name
&lt;i&gt;[...]&lt;/i&gt;
[528]   |            10482304|          2150105088|OBJT |GLOB |0    |28     |FDinfo
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;
Unfortunately, that wasn't one of the ones listed in the linker errors, since
it's starting address fit inside the normal memory model, but everything that
came after it was out of range.
&lt;/p&gt;
&lt;p&gt;
So what is this giant static allocation for?   It's defined in 
&lt;a href=&quot;http://cgit.freedesktop.org/xorg/app/xscope/tree/scope.h?id=xscope-1.3#n105&quot; title=&quot;xscope-1.3: scope.h&quot;&gt;scope.h&lt;/a&gt;:

&lt;/p&gt;&lt;pre&gt;#define BUFFER_SIZE (1024 \* 32)

struct fdinfo
{
  Boolean Server;
  long    ClientNumber;
  FD      pair;
  unsigned char   buffer[BUFFER_SIZE];
  int     bufcount;
  int     bufstart;
  int     buflimit;     /\* limited writes \*/
  int     bufdelivered; /\* total bytes delivered \*/
  Boolean writeblocked;
};

extern struct fdinfo   FDinfo[StaticMaxFD];
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;
So it allocates a 32k buffer for up to &lt;tt&gt;StaticMaxFD&lt;/tt&gt; file descriptors.
How many is that?   For that we need to look in xscope's &lt;a href=&quot;http://cgit.freedesktop.org/xorg/app/xscope/tree/fd.h?id=xscope-1.3#n90&quot; title=&quot;xscope-1.3: fd.h&quot;&gt;fd.h&lt;/a&gt;:
&lt;/p&gt;&lt;pre&gt;/\* need to change the MaxFD to allow larger number of fd's \*/
#define StaticMaxFD FD_SETSIZE
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;
and from there to the Solaris system headers, which define FD_SETSIZE in
&lt;a href=&quot;http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/sys/select.h#77&quot; title=&quot;OpenSolaris: sys/select.h&quot;&gt;&lt;tt&gt;&amp;lt;sys/select.h&amp;gt;&lt;/tt&gt;&lt;/a&gt;:
&lt;/p&gt;&lt;pre&gt;/\*
 \* Select uses bit masks of file descriptors in longs.
 \* These macros manipulate such bit fields.
 \* FD_SETSIZE may be defined by the user, but the default here
 \* should be &amp;gt;= NOFILE (param.h).
 \*/
#ifndef FD_SETSIZE
#ifdef _LP64
#define FD_SETSIZE      65536
#else
#define FD_SETSIZE      1024
#endif  /\* _LP64 \*/
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;
So this makes the buffer fields alone in FDinfo become 65536 \* 32 \* 1024 bytes,
aka 2 gigabytes.
&lt;/p&gt;
&lt;p&gt;Thus in this case, while compiler flags like &lt;tt&gt;-Kpic&lt;/tt&gt; allow the code
to link, using &lt;tt&gt;-DFD_SETSIZE=256&lt;/tt&gt; instead, builds code that's a little bit
saner, fits in the normal memory model, and is less likely to fail with out of memory errors when you need it most:

&lt;/p&gt;&lt;pre&gt;% /usr/gnu/bin/size -f xscope
   text	   data	    bss	    dec	    hex	filename
 409388	   3352	8449804	8862544	 873b50	xscope

% pmap -x `pgrep xscope`
         Address     Kbytes        RSS       Anon     Locked Mode   Mapped File
0000000000400000        404        404          -          - r-x--  xscope
0000000000475000          4          4          4          - rw---  xscope
0000000000476000       8248         20         20          - rw---  xscope
0000000000C84000         52         52         52          - rw---    [ heap ]
[...]
FFFFFD7FFFDFD000         12         12         12          - rw---    [ stack ]
---------------- ---------- ---------- ---------- ----------
        total Kb      11500       2136        232          -
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;
Of course that assumes that xscope is not going to be monitoring more than
about 120 clients at a time (since it opens two file descriptors for each
client, one connected to the client and one to the real X server), and still
wastes many page mappings if you're only monitoring one client.   The real
fix being worked on for the next upstream release is to make the buffer 
allocation be dynamic, and allocate just enough for the number of clients
we actually are monitoring.
&lt;/p&gt;
&lt;p&gt;
The moral of this story?   Just because you can make it build doesn't mean
you've fixed it well, and sometimes it's useful to understand why the linker
is giving you a hard time.
&lt;/p&gt;</content>
		<author>
			<name>alanc</name>
			<uri>https://blogs.oracle.com/alanc/</uri>
		</author>
		<source>
			<title type="html">Alan Coopersmith's Weblog</title>
			<subtitle type="html">&lt;i&gt;Random thoughts of a disorganized mind...&lt;/i&gt;</subtitle>
			<link rel="self" href="https://blogs.oracle.com/alanc/feed/entries/atom"/>
			<id>https://blogs.oracle.com/alanc/feed/entries/atom</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Wolfram|Alpha Pro: data science made easy</title>
		<link href="http://dberkholz.com/2012/02/10/wolframalpha-pro-data-science-made-easy/"/>
		<id>http://dberkholz.com/?p=758</id>
		<updated>2012-02-10T15:59:35+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Over at my RedMonk blog, &lt;a href=&quot;http://monk.ly/AkbYcZ&quot; title=&quot;Wolfram|Alpha Pro: data science made easy&quot;&gt;I wrote&lt;/a&gt; about how a new tool called Wolfram|Alpha Pro makes it easy for anyone to do basic data science. If you have any interest in data analysis, doing data science, or anything along those lines, &lt;a href=&quot;http://monk.ly/AkbYcZ&quot; title=&quot;Wolfram|Alpha Pro: data science made easy&quot;&gt;check it out&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/dberkholz.wordpress.com/758/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/dberkholz.wordpress.com/758/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/dberkholz.wordpress.com/758/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/dberkholz.wordpress.com/758/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/dberkholz.wordpress.com/758/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/dberkholz.wordpress.com/758/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/dberkholz.wordpress.com/758/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/dberkholz.wordpress.com/758/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/dberkholz.wordpress.com/758/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/dberkholz.wordpress.com/758/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/dberkholz.wordpress.com/758/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/dberkholz.wordpress.com/758/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/dberkholz.wordpress.com/758/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/dberkholz.wordpress.com/758/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=dberkholz.com&amp;amp;blog=2962469&amp;amp;post=758&amp;amp;subd=dberkholz&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Donnie Berkholz</name>
			<uri>http://dberkholz.com</uri>
		</author>
		<source>
			<title type="html">Striving for greatness</title>
			<subtitle type="html">The life and times of a Gentoo developer and leader</subtitle>
			<link rel="self" href="http://dberkholz.com/feed/atom/"/>
			<id>http://dberkholz.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html">FOSDEM Aftermath.</title>
		<link href="http://libv.livejournal.com/23584.html"/>
		<id>urn:lj:livejournal.com:atom1:libv:23584</id>
		<updated>2012-02-10T12:56:44+00:00</updated>
		<content type="html">FOSDEM was awesome this year. We had an overbooked schedule for our DevRoom, we inaugurated the beautiful and fantastic K building, and i got to present the lima driver.&lt;br /&gt;&lt;br /&gt;First off, i would like to thank the FOSDEM organizers and the ULB. The already unique event that is FOSDEM just keeps getting better and better. Pascal &amp;amp; friends: congratulations, like every year, you've outdone yourselves.&lt;br /&gt;&lt;br /&gt;Secondly, i would like to thank all the speakers in my devroom. It is clear by now why the first-come-first-serve algorithm has to be used, and it is also clear that it is working. But thank you all for making this a successful event (even Chris, who couldn't make it due to a train derailment). I hope you guys had a lot of fun too, both during your talk and with the rest of FOSDEM.&lt;br /&gt;&lt;br /&gt;Lastly, to all those who attended my talk (and those who couldn't get in anymore as well): Thank you all for your very positive feedback. No matter what happens with lima in future, this talk will be the most memorable moment. (oh, and a big thanks to Will Stephenson, from SuSE and KDE, for getting a webcam up that quickly). To whoever shouted something along the lines of &quot;we don't see that, it looks like a perfect cube to us&quot; when the caching went off in the rotating cube hack: this is the open source spirit in its most tangible form. Thank you very much.&lt;br /&gt;&lt;br /&gt;To end this post, let me plug &lt;a href=&quot;http://limadriver.org/&quot; rel=&quot;nofollow&quot;&gt;the lima website&lt;/a&gt; again. We also have &lt;a href=&quot;http://vlists.pepperfish.net/cgi-bin/mailman/listinfo/lima-limadriver.org&quot; rel=&quot;nofollow&quot;&gt;a mailinglist&lt;/a&gt; and the #lima channel on freenode. &lt;a href=&quot;https://gitorious.org/lima/lima&quot; rel=&quot;nofollow&quot;&gt;The limare code&lt;/a&gt; has been available since yesterday night. &lt;a href=&quot;http://www.heise.de/newsticker/meldung/Open-Source-Treiber-fuer-ARM-Grafik-1432120.html&quot; rel=&quot;nofollow&quot;&gt;Heise&lt;/a&gt; and &lt;a href=&quot;https://lwn.net/Articles/480457/&quot; rel=&quot;nofollow&quot;&gt;lwn&lt;/a&gt; posted the story already, and the videos from the FOSDEM talk should soon hit &lt;a href=&quot;http://www.phoronix.com/scan.php?page=home&quot; rel=&quot;nofollow&quot;&gt;phoronix&lt;/a&gt; as well.</content>
		<author>
			<name>Luc Verhaegen</name>
			<uri>http://libv.livejournal.com/</uri>
		</author>
		<source>
			<title type="html">LIBV Intentionally Breaks Videodrivers</title>
			<subtitle type="html">What about Lovely, Intelligent and Beautiful Visionary?</subtitle>
			<link rel="self" href="http://libv.livejournal.com/data/atom"/>
			<id>urn:lj:livejournal.com:atom1:libv</id>
		</source>
	</entry>

	<entry>
		<title type="html">Doom3 demo benchmarking made easy</title>
		<link href="http://jglisse.livejournal.com/3222.html"/>
		<id>urn:lj:livejournal.com:atom1:jglisse:3222</id>
		<updated>2012-02-09T20:31:29+00:00</updated>
		<content type="html">So i decided to give another shoot at using doom3 as benchmark for my GPU work. As i don't have the full game (shame on me) i have to use the demo but the demo is not usefull for recording and playing back anything. But now things are opensource yeah ! So with git://git.iodoom.org/iodoom3/iodoom3.git and &lt;a href=&quot;http://people.freedesktop.org/~glisse/0001-doom3-fix-demo-allow-demo-to-replay-demo-file.patch&quot; rel=&quot;nofollow&quot;&gt;http://people.freedesktop.org/~glisse/0001-doom3-fix-demo-allow-demo-to-replay-demo-file.patch&lt;/a&gt; i was able to build doom3 demo on linux :) (scons . TARGET_DEMO=1 NOCURL=1).&lt;br /&gt;&lt;br /&gt;Then just uncompress doom3-linux-1.1.1286-demo.x86.run replace gamex86.so by one from iodoom gamex86-demo.so. At that point you can launch the demo start a game and when ever you think it's good time recorddemo mystuff in doom3 console to start recording then stoprecording once you think you have enough frames. To replay your demo doom3-demo +timedemoquit mystuff.&lt;br /&gt;&lt;br /&gt;Note you need 1.1.1286 as iodoom have a checksum for this file hardcoded (i haven't try with older demo but skipping the checksum check might work).&lt;br /&gt;&lt;br /&gt;So now i have something a little more recent and different from other benchmark i often use (openarena, nexuiz). I wish their were some free advance GL demo with nice content we could use...</content>
		<author>
			<name>jglisse</name>
			<uri>http://jglisse.livejournal.com/</uri>
		</author>
		<source>
			<title type="html">jglisse</title>
			<subtitle type="html">jglisse</subtitle>
			<link rel="self" href="http://jglisse.livejournal.com/data/atom"/>
			<id>urn:lj:livejournal.com:atom1:jglisse</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Time for some news</title>
		<link href="http://dodonov.net/blog/2012/02/09/time-for-some-news-2/"/>
		<id>http://dodonov.net/blog/?p=1258</id>
		<updated>2012-02-09T20:06:58+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Time flies by quickly, and another couple of weeks has past. So time for your regular news from the Intel Linux Graphics land!&lt;/p&gt;

&lt;p&gt;Starting with the hot topic of the past years, &lt;a href=&quot;http://lists.freedesktop.org/archives/wayland-devel/2012-February/002072.html&quot;&gt;Wayland 0.85&lt;/a&gt; has just been released! This release marks the first milestone in the road to a stable 1.0 &lt;strong&gt;Wayland&lt;/strong&gt; and &lt;strong&gt;Weston&lt;/strong&gt; release. After it, we’ll have a &lt;strong&gt;0.90&lt;/strong&gt; release, which would be the one to mark API freeze and will begin the preparation to the final &lt;strong&gt;1.0&lt;/strong&gt; release. Of course, additional releases could happen meanwhile. Wayland has evolved a lot for the past years, so make sure to check it out.&lt;/p&gt;

&lt;p&gt;Besides &lt;strong&gt;Wayland&lt;/strong&gt;, lots of activities have been going on with all the projects.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;kernel&lt;/strong&gt; side, &lt;strong&gt;Daniel Vetter&lt;/strong&gt; has sent out his new &lt;strong&gt;drm-intel-next&lt;/strong&gt; tree, which features lots of fixes from Ben, Eric and Chris, improvements to swizzling handling, fence accounting improvements, &lt;strong&gt;VTd&lt;/strong&gt; workarounds for Ironlake, simplified debugfs handling code and an improved &lt;strong&gt;i915_error_state&lt;/strong&gt; logging.&lt;/p&gt;

&lt;p&gt;Besides those improvements, lots of attention was directed towards interlaced modes support on Intel GPUs, which resulted in a large series of patches from &lt;strong&gt;Paulo Zanoni&lt;/strong&gt; and &lt;strong&gt;Daniel Vetter&lt;/strong&gt; that should improve support for interlaced and non-interlaced modes and made them, well, work correctly &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; . If you have been experiencing any sort of problems with such modes, please, try the patches and verify if they solve the issues. Chances are that they will, but if they won’t, please, let us know!&lt;/p&gt;

&lt;p&gt;Among other interesting patches in kernel for the past few weeks, &lt;strong&gt;Ivy Bridge&lt;/strong&gt; hard-hang fixes are among the most notable ones. Those patches toggle a couple of work-arounds for issues which randomly affected some of the Ivy Bridge machines – and resulted in complete system hangs. Due to their random nature, and specially due to the fact that they mostly affected low-resolution modes (chances to hang your machine in a &lt;strong&gt;320×240&lt;/strong&gt; resolutions were noticeable much higher than in any other resolution), we had hard time to track them previously. In fact, we only managed to reproduce them consistently in the last week – and luckily we were able to come with patches which apparently fixed most of the problems. The patches will probably be included into &lt;strong&gt;3.3&lt;/strong&gt; kernel via the &lt;strong&gt;drm-intel-fixes&lt;/strong&gt; branch, and if they won’t cause any other issues we’ll backport them to &lt;strong&gt;3.2&lt;/strong&gt; kernel as well.&lt;/p&gt;

&lt;p&gt;Another interesting patch is the one which applies the &lt;strong&gt;missed IRQ&lt;/strong&gt; fix (a.k.a., the &lt;strong&gt;voodoo&lt;/strong&gt; patch &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; ) to Sandy Bridge platform as well. So far, we had a couple of reports which mentioned that a very similar issue to the one which was fixed on Ivy Bridge last month was happening on Sandy Bridge as well. If you are suffering from this issue, please, give it a try and let us know if it solved the issue to you or transformed it into anything else (like a GPU hang which happened on one of the machines instead of missed IRQ. Those results would be even more interesting, as they could tell us what we are missing and how to fix the problem for good).&lt;/p&gt;

&lt;p&gt;Additionally, lots of development was targeted on improving the &lt;strong&gt;semaphores&lt;/strong&gt; issues detection and avoidance, and for better debugging support in the &lt;strong&gt;i915_error_state&lt;/strong&gt; log. Usually, this log is all that remains of a GPU hang – so the more information we can get from there, the better.&lt;/p&gt;

&lt;p&gt;And finally, aiming at finally discovering what root-causes all the &lt;strong&gt;rc6&lt;/strong&gt; issues out there, I sent out a &lt;a href=&quot;http://lists.freedesktop.org/archives/intel-gfx/2012-February/015004.html&quot;&gt;patch&lt;/a&gt; which allows to hopefully isolate the issue. Leann Ogasawara from Canonical was also kind enough to pre-build &lt;strong&gt;Ubuntu&lt;/strong&gt; kernels with this patch – so if you are affected by a &lt;strong&gt;RC6&lt;/strong&gt; issue, and are running Ubuntu – please, &lt;a href=&quot;http://people.canonical.com/~ogasawara/eugeni/rc6/&quot;&gt;give them a try!&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Mesa&lt;/strong&gt; side, things are moving very quickly towards the &lt;strong&gt;Mesa 8.0&lt;/strong&gt; release. The &lt;strong&gt;8.0-RC2&lt;/strong&gt; version was already released, and final &lt;strong&gt;8.0&lt;/strong&gt; version is expected to happen in a very near future. Who knows, perhaps by the time you’ll be reading this line, it will already be among us &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; . Mesa &lt;strong&gt;8.0&lt;/strong&gt; release looks very exciting so far – besides the GL 3.0 extensions and GLSL 1.30 support, it also brings amazing performance and stability improvements. Hopefully you’ll be able to see it with your own eyes when the next stable release will be out – or, if you don’t want to wait that long, or want to use your very last chance to report any major show-stopper bugs in the &lt;strong&gt;8.0&lt;/strong&gt; branch – now is the time.&lt;/p&gt;

&lt;p&gt;On the &lt;strong&gt;xf86-video-intel&lt;/strong&gt; side, as usual, hundreds of patches were committed by Chris Wilson, mostly targeting the &lt;strong&gt;SNA&lt;/strong&gt; backend, and also the &lt;strong&gt;Glamor&lt;/strong&gt; integration. Since the beginning of the year, git log already shows &lt;strong&gt;380&lt;/strong&gt; new patches. Out of those, &lt;strong&gt;368&lt;/strong&gt; are SNA-specific for now. Phoronix has run yet another round of SNA testing in the past weeks with some &lt;a href=&quot;http://www.phoronix.com/scan.php?page=article&amp;amp;item=intel_sna_2012&amp;amp;num=1&quot;&gt;interesting results&lt;/a&gt;. Things are getting very interested with this backend.&lt;/p&gt;

&lt;p&gt;And finally, moving to the &lt;strong&gt;intel-gpu-tools&lt;/strong&gt; project, two new tools were proposed in the past few days – one for testing different panel fitter settings (&lt;strong&gt;intel_panel_fitter&lt;/strong&gt;, from Paulo Zanoni); and another to demonstrate the sprite features, available for SNB/IVB platform, which uses 3 new IOCTLs included in the latest &lt;strong&gt;drm&lt;/strong&gt; subsystem: GETPLANERESOURCES, GETPLANE, and SETPLANE. Planes and sprites support are ones of the latest additions to the core &lt;strong&gt;drm&lt;/strong&gt; subsystem, and in my opinion they certainly are among the most interesting items there. I believe that more and more applications will be using them at some point (like the 1st one mentioned in this post – yes, the one which starts with ‘&lt;strong&gt;W&lt;/strong&gt;‘), which is great.&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html">Multitouch in X - Multitouch-touchpads</title>
		<link href="http://feedproxy.google.com/~r/Who-t/~3/0-aqIr3Mmko/multitouch-in-x-multitouch-touchpads.html"/>
		<id>tag:blogger.com,1999:blog-6112936277054198647.post-1867181930264233336</id>
		<updated>2012-02-07T12:27:19+00:00</updated>
		<content type="html">This post is part of a series on multi-touch support in the X.Org X server.

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://who-t.blogspot.com/2011/12/multitouch-in-x-getting-events.html&quot;&gt;Multitouch in X - Getting events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://who-t.blogspot.com/2011/12/multitouch-in-x-pointer-emulation.html&quot;&gt;Multitouch in X - Pointer emulation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://who-t.blogspot.com/2012/01/multitouch-in-x-touch-grab-handling.html&quot;&gt;Multitouch in X - Touch grab handling&lt;/a&gt;
&lt;/li&gt;&lt;/ol&gt;

In this post, I'll outline the handling of touch events for multitouch-capable touchpads.
Multi-touch touchpads that are supported are those that provide position information for more than one finger. The current version of the synaptics X driver does some tricks to pretend two-finger interaction on single-finger touchpads - such devices are not applicable here.

&lt;br /&gt;&lt;br /&gt;

Touchpads are primarily pointer devices and any multi-touch interaction is usually a gesture. In the protocol, such devices are of the type &lt;i&gt;XIDependentDevice&lt;/i&gt; and the server does adjust touch event delivery. I've already hinted at this &lt;a href=&quot;http://who-t.blogspot.com/2011/12/multitouch-in-x-getting-events.html&quot;&gt;here&lt;/a&gt; but this time I'll give a more detailed explanation.

&lt;h2&gt;Touch event delivery&lt;/h2&gt;
Unlike for direct touch devices such as touchscreens, dependent devices have a different picking mechanism in the server. We assume that all gestures are semantically associated with the cursor position. For example, for scrolling, you would move the cursor on top of the window to be scrolled, then you would start scrolling. The server thus adjusts event delivery accordingly. Whereas for direct touch devices the touch events are delivered to whichever window is at the position of the touch, touch events from dependent devices are &lt;i&gt;always&lt;/i&gt; delivered to the window underneath the pointer (grab semantics are adjusted to follow the same rules). So if you start a gesture in the top-left corner of the touchpad, the window underneath the cursor gets the events with the top-left coordinates. Note that the event and root coordinates always reflect the pointer position.
&lt;br /&gt;&lt;br /&gt;

The average multi-touch touchpad has two modes of operation: single-finger operation where the purpose is to move the visible cursor and multi-finger operation which is usually interpreted into a gesture on the client. These two modes are important, as they too affect event delivery. The protocol specifies that any interaction with the device that serves to move the visible cursor only should not generate touch events, and that touch events will start once that interaction becomes a true multi-touch interaction. This leaves the drivers a little bit of leeway, but the current implementation in the synaptics driver is the following:
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;A user places one finger on the touchpad and moves. The client will receive regular pointer events.&lt;/li&gt;
&lt;li&gt;The user places a second finger on the touchpad. The client will now receive a TouchBegin event for the &lt;b&gt;first and the second touch&lt;/b&gt;, at their respective current positions in device coordinate range.&lt;/li&gt;
&lt;li&gt;Movement of either finger now will generate touch events, but no pointer events.&lt;/li&gt;
&lt;li&gt;Any other fingers will generate touch events only.&lt;/li&gt;
&lt;li&gt;When one of two remaining fingers on the touchpoint ceases the touch, a TouchEnd is sent for &lt;b&gt;both the terminating touch and the remaining touch&lt;/b&gt;. The remaining finger will revert to sending pointer events.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Legacy in-driver gestures&lt;/h2&gt;
As you are likely aware, the synaptics driver currently supports several pseudo gestures such as tap-to-click or two-finger scrolling. These gestures are interpreted in the driver, thus the server and client never see the raw data for them.

&lt;br /&gt;&lt;br /&gt;
With proper multi-touch support these gestures are now somewhat misplaced. On the one hand, we want the clients to interpret multitouch, on the other hand we want the gestures to be handled in the same manner in all applications. (Coincidentally, this is also a problem that we need to solve for &lt;a href=&quot;http://wayland.freedesktop.org&quot;&gt;Wayland&lt;/a&gt;). 
&lt;br /&gt;&lt;br /&gt;
We toyed with ideas of marking emulated events so clients can filter but since we do need to be compatible to the core and XI 1.x behaviours, we only found one solution: any in-driver gestures that alter event deliver must not generate touch events. Thus, if the driver is set to handle two-finger scrolling, the clients will only see the pointer events and scroll events, they will not see touch events from two-fingers. To get two-finger scrolling handled by the client, the in-driver gesture must be disabled. The obvious side-effect of that is that you then cannot scroll in applications that don't support the gestures. Oh well, it's the price we have to pay for having integrated gesture support in the wrong place.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6112936277054198647-1867181930264233336?l=who-t.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Who-t/~4/0-aqIr3Mmko&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Peter Hutterer</name>
			<email>noreply@blogger.com</email>
			<uri>http://who-t.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Who-T</title>
			<link rel="self" href="http://feeds.feedburner.com/Who-t"/>
			<id>tag:blogger.com,1999:blog-6112936277054198647</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Japanese Standing Cat</title>
		<link href="http://corbinsimpson.com/entries/japanese-standing-cat.html"/>
		<id>http://corbinsimpson.com/entries/japanese-standing-cat.html</id>
		<updated>2012-01-31T11:42:00+00:00</updated>
		<content type="html">&lt;p&gt;I recently purchased and installed a standing desk. While I normally don't
blog about things in my personal life, I figured that this was permissible
since it directly affects my ability to write code.&lt;/p&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;http://corbinsimpson.com/images/desk.jpg&quot;&gt;&lt;img alt=&quot;My standing desk, fully loaded&quot; class=&quot;align-right&quot; src=&quot;http://corbinsimpson.com/images/desk-thumb.jpg&quot; /&gt;&lt;/a&gt;
&lt;p&gt;This standing desk is a &lt;a class=&quot;reference external&quot; href=&quot;http://www.ikea.com/us/en/catalog/products/60115989/&quot;&gt;Fredrik&lt;/a&gt; &quot;computer work station,&quot; but let's be
honest, here: it's a standing desk. It's pretty sturdy and removes the need to
hack together various Ikea desks to produce reasonably-scaled tabletops.
Pictured here is my desk, in its natural habitat. My workstation and
hacked-apart AGP box both have their own monitor, and there is plenty of
tabletop room for anything I need to have at my hands.&lt;/p&gt;
&lt;p&gt;For those in the audience who aren't yet aware of standing desks, and don't
want to read &lt;a class=&quot;reference external&quot; href=&quot;https://en.wikipedia.org/wiki/Standing_desk&quot;&gt;Wikipedia on standing desks&lt;/a&gt;, here are the abridged notes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;Reduces back stress and pain after a few months&lt;/li&gt;
&lt;li&gt;Reduces risk of &lt;a class=&quot;reference external&quot; href=&quot;https://en.wikipedia.org/wiki/DVT&quot;&gt;DVT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;When monitors are elevated, reduces neck stress and pain&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;Slightly more expensive than sitting desks&lt;/li&gt;
&lt;li&gt;Hard to find&lt;/li&gt;
&lt;li&gt;Causes foot and ankle stress for the first few weeks&lt;/li&gt;
&lt;li&gt;Turns one into a hipster programmer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, on the bright side, this desk has definitely improved my back pain. But,
if I start writing &lt;a class=&quot;reference external&quot; href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; code soon, we'll all know who to blame.&lt;/p&gt;</content>
		<author>
			<name>Corbin Simpson</name>
			<uri>http://corbinsimpson.com/rss.xml</uri>
		</author>
		<source>
			<title type="html">Corbin Simpson</title>
			<link rel="self" href="http://corbinsimpson.com/rss.xml"/>
			<id>http://corbinsimpson.com/rss.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">STOP ACTA...</title>
		<link href="http://feedproxy.google.com/~r/OliverMcfadden/~3/ik6k0Zbhoh0/stop-acta.html"/>
		<id>tag:blogger.com,1999:blog-5203830418461309921.post-8547119887979959246</id>
		<updated>2012-01-30T19:20:22+00:00</updated>
		<content type="html">I suspect that I'll be receiving quite a few more hits here given the recent retweets. Unfortunately I haven't had much time to update my blog... In fact, I may not have &lt;i&gt;any&lt;/i&gt; time in the future.&lt;br /&gt;
&lt;br /&gt;
On a more positive note, I am much more active on Twitter, so you can follow me there (@omcfadde)&lt;br /&gt;
&lt;br /&gt;
Of course the topics we're discussing, SOPA, ACTA, etc are definitely not pleasant or positive. Let's show them we mean business and that we &lt;b&gt;will not&lt;/b&gt; accept these agreements!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.stopacta.info/&quot;&gt;STOP ACTA&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Updates (possibly) coming in the future.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Epäilen, että tulen saa melkoisesti lisää osumia tässä äskettäisten retweets. Valitettavasti minulla ei ole ollut paljon aikaa päivittää blogiin ... Itse en ehkä ole mitään aikaa jatkossa.&lt;br /&gt;
&lt;br /&gt;
Myönteistä huomata, olen paljon enemmän aktiivisia Twitterissä, jotta voit seurata minua sinne (@omcfadde)&lt;br /&gt;
&lt;br /&gt;
Tietenkin aiheita olemme keskustelleet, SOPA, ACTA jne. eivät varmasti miellyttävä tai positiivinen. Katsotaanpa näytä heille että olemme tosissamme ja että me ei hyväksy näitä sopimuksia!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.stopacta.info/&quot;&gt;STOP ACTA&lt;/a&gt;&lt;/b&gt; (In Englanti - Lue!)&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Päivitykset (mahdollisesti) tulossa tulevaisuudessa.&lt;/i&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5203830418461309921-8547119887979959246?l=omcfadde.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/rhZjrYqQTsb9mlLSAZ6CI4WBlgI/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/rhZjrYqQTsb9mlLSAZ6CI4WBlgI/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/rhZjrYqQTsb9mlLSAZ6CI4WBlgI/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/rhZjrYqQTsb9mlLSAZ6CI4WBlgI/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/OliverMcfadden/~4/ik6k0Zbhoh0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Oliver McFadden</name>
			<email>noreply@blogger.com</email>
			<uri>http://omcfadde.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Oliver's Blog</title>
			<subtitle type="html">This machine will, will not communicate; These thoughts and the strain I am under...</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/OliverMcfadden"/>
			<id>tag:blogger.com,1999:blog-5203830418461309921</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Summary of GStreamer Hackfest</title>
		<link href="http://blogs.gnome.org/uraeus/2012/01/29/summary-of-gstreamer-hackfest/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1808</id>
		<updated>2012-01-29T17:17:39+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;So as I talked about in &lt;a href=&quot;http://blogs.gnome.org/uraeus/2012/01/26/gstreamer-hackfest-in-malaga-update/&quot;&gt;my last blog post&lt;/a&gt; we had a great &lt;a href=&quot;http://gstreamer.freedesktop.org&quot;&gt;GStreamer&lt;/a&gt; hackfest. A lot of things got done and quite a few applications got an initial port over to 0.11. For instance &lt;a href=&quot;http://blogs.gnome.org/edwardrv/&quot;&gt;Edward Hervey&lt;/a&gt; ended up working on porting &lt;a href=&quot;http://projects.gnome.org/totem/&quot;&gt;the Totem video player&lt;/a&gt;, or rather trying to come up with a more optimized design for the &lt;a href=&quot;http://www.clutter-project.org/&quot;&gt;Clutter-gst&lt;/a&gt; as the basis port was already done.&lt;/p&gt;
&lt;p&gt;
Another cool effort was by &lt;a href=&quot;http://base-art.net/&quot;&gt;Philippe Normand&lt;/a&gt; from &lt;a href=&quot;http://www.igalia.com/&quot;&gt;Igalia&lt;/a&gt; who put a lot of effort into porting WebKit to use 0.11. His efforts where rewarded with success as you can see in this &lt;a href=&quot;http://people.igalia.com/pnormand/big-buck-webkit-gst-0.11.png&quot;&gt;screenshot&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Jonathan Matthew had flown up all the way from Australia and made great progress in porting &lt;a href=&quot;http://methlab42.itee.uq.edu.au/~jonathan/rhythmbox-gstreamer-0.11.png&quot;&gt;Rhythmbox&lt;/a&gt; over to the 0.11 API, a port which became hugely more useful after Wim Taymans and Tim-Phillip Muller fixed a bug that caused mp3 playback not to work &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; /&gt; .&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://pecisk.blogspot.com/&quot;&gt;Peteris Krisjanis&lt;/a&gt; made huge strides in porting &lt;a href=&quot;http://www.jokosher.org/&quot;&gt;Jokosher&lt;/a&gt; to 0.11. Although like &lt;a href=&quot;https://launchpad.net/~jderose&quot;&gt;Jason DeRose&lt;/a&gt; from &lt;a href=&quot;http://novacut.com/&quot;&gt;Novacut&lt;/a&gt; and myself on &lt;a href=&quot;http://www.linuxrising.org&quot;&gt;Transmageddon&lt;/a&gt; he did end up spending a lot of time on debugging issues related to gobject-introspection. The challenge for non-C applications like Jokosher, Novacut, Transmageddon and PiTiVi is a combination of the API having changed quite significantly due to the switch to gobject-introspection generated bindings, some general immaturity challenges with the gobject-introspection library and finally missing or wrong annotations in the GStreamer codebase. So once all these issues are sorted things should look a lot brighter for language bindings, but as we discovered there is a lot of heavy lifting to get there. For instance I thought I had Transmageddon running quite smoothly before I suddenly triggered &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=668862&quot;&gt;this gobject-introspection bug&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
There was a lot of activity around PiTiVi too, with &lt;a href=&quot;http://jeff.ecchi.ca/blog/2012/01/25/restoring-from-backups/&quot;&gt;Jean-François Fortin Tam&lt;/a&gt;, &lt;a href=&quot;http://thiblahute.blogspot.com/&quot;&gt;Thibault Saunier&lt;/a&gt; and &lt;a href=&quot;http://preachwhatyoulive.blogspot.com/&quot;&gt;Antigoni Papantoni&lt;/a&gt; working hard on porting PiTiVi to 0.11 and the GStreamer Editing Services library. And knowing Jean-François Fortin I am sure there will soon be a blog with a lot more details about that &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; /&gt; .&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://thomas.apestaart.org/log/&quot;&gt;Thomas Vander Stichele&lt;/a&gt;, who also wrote a nice blog entry about the event, was working with Andoni Morales Alastruey, both from &lt;a href=&quot;http://www.flumotion.com&quot;&gt;Flumotion&lt;/a&gt;, on porting &lt;a href=&quot;http://www.flumotion.org&quot;&gt;Flumotion&lt;/a&gt; to 0.11, but due to some of the plugins needed not having been ported yet most of their effort ended up being on porting the needed plugins in GStreamer and not so much application porting, but for those of you using plugins such as multifdsink, this effort will be of great value and Andoni also got started on porting some of the non-linux plugins, like the directsoundsink for Windows.&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://n770galaxy.blogspot.com/&quot;&gt;Josep Torra&lt;/a&gt; from &lt;a href=&quot;http://www.fluendo.com&quot;&gt;Fluendo&lt;/a&gt; ended up working with Edward Hervey on hammering out the design for the clutter-gst sink at the conference, but he also found some time to do a port of his nice little tuner tool as you can see from the screenshot below.&lt;/p&gt;
&lt;div class=&quot;wp-caption alignleft&quot; id=&quot;attachment_1811&quot; style=&quot;width: 410px;&quot;&gt;&lt;a href=&quot;http://blogs.gnome.org/uraeus/files/2012/01/Screenshot-josep-torra1.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;size-full wp-image-1811&quot; height=&quot;250&quot; src=&quot;http://blogs.gnome.org/uraeus/files/2012/01/Screenshot-josep-torra1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Tuner tool for GStreamer 0.11&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
&lt;a href=&quot;http://gkiagia.wordpress.com/&quot;&gt;George Kiagiadakis&lt;/a&gt; kept hammering away at the &lt;a href=&quot;http://gstreamer.freedesktop.org/modules/qt-gstreamer.html&quot;&gt;qtGStreamer bindings&lt;/a&gt;, working both on a new release of the bindings for the GStreamer 0.10 series, but also some preparatory work for 0.11.&lt;/p&gt;
&lt;p&gt;
In addition to the application work, &lt;a href=&quot;http://en.wikipedia.org/wiki/Wim_Taymans&quot;&gt;Wim Taymans&lt;/a&gt;, &lt;a href=&quot;http://lwn.net/Articles/464536/&quot;&gt;Tim-Phillip Müller&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/#!/sdroege_&quot;&gt;Sebastian Dröge&lt;/a&gt; from &lt;a href=&quot;http://www.collabora.com&quot;&gt;Collabora&lt;/a&gt; did a lot of core GStreamer clean ups and improvements in addition to providing a lot of assistance, bugfixing and advice for the people doing application porting. All critical items are now sorted in 0.11 although there are some nice to have’s still on the radar, and Wim plans on putting out some new releases next week, to kickstart the countdown to the first 1.0 release.&lt;/p&gt;
&lt;p&gt;
As for my own little pet project &lt;a href=&quot;http://www.linuxrising.org&quot;&gt;Transmageddon&lt;/a&gt;, it is quite far along now, with both manually configured re-encodes and profile re-encodes working. Still debugging remuxing though and I am also waiting for the deinterlacer to get ported to re-enable deinterlacing in the new version. For a screenshot take a look at the one I posted in my &lt;a href=&quot;http://blogs.gnome.org/uraeus/files/2012/01/transmageddon-hackfest.png&quot;&gt;previous blogpost&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Updates from the Intel Linux Graphics land</title>
		<link href="http://dodonov.net/blog/2012/01/29/updates-from-the-intel-linux-graphics-land/"/>
		<id>http://dodonov.net/blog/?p=1252</id>
		<updated>2012-01-29T15:11:34+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;The real life and work issues had eaten most of my time for the past 2 weeks, but things seem to be geting back to normal now. So time for semi-regular updates from the Intel Linux Graphics land.&lt;/p&gt;

&lt;p&gt;Starting with &lt;strong&gt;kernel&lt;/strong&gt;, many notable changes happened in the past weeks. To make our -next merge window process go faster, a new process was adopted for the kernel patch and branch handling process. Let me elaborate a bit more about how this is going to work.&lt;/p&gt;

&lt;p&gt;For the past months, we had the &lt;strong&gt;drm-intel-next&lt;/strong&gt; branch (containing patches intended to go into the next merge window – e.g., when the &lt;strong&gt;3.3&lt;/strong&gt; kernel is being developed, this is the branch which contains patches intended to be included in the &lt;strong&gt;3.4&lt;/strong&gt; kernel version), and also &lt;strong&gt;drm-intel-fixes&lt;/strong&gt; branch (containing patches for the currently developed kernel – e.g., patches which fix issues which were added during the past merge window. So for instance, those are the patches which go into &lt;strong&gt;3.3-rcN&lt;/strong&gt; kernel versions after the merge window). Both of those patches were maintained by &lt;strong&gt;Keith Packard&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;However, the amount of patches combined with other tasks resulted in a somewhat slower patch queuing process. So &lt;strong&gt;Daniel Vetter&lt;/strong&gt; has volunteered himself to maintain the &lt;strong&gt;drm-intel-next&lt;/strong&gt; branch from now on, reviewing, queuing and managing the patches intended to get into the next kernel merge window (for now, those are targeting the &lt;strong&gt;3.4&lt;/strong&gt; kernel version).&lt;/p&gt;

&lt;p&gt;At the same time, &lt;strong&gt;Keith Packard&lt;/strong&gt; will continue to maintain the &lt;strong&gt;drm-intel-fixes&lt;/strong&gt; branch, managing and carrying stability patches for the current kernel.&lt;/p&gt;

&lt;p&gt;And finally, to improve the testing and availability of newer features for older kernel versions, I’ve started my own &lt;strong&gt;drm-intel-backports&lt;/strong&gt; set of branches, for &lt;strong&gt;3.0&lt;/strong&gt;, &lt;strong&gt;3.1&lt;/strong&gt; and &lt;strong&gt;3.2&lt;/strong&gt; kernel versions – containing all the latest and greatest patches from the latest kernel releases. Of course, those patches do not follow the usual kernel stable development model, so they introduce new features, capabilities and possible issues. But for the brave souls out there willing to see and test the absolutely latest development in our drivers on top of their kernels, it should be a great chance to do so.&lt;/p&gt;

&lt;p&gt;(I assume that I was not that fast with the &lt;strong&gt;drm-intel-backports&lt;/strong&gt; patch merging process in the past 2 weeks, so for now it only contains patches from the &lt;strong&gt;3.2&lt;/strong&gt; kernel branch. I intend to backport the &lt;strong&gt;3.3&lt;/strong&gt; and &lt;strong&gt;3.4-next&lt;/strong&gt; patches for all those versions in the coming days. Also, apparently those backported patches do not work correctly with pre-Ironlake chipsets on 3.0 kernel, and there are some display-related issues on top of &lt;strong&gt;3.1&lt;/strong&gt; one – I’ll look into it as well. Sorry for the delay – but the real life interfered with my patching capability for the past weeks…)&lt;/p&gt;

&lt;p&gt;Besides those changes, we had a large number of notable kernel advances in the past weeks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One of the most interesting features is the support for &lt;strong&gt;interlaced&lt;/strong&gt; modes in the Intel Linux Graphics cards. A great work by Peter Ross, Daniel Vetter and Paulo Zanoni resulted in a series of patches which provided support for interlaced modes. These patches will be queued for inclusion in the &lt;strong&gt;3.4&lt;/strong&gt; kernel – but when I’ll get back to my &lt;strong&gt;-backports&lt;/strong&gt; series of patches, I’ll certainly include them into the &lt;strong&gt;3.[012]&lt;/strong&gt; series as well.&lt;/li&gt;
&lt;li&gt;More &lt;strong&gt;Ivy bridge 3-display pipes&lt;/strong&gt; issues were fixed, such as the hibernation problem with 3rd pipe being active.&lt;/li&gt;
&lt;li&gt;Stabilizing the almost-ready-to-launch &lt;strong&gt;Ivy bridge&lt;/strong&gt; platform, the hopefully final forcewake-related fixes were included in both &lt;strong&gt;drm-intel-next&lt;/strong&gt; and &lt;strong&gt;drm-intel-fixes&lt;/strong&gt; branches, and were also cherry-picked by Greg to be included in the stable &lt;strong&gt;3.2&lt;/strong&gt; kernel as well. This should solve the remaining missing interrupts problems we were experiencing.&lt;/li&gt;
&lt;li&gt;Initial patches to support the hardware context switching were sent by &lt;strong&gt;Ben Widawsky&lt;/strong&gt;, and are accessible &lt;a href=&quot;http://cgit.freedesktop.org/~bwidawsk/drm-intel/?h=context-support&quot;&gt;in his own freedesktop.org repository for testing&lt;/a&gt;. Hardware-supported context switching allows to save the hardware registers and state for each process, so it could essentially help the GL_EXT_transform_feedback extension and advanced geometry shading state passing between different stages. And, of course, it can also improve the stability – hardware would ensure that different processes would not interfere with each other in a harmful way.&lt;/li&gt;
&lt;li&gt;And almost a hundred pending patches were picked by Daniel Vetter for his new &lt;strong&gt;drm-intel-next&lt;/strong&gt; branch. The next merge window certainly looks interesting for the Intel Linux Graphics support in this sense…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On &lt;strong&gt;Mesa&lt;/strong&gt; side, the &lt;strong&gt;8.0&lt;/strong&gt; release is getting really close. After the &lt;strong&gt;8.0-rc1&lt;/strong&gt; release a couple of weeks ago, lots of patches were picked into the &lt;strong&gt;8.0&lt;/strong&gt; branch, improving the stability, performance, and fixing many rendering issues – especially on the Ivy Bridge platform. More excitingly, the communication between Mesa and Unigine developers resulted in better support for open-source drivers in the just released &lt;strong&gt;Oil Rush&lt;/strong&gt; game. It is really great to see such cooperation – and Unigine-based game certainly is one of the most advanced graphical releases of past years on Linux.&lt;/p&gt;

&lt;p&gt;Speaking about the Mesa development, this final stabilization phase prior to the &lt;strong&gt;8.0&lt;/strong&gt; release is a great chance for you to report issues, bugs and problems before the release which is expected in a few days from now. So if you observe any last-minute problems and regressions with &lt;strong&gt;Mesa 8.0&lt;/strong&gt; branch – please, let us know! This next release looks really impressive from the technical side, but your help in additional testing is more than welcome.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Wayland&lt;/strong&gt; side, lots of different patches and features were received in the past weeks. Wayland and Weston development goes on with great pace – and the ones of you to attend &lt;strong&gt;FOSDEM&lt;/strong&gt; next week will have some really interesting stuff to gaze upon. But I won’t spoil the surprise &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; .&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Xserver&lt;/strong&gt; development, the &lt;strong&gt;1.12 RC2&lt;/strong&gt; and &lt;strong&gt;1.11.4&lt;/strong&gt; releases were unleashed last week, together with a new &lt;strong&gt;glproto&lt;/strong&gt;, &lt;strong&gt;util-macros&lt;/strong&gt; and &lt;strong&gt;xkeyboard-config&lt;/strong&gt; versions. The development continues non-stop, with hundreds of patches and discussions happening in the mailing lists.&lt;/p&gt;

&lt;p&gt;And finally, the &lt;strong&gt;phoronix&lt;/strong&gt; feedback I got from you over the past weeks &lt;a href=&quot;http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA0MjI&quot;&gt;was amazing&lt;/a&gt;. Thank you all for all your questions and suggestions – it was really nice to hear what you have in mind, what you like (and dislike) in our drivers and what direction we should be heading. I’ll try to answer the last remaining questions in the next few day, and will summarize everything on a dedicated blog post.&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html">Getting conned: eBay/Paypal fun</title>
		<link href="http://www.hadess.net/2012/01/getting-conned-ebaypaypal-fun.html"/>
		<id>tag:blogger.com,1999:blog-977684764667858073.post-60464287575012161</id>
		<updated>2012-01-28T16:19:00+00:00</updated>
		<content type="html">After seeing, this article about &quot;&lt;a href=&quot;http://www.guardian.co.uk/money/2012/jan/27/is-paypal-safe-protection&quot;&gt;How secure is Paypal for eBay sellers&lt;/a&gt;&quot; in this morning's Guardian, I'll share my personal experience with you.&lt;br /&gt;&lt;br /&gt;In October, I sold my first generation MacBook Air on eBay, and got a buyer within a day for the £500 &quot;Buy It Now&quot; price. &quot;Buy It Now&quot; requires using Paypal, and the £500 (minus commission) appeared in my Paypal account¹. After a bit of to and fro, the buyer got in contact, and suggested that he come and pick it up. Saving about £30 of shipping, and sorting out the sale faster, strike me as good ideas.&lt;br /&gt;&lt;br /&gt;The &quot;buyer&quot; said he couldn't come, sent one of his &quot;employees&quot;. A very courteous man came to pick the laptop. In hindsight, he seemed slightly uncomfortable, and looked like he was very happy to see how easy it was going to be.&lt;br /&gt;&lt;br /&gt;The spooky thing is that within 40 minutes -- note, not 3 hours, not a day after, not the day before) -- within 40 minutes of the laptop getting picked up, the holder of the eBay and Paypal accounts submitted an &quot;unauthorised account activity claim&quot;, leading to &quot;payment reversal&quot; (me owing £500 to Paypal²).&lt;br /&gt;&lt;br /&gt;During my call to eBay's customer support, I was told that &quot;I had nothing to worry about&quot; (I'm guessing that would be the case as long as I repaid the £500). Paypal promptly sent a mail mentioning they needed my help, but with very little possibilities from my side (&quot;no courier tracking number? Give us the money now&quot;).&lt;br /&gt;&lt;br /&gt;Surrey Police failed to find the culprits, with the 2 mobile numbers associated with the con only being pay-as-you-go phones (topped up in a little convenience store in North London that only keeps a day's worth of CCTV).&lt;br /&gt;&lt;br /&gt;So my advices:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you sell anything via eBay using Paypal, send it recorded, and keep the receipt.&lt;/li&gt;&lt;li&gt;If you bought a MacBook Air first generation with the serial W88500DJ12G, it's stolen, send me an e-mail.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;And as opposed to Mssrs Lodge and Reakes, Paypal didn't reimburse me anything, and I'm £500 out of pocket.&lt;br /&gt;&lt;br /&gt;¹: I'll pass you the details on eBay referring to a closed Paypal account that meant I got conned two days later than the &quot;buyers&quot; anticipated.&lt;br /&gt;²: On an account that was already closed, see ¹.&lt;br /&gt;&lt;br /&gt;Update: Added mention of eBay's ludicrously bad customer service.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/977684764667858073-60464287575012161?l=www.hadess.net&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>hadess</name>
			<email>noreply@blogger.com</email>
			<uri>http://www.hadess.net/</uri>
		</author>
		<source>
			<title type="html">/bɑs ˈtjɛ̃ no ˈse ʁɑ/  (hadess) | News</title>
			<link rel="self" href="http://www.hadess.net/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-977684764667858073</id>
		</source>
	</entry>

	<entry>
		<title type="html">Wacom tablets in GNOME 3.4</title>
		<link href="http://www.hadess.net/2012/01/wacom-tablets-in-gnome-34.html"/>
		<id>tag:blogger.com,1999:blog-977684764667858073.post-7984899940372226974</id>
		<updated>2012-01-27T13:07:00+00:00</updated>
		<content type="html">&lt;a href=&quot;https://live.gnome.org/action/diff/Design/SystemSettings/Tablet#Mockups&quot;&gt;Working from designs&lt;/a&gt;.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;The cool stuff first&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;Cosimo Cecchi presents the updated Wacom settings&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;Go to &lt;a href=&quot;http://youtu.be/607uIdBmozU&quot;&gt;YouTube directly&lt;/a&gt; if you can't see the video here.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A new arrival&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As mentioned by Cosimo, we have a new library to help us implement the settings you saw: &lt;a href=&quot;http://linuxwacom.git.sourceforge.net/git/gitweb.cgi?p=linuxwacom/libwacom;a=summary&quot;&gt;libwacom&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;libwacom is there to give us metadata about tablets, whether or not they are connected to your system, the list of styli it supports, as well as information about the styli themselves. As you can see from the UI, it's pretty important that we know:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;whether the tablet is builtin (so we know whether you can calibrate it)&lt;/li&gt;&lt;li&gt;which form factor it has&lt;/li&gt;&lt;li&gt;the list of styli it supports&lt;/li&gt;&lt;li&gt;for each stylus, its full name, the number of buttons, what it looks like&lt;/li&gt;&lt;/ul&gt;In the past, all this information was only available within the drivers (as comments), exported in different ways (sysfs attributes), non-machine readable in public documentation, or, worst of all, hidden in Wacom's internal drivers for OS X or Windows.&lt;br /&gt;&lt;br /&gt;So if you have a Wacom tablet, send us a &lt;a href=&quot;http://linuxwacom.git.sourceforge.net/git/gitweb.cgi?p=linuxwacom/libwacom;a=blob;f=data/wacom.example;hb=HEAD&quot;&gt;definition file for your tablet&lt;/a&gt;, so you can configure it with the impression that the software actually knows about your device.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Where's that configuration again&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;After knowing what each tablet had to offer, we had to have a way to match the definitions to XInput devices, assign settings per-tablet, and importantly, switch stylus configuration when the user switches stylus. This is done using the new GsdWacomDevice and GsdWacomStylus objects, shared between gnome-settings-daemon (which will apply the configuration) and gnome-control-center (which will set the configuration).&lt;br /&gt;&lt;br /&gt;This also means we have a few debugging applications, such as list-wacom in gnome-settings-daemon, &lt;a href=&quot;https://gist.github.com/1688632&quot;&gt;to show you the attached GsdWacomDevices&lt;/a&gt;, or test-wacom in gnome-control-center, to test display of particular tablets if you don't own them (this is the place where I spend a lot of time).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What's next&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Peter Hutterer, my input buddy at Red Hat, who made the original Wacom panel for GNOME 3.2, and the first version of libwacom, is currently spending a lot of time on Multi-Touch, and fixing bugs I report in the Wacom driver.&lt;br /&gt;&lt;br /&gt;Jason Gerecke, from Wacom, who did most of the initial work on calibration support, is working on the related display-mapping. This will allow choosing whether a tablet's working area is the whole desktop, or a single monitor when in multiple monitors are used.&lt;br /&gt;&lt;br /&gt;For my part, after fixing the layout bugs that so annoy me in the settings panel, I'll be starting work on tablet button mapping. I look forward to &lt;a href=&quot;http://eu.shop.wacom.eu/detail/index/sArticle/453/sCategory/86366&quot;&gt;making the LEDs on the tablet match up&lt;/a&gt; with the selected keyboard shortcut!&lt;br /&gt;&lt;br /&gt;Many thanks to Cosimo and Monty for helping out with presenting the work, and doing the video.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/977684764667858073-7984899940372226974?l=www.hadess.net&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>hadess</name>
			<email>noreply@blogger.com</email>
			<uri>http://www.hadess.net/</uri>
		</author>
		<source>
			<title type="html">/bɑs ˈtjɛ̃ no ˈse ʁɑ/  (hadess) | News</title>
			<link rel="self" href="http://www.hadess.net/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-977684764667858073</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-GB">Planet GNOME: Changes in planet membership policy</title>
		<link href="http://aruiz.synaptia.net/siliconisland/2012/01/planet-gnome-changes-in-planet-membership-policy.html"/>
		<id>http://aruiz.synaptia.net/siliconisland/2012/01/planet-gnome-changes-in-planet-membership-policy.html</id>
		<updated>2012-01-27T02:56:51+00:00</updated>
		<content type="html" xml:lang="en-GB">&lt;p&gt;Hello Planet GNOME readers and GNOME community members,&lt;/p&gt;
&lt;p&gt;The board of directors has agreed that from now on, to be part of Planet GNOME, it is mandatory to be a member of the GNOME Foundation. In three weeks we will proceed to remove all blogs from people that are not foundation members. This policy change means a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If your blog is in Planet GNOME and you are not a member of the GNOME Foundation, you have three weeks to become a member!&lt;/li&gt;
&lt;li&gt;New planets additions from now on will take this policy into account.&lt;/li&gt;
&lt;li&gt;This doesn't mean that your blog automatically gets into Planet GNOME if you are a member, the same blog review process will be applied to requests for addition.&lt;/li&gt;
&lt;li&gt;There will be a slight exception with GSoC/GOPW members we will encourage them to join in the meantime, but being able to use the planet to report progress to the community is an important part of their work as interns.&lt;/li&gt;
&lt;li&gt;We will delete the feed syndication from the planet if your membership expires.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The rationale behind this new policy is simple, we want to increase the value of becoming a foundation member. Think of this as the blogging equivalent of rocking an @gnome.org e-mail address.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;  I have clarified the language behind the deletion of the feed. Someone in the comments thought I was talking about removing their blogs from blogs.gnome.org. This is not the case, if your membership expires your feed won't show up in the Planet, but that's it, if you have a blog in blogs.gnome.org none of your posts will be deleted.&lt;/p&gt;
&lt;p&gt;Foundationally yours,&lt;br /&gt;the Planet GNOME editors team. &lt;/p&gt;</content>
		<author>
			<name>Alberto Ruiz</name>
			<uri>http://aruiz.synaptia.net/siliconisland/</uri>
		</author>
		<source>
			<title type="html">Silicon Island</title>
			<subtitle type="html">Random thoughts and rants about open source and IT</subtitle>
			<link rel="self" href="http://aruiz.synaptia.net/siliconisland/rss.xml"/>
			<id>http://aruiz.synaptia.net/siliconisland/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">The Case for the /usr Merge</title>
		<link href="http://0pointer.de/blog/projects/the-usr-merge.html"/>
		<id>http://0pointer.de/blog/projects/the-usr-merge</id>
		<updated>2012-01-26T21:29:00+00:00</updated>
		<content type="html">&lt;p&gt;One of the features of Fedora 17 is &lt;a href=&quot;https://fedoraproject.org/wiki/Features/UsrMove&quot;&gt;the /usr merge&lt;/a&gt;, put
forward by Harald Hoyer and Kay Sievers&lt;sup&gt;[1]&lt;/sup&gt;. In the time since this
feature has been proposed repetitive discussions took place all over the various
Free Software communities, and usually the same questions were asked: what the reasons
behind this feature were, and whether it makes sense to adopt the same scheme for
distribution XYZ, too.&lt;/p&gt;

&lt;p&gt;Especially in the Non-Fedora world it appears to be socially unacceptable to
actually have a look at the &lt;a href=&quot;https://fedoraproject.org/wiki/Features/UsrMove&quot;&gt;Fedora feature page&lt;/a&gt;
(where many of the questions are already brought up and answered) which is very unfortunate. To
improve the situation I spent some time today to summarize the reasons for the
/usr merge independently. I'd hence like to direct you to this new page I put
up which tries to summarize the reasons for this, with an emphasis on the
compatibility point of view:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge&quot;&gt;The Case for the /usr Merge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that even though this page is in the systemd wiki, what it covers is
mostly orthogonal to systemd. systemd supports both systems with a merged /usr
and with a split /usr, and the /usr merge should be interesting for non-systemd
distributions as well.&lt;/p&gt;

&lt;p&gt;Primarily I put this together to have a nice place to point all those folks
who continue to write me annoyed emails, even though I am actually not even
working on all of this...&lt;/p&gt;

&lt;p&gt;Enjoy the read!&lt;/p&gt;

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

&lt;p&gt;&lt;small&gt;[1] And not actually by me, I am just a supportive spectator and am
not doing any work on it. Unfortunately some tech press folks created the false
impression I was behind this. But credit where credit is due, this is all
Harald's and Kay's work.&lt;/small&gt;&lt;/p&gt;</content>
		<author>
			<name>lennart (at) poettering (dot) net</name>
			<uri>http://0pointer.de/blog</uri>
		</author>
		<source>
			<title type="html">Wunschkonzert, Ponyhof und Abenteuerspielplatz</title>
			<subtitle type="html">Lennart's Blog</subtitle>
			<link rel="self" href="http://0pointer.de/blog/index.rss20"/>
			<id>http://0pointer.de/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">GStreamer Hackfest in Malaga update</title>
		<link href="http://blogs.gnome.org/uraeus/2012/01/26/gstreamer-hackfest-in-malaga-update/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1797</id>
		<updated>2012-01-26T14:12:42+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Things have been going really well here at the &lt;a href=&quot;http://gstreamer.freedesktop.org/wiki/GStreamerHackfest2012&quot;&gt;GStreamer Hackfest&lt;/a&gt; in Malaga. Thanks to the help of Ara and Yaiza from &lt;a href=&quot;http://www.nidomalaga.com/&quot;&gt;Nido Malaga&lt;/a&gt;, we have a great venue in downtown Malaga and they have also helped us greatly with sorting out food.&lt;br /&gt;
We have a great group of people here and are making great progress, and by tomorrow I hope we will have screenshots of quite a few applications running with GStreamer 0.11, for instance both &lt;a href=&quot;http://projects.gnome.org/rhythmbox/&quot;&gt;Rhythmbox&lt;/a&gt; and &lt;a href=&quot;http://www.jokosher.org&quot;&gt;Jokosher&lt;/a&gt; for instance is already screen shootable, if not fully functional &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;wp-caption alignleft&quot; id=&quot;attachment_1798&quot; style=&quot;width: 410px;&quot;&gt;&lt;a href=&quot;http://blogs.gnome.org/uraeus/files/2012/01/hackfest-malaga-2012.jpg&quot;&gt;&lt;img alt=&quot;GStreamer Hackfest Malaga 2012&quot; class=&quot;size-full wp-image-1798&quot; height=&quot;256&quot; src=&quot;http://blogs.gnome.org/uraeus/files/2012/01/hackfest-malaga-2012.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;GStreamer Hackfest Malaga 2012&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Also making good progress on &lt;a href=&quot;http://www.linuxrising.org&quot;&gt;Transmageddon&lt;/a&gt;, even if the move to GObject Introspection bindings are making things a bit more complicated. Screenshot below of the progress so far.&lt;/p&gt;
&lt;div class=&quot;wp-caption alignleft&quot; id=&quot;attachment_1800&quot; style=&quot;width: 564px;&quot;&gt;&lt;a href=&quot;http://blogs.gnome.org/uraeus/files/2012/01/transmageddon-hackfest.png&quot;&gt;&lt;img alt=&quot;Transmageddon at Hackfest in Malaga 2012&quot; class=&quot;size-full wp-image-1800&quot; height=&quot;558&quot; src=&quot;http://blogs.gnome.org/uraeus/files/2012/01/transmageddon-hackfest.png&quot; width=&quot;554&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Transmageddon at Hackfest in Malaga 2012&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Also a big thanks to &lt;a href=&quot;http://www.fluendo.com&quot;&gt;Fluendo&lt;/a&gt; who is sponsoring the lunches at the hackfest and &lt;a href=&quot;http://www.collabora.com&quot;&gt;Collabora&lt;/a&gt; who is sponsoring tonight’s dinner. Ensuring that no hacker is left hungry during this hackfest.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update: Yaiza took &lt;a href=&quot;https://www.facebook.com/media/set/?set=a.311337368901837.64954.240994329269475&amp;amp;type=1&quot;&gt;these photos from the hackfest&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Interview with Arun Raghavan about PulseAudio</title>
		<link href="http://blogs.gnome.org/uraeus/2012/01/25/interview-with-arun-raghavan-about-pulseaudio/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1795</id>
		<updated>2012-01-25T15:45:33+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;With all the talk generated by &lt;a href=&quot;http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/&quot;&gt;Arun Raghavans blog post comparing PulseAudio and Audioflinger&lt;/a&gt; I thought it would be good to follow up with an interview with Arun about the latest developments in PulseAudio and the way forward for the project. You can find &lt;a href=&quot;http://www.collabora.com/about/pulseaudio-interview/&quot;&gt;the PulseAudio interview here&lt;/a&gt;. I also made a new page listing all the &lt;a href=&quot;http://www.collabora.com/about/interviews/&quot;&gt;Collabora developer interviews done so far&lt;/a&gt;. Enjoy &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; /&gt; &lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">GStreamer Hackfest in Malaga</title>
		<link href="http://blogs.gnome.org/uraeus/2012/01/23/gstreamer-hackfest-in-malaga/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1789</id>
		<updated>2012-01-23T09:39:45+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Tomorrow I will be heading off to attend the &lt;a href=&quot;http://gstreamer.freedesktop.org/wiki/GStreamerHackfest2012&quot;&gt;GStreamer Application Porting Hackfest&lt;/a&gt; in Malaga, Spain. I think we have managed to pull together an absolutely incredible group of people for this event and I have great hopes that by next weekend we will have squashed a ton of bugs in GStreamer 0.11/1.0 and also have initial ports of a long range of important applications and bindings. This is the first time in GStreamer history that we are trying to hold a hackfest focused on application developers, but hopefully it will be the first of many and that they can become a good way for the core GStreamer community and the application development community to interact and collaborate more closely.&lt;/p&gt;
&lt;p&gt;Also want to say a special thanks to the community members attending the event on their own and also to the companies sending their employees to the hackfest; &lt;a href=&quot;http://www.collabora.com&quot;&gt;Collabora&lt;/a&gt;, &lt;a href=&quot;http://www.fluendo.com&quot;&gt;Fluendo&lt;/a&gt;, &lt;a href=&quot;http://www.flumotion.com&quot;&gt;Flumotion&lt;/a&gt; and  &lt;a href=&quot;http://www.igalia.com/&quot;&gt;Igalia&lt;/a&gt; and finally a special thanks to the &lt;a href=&quot;http://foundation.gnome.org/&quot;&gt;GNOME Foundation&lt;/a&gt; for sponsoring some of the attendees.&lt;/p&gt;
&lt;p&gt;Hopefully I will be able to post some screenshots of a fully functional GStreamer 1.0 &lt;a href=&quot;http://www.linuxrising.org&quot;&gt;Transmageddon&lt;/a&gt; next weekend &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; /&gt; &lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">A Little Bit is Better Than Nada</title>
		<link href="http://corbinsimpson.com/entries/a-little-bit-is-better-than-nada.html"/>
		<id>http://corbinsimpson.com/entries/a-little-bit-is-better-than-nada.html</id>
		<updated>2012-01-22T12:00:00+00:00</updated>
		<content type="html">&lt;p&gt;It is a running joke in the &lt;a class=&quot;reference external&quot; href=&quot;http://www.x.org/&quot;&gt;X.Org&lt;/a&gt; community that X12 development will
commence as soon as all of the X11 bugs in the &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.freedesktop.org/&quot;&gt;FreeDesktop.org bug tracker&lt;/a&gt;
have been closed. When I first heard this, my reaction was, of course,
&quot;Challenge accepted!&quot; But where to start?&lt;/p&gt;
&lt;p&gt;There were about 10,000 bugs open on the tracker at that point, a few years
ago. We're definitely improving; there are about 9180 bugs open (at the time
of writing) which could be considered relevant to any kind of desktop
development. Many of those don't belong to anything in X11, but assuming they
did...&lt;/p&gt;
&lt;p&gt;Pretend that all of the card-carrying members of X.Org closed 92 bugs. That
would be 1% per person. We could be done with X11! So, during XDC 2011, I
pulled out my netbook, and started closing bugs. I picked, as my targets,
things that nobody would miss, like Xprint.&lt;/p&gt;
&lt;p&gt;I closed some Xprint-related bugs, before simply shuttering everything in the
Xprint product. I also picked up a couple of stray bugs. Finally, with
maintainer permission, I closed everything still assigned to xf86-video-nv.&lt;/p&gt;
&lt;p&gt;The results:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;24 Xprint-related bugs&lt;/li&gt;
&lt;li&gt;37 bugs in Product: xprint&lt;/li&gt;
&lt;li&gt;42 bugs in Component: driver/nv&lt;/li&gt;
&lt;li&gt;37 bugs in Component: driver/nVidia (open)&lt;/li&gt;
&lt;li&gt;#9455, #28657, #29832, #30129&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;A total of 144 bugs. We can do this, guys!&lt;/p&gt;</content>
		<author>
			<name>Corbin Simpson</name>
			<uri>http://corbinsimpson.com/rss.xml</uri>
		</author>
		<source>
			<title type="html">Corbin Simpson</title>
			<link rel="self" href="http://corbinsimpson.com/rss.xml"/>
			<id>http://corbinsimpson.com/rss.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Plumbers Wishlist, The Third Edition, a.k.a. &quot;The Thank You Edition&quot;</title>
		<link href="http://0pointer.de/blog/projects/plumbers-wishlist-3.html"/>
		<id>http://0pointer.de/blog/projects/plumbers-wishlist-3</id>
		<updated>2012-01-20T20:26:00+00:00</updated>
		<content type="html">&lt;p&gt;Last October &lt;a href=&quot;http://0pointer.de/blog/projects/plumbers-wishlist-2.html&quot;&gt;we published a
wishlist for plumbing related features&lt;/a&gt; we'd like to see added to the Linux
kernel. Three months later it's time to publish a short update, and explain
what has been implemented in the kernel, what people have started working on,
and what's still missing.&lt;/p&gt;

&lt;p&gt;The full, updated list is &lt;a href=&quot;https://docs.google.com/document/pub?id=1RmJrtIoTnivkmR9KCqfJNBnEll4X9Jtu0xj5w6hFGs8&quot;&gt;available
on Google Docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In general, I must say that the list turned out to be a great success. It
shows how awesome the Open Source community is: Just ask nicely and there's a
good chance they'll fulfill your wishes! Thank you very much, Linux
community!&lt;/p&gt;

&lt;p&gt;We'd like to thank everybody who worked on any of the features on that list:
Lucas De Marchi, Andi Kleen, Dan Ballard, Li Zefan, Kirill A. Shutemov,
Davidlohr Bueso, Cong Wang, Lennart Poettering, Kay Sievers.&lt;/p&gt;

&lt;p&gt;Of the items on the list 5 have been fully implemented and are already part
of a released kernel, or already merged for inclusion for the next kernels
being released.&lt;/p&gt;

&lt;p&gt;For 4 further items patches have been posted, and I am hoping they'll get
merged eventually. Davidlohr, Wang, Zefan, Kirill, it would be great if you'd
continue working on your patches, as we think they are following the right
approach&lt;sup&gt;[1]&lt;/sup&gt; even if there was some opposition to them on LKML. So,
please keep pushing to solve the outstanding issues and thanks for your work so far!&lt;/p&gt;

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

&lt;p&gt;&lt;small&gt;[1] Yes, I still believe that tmpfs quota should be implemented via
resource limits, as everything else wouldn't work, as we don't want to
implement complex and fragile userspace infrastructure to racily upload complex
quota data for all current and future UIDs ever used on the system into each
tmpfs mount point at mount time.&lt;/small&gt;&lt;/p&gt;</content>
		<author>
			<name>lennart (at) poettering (dot) net</name>
			<uri>http://0pointer.de/blog</uri>
		</author>
		<source>
			<title type="html">Wunschkonzert, Ponyhof und Abenteuerspielplatz</title>
			<subtitle type="html">Lennart's Blog</subtitle>
			<link rel="self" href="http://0pointer.de/blog/index.rss20"/>
			<id>http://0pointer.de/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html">XKB breaking grabs - CVE-2012-0064</title>
		<link href="http://feedproxy.google.com/~r/Who-t/~3/KBUJeNOWYMM/xkb-breaking-grabs-cve-2012-0064.html"/>
		<id>tag:blogger.com,1999:blog-6112936277054198647.post-8782642693717588379</id>
		<updated>2012-01-20T02:39:39+00:00</updated>
		<content type="html">Given that there is a copious amount of misinformation being spread, here is a summary of &lt;a href=&quot;https://www.redhat.com/security/data/cve/CVE-2012-0064.html&quot;&gt;CVE-2012-0064&lt;/a&gt;, straight from a horse's mouth.

&lt;h2&gt;Outline of the issue&lt;/h2&gt;
The bug allows users to work around screen locking (e.g. gnome-screensaver) by hitting Control+Alt+keypad multiply or Control+Alt+keypad divide. This terminates the input grab the screensaver has and thus allows a user to interact with the desktop, skipping the password entry.

&lt;h2&gt;Affected versions&lt;/h2&gt;
Affected is anyone running X server 1.11 or later (or release candidates thereof). So if &quot;Xorg -version&quot; shows something else on your box, stop worrying. I doubt any distribution would have back-ported the patches.
&lt;br /&gt;&lt;br /&gt;
In Fedora/Red Hat land - the only distributions affected are Fedora 16 and current Fedora Rawhide. Both have been fixed, the F16 update is avaialble &lt;a href=&quot;https://admin.fedoraproject.org/updates/FEDORA-2012-0712/xkeyboard-config-2.3-3.fc16&quot;&gt;here&lt;/a&gt;. Note that the update is to &lt;b&gt;xkeyboard-config&lt;/b&gt;, not to the server itself.
&lt;br /&gt;&lt;br /&gt;

Fedora 15 is not affected. RHEL 4, 5, 6 and thus CentOS 4, 5, 6 and other derivatives are not affected. I believe that most other distributions have now pushed out updates as well, if you want to link to the respective updates, please do so in the comments.
&lt;br /&gt;&lt;br /&gt;
Sergey has also pushed out &lt;a href=&quot;http://listserv.bat.ru/xkb/Message/8375.html&quot;&gt;xkeyboard-config 2.5&lt;/a&gt; today with the fix included.

&lt;h2&gt;History of the feature&lt;/h2&gt;
The X protocol does not allow the server to break grabs. Once a client has a grab, the server must wait for that client to release the grab, terminate, or the grab window to become unviewable. This is an issue when debugging applications - if your client has a keyboard grab, you cannot use the debugger since all key events will go to the client being debugged. To avoid this issue, the X server has had two combinations to break grabs: Control+Alt+Keypad multiply and Control+Alt+Keypad divide. They forced grab termination inside the X server and although against the protocol it made debugging possible. The option required explicit enabling in the xorg.conf.
&lt;br /&gt;&lt;br /&gt;
These options were removed in server 1.4 and disabled since. Which made debugging hard, so last year we merged a patch to bring them back, together with some other features. They are triggered by XKB actions (as they used to be). The plan was to remove the XKB actions from the default keymap so that the action is available on request but not enabled by default. This is where a miscommunication happened, the removal from the default keymap never happened. So server 1.11 and vanilla xkeyboard-config ship with both the actions available and present in the current keymap. As a result, any user can break a grab from any application and thus get around screen locking.

&lt;h2&gt;Outline of the fix&lt;/h2&gt;
To shoot yourself in the foot, you need two items: a gun and a trigger. We have removed the trigger. The fix we've now pushed into xkeyboard-config removes the actions from the default keymap and into an XKB option instead. So the fix does not remove the gun, but it requires the user to screw the trigger in themselves before trying to hurt themselves. In a default configuration, it is thus no longer possible to break the grab of your screensaver.
&lt;br /&gt;&lt;br /&gt;
To re-enable grab debugging, run setxkbmap with &quot;-option grab:break_actions&quot; or enable &quot;Allow breaking grabs with keyboard actions (warning: security risk)&quot; in the &quot;Miscellaneous compatibility options&quot; in your keyboard layout configuration tool of choice.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6112936277054198647-8782642693717588379?l=who-t.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Who-t/~4/KBUJeNOWYMM&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Peter Hutterer</name>
			<email>noreply@blogger.com</email>
			<uri>http://who-t.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Who-T</title>
			<link rel="self" href="http://feeds.feedburner.com/Who-t"/>
			<id>tag:blogger.com,1999:blog-6112936277054198647</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">systemd for Administrators, Part XII</title>
		<link href="http://0pointer.de/blog/projects/security.html"/>
		<id>http://0pointer.de/blog/projects/security</id>
		<updated>2012-01-20T01:26:00+00:00</updated>
		<content type="html">&lt;p&gt;Here's &lt;a href=&quot;http://0pointer.de/blog/projects/inetd.html&quot;&gt;the&lt;/a&gt; &lt;a href=&quot;http://0pointer.de/blog/projects/instances.html&quot;&gt;twelfth&lt;/a&gt; &lt;a href=&quot;http://0pointer.de/blog/projects/on-etc-sysinit.html&quot;&gt;installment&lt;/a&gt;
&lt;a href=&quot;http://0pointer.de/blog/projects/the-new-configuration-files.html&quot;&gt;of&lt;/a&gt;

&lt;a href=&quot;http://0pointer.de/blog/projects/blame-game.html&quot;&gt;my&lt;/a&gt; &lt;a href=&quot;http://0pointer.de/blog/projects/changing-roots&quot;&gt;ongoing&lt;/a&gt; &lt;a href=&quot;http://0pointer.de/blog/projects/three-levels-of-off.html&quot;&gt;series&lt;/a&gt;
&lt;a href=&quot;http://0pointer.de/blog/projects/systemd-for-admins-4.html&quot;&gt;on&lt;/a&gt;
&lt;a href=&quot;http://0pointer.de/blog/projects/systemd-for-admins-3.html&quot;&gt;systemd&lt;/a&gt;
&lt;a href=&quot;http://0pointer.de/blog/projects/systemd-for-admins-2.html&quot;&gt;for&lt;/a&gt;
&lt;a href=&quot;http://0pointer.de/blog/projects/systemd-for-admins-1.html&quot;&gt;Administrators&lt;/a&gt;:&lt;/p&gt;

&lt;h4&gt;Securing Your Services&lt;/h4&gt;

&lt;p&gt;One of the core features of Unix systems is the idea of privilege separation
between the different components of the OS. Many system services run under
their own user IDs thus limiting what they can do, and hence the impact they
may have on the OS in case they get exploited.&lt;/p&gt;

&lt;p&gt;This kind of privilege separation only provides very basic protection
however, since in general system services run this way can still do at least as
much as a normal local users, though not as much as root. For security purposes
it is however very interesting to limit even further what services can do, and
shut them off a couple of things that normal users are allowed to do.&lt;/p&gt;

&lt;p&gt;A great way to limit the impact of services is by employing MAC technologies
such as SELinux. If you are interested to secure down your server, running
SELinux is a very good idea. systemd enables developers and administrators to
apply additional restrictions to local services independently of a MAC. Thus,
regardless whether you are able to make use of SELinux you may still enforce
certain security limits on your services.&lt;/p&gt;

&lt;p&gt;In this iteration of the series we want to focus on a couple of these
security features of systemd and how to make use of them in your services.
These features take advantage of a couple of Linux-specific technologies that have
been available in the kernel for a long time, but never have been exposed in a
widely usable fashion. These systemd features have been designed to be as easy to use
as possible, in order to make them attractive to administrators and upstream
developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Isolating services from the network&lt;/li&gt;
&lt;li&gt;Service-private &lt;tt&gt;/tmp&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Making directories appear read-only or inaccessible to services&lt;/li&gt;
&lt;li&gt;Taking away capabilities from services&lt;/li&gt;
&lt;li&gt;Disallowing forking, limiting file creation for services&lt;/li&gt;
&lt;li&gt;Controlling device node access of services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All options described here are documented in systemd's man pages, notably &lt;a href=&quot;http://0pointer.de/public/systemd-man/systemd.exec.html&quot;&gt;systemd.exec(5)&lt;/a&gt;.
Please consult these man pages for further details.&lt;/p&gt;

&lt;p&gt;All these options are available on all systemd systems, regardless if
SELinux or any other MAC is enabled, or not.&lt;/p&gt;

&lt;p&gt;All these options are relatively cheap, so if in doubt use them. Even if you
might think that your service doesn't write to &lt;tt&gt;/tmp&lt;/tt&gt; and hence enabling
&lt;tt&gt;PrivateTmp=yes&lt;/tt&gt; (as described below) might not be necessary, due to
today's complex software it's still beneficial to enable this feature, simply
because libraries you link to (and plug-ins to those libraries) which you do
not control might need temporary files after all. Example: you never know what
kind of NSS module your local installation has enabled, and what that NSS module
does with &lt;tt&gt;/tmp&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;These options are hopefully interesting both for administrators to secure
their local systems, and for upstream developers to ship their services secure
by default.  We strongly encourage upstream developers to consider using these
options by default in their upstream service units. They are very easy to make
use of and have major benefits for security.&lt;/p&gt;

&lt;h4&gt;Isolating Services from the Network&lt;/h4&gt;

&lt;p&gt;A very simple but powerful configuration option you may use in systemd
service definitions is &lt;tt&gt;PrivateNetwork=&lt;/tt&gt;:&lt;/p&gt;

&lt;pre&gt;...
[Service]
ExecStart=...
PrivateNetwork=yes
...&lt;/pre&gt;

&lt;p&gt;With this simple switch a service and all the processes it consists of are
entirely disconnected from any kind of networking. Network interfaces became
unavailable to the processes, the only one they'll see is the loopback device
&quot;lo&quot;, but it is isolated from the real host loopback. This is a very powerful
protection from network attacks.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Caveat:&lt;/b&gt; Some services require the network to be operational. Of
course, nobody would consider using &lt;tt&gt;PrivateNetwork=yes&lt;/tt&gt; on a
network-facing service such as Apache. However even for non-network-facing
services network support might be necessary and not always obvious. Example: if
the local system is configured for an LDAP-based user database doing glibc name
lookups with calls such as &lt;tt&gt;getpwnam()&lt;/tt&gt; might end up resulting in network access.
That said, even in those cases it is more often than not OK to use
&lt;tt&gt;PrivateNetwork=yes&lt;/tt&gt; since user IDs of system service users are required to
be resolvable even without any network around. That means as long as the only
user IDs your service needs to resolve are below the magic 1000 boundary using
&lt;tt&gt;PrivateNetwork=yes&lt;/tt&gt; should be OK.&lt;/p&gt;

&lt;p&gt;Internally, this feature makes use of network namespaces of the kernel. If
enabled a new network namespace is opened and only the loopback device
configured in it.&lt;/p&gt;

&lt;h4&gt;Service-Private /tmp&lt;/h4&gt;

&lt;p&gt;Another very simple but powerful configuration switch is
&lt;tt&gt;PrivateTmp=&lt;/tt&gt;:&lt;/p&gt;

&lt;pre&gt;...
[Service]
ExecStart=...
PrivateTmp=yes
...&lt;/pre&gt;

&lt;p&gt;If enabled this option will ensure that the &lt;tt&gt;/tmp&lt;/tt&gt; directory the
service will see is private and isolated from the host system's &lt;tt&gt;/tmp&lt;/tt&gt;.
&lt;tt&gt;/tmp&lt;/tt&gt; traditionally has been a shared space for all local services and
users. Over the years it has been a major source of security problems for a
multitude of services. Symlink attacks and DoS vulnerabilities due to guessable
&lt;tt&gt;/tmp&lt;/tt&gt; temporary files are common. By isolating the service's
&lt;tt&gt;/tmp&lt;/tt&gt; from the rest of the host, such vulnerabilities become moot.&lt;/p&gt;

&lt;p&gt;For Fedora 17 a &lt;a href=&quot;https://fedoraproject.org/wiki/Features/ServicesPrivateTmp&quot;&gt;feature has
been accepted&lt;/a&gt; in order to enable this option across a large number of
services.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Caveat:&lt;/b&gt; Some services actually misuse &lt;tt&gt;/tmp&lt;/tt&gt; as a location
for IPC sockets and other communication primitives, even though this is almost
always a vulnerability (simply because if you use it for communication you need
guessable names, and guessable names make your code vulnerable to DoS and symlink
attacks) and &lt;tt&gt;/run&lt;/tt&gt; is the much safer replacement for this, simply
because it is not a location writable to unprivileged processes. For example,
X11 places it's communication sockets below &lt;tt&gt;/tmp&lt;/tt&gt; (which is actually
secure -- though still not ideal -- in this exception since it does so in a
safe subdirectory which is created at early boot.) Services which need to
communicate via such communication primitives in &lt;tt&gt;/tmp&lt;/tt&gt; are no
candidates for &lt;tt&gt;PrivateTmp=&lt;/tt&gt;. Thankfully these days only very few
services misusing &lt;tt&gt;/tmp&lt;/tt&gt; like this remain.&lt;/p&gt;

&lt;p&gt;Internally, this feature makes use of file system namespaces of the kernel.
If enabled a new file system namespace is opened inheritng most of the host
hierarchy with the exception of &lt;tt&gt;/tmp&lt;/tt&gt;.&lt;/p&gt;

&lt;h4&gt;Making Directories Appear Read-Only or Inaccessible to Services&lt;/h4&gt;

&lt;p&gt;With the &lt;tt&gt;ReadOnlyDirectories=&lt;/tt&gt; and &lt;tt&gt;InaccessibleDirectories=&lt;/tt&gt;
options it is possible to make the specified directories inaccessible for
writing resp. both reading and writing to the service:&lt;/p&gt;

&lt;pre&gt;...
[Service]
ExecStart=...
InaccessibleDirectories=/home
ReadOnlyDirectories=/var
...
&lt;/pre&gt;

&lt;p&gt;With these two configuration lines the whole tree below &lt;tt&gt;/home&lt;/tt&gt;
becomes inaccessible to the service (i.e. the directory will appear empty and
with 000 access mode), and the tree below &lt;tt&gt;/var&lt;/tt&gt; becomes read-only.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Caveat:&lt;/b&gt; Note that &lt;tt&gt;ReadOnlyDirectories=&lt;/tt&gt; currently is not
recursively applied to submounts of the specified directories (i.e. mounts below
&lt;tt&gt;/var&lt;/tt&gt; in the example above stay writable). This is likely to get fixed
soon.&lt;/p&gt;

&lt;p&gt;Internally, this is also implemented based on file system namspaces.&lt;/p&gt;

&lt;h4&gt;Taking Away Capabilities From Services&lt;/h4&gt;

&lt;p&gt;Another very powerful security option in systemd is
&lt;tt&gt;CapabilityBoundingSet=&lt;/tt&gt; which allows to limit in a relatively fine
grained fashion which kernel capabilities a service started retains:&lt;/p&gt;

&lt;pre&gt;...
[Service]
ExecStart=...
CapabilityBoundingSet=CAP_CHOWN CAP_KILL
...
&lt;/pre&gt;

&lt;p&gt;In the example above only the CAP_CHOWN and CAP_KILL capabilities are
retained by the service, and the service and any processes it might create have
no chance to ever acquire any other capabilities again, not even via setuid
binaries. The list of currently defined capabilities is available in &lt;a href=&quot;http://linux.die.net/man/7/capabilities&quot;&gt;capabilities(7)&lt;/a&gt;.
Unfortunately some of the defined capabilities are overly generic (such as
CAP_SYS_ADMIN), however they are still a very useful tool, in particular for
services that otherwise run with full root privileges.&lt;/p&gt;

&lt;p&gt;To identify precisely which capabilities are necessary for a service to run
cleanly is not always easy and requires a bit of testing. To simplify this
process a bit, it is possible to blacklist certain capabilities that are
definitely not needed instead of whitelisting all that might be needed. Example: the
CAP_SYS_PTRACE is a particularly powerful and security relevant capability
needed for the implementation of debuggers, since it allows introspecting and
manipulating any local process on the system. A service like Apache obviously
has no business in being a debugger for other processes, hence it is safe to
remove the capability from it:&lt;/p&gt;

&lt;pre&gt;...
[Service]
ExecStart=...
CapabilityBoundingSet=~CAP_SYS_PTRACE
...&lt;/pre&gt;

&lt;p&gt;The &lt;tt&gt;~&lt;/tt&gt; character the value assignment here is prefixed with inverts
the meaning of the option: instead of listing all capabalities the service
will retain you may list the ones it will not retain.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Caveat:&lt;/b&gt; Some services might react confused if certain capabilities are
made unavailable to them. Thus when determining the right set of capabilities
to keep around you need to do this carefully, and it might be a good idea to talk
to the upstream maintainers since they should know best which operations a
service might need to run successfully.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Caveat 2:&lt;/b&gt; &lt;a href=&quot;https://forums.grsecurity.net/viewtopic.php?f=7&amp;amp;t=2522&quot;&gt;Capabilities are
not a magic wand.&lt;/a&gt; You probably want to combine them and use them in
conjunction with other security options in order to make them truly useful.&lt;/p&gt;

&lt;p&gt;To easily check which processes on your system retain which capabilities use
the &lt;tt&gt;pscap&lt;/tt&gt; tool from the &lt;tt&gt;libcap-ng-utils&lt;/tt&gt; package.&lt;/p&gt;

&lt;p&gt;Making use of systemd's &lt;tt&gt;CapabilityBoundingSet=&lt;/tt&gt; option is often a
simple, discoverable and cheap replacement for patching all system daemons
individually to control the capability bounding set on their own.&lt;/p&gt;

&lt;h4&gt;Disallowing Forking, Limiting File Creation for Services&lt;/h4&gt;

&lt;p&gt;Resource Limits may be used to apply certain security limits on services
being run. Primarily, resource limits are useful for resource control (as the
name suggests...) not so much access control. However, two of them can be
useful to disable certain OS features: RLIMIT_NPROC and RLIMIT_FSIZE may be
used to disable forking and disable writing of any files with a size &amp;gt;
0:&lt;/p&gt;

&lt;pre&gt;...
[Service]
ExecStart=...
LimitNPROC=1
LimitFSIZE=0
...&lt;/pre&gt;

&lt;p&gt;Note that this will work only if the service in question drops privileges
and runs under a (non-root) user ID of its own or drops the CAP_SYS_RESOURCE
capability, for example via &lt;tt&gt;CapabilityBoundingSet=&lt;/tt&gt; as discussed above.
Without that a process could simply increase the resource limit again thus
voiding any effect.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Caveat:&lt;/b&gt; &lt;tt&gt;LimitFSIZE=&lt;/tt&gt; is pretty brutal. If the service
attempts to write a file with a size &amp;gt; 0, it will immeidately be killed with
the SIGXFSZ which unless caught terminates the process. Also, creating files
with size 0 is still allowed, even if this option is used.&lt;/p&gt;

&lt;p&gt;For more information on these and other resource limits, see &lt;a href=&quot;http://linux.die.net/man/2/setrlimit&quot;&gt;setrlimit(2)&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Controlling Device Node Access of Services&lt;/h4&gt;

&lt;p&gt;Devices nodes are an important interface to the kernel and its drivers.
Since drivers tend to get much less testing and security checking than the core
kernel they often are a major entry point for security hacks. systemd allows
you to control access to devices individually for each service:&lt;/p&gt;

&lt;pre&gt;...
[Service]
ExecStart=...
DeviceAllow=/dev/null rw
...&lt;/pre&gt;

&lt;p&gt;This will limit access to &lt;tt&gt;/dev/null&lt;/tt&gt; and only this device node,
disallowing access to any other device nodes.&lt;/p&gt;

&lt;p&gt;The feature is implemented on top of the &lt;tt&gt;devices&lt;/tt&gt; cgroup controller.&lt;/p&gt;

&lt;h4&gt;Other Options&lt;/h4&gt;

&lt;p&gt;Besides the easy to use options above there are a number of other security
relevant options available. However they usually require a bit of preparation
in the service itself and hence are probably primarily useful for upstream
developers. These options are &lt;tt&gt;RootDirectory=&lt;/tt&gt; (to set up
&lt;tt&gt;chroot()&lt;/tt&gt; environments for a service) as well as &lt;tt&gt;User=&lt;/tt&gt; and
&lt;tt&gt;Group=&lt;/tt&gt; to drop privileges to the specified user and group. These
options are particularly useful to greatly simplify writing daemons, where all
the complexities of securely dropping privileges can be left to systemd, and
kept out of the daemons themselves.&lt;/p&gt;

&lt;p&gt;If you are wondering why these options are not enabled by default: some of
them simply break seamntics of traditional Unix, and to maintain compatibility
we cannot enable them by default. e.g. since traditional Unix enforced that
&lt;tt&gt;/tmp&lt;/tt&gt; was a shared namespace, and processes could use it for IPC we
cannot just go and turn that off globally, just because &lt;tt&gt;/tmp&lt;/tt&gt;'s role in
IPC is now replaced by &lt;tt&gt;/run&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;And that's it for now. If you are working on unit files for upstream or in
your distribution, please consider using one or more of the options listed
above. If you service is secure by default by taking advantage of these options
this will help not only your users but also make the Internet a safer
place.&lt;/p&gt;</content>
		<author>
			<name>lennart (at) poettering (dot) net</name>
			<uri>http://0pointer.de/blog</uri>
		</author>
		<source>
			<title type="html">Wunschkonzert, Ponyhof und Abenteuerspielplatz</title>
			<subtitle type="html">Lennart's Blog</subtitle>
			<link rel="self" href="http://0pointer.de/blog/index.rss20"/>
			<id>http://0pointer.de/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">starting on Wayland development</title>
		<link href="http://vignatti.wordpress.com/2012/01/18/starting-on-wayland-development/"/>
		<id>http://vignatti.wordpress.com/?p=541</id>
		<updated>2012-01-18T13:53:43+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Do you wanna contribute to a funky open-source project? Are you tired of your nerdy and boring community of developers? Are you the one that wants to get rid of X because it’s a giant, old and fat dinosaur in your system? :) Cool, I have a project to solve your problems!&lt;/p&gt;
&lt;p&gt;—&lt;/p&gt;
&lt;p&gt;While there’s still lot of churn in the protocol, and yet our goal is soon to wrap up all we’ve been doing to a steady and settle-on-the-stone one description, there’s a lot on the implementation side that needs love. And that mainly concern Weston compositor, which is becoming the de facto compositor on several systems targeting Wayland.&lt;/p&gt;
&lt;p&gt;In past months I was accumulating a TODO list for Weston and libraries that I think wouldn’t require any exceptional knowledge on core graphics or Wayland internals. These are good items for people that want start hack or just do some contribution on Wayland:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. log facility (easy)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Back in July, I had already &lt;a href=&quot;http://lists.freedesktop.org/archives/wayland-devel/2011-July/001225.html&quot;&gt;warmed up a discussion&lt;/a&gt; how we could log on Wayland. So now we spit everything to stdout but we want to do it similarly as Xorg, i.e. redirecting to its own file. It turned out that we might want only on Weston compositor and implement our own way of logging for sake of simplicity. Ideally it has to be very simple, without verbosity levels probably, etc. This task should be quite easy to finish.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. launcher for Weston (medium)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Weston is meant to run as a normal user. Now we have to set manually input devices, DRM and tty with root permissions, so Weston can happily be started. Ideally we should have a setuid helper script doing all this tricky, and in fact &lt;a href=&quot;http://cgit.freedesktop.org/~vignatti/wayland-demos/commit/?h=launcher-2&amp;amp;id=f3149479119ce7337da33a58c234877dc0f95a1b&quot;&gt;I started something here&lt;/a&gt;. For a real system though, we need to enhance a bit this program with the policykit, specially for dealing with hotplugs. Probably zero understanding on Wayland internals is needed but an overall knowledge of OS is required.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. libxkbcommon X merge (medium)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Actually that’s not much Wayland work, but it most definitely would help its development. xkbcommon is the library that exposes the keyboard mapping logic to clients, converting keycodes in keysyms. Weston clients are using for evdev convertion. The library is an adaptation of a bunch of X11 modules to fit in a non-X11 world and as such, it still requires xproto, kbproto and libX11. One task would be to untie such dependencies with X and the other to proper merge libxkbcommon with Xorg. I’d classify as medium-size task due the involvement with the community and the hairy understanding of XKB in general, although Daniel, Kristian and other guys already &lt;a href=&quot;http://lists.x.org/archives/xorg-devel/2010-October/014412.html&quot;&gt;made a nice progress there&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. xwayland on X (hard)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;xwayland is the implementation on Xorg to make it run as a Wayland client. &lt;a href=&quot;http://lists.freedesktop.org/archives/wayland-devel/2011-June/001163.html&quot;&gt;That works well&lt;/a&gt; on Intel chipsets and might work as well with other drivers through the shm X driver. In principle, basic X11 applications work with some WM control lacking, input grab as well and things like Xrandr don’t. One would also forward port &lt;a href=&quot;http://cgit.freedesktop.org/~krh/xserver/log/?h=xwayland-1.10&quot;&gt;xwayland&lt;/a&gt; and driver to upstream, once the work is shaped up. I bet WM developers would have an ecstasy and delight themselves hacking around.&lt;/p&gt;
&lt;p&gt;—&lt;/p&gt;
&lt;p&gt;Hopefully you get excited with some of the items. I definitely can give a hand with any, so just poke me on #wayland at freenode.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/vignatti.wordpress.com/541/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/vignatti.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/vignatti.wordpress.com/541/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/vignatti.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/vignatti.wordpress.com/541/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/vignatti.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/vignatti.wordpress.com/541/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/vignatti.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/vignatti.wordpress.com/541/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/vignatti.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/vignatti.wordpress.com/541/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/vignatti.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/vignatti.wordpress.com/541/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/vignatti.wordpress.com/541/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=vignatti.wordpress.com&amp;amp;blog=769537&amp;amp;post=541&amp;amp;subd=vignatti&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>vignatti</name>
			<uri>http://vignatti.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Tiago Vignatti</title>
			<subtitle type="html">In The Eyes Of The World</subtitle>
			<link rel="self" href="http://vignatti.wordpress.com/feed/atom/"/>
			<id>http://vignatti.wordpress.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">If you’re in Europe, go to Monki Gras</title>
		<link href="http://dberkholz.com/2012/01/18/if-youre-in-europe-go-to-monki-gras/"/>
		<id>http://dberkholz.com/?p=755</id>
		<updated>2012-01-18T06:02:23+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;To my European readers: &lt;strong&gt;if you care about the impact of social technologies like Git (and GitHub) &amp;amp; how they’re transforming software development, or the impact of social technology on communities, and you enjoy good beer, you need to be at &lt;a href=&quot;http://monkigras.com/&quot; title=&quot;Monki Gras&quot;&gt;Monki Gras&lt;/a&gt;.&lt;/strong&gt; I &lt;a href=&quot;http://redmonk.com/dberkholz/2012/01/17/why-you-need-to-come-to-monki-gras-or-a-monktoberfest-redux/&quot; title=&quot;Why you need to come to Monki Gras (OR, a Monktoberfest redux)  Read more: http://redmonk.com/dberkholz/2012/01/17/why-you-need-to-come-to-monki-gras-or-a-monktoberfest-redux/#ixzz1jmpqdSxm&quot;&gt;just posted&lt;/a&gt; over at my RedMonk blog about how the previous conference in the series, Monktoberfest, was the best conference of my life. And I’ve been to many.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://monkigras.com/&quot; title=&quot;Monki Gras&quot;&gt;Monki Gras&lt;/a&gt; is Feb. 1–2 in London. The timing’s perfect to stop by just before &lt;a href=&quot;http://fosdem.org/2012/&quot; title=&quot;FOSDEM&quot;&gt;FOSDEM&lt;/a&gt; (and that’s exactly what I’m doing). Registration is dirt-cheap, speakers are universally top-notch, and you’ll also get some world-class beers in the package.&lt;/p&gt;
&lt;br /&gt; Tagged: &lt;a href=&quot;http://dberkholz.com/tag/community/&quot;&gt;community&lt;/a&gt;, &lt;a href=&quot;http://dberkholz.com/tag/development/&quot;&gt;development&lt;/a&gt;, &lt;a href=&quot;http://dberkholz.com/tag/gentoo/&quot;&gt;gentoo&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/dberkholz.wordpress.com/755/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/dberkholz.wordpress.com/755/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/dberkholz.wordpress.com/755/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/dberkholz.wordpress.com/755/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/dberkholz.wordpress.com/755/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/dberkholz.wordpress.com/755/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/dberkholz.wordpress.com/755/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/dberkholz.wordpress.com/755/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/dberkholz.wordpress.com/755/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/dberkholz.wordpress.com/755/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/dberkholz.wordpress.com/755/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/dberkholz.wordpress.com/755/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/dberkholz.wordpress.com/755/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/dberkholz.wordpress.com/755/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=dberkholz.com&amp;amp;blog=2962469&amp;amp;post=755&amp;amp;subd=dberkholz&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Donnie Berkholz</name>
			<uri>http://dberkholz.com</uri>
		</author>
		<source>
			<title type="html">Striving for greatness</title>
			<subtitle type="html">The life and times of a Gentoo developer and leader</subtitle>
			<link rel="self" href="http://dberkholz.com/feed/atom/"/>
			<id>http://dberkholz.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">PulseAudio vs. AudioFlinger</title>
		<link href="http://0pointer.de/blog/projects/aruns-numbers.html"/>
		<id>http://0pointer.de/blog/projects/aruns-numbers</id>
		<updated>2012-01-16T15:31:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/&quot;&gt;Arun
put an awesome article up&lt;/a&gt;, detailing how PulseAudio compares to Android's
AudioFlinger in terms of power consumption and suchlike. Suffice to say,
PulseAudio rocks, but go and read the whole thing, it's worth it.&lt;/p&gt;

&lt;p&gt;Apparently, AudioFlinger is a great choice if you want to shorten your
battery life.&lt;/p&gt;</content>
		<author>
			<name>lennart (at) poettering (dot) net</name>
			<uri>http://0pointer.de/blog</uri>
		</author>
		<source>
			<title type="html">Wunschkonzert, Ponyhof und Abenteuerspielplatz</title>
			<subtitle type="html">Lennart's Blog</subtitle>
			<link rel="self" href="http://0pointer.de/blog/index.rss20"/>
			<id>http://0pointer.de/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Phoronix survey about Intel Linux Graphics</title>
		<link href="http://dodonov.net/blog/2012/01/14/phoronix-survey-about-intel-linux-graphics/"/>
		<id>http://dodonov.net/blog/?p=1248</id>
		<updated>2012-01-14T22:28:08+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;For the ones of you who haven’t read Phoronix lately – Michael is running a &lt;a href=&quot;http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTA0MjI&quot;&gt;survey about Intel Linux Graphics drivers&lt;/a&gt; for the past few days.&lt;/p&gt;

&lt;p&gt;So far it got 10 pages of amazingly interesting comments (which I was trying to answer as time and my fingertips permitted). 95 comments as of now to be fair (sorry, 96 already – my bad &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; ). Make sure to check it out.&lt;/p&gt;

&lt;p&gt;In the end, I’ll try to summarize all my replies in the thread here. But it will be a long read by the looks of it.&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Bleeding edge i915 for stable kernels</title>
		<link href="http://dodonov.net/blog/2012/01/11/bleeding-edge-i915-for-stable-kernels/"/>
		<id>http://dodonov.net/blog/?p=1238</id>
		<updated>2012-01-11T19:57:23+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;One of the most frequent &lt;strike&gt;complains&lt;/strike&gt; questions related to the Intel Linux Graphics drivers I’ve received in the past few months was: “Why Intel devs work only on the most bleeding edge, and do not give enough attention the us stable users”?&lt;/p&gt;

&lt;p&gt;Yes, this question affects all the components of the stack – kernel, mesa, libdrm, 2D driver, and so on, but the answer to this is quite simple – this is how software gets developed. New features go into new releases, and stable releases receive bugfixes and stability improvements at most. And this is not much of an issue to the userspace components anyway – with all the &lt;strong&gt;LD_LIBRARY_PATH&lt;/strong&gt; flexibility it is possible to have multiple versions of the libraries installed without any issue. But as for the kernel, indeed, it is not that easy. So most of the times, those questions were directed at the kernel part of our driver – namely, the tiny &lt;strong&gt;i915.ko&lt;/strong&gt; module which is responsible for making the graphical heart of Intel-based GPU beat.&lt;/p&gt;

&lt;p&gt;Even for the kernel, this is not exactly true – Greg’s stable trees do include most of the critical fixes for our drivers since always. But it is true to some point – most of the newest development and patching happens within the usual Linux development window – and those patches and features are then merged to the release candidates of a future kernel during the merge window. And for the kernel, it is not that easy to have multiple kernels around at the same time without having to reboot between them here and again.&lt;/p&gt;

&lt;p&gt;So therefore, I thought on giving a small gift to the users who are not still ready to jump into the latest and greatest kernels releases – but still want to enjoy the goodies brought with the latest versions of the graphics driver. So I prepared two kernel branches on my freedesktop.org kernel repository:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://cgit.freedesktop.org/~eugeni/kernel/log/?h=3.1-drm-intel-backports&quot;&gt;3.0-drm-intel-backports&lt;/a&gt; — latest 3.0.x kernel with all the &lt;strong&gt;i915&lt;/strong&gt; patches from latest kernel release. Right now, it is &lt;strong&gt;3.0.16&lt;/strong&gt; + &lt;strong&gt;195&lt;/strong&gt; backported patches. Diffstat reports &lt;strong&gt;78 files changed, 4988 insertions(+), 2176 deletions(-)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cgit.freedesktop.org/~eugeni/kernel/log/?h=3.1-drm-intel-backports&quot;&gt;3.1-drm-intel-backports&lt;/a&gt; — latest 3.1.x kernel with all the &lt;strong&gt;i915&lt;/strong&gt; patches from latest kernel release. Right now, it is &lt;strong&gt;3.1.8&lt;/strong&gt; + &lt;strong&gt;104&lt;/strong&gt; backported patches. Diffstat reports &lt;strong&gt;74 files changed, 3147 insertions(+), 1589 deletions(-)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Besides driver backports, the patches which affect multiple drivers (like, &lt;strong&gt;i915&lt;/strong&gt;, &lt;strong&gt;nouveau&lt;/strong&gt; and &lt;strong&gt;r128&lt;/strong&gt;) were also backported in full in those branches. And all the required build and API dependencies (like &lt;strong&gt;HDMI/DP ELD&lt;/strong&gt; or &lt;strong&gt;drm/gem&lt;/strong&gt; API changes) are also included in full.&lt;/p&gt;

&lt;p&gt;I’ll try to keep those branches maintained on a semi-periodic basis and synchronized with the latest updates both from &lt;strong&gt;-stable&lt;/strong&gt; branches, and from newest kernel releases.&lt;/p&gt;

&lt;p&gt;Of course, let me put an obligatory support and stability statement:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Those branches are not supported officially, are experimental and can be unstable or even broken sometimes (in which case, if you’d be kind enough to let me know about that, I’d try to fix them ASAP). So use them at your own risk.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Other than that, have fun &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; .&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">New hosts, cgit and more</title>
		<link href="http://www.freedesktop.org/admin/blog/2012-01-06-new-hosts-cgit.html"/>
		<id>tag:freedesktop.org, 2012:2012-01-06-new-hosts-cgit</id>
		<updated>2012-01-06T19:03:50+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;A while ago, we got some money from Intel, Google and HP for new
machines for freedesktop.org.  Due to various logistical problems, it
has taken us far too long to actually start using those, but we're now
in the process of doing so.&lt;/p&gt;

&lt;p&gt;
The first service to move to the new infrastructure is &lt;a href=&quot;http://cgit.freedesktop.org&quot;&gt;cgit&lt;/a&gt;.  As part of this
transition, we'll also be retiring some old services, amongst those
are:
&lt;/p&gt;&lt;ul&gt;
  &lt;li&gt;gitweb; we have cgit and gitweb does not see much traffic&lt;/li&gt;
  &lt;li&gt;cvs; nothing still lives in CVS.  We will keep the directories
  around for the foreseeable future &lt;/li&gt;
  &lt;li&gt;svn; nothing uses this any longer. We will keep the directories
  around for the foreseeable future&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;We might also retire ftp.freedesktop.org, but that is not yet
decided.  The rationale being that HTTP is widespread and works well
for handling downloads.  For mirroring, rsync is better suited than ftp&lt;/p&gt;

&lt;p&gt;Additionally, over the weekend we'll move bugzilla to the new hosts as
well, something that should improve performance quite a bit, but it
means bugzilla might be unavailable sometimes during the weekend.&lt;/p&gt;

&lt;p&gt;Feedback is most welcome&lt;/p&gt;

– tfheen</content>
		<author>
			<name>fd.o sitewranglers (sitewranglers@lists.freedesktop.org)</name>
			<uri>http://www.freedesktop.org/admin/blog</uri>
		</author>
		<source>
			<title type="html">freedesktop.org admin log</title>
			<subtitle type="html">fd.o admin tasks and planned outages</subtitle>
			<link rel="self" href="http://freedesktop.org/admin/blog/?flav=atom"/>
			<id>tag:freedesktop.org, 2012:freedesktop.org admin log</id>
			<rights type="html">Copyright (c) 2012, fd.o sitewranglers (sitewranglers@lists.freedesktop.org)</rights>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Transmageddon runs with GStreamer 0.11</title>
		<link href="http://blogs.gnome.org/uraeus/2012/01/06/transmageddon-runs-with-gstreamer-0-11/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1780</id>
		<updated>2012-01-06T18:48:25+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;After updating GStreamer and doing a couple of small fixes I managed to make &lt;a href=&quot;http://www.linuxrising.org&quot;&gt;Transmageddon&lt;/a&gt; work with the GTK3 and the 0.11 branch of GStreamer. Obligatory screenshot below. As you might guess from looking at the screenshot there are still some issues that needs solving, but&lt;br /&gt;
I am happy that I managed to get this far.&lt;/p&gt;
&lt;div class=&quot;wp-caption alignleft&quot; id=&quot;attachment_1781&quot; style=&quot;width: 626px;&quot;&gt;&lt;a href=&quot;http://blogs.gnome.org/uraeus/files/2012/01/transmageddon-gtk3-gst-0.11.png&quot;&gt;&lt;img alt=&quot;Screenshot of development Transmageddon&quot; class=&quot;size-full wp-image-1781&quot; height=&quot;279&quot; src=&quot;http://blogs.gnome.org/uraeus/files/2012/01/transmageddon-gtk3-gst-0.11.png&quot; width=&quot;308&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Transmageddon running GTK3 and GStreamer 0.11/1.0&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Hopefully it is a sign that the upcoming &lt;a href=&quot;http://gstreamer.freedesktop.org/wiki/GStreamerHackfest2012&quot;&gt;GStreamer hackfest in Malaga&lt;/a&gt; will be a great successful everyone who is participating.&lt;/p&gt;
&lt;p&gt;I hope the remainder of the porting effort will be relatively simple as I would love to get back to working on real features instead of just updating old functionality to use a new backend to do the same. Having had a need for Transmageddon for a couple of work related tasks recently a couple of items, like batch job programming has moved up my priorities list.&lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">New year, new stuff</title>
		<link href="http://dodonov.net/blog/2012/01/06/new-year-new-stuff/"/>
		<id>http://dodonov.net/blog/?p=1233</id>
		<updated>2012-01-06T16:21:46+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;So, holidays came to an end, and it is time to get started with the 2012 series of “tales from the Intel Linux Graphics land”.&lt;/p&gt;

&lt;p&gt;But as the year has just started, it is still time to cover some amazing gifts which Santa ClausDaniel Vetter brought to you all right in time for Christmas. Yes, I am talking about the new &lt;strong&gt;intel-gpu-tools 1.1&lt;/strong&gt; release!&lt;/p&gt;

&lt;p&gt;This new release comes after 2 years from the &lt;strong&gt;1.0.2&lt;/strong&gt; release (which came out back in 2009), and accumulates an astonishing amount of changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Diffstat&lt;/strong&gt; reports that &lt;strong&gt;138&lt;/strong&gt; files were changed, having &lt;strong&gt;29694&lt;/strong&gt; insertions and &lt;strong&gt;3524&lt;/strong&gt; deletions.&lt;/li&gt;
&lt;li&gt;Lots of new instructions and registers decoding logic was added in &lt;strong&gt;intel_error_decode&lt;/strong&gt; and &lt;strong&gt;intel_reg_dumper&lt;/strong&gt; tools&lt;/li&gt;
&lt;li&gt;Many changes in &lt;strong&gt;intel_gpu_top&lt;/strong&gt;, which can now run non-interactively for monitoring GPU usage statistics&lt;/li&gt;
&lt;li&gt;Different display and mode setting tests&lt;/li&gt;
&lt;li&gt;And, probably the most interesting feature out there, the introduction of a full-feature test suite for Intel and DRM testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me stop a bit on this latest feature, and explain it in a more detailed form. Starting with the 1.1 version of &lt;strong&gt;intel-gpu-toops&lt;/strong&gt;, the package provides a complete testing suite for most of the known issues and problems that have been caught in our graphics drivers for Linux for the past years. So when you run &lt;strong&gt;make test&lt;/strong&gt; (as root) in the intel-gpu-tools directory, this will start a long pile of test cases, testing most parts of the GPU.&lt;/p&gt;

&lt;p&gt;Ideally, all tests should pass – this means that your current kernel and userspace libraries are not affected by any known kernel (or userspace) issue. Some tests can fail – usually this comes with an explanation of why it fails (either on the test output or in &lt;strong&gt;dmesg&lt;/strong&gt;). And some tests can fail in a very evil way, hanging the GPU or the entire machine. A specific category of tests (&lt;strong&gt;HANG&lt;/strong&gt; tests), which are not run by default, are designed to test specific corner cases which should make your machine hang for good; and some tests are written specifically to caught performance regressions and hick-ups.&lt;/p&gt;

&lt;p&gt;Still wonder why is this interesting? Well, I can think on one obvious huge bonuses we get from this test suite – if you are experiencing an issue, you can run the &lt;strong&gt;make test&lt;/strong&gt; suite, and verify if it is a new genuine bug, or something that was already caught by a test case. And obviously, this is an easy way to find and track regressions on the kernel and drm level.&lt;/p&gt;

&lt;p&gt;So, to sum it all up – if you want to give a quick try and check if your kernel/userspace/distribution configuration is affected by any known issue in the driver, just run the testsuite. If it passes, you are good to go. If it does not passes, well, you already know that something is not right and needs investigation.&lt;/p&gt;

&lt;p&gt;Besides &lt;strong&gt;intel-gpu-tools&lt;/strong&gt;, Mesa work continues towards the remaining &lt;strong&gt;GL 3.0&lt;/strong&gt; features. During last few days of 2011, &lt;strong&gt;Eric Anholt&lt;/strong&gt; sent some patches for adding hardware support to &lt;strong&gt;GL_EXT_transform_feedback&lt;/strong&gt; bits present on the Ivy Bridge architecture. Besides those changes, hundreds of patches and discussions take place on the mesa-dev mailing list – the most user-notable change comes from the fact that &lt;strong&gt;XCB&lt;/strong&gt; is now mandatory. I guess we have a clear winner in the &lt;strong&gt;XCB&lt;/strong&gt; vs &lt;strong&gt;XLIB&lt;/strong&gt; match in 2012..&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Kernel&lt;/strong&gt; side, with the release of 3.2 version of the kernel, next merge windows has opened and already received some patches for &lt;strong&gt;3.3&lt;/strong&gt; kernel series. Besides the usual fixes and new features which I already covered in previous posts, several alternatives were proposed by &lt;strong&gt;Chris Wilson&lt;/strong&gt; and &lt;strong&gt;Eric Anholt&lt;/strong&gt; to solve the mysterious &lt;strong&gt;missed IRQ&lt;/strong&gt; issue which affects Ivy Bridge (and some Sandy Bridge) machines. The winner in this competition, however, was &lt;strong&gt;Daniel Vetter&lt;/strong&gt;, who came with a simple patch that not only had solved the issues in a nice way, but also allowed us to remove several work-arounds which were added in the past. So far, all my Ivy Bridge machines are up and running for some days without any problems – which is totally awesome!&lt;/p&gt;

&lt;p&gt;Moving to other projects, notable changes which were introduced in the past weeks were the move of &lt;strong&gt;intel_decode&lt;/strong&gt; facility for decoding GPU batch buffers from &lt;strong&gt;intel-gpu-tools&lt;/strong&gt; to &lt;strong&gt;libdrm&lt;/strong&gt; library by &lt;strong&gt;Eric Anholt&lt;/strong&gt;; patches from &lt;strong&gt;Paulo Zanoni&lt;/strong&gt; to support new screen rotation feature of VPro; additional patches for improved &lt;strong&gt;Glamor&lt;/strong&gt; performance from &lt;strong&gt;Zhigang Gong&lt;/strong&gt;; support for building &lt;strong&gt;libdrm&lt;/strong&gt; on &lt;strong&gt;Android&lt;/strong&gt; from &lt;strong&gt;Chad Versace&lt;/strong&gt;; Kristian Høgsberg created a new W-prefixed project for Wayland (namely, &lt;strong&gt;Weston&lt;/strong&gt;, which is a different town in Massachusetts state. I actually got to get through it once when I was in the US back in 2005, working on a remote boot and software streaming project for mstech, which was further acquired by Ardence, which was further acquired in Citrix.. fun to see how the world goes in circles &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt;  ).&lt;/p&gt;

&lt;p&gt;So I think that’s it for now. For the ones who are still in the new year holidays, enjoy the rest of your holidays; and for the ones who are already back into to the real life – welcome to 2012! &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; &lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Gustavo Noronha Silva Interview about WebKit</title>
		<link href="http://blogs.gnome.org/uraeus/2012/01/04/gustavo-noronha-silva-interview-about-webkit/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1775</id>
		<updated>2012-01-04T14:09:54+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Just posted another interview on the Collabora website, this time with &lt;a href=&quot;http://www.collabora.com/about/webkit-interview/&quot;&gt;Gustavo Noronha Silva talking about WebKit&lt;/a&gt; and some of the work he and Collabora are doing around that project. So be sure to check it out if you want to learn more about things like WebKit and Clutter integration and how WebKit impacts the GNOME platform.&lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html">Google Calendar notifications using pynotify</title>
		<link href="http://julien.danjou.info/blog/2012/google-calendar-pynotify"/>
		<id>http://julien.danjou.info/blog/2012/google-calendar-pynotify</id>
		<updated>2012-01-03T18:55:00+00:00</updated>
		<content type="html"></content>
		<author>
			<name>Julien Danjou</name>
			<uri>http://julien.danjou.info/blog/</uri>
		</author>
		<source>
			<title type="html">jd:/dev/blog</title>
			<link rel="self" href="http://julien.danjou.info/blog/index.xml"/>
			<id>http://julien.danjou.info/blog/index.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">Multitouch in X - Pointer emulation</title>
		<link href="http://feedproxy.google.com/~r/Who-t/~3/SNSKUmogx84/multitouch-in-x-pointer-emulation.html"/>
		<id>tag:blogger.com,1999:blog-6112936277054198647.post-7626048294161699148</id>
		<updated>2012-01-02T23:56:19+00:00</updated>
		<content type="html">This post is part of a series on multi-touch support in the X.Org X server. 

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://who-t.blogspot.com/2011/12/multitouch-in-x-getting-events.html&quot;&gt;Multitouch in X - Getting events&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

In this post, I'll outline how pointer emulation on touch events works.

This post assumes basic knowledge of the XI2 Xlib interfaces.

&lt;h2&gt;Why pointer emulation?&lt;/h2&gt;
One of the base requirements of adding multitouch support to the X server
was that traditional, non-multitouch applications can still be used.
Multitouch should be a transparent addition, available where needed, not
required where not supported.
&lt;br /&gt;
&lt;br /&gt;
So we do pointer emulation for multitouch events, and it's actually
specified in the protocol how we do it. Mainly so it's reliable and
predictable for clients.

&lt;h2&gt;What is pointer emulation in X&lt;/h2&gt;
Pointer emulation simply means that for specific touch sequences, we
generate pointer events. The conditions for emulation are that the 
the touch sequence is eligible for pointer emulation (details
below) and that no other client has a touch selection on that window/grab.
&lt;br /&gt;
&lt;br /&gt;

The second condition is important: if your client selects for both touch and
pointer events on a window, you will never see the emulated pointer events.
If you are an XI 2.2 client and you select for pointer but not touch events,
you will see pointer events. These events are marked with the
&lt;i&gt;XIPointerEmulated&lt;/i&gt; so that you know they come from an emulated source.

&lt;h2&gt;Emulation on direct-touch devices&lt;/h2&gt;
For direct-touch devices, we emulate pointer events for a touch sequence provided the touch is the &lt;i&gt;first&lt;/i&gt; touch on the device, i.e. no other touch sequences were active for this device when the touch started. The touch sequence is emulated until it ends, even if other touches start and end while that sequence is active.

&lt;h2&gt;Emulation on dependent-touch devices&lt;/h2&gt;
Dependent touch devices do not emulate pointer events. Rather, we send the
normal mouse movements from the device as regular pointer events.

&lt;h2&gt;Button events and button state&lt;/h2&gt;
Pointer emulation triggers motion events and, more importantly, button
events. The button number for touches is hardcoded to 1 (any more specific
handling such as long-click for right buttons should be handled by
touch-aware clients instead), so the detail field of an emulated button
event is 1 (unless the button is logically mapped).
&lt;br /&gt;
&lt;br /&gt;

The button state field on emulated pointer events adjusts for pointer emulation as it would for regular button events. The button state is thus (usually) 0x0 for the emulated ButtonPress and 0x100 for the MotionNotify and ButtonRelease events.

&lt;br /&gt;
&lt;br /&gt;
Likewise, any request that returns the button state will have the appropriate
state set, &lt;b&gt;even if no emulated event actually got sent&lt;/b&gt;.
&lt;br /&gt;
&lt;br /&gt;

Grab handling works as for regular pointer events, though the interactions
between touch grabs and emulated pointer grabs are somewhat complex. I'll
get to that in a later post.

&lt;h2&gt;The confusing bit&lt;/h2&gt;
There is one behaviour about the pointer emulation that may be confusing,
even though the specs may seem logical and the behaviour is within the
specs.
&lt;br /&gt;
&lt;br /&gt;

If you put one finger down, it will emulate pointer events. If you then put
another finger down, the first finger will continue to emulate pointer
events. If you now lift the first finger (keeping the second down) and put
the first finger down again, that finger will not generate events. 
This is noticable mainly in bi-manual or multi-user interaction.
&lt;br /&gt;
&lt;br /&gt;

The reason this doesn't work is simple: to the X server, putting the first
finger down just looks like another touchpoint appearing when there is
already one present. The server does not know that this is the same finger
again, it doesn't know that your intention was to emulate again with that
finger. Most of the semantics for such interaction is in your head alone and
hard to guess. Guessing it wrong can be quite bad, since that new touchpoint
may have been part of a two-finger gesture with the second finger and whoops
- instead of scrolling you just closed a window, pasted your password
somewhere or killed a kitten. So we err on the side of
caution, because, well, think of the kittens.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6112936277054198647-7626048294161699148?l=who-t.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Who-t/~4/SNSKUmogx84&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Peter Hutterer</name>
			<email>noreply@blogger.com</email>
			<uri>http://who-t.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Who-T</title>
			<link rel="self" href="http://feeds.feedburner.com/Who-t"/>
			<id>tag:blogger.com,1999:blog-6112936277054198647</id>
		</source>
	</entry>

	<entry>
		<title type="html">Multitouch in X - Touch grab handling</title>
		<link href="http://feedproxy.google.com/~r/Who-t/~3/cfCLwsGqMbI/multitouch-in-x-touch-grab-handling.html"/>
		<id>tag:blogger.com,1999:blog-6112936277054198647.post-8511630842963928276</id>
		<updated>2012-01-02T23:56:05+00:00</updated>
		<content type="html">This post is part of a series on multi-touch support in the X.Org X server.

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://who-t.blogspot.com/2011/12/multitouch-in-x-getting-events.html&quot;&gt;Multitouch in X - Getting events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://who-t.blogspot.com/2011/12/multitouch-in-x-pointer-emulation.html&quot;&gt;Multitouch in X - Pointer emulation&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

In this post, I'll outline how grabs on touch events work. This post assumes basic knowledge of the XI2 Xlib interfaces. 
&lt;h2&gt;Passive grabs&lt;/h2&gt;
The &lt;a href=&quot;http://cgit.freedesktop.org/xorg/lib/libXi/tree/include/X11/extensions/XInput2.h&quot;&gt;libXi
interface&lt;/a&gt; has one new passive grab call: &lt;i&gt;XIGrabTouchBegin&lt;/i&gt;, which
works pretty much like the existing passive grab APIs. As with event selection, you must
set all three event masks XI_TouchBegin, XI_TouchUpdate and XI_TouchEnd or a
BadValue error occurs. Once a passive grab activates in response to a touch,
the client &lt;b&gt;must&lt;/b&gt; choose to either &lt;b&gt;accept&lt;/b&gt; or &lt;b&gt;reject&lt;/b&gt; a touch.
Details on that below.
&lt;br /&gt; &lt;br /&gt;
Grabs activate on a TouchBegin event and due to the nature of multitouch,
multiple touch grabs may be active at any time - some of them for different
clients.

&lt;h2&gt;Active grabs&lt;/h2&gt;
Active grabs do not have a new call, they are handled through the event masks of the existing &lt;a href=&quot;http://www.x.org/archive/X11R7.5/doc/man/man3/XIGrabDevice.3.html&quot;&gt;XIGrabDevice(3)&lt;/a&gt; call. If a client has an active touch grab on the device, it is automatically the owner of the touch sequence (ownership is described below). If a client has an active pointer or keyboard grab on the device, it is the owner of the touch sequence for pointer emulated touch events only. Other touch events are unaffected by the grab and are processed normally.

&lt;h2&gt;Acceptance and rejection&lt;/h2&gt;
Pointer grabs provide exclusive access to the device, but to some degree a
client can opt to replay the event it received on the next client. We expect
that touch sequences will often trigger gesture recognition, and a client may realise after a few events that it doesn't actually want that touch sequence. So we expanded
the replay semantics. clients with a touch
grab &lt;b&gt;must&lt;/b&gt; choose to either &lt;b&gt;accept&lt;/b&gt; or &lt;b&gt;reject&lt;/b&gt; a touch.
&lt;br /&gt; &lt;br /&gt;

Accepting a touch signals to the server that the touch sequence is meant for
this client and no-one else. The server then exclusively delivers to that
client until the terminating TouchEnd. &lt;br /&gt; &lt;br /&gt;

Rejecting a touch sequence signals that the touch sequence is not meant for
this client. Once a client rejects a touch sequence, the server sends the
TouchEnd event to that client (if the touch is still active) and &lt;i&gt;replays
the full touch sequence&lt;/i&gt; &lt;a href=&quot;http://feeds.feedburner.com/Who-t#footnote_1&quot;&gt;[1]&lt;/a&gt; on the next grab
or window. We use the term &lt;b&gt;owner&lt;/b&gt; of a touch sequence to talk about
the current recipient.
&lt;br /&gt;
&lt;br /&gt;
The order of events for two clients Cg and Cw, with Cg having a
grab and Cw having a regular touch event selection on a window, is thus:
&lt;pre&gt;TouchBegin to Cg    → 
TouchUpdate to Cg   → 
TouchUpdate to Cg   → 
                    ← Cg rejects touch
                    ← Cw becomes new owner
TouchEnd+ to Cg     →
TouchBegin* to Cw   → 
TouchUpdate* to Cw  → 
TouchUpdate* to Cw  → 
#### physical touch ends #### 
TouchEnd to Cw      →
&lt;/pre&gt;
&lt;small&gt;Events with + mark an event created by the server, * mark events replayed by the server&lt;/small&gt;

&lt;br /&gt;
&lt;br /&gt;
For nested grabs, this sequence simply repeats for each client until either
a grabbing client accepts the touch or the client with the event selection
becomes the owner.
&lt;br /&gt;
&lt;br /&gt;
In the above case, the touch ended after Cg rejected the touch. If the touch
ends before the current owner accepted or rejected it, the owner gets the
TouchEnd event and the touch is left handing until the owner accepts or
rejects it. If accepted, that's it. If rejected, the new owner gets the
full sequence in one go, including the TouchEnd event. The sequence is thus:
&lt;pre&gt;TouchBegin to Cg    → 
TouchUpdate to Cg   → 
TouchUpdate to Cg   → 
#### physical touch ends #### 
TouchEnd to Cg      →
                    ← Cg rejects touch
                    ← Cw becomes new owner
TouchBegin* to Cw   → 
TouchUpdate* to Cw  → 
TouchUpdate* to Cw  → 
TouchEnd* to Cw     →
&lt;/pre&gt;
&lt;h2&gt;Touch ownership handling&lt;/h2&gt;
One additional event type that XI 2.2 introduces is the
&lt;i&gt;XI_TouchOwnership&lt;/i&gt; event. Clients selecting for this event signal that
they need to receive touch events &lt;b&gt;before they're the owner of the
touch sequence&lt;/b&gt;. This  event type can be selected on both grabs and event
selections.
&lt;br /&gt;&lt;br /&gt;
First up: there are specific use-cases where you need this. If you don't
fall into them, you're better off just skipping on ownership events, they
make everything more complicated. And whether you need ownership events
depends not only on you, but also the stack you're running under.
On normal touch event selection, touch events are only delivered to the
current owner of the touch. With multiple grabs, the delivery is sequential
and delivery of touch events may be delayed.
&lt;br /&gt;&lt;br /&gt;
Clients selecting for touch ownership events get the events as they occur,
even if they are not the current owner. The XI_TouchOwnership event is
delivered if and when they become the current owner. The last part is
important: if you select for ownership events, you may receive touch events
but you may not become the owner of that sequence. So while you can start
reacting to that sequence, anything your app does must be undo-able in case
the e.g. window manager claims the touch sequence.
&lt;br /&gt;&lt;br /&gt;
If we look at the same sequence as above with two clients selecting for
ownership, the sequence looks like this:
&lt;br /&gt;
&lt;pre&gt;TouchBegin to Cg     → 
TouchBegin to Cw     → 
TouchOwnership to Cg →
TouchUpdate to Cg    → 
TouchUpdate to Cw    → 
TouchUpdate to Cg    → 
TouchUpdate to Cw    → 
                     ← Cg rejects touch
                     ← Cw becomes new owner
TouchEnd+ to Cg      →
TouchOwnership to Cw →
#### physical touch ends #### 
TouchEnd to Cw      →
&lt;/pre&gt;
&lt;small&gt;Note: TouchOwnership events do not correspond to any physical event, they are always generated by the server&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;
If a touch ends before the owner accepts, the current owner gets the
TouchEnd, all others get a TouchUpdate event instead. That TouchUpdate has a
flag &lt;b&gt;XITouchPendingEnd&lt;/b&gt; set, signalling that no more actual events
will arrive from this touch but the touch is still waiting for owner
acceptance.
&lt;pre&gt;TouchBegin to Cg     → 
TouchBegin to Cw     → 
TouchOwnership to Cg →
TouchUpdate to Cg    → 
TouchUpdate to Cw    → 
TouchUpdate to Cg    → 
TouchUpdate to Cw    → 
#### physical touch ends #### 
TouchEnd to Cg       →
TouchUpdate to Cw    →  (XITouchPendingEnd flag set)
                     ← Cg rejects touch
                     ← Cw becomes new owner
TouchOwnership to Cw →
TouchEnd to Cw       →
&lt;/pre&gt;
In both cases, we dealt with a rejecting owner. For an accepting owner, the
sequences look like this:
&lt;pre&gt;TouchBegin to Cg     → 
TouchBegin to Cw     → 
TouchOwnership to Cg →
TouchUpdate to Cg    → 
TouchUpdate to Cw    → 
TouchUpdate to Cg    → 
TouchUpdate to Cw    → 
                     ← Cg accepts touch
TouchEnd+ to Cw      →
TouchUpdate to Cg    → 
#### physical touch ends #### 
TouchEnd to Cg      →
&lt;/pre&gt;
or 
&lt;pre&gt;TouchBegin to Cg     → 
TouchBegin to Cw     → 
TouchOwnership to Cg →
TouchUpdate to Cg    → 
TouchUpdate to Cw    → 
TouchUpdate to Cg    → 
TouchUpdate to Cw    → 
#### physical touch ends #### 
TouchEnd to Cg       →
TouchUpdate to Cw    →  (XITouchPendingEnd flag set)
                     ← Cg accepts touch
TouchEnd* to Cw      →
&lt;/pre&gt;
In the case of multiple grabs, the same strategy applies in order of grab
activation. Ownership events may be selected by some clients but not others.
In that case, each client is treated as requested, so the event sequence the
server deals with may actually look like this:
&lt;pre&gt;TouchBegin to C1     → 
TouchBegin to C3     → 
TouchOwnership to C1 →
TouchUpdate to C1    → 
TouchUpdate to C3    → 
TouchUpdate to C1    → 
TouchUpdate to C3    → 
                     ← C1 rejects touch
                     ← C2 becomes new owner
TouchEnd+ to C1      →
TouchBegin* to C2    → 
TouchUpdate* to C2   → 
TouchUpdate* to C2   → 
                     ← C2 rejects touch
                     ← C3 becomes new owner
TouchEnd+ to C2      →
TouchOwnership to C3 →
#### physical touch ends #### 
TouchEnd to C3       →
&lt;/pre&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;small&gt;
&lt;a name=&quot;footnote_1&quot;&gt;&lt;/a&gt;[1] obviously we need to store these events so
&quot;full sequence&quot; really means all events until the buffer was full
&lt;/small&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6112936277054198647-8511630842963928276?l=who-t.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Who-t/~4/cfCLwsGqMbI&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Peter Hutterer</name>
			<email>noreply@blogger.com</email>
			<uri>http://who-t.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Who-T</title>
			<link rel="self" href="http://feeds.feedburner.com/Who-t"/>
			<id>tag:blogger.com,1999:blog-6112936277054198647</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Happy 2012 to you all</title>
		<link href="http://dodonov.net/blog/2011/12/31/happy-2012-to-you-all-4/"/>
		<id>http://dodonov.net/blog/?p=1228</id>
		<updated>2012-01-01T00:26:17+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Yeah, 2011 is coming to the end, and had already switched place with 2012 in most countries already.&lt;/p&gt;

&lt;div class=&quot;wp-caption alignnone&quot; style=&quot;width: 510px;&quot;&gt;&lt;img alt=&quot;image&quot; class=&quot;alignnone&quot; src=&quot;http://dodonov.net/blog/wp-content/uploads/2011/12/wpid-13253762543831.jpg&quot; title=&quot;13253762543831.jpg&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Somewhere on the road to curitiba, starting 2011....&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;For me, 2011 was extremely busy, exhausting but also very fruitful. I started it in a completely different situation from 2010, when I was a mere developer in Mandriva company. And during the course of 2010 and, later, 2011, I got the chance to work as engineering team leader for Conectiva, then development manager and, finally, technical diretor for Mandriva. And, after this experience, I got to move into Intel, working with even more challenging and amazing projects.&lt;/p&gt;

&lt;p&gt;So yes, it was a hugely crazy and great experience. Thank you 2011 – despite all the problems and obstacles, you was great after all if we sum up everything.&lt;/p&gt;

&lt;p&gt;See you all in 2012!&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Happy 2012 to you all</title>
		<link href="http://dodonov.net/blog/2011/12/31/happy-2012-to-you-all/"/>
		<id>http://dodonov.net/blog/?p=1226</id>
		<updated>2012-01-01T00:25:23+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Yeah, 2011 is coming to the end, and had already switched place with 2012 in most countries already.&lt;/p&gt;

&lt;p&gt;For me, 2011 was extremely busy, exhausting but also very fruitful. I started it in a completely different situation from 2010, when I was a mere developer in Mandriva company. And during the course of 2010 and, later, 2011, I got the chance to work as engineering team leader for Conectiva, then development manager and, finally, technical diretor for Mandriva. And, after this experience, I got to move into Intel, working with even more challenging and amazing projects.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;wp-caption alignnone&quot; style=&quot;width: 510px;&quot;&gt;&lt;img alt=&quot;image&quot; class=&quot;alignnone&quot; src=&quot;http://dodonov.net/blog/wp-content/uploads/2011/12/wpid-132537616358004.jpg&quot; title=&quot;13253761635800.jpg&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;And finishing 2011 in this landscape...&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;

&lt;p&gt;So yes, it was a hugely crazy and great experience. Thank you 2011 – despite all the problems and obstacles, you was great after all if we sum up everything.&lt;/p&gt;

&lt;p&gt;See you all in 2012!&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Happy 2012 to you all</title>
		<link href="http://dodonov.net/blog/2011/12/31/happy-2012-to-you-all-3/"/>
		<id>http://dodonov.net/blog/?p=1219</id>
		<updated>2012-01-01T00:21:42+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Yeah, 2011 is coming to the end, and had already switched place with 2012 in most countries already.&lt;/p&gt;

&lt;p&gt;For me, 2011 was extremely busy, exhausting but also very fruitful. I started it in a completely different situation from 2010, when I was a developer and impossible-mission-solver in Mandriva. And during the course of 2010 and, later, 2011, I got the chance to work as engineering team leader for Conectiva, then development manager and, finally, technical diretor for Mandriva. And, after this experience, I got to move into Intel, working with even more challenging and amazing projects.&lt;/p&gt;

&lt;div class=&quot;wp-caption alignnone&quot; style=&quot;width: 510px;&quot;&gt;&lt;img alt=&quot;image&quot; class=&quot;alignnone&quot; src=&quot;http://dodonov.net/blog/wp-content/uploads/2011/12/wpid-132537616358003.jpg&quot; title=&quot;13253761635800.jpg&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;And finishing 2011 in this landscape...&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;So yes, it was a hugely crazy and great experience. Thank you 2011 – despite all the problems and obstacles, you was great after all if we sum up everything.&lt;/p&gt;

&lt;p&gt;See you all in 2012!&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html">Using GTK+ stock icons with pynotify</title>
		<link href="http://julien.danjou.info/blog/2011/python-notify-with-gtk-stock-icon"/>
		<id>http://julien.danjou.info/blog/2011/python-notify-with-gtk-stock-icon</id>
		<updated>2011-12-27T11:55:00+00:00</updated>
		<content type="html"></content>
		<author>
			<name>Julien Danjou</name>
			<uri>http://julien.danjou.info/blog/</uri>
		</author>
		<source>
			<title type="html">jd:/dev/blog</title>
			<link rel="self" href="http://julien.danjou.info/blog/index.xml"/>
			<id>http://julien.danjou.info/blog/index.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Howto: DisplayLink USB Single Monitor on Linux</title>
		<link href="http://plugable.com/2011/12/23/usb-graphics-and-linux/"/>
		<id>http://plugable.com/?p=3540</id>
		<updated>2011-12-23T23:23:27+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Unfortunately, Linux doesn’t support multiple graphics adapters the way Windows does, which means you can’t just plug in USB graphics adapters and expect them to extend your desktop (the good news is &lt;a href=&quot;http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTAzMjM&quot; target=&quot;_blank&quot;&gt;there is progress&lt;/a&gt; on this support).&lt;/p&gt;
&lt;p&gt;What is possible, however, is running a single DisplayLink adapter, or several with a Xinerama or multiseat configuration — just as long as you don’t expect to use your main GPU at the same time.&lt;/p&gt;
&lt;p&gt;The single-display case is relatively easy to set up, and we’ll cover that here.&lt;/p&gt;
&lt;p&gt;First, make sure you’re running kernel version 2.6.35 or later (Ubuntu 10.10 or later).  For older kernel versions, you’ll need to update udlfb and run a modified fbdev X server (not covered in this post).  On these kernel versions, when you plug in your DisplayLink-based USB graphics device, you should get a green screen. This means that at the driver built into the Linux kernel is happy, healthy, and talking to the device.&lt;/p&gt;
&lt;p&gt;Second, if you are running Unity Desktop in Ubuntu 11.04 or later, you’ll need to switch back to Classic Mode so you’re running straight X.  Here’s how on Ubuntu: &lt;/p&gt;
&lt;p&gt;Click on the power button in the upper right corner (mine looks like a light switch) and choose the last option, System Settings.  Search for Login Screen, Double-click to display, Choose Unlock and enter your password, Select Ubuntu Classic as default session.  &lt;/p&gt;
&lt;p&gt;Third, if you’re running kernel versions between 2.6.35 to 3.1, enable the fb_defio option of udlfb. To do this, create or edit a file like&lt;br /&gt;
/etc/modprobe.d/50-displaylink.conf&lt;/p&gt;
&lt;p&gt;and add the single line&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot; style=&quot;font-family: monospace;&quot;&gt;options udlfb &lt;span style=&quot;color: #007800;&quot;&gt;fb_defio&lt;/span&gt;=&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And reboot (or run “sudo depmod -a” and unplug/replug your adapter). This will turn on defio (page fault change detection) support. This option is already enabled by default in kernels 3.2+.&lt;/p&gt;
&lt;p&gt;Lastly, create an X config file called 60-plugable.conf (or similar) with the following contents and place it in /usr/share/X11/xorg.conf.d (on recent distros; on older distros, make this your xorg.conf):&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;xorg_conf&quot; style=&quot;font-family: monospace;&quot;&gt; 
&lt;span style=&quot;color: #b1b100;&quot;&gt;Section&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;Device&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;Identifier&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;uga&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;driver&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;fbdev&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;Option&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;fbdev&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;/dev/fb0&quot;&lt;/span&gt; 
&lt;span style=&quot;color: #b1b100;&quot;&gt;EndSection&lt;/span&gt; 
 
&lt;span style=&quot;color: #b1b100;&quot;&gt;Section&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;Monitor&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;Identifier&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;monitor&quot;&lt;/span&gt; 
&lt;span style=&quot;color: #b1b100;&quot;&gt;EndSection&lt;/span&gt; 
 
&lt;span style=&quot;color: #b1b100;&quot;&gt;Section&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;Screen&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;Identifier&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;screen&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;Device&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;uga&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;Monitor&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;monitor&quot;&lt;/span&gt; 
&lt;span style=&quot;color: #b1b100;&quot;&gt;EndSection&lt;/span&gt; 
 
&lt;span style=&quot;color: #b1b100;&quot;&gt;Section&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;ServerLayout&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;Identifier&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;default&quot;&lt;/span&gt; 
  &lt;span style=&quot;color: #990000;&quot;&gt;Screen&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;screen&quot;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt; 
&lt;span style=&quot;color: #b1b100;&quot;&gt;EndSection&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note: if your main GPU creates a /dev/fb0 even when the USB display is not attached, then your USB display is probably getting assigned to /dev/fb1. In that case, change /dev/fb0 in the “Device” section above to /dev/fb1&lt;/p&gt;
&lt;p&gt;Now, on reboot, you should (hopefully!) see your login come up on your DisplayLink USB attached display!&lt;/p&gt;
&lt;p&gt;This kind of simple setup is useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Testing or playing with your USB graphics adatper on Linux.&lt;/li&gt;
&lt;li&gt;Embedded systems with USB but no GPU.&lt;/li&gt;
&lt;li&gt;As a backup method when the main GPU or its driver isn’t available or working.&lt;/li&gt;
&lt;li&gt;Systems where a USB graphics adapter enables higher modes (up to 2048×1152) than the main GPU screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please comment if you have any trouble with this single display case.  See our &lt;a href=&quot;http://plugable.com/category/project/udlfb/&quot;&gt;past posts&lt;/a&gt; for additional information about the DisplayLink Linux kernel driver and some more involved setups.&lt;/p&gt;
&lt;p&gt;The instructed here work on all &lt;a href=&quot;http://plugable.com/products/graphics-adapters/&quot;&gt;Plugable USB 2.0 graphics adapters&lt;/a&gt; and &lt;a href=&quot;http://plugable.com/products/laptop-docking/&quot;&gt;Plugable USB 2.0 docking stations and thin clients&lt;/a&gt; (and should also generally work on all DisplayLink based products).&lt;/p&gt;</content>
		<author>
			<name>jerome</name>
			<uri>http://plugable.com</uri>
		</author>
		<source>
			<title type="html">Plugable » Linux</title>
			<subtitle type="html">USB Devices - Hubs, Cables, Graphics, Video, Docking, SATA, Keyboards, more</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/PlugableLinux"/>
			<id>http://plugable.com</id>
		</source>
	</entry>

	<entry>
		<title type="html">Santa doesn't forget about old cards (R6xx/R7xx HDMI audio)</title>
		<link href="http://zajec.net/blog/view/2011-r6xx-r7xx-hdmi-audio-no-video-solded"/>
		<id>http://zajec.net/blog/atom/blog/22</id>
		<updated>2011-12-23T19:32:48+00:00</updated>
		<content type="html">Since ever few radeon HDMI audio testers were reporting problems with their TVs not displaying anything at all. Enabling audio support resulted in invalid signal or similar error.&lt;br /&gt;
&lt;br /&gt;
Thanks to great help from Nirbheek Chauhan, I've finally found the source of this issue. It appears we calculate checksum of HDMI infoframe incorrectly. Some TVs don't care about this, but others really do, refusing to display or play anything.&lt;br /&gt;
&lt;br /&gt;
I've just posted:&lt;br /&gt;
[PATCH] drm/radeon/kms: workaround invalid AVI infoframe checksum&lt;br /&gt;
with suggestion of backporting this patch to stable releases. Just a one another Christmas gift from me.&lt;br /&gt;
&lt;br /&gt;
Merry Christmas everyone who celebrate it :)</content>
		<author>
			<name>Zajec, Rafał Miłecki</name>
			<uri>http://zajec.net</uri>
		</author>
		<source>
			<title type="html">Zajec's blog</title>
			<subtitle type="html">Linux, Opera, XHTML</subtitle>
			<link rel="self" href="http://zajec.net/blog/atom"/>
			<id>http://zajec.net/blog/atom</id>
		</source>
	</entry>

	<entry>
		<title type="html">calypso</title>
		<link href="http://keithp.com/blogs/calypso/"/>
		<id>http://keithp.com/blogs/calypso/</id>
		<updated>2011-12-23T06:49:15+00:00</updated>
		<content type="html">&lt;h2&gt;Calypso — CalDAV/CardDAV/WebDAV for Android and Evolution&lt;/h2&gt;

&lt;p&gt;Ever since I bought my first Palm Pilot in 1997, I’ve relied upon a
pocket-able device to carry a copy of my calendar and contacts, and for
that same database to be present on my laptop. I went through a long
list of Palm-compatible devices, including both the Palm Treo and Palm
Centro telephones. I even wrote a number of my own &lt;a href=&quot;http://keithp.com/pilot&quot;&gt;Palm
applications&lt;/a&gt;. Years ago, it was pretty obvious that I’d have
to find a new phone, but I was stuck looking for something that could
provide the same ‘hot-sync’ functionality.&lt;/p&gt;

&lt;h3&gt;SyncML on the Series 40&lt;/h3&gt;

&lt;p&gt;I bought a Series 40 Nokia phone in Shanghai that promised ‘SyncML’
support. Given that I had seen numerous SyncML implementations for
Linux, it seemed like I should be able to get something to work.&lt;/p&gt;

&lt;p&gt;SyncML on the Series 40 is a disaster — the phone couldn’t actually
store all of my contacts, and it couldn’t hold half of the data
fields I used. So, that phone landed in the box and back to the Centro
I went.&lt;/p&gt;

&lt;h3&gt;SyncML on the N900&lt;/h3&gt;

&lt;p&gt;Nokia kindly sent me an N900 at some point, so I gave SyncML another
try. Given that the N900 runs evolution-data-server, and that I’ve had
evolution-data-server running on my laptop, it seemed like I should be
in business. Well, almost. It took several days of hacking to fix bugs
in the evolution SyncML back end, then another several days fussing
with opensync.&lt;/p&gt;

&lt;p&gt;I ended up abandoning direct synchronization as unworkable — opensync
would sit in an infinite loop, or worse, trash my database
completely. I finally found ‘syncml-ds-tool’, which is a debugging
tool that comes with opensync. This tool simply synchronizes a set of
disk files, one per contact or calendar entry, with the phone. That
worked for well over a year. And then, a few months ago, Bluetooth on
the laptop stopped connecting with the phone’s SyncML server. I’d get
‘ECONNREFUSED’ every time I tried to use it. So much for the N900. DUN
still worked, mostly, although it too would get ECONNREFUSED at times,
but retrying seemed to make it work.&lt;/p&gt;

&lt;p&gt;However, While the N900 SyncML solution worked, I discovered another
thing I wanted—contacts and calendar entries stored in individual
files and revision controlled with git. This makes it reasonable to
delete stale calendar entries and know that they’re never really gone,
just left behind in an older version of the calendar. And, if you mess
up, you can recover by poking at the database with git directly.&lt;/p&gt;

&lt;p&gt;I switched back to the venerable Palm Centro; it turns out that
calendar and contacts are more important to me than being able to surf
the web on my phone. Alas, my Centro went ‘swimming’ in August and has
passed on to the great electronics recycling house in the sky. I pulled
the SIM out and switched back to the N900.&lt;/p&gt;

&lt;p&gt;I got my contacts imported on the N900 by copying files over the net
work; not a long-term strategy, but at least I had phone numbers
again. There was no hope for my calendar. I started looking for a
solution in earnest.&lt;/p&gt;

&lt;h3&gt;How about Android?&lt;/h3&gt;

&lt;p&gt;At this point in my story, I’m sure you’re asking why I didn’t just
use one of the numerous Android phones that came through my hands. The
answer is simple — my calendar and contacts are probably some of my
most personal data, and I’m not willing to store them outside of my
direct control, for reasons similar to those which are driving the
development of the &lt;a href=&quot;http://freedomboxfoundation.org&quot;&gt;FreedomBox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When Android first came out, it could only talk to Google
services, which didn’t meet my hard requirement for personal data
storage.&lt;/p&gt;

&lt;p&gt;One of my co-workers had his Google account suspended for violating
the terms-of-service; he asked what he had done, but they wouldn’t
say. He asked if he could get his data back, and they said “no”. They
invited him to create a new account, but it would not ever get any of
the old data. A few days later, he got a nice apologetic email letting
him know that they’d made a mistake and that he hadn’t, in fact,
violated any of the terms-of-service, and that his old account was
restored with all of his data intact. Wasn’t that nice of Google?&lt;/p&gt;

&lt;h3&gt;WebOS?&lt;/h3&gt;

&lt;p&gt;I got a WebOS phone over the summer and discovered that while it had
multiple contact/calendar back ends, none of them used standard
protocols and so you only had the choice between multiple corporate
data centers, which isn’t actually a choice at all.&lt;/p&gt;

&lt;p&gt;Furthermore, the WebOS phone refused route PAN packets over the phone
network, even though I have a data plan which allows this. It’s not
that it couldn’t support it, it’s that it refused.&lt;/p&gt;

&lt;p&gt;A couple of weeks after the WebOS phone arrived, HP canceled all of
their WebOS hardware products, which made me less interested in trying
to solve this problem.&lt;/p&gt;

&lt;h3&gt;Android recovers&lt;/h3&gt;

&lt;p&gt;About the same time the WebOS phone arrived, I discovered that Google
had published enough information about the calendar/contacts internals
for Marten Gajda to write &lt;a href=&quot;http://dmfs.org/caldav/&quot;&gt;CalDAV-Sync&lt;/a&gt; and
&lt;a href=&quot;http://dmfs.org/carddav/&quot;&gt;CardDAV-Sync&lt;/a&gt;. And then, Andrew McMillan
wrote &lt;a href=&quot;http://andrew.mcmillan.net.nz/projects/aCal&quot;&gt;aCal&lt;/a&gt;, which is a
complete replacement for the built-in calendar and contacts
applications and supports CalDAV and CardDAV.&lt;/p&gt;

&lt;p&gt;With two different standards-compliant solutions available, it seemed
like it might be time to try Android again.&lt;/p&gt;

&lt;p&gt;I’d love for CardDAV-Sync and CalDAV-Sync to become free software like
aCal is. Andrew makes money from aCal by offering it for sale via the
Android Market, while still publishing the sources for those who want
to build their own copy.&lt;/p&gt;

&lt;h3&gt;CalDAV/CardDAV on Linux&lt;/h3&gt;

&lt;p&gt;I think the most widely known CalDAV server for Linux is probably
&lt;a href=&quot;http://www.davical.org/&quot;&gt;DAViCal&lt;/a&gt;, a huge pile of PHP and SQL sitting
on top of Apache. I’m sure it’s suitable for running on a server
and being accessed over the internet, but I’m not interested in that,
nor am I interested in having my laptop run Apache and PostgreSQL.&lt;/p&gt;

&lt;p&gt;I found a tiny little CalDAV server, &lt;a href=&quot;http://radicale.org/&quot;&gt;Radicale&lt;/a&gt;,
which seemed like a lot better fit. It’s written in Python and uses
the usual Python HTTP server infrastructure, which provides SSL and
authentication support along with some fairly convenient APIs for
parsing and generating HTML.&lt;/p&gt;

&lt;p&gt;Before long, I discovered that Radicale was actually &lt;em&gt;too&lt;/em&gt; simple for
my needs. It stores the whole calendar in a single file, re-parsing it
whenever a request is made, so a calendar with just hundreds of
entries caused the server to slow down enough that evolution would
time-out when talking to it.&lt;/p&gt;

&lt;p&gt;Also, Radicale doesn’t actually parse the calendar entries completely,
it has some ad-hoc code that finds various pieces of data, but without
dealing with the whole syntax.&lt;/p&gt;

&lt;p&gt;I started hacking at Radicale to see how far I could get. I changed
the storage code to store one event per file, then added hooks to use
git for change management. Then, I found a full vcalendar/vcard
parsing library in python,
&lt;a href=&quot;http://vobject.skyhouseconsulting.com/&quot;&gt;vobject&lt;/a&gt;, which I used to
replace the ad-hoc parsing code. Finally, I added support for VCARD
entries as well, allowing the system to store both calendar and
contact information. &lt;/p&gt;

&lt;h3&gt;Introducing Calypso, a CardDAV/CalDAV server&lt;/h3&gt;

&lt;p&gt;With this much divergence from the original project, I’ve figured I’d
best rename things to avoid confusion, so I decided to call it
‘calypso’, after a brief trip through the dictionary looking for names
starting with ‘ca’.&lt;/p&gt;

&lt;p&gt;Calypso works with evolution, iceowl and the Android CalDAV/CardDAV
plugins. It does not yet work with aCal; for some reason aCal cannot
find any calendars on the server.&lt;/p&gt;

&lt;p&gt;Calypso also supports importing calendar changes from the command
line, allowing you to integrate support into a text-based email
application like &lt;a href=&quot;http://notmuchmail.org/&quot;&gt;notmuch&lt;/a&gt; or
&lt;a href=&quot;http://www.mutt.org/&quot;&gt;mutt&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Calypso is available via git from git://keithp.com/git/calypso and is
distributed under the GPL (v3 or later). I still consider it a work
derived from Radicale, and so the code retains all of the Radicale
copyrights along with my own.&lt;/p&gt;

&lt;h3&gt;Using Calypso&lt;/h3&gt;

&lt;h4&gt;Initial setup&lt;/h4&gt;

&lt;p&gt;Calypso runs as a regular user, all data are stored in
~/.config/calypso. To initialize calypso:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ mkdir ~/.config/calypso ~/.config/calypso/calendars
$ cat &amp;gt; ~/.config/calypso/config &amp;lt;&amp;lt; EOF
[server]
ssl=true
certificate=/home/keithp/.config/calypso/ssl/server.crt
key=/home/keithp/.config/calypso/ssl/server.key

[acl]
;type=htpasswd
type=fake
filename=/home/keithp/.config/calypso/passwd
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Running calypso&lt;/h4&gt;

&lt;p&gt;Then run calypso:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ python ./calypso.py
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;No, I haven’t figured out how to install it…&lt;/p&gt;

&lt;h4&gt;Creating new calendars&lt;/h4&gt;

&lt;p&gt;To add a new database:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ mkdir -p ~/.config/calypso/calendars/private/my_calendar
$ cd ~/.config/calypso/calendars/private/my_calendar
$ git init
$ git commit --allow-empty -m'initialize new calendar'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The new calendar should now be visible as
&lt;code&gt;https://localhost:5233/private/my_calendar&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can add files to the directory at any time; calypso will check the
directory mtime at each operation and update its internal state from
that on disk automatically when the directory changes.&lt;/p&gt;

&lt;h4&gt;Importing files&lt;/h4&gt;

&lt;p&gt;Given a set of files with VCALENDAR or VCARD entries, you can import
them with:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ calypso --import private/my_calendar &amp;lt;filenames...&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will update any changed entries and add any new ones.&lt;/p&gt;

&lt;h3&gt;ToDo list for calypso&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Document the config file contents.&lt;/li&gt;
&lt;li&gt;Make it installable&lt;/li&gt;
&lt;li&gt;Figure out what aCal wants&lt;/li&gt;
&lt;li&gt;Support calendar creation&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;More Android info&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://market.android.com/details?id=com.afterhoursdevelopers.android.synker&amp;amp;hl=en&quot;&gt;Synker&lt;/a&gt;.
This provides a desktop widget which starts the sync process
running on a list of accounts. This makes it easy to manually
synchronize with the laptop when you are connected&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://market.android.com/details?id=org.dmfs.android.contacts&amp;amp;feature=search_result#?t=W251bGwsMSwyLDEsIm9yZy5kbWZzLmFuZHJvaWQuY29udGFjdHMiXQ..&quot;&gt;Contact Editor&lt;/a&gt;.
This lets you fully edit contacts synchronized over CardDAV. The
built-in contact editor doesn’t let you change anything other than
the name for some reason.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m running &lt;a href=&quot;http://www.cyanogenmod.com/&quot;&gt;cyanogenmod&lt;/a&gt; on my Nexus S
as that provides PAN support. With PAN, I can create a network link
between laptop and phone which doesn’t depend on any local WiFi
infrastructure and which gives both phone and laptop static IP
addresses, allowing me to configure the sync URLs statically on the
phone. I’d use mDNS, but Android doesn’t bother to support that.&lt;/p&gt;</content>
		<author>
			<name>Keith Packard</name>
			<uri>http://keithp.com/blog/</uri>
		</author>
		<source>
			<title type="html">blog</title>
			<subtitle type="html">Keithp.com</subtitle>
			<link rel="self" href="http://keithp.com/blog/index.rss"/>
			<id>http://keithp.com/blog/</id>
		</source>
	</entry>

	<entry>
		<title type="html">update on hotplug server</title>
		<link href="http://airlied.livejournal.com/75555.html"/>
		<id>urn:lj:livejournal.com:atom1:airlied:75555</id>
		<updated>2011-12-22T17:29:56+00:00</updated>
		<content type="html">No new videos yet, need to fix some more rendering bugs so it looks nicer :)&lt;br /&gt;&lt;br /&gt;So I've been working towards 3 setups:&lt;br /&gt;&lt;br /&gt;a) intel rendering + nouveau offload&lt;br /&gt;b) nouveau rendering + DVI output + intel LVDS output&lt;br /&gt;c) hotplug USB with either intel or nvidia rendering.&lt;br /&gt;&lt;br /&gt;Categorisation of devices roles:&lt;br /&gt;I've identified 4 devices roles so far:&lt;br /&gt;preferred master: the device is happy to be master&lt;br /&gt;reluctant master: the device can be a master but would rather not be&lt;br /&gt;offload slave: device can be used as an additional DRI2 renderer for a master&lt;br /&gt;output slave: device can be used an additional output for a master&lt;br /&gt;&lt;br /&gt;For the 3 setups above:&lt;br /&gt;a) intel would be preferred master, nvidia would be offload slave&lt;br /&gt;b) nvidia would be preferred master, intel would be output slave&lt;br /&gt;c) usb devices would be output slaves, however if no master exists, usb device would be reluctant master.&lt;br /&gt;&lt;br /&gt;I've rebased the prime work[1] on top of the dma-buf upstream work, and worked through most of the lifetime problems. Some locking issues still exist, and I'll have to get back to them. But the code works and doesn't oops randomly which is good.&lt;br /&gt;&lt;br /&gt;prime is the kernel magic needed for this work, as it allows sharing of a buffer between two drm drivers, so for (a) it shares the dri2 front pixmap between devices, for (b/c) it shares a pixmap that the rendering gpu copies dirty updates to and the output slaves use as their scanout pixmap.&lt;br /&gt;&lt;br /&gt;So I've done nearly all the work to share between intel and nouveau and I've done the kernel driver work for udl, but I haven't done the last piece in userspace for (c), which is to use the shared pixmap as usb scanout via the modesetting driver.&lt;br /&gt;&lt;br /&gt;Today I hacked in a switch on the first randr command, so I can start the X server with intel as master and nouveau in offload mode. I can run gears on intel or nouveau, then after the randr command and another randr command to set a mode, the X server migrates everything to the nouveau driver, puts it in master mode, and places the intel driver into output slave mode. It seems to render my xterm + metacity content fine.&lt;br /&gt;&lt;br /&gt;So the current short-term TODO is:&lt;br /&gt;fix some issues with my nouveau/exa port rendering&lt;br /&gt;fix some issues with xcompmgr&lt;br /&gt;add usb output slave support.&lt;br /&gt;&lt;br /&gt;Medium-term TODO:&lt;br /&gt;worked out how to control this stuff, via randr protocol. How much information do we need to expose to clients about GPUs, and how do we control them. Open issues with atomicity of updates to avoid major uglys. Switching from intel master to nvidia master + intel outputs, means we have to reconfigure the Intel output to point at the new pixmap, but the more steps we put in there for clients to do, the more ugly and flashing we'll see on screen, however we probably want a lot of this to be client driven (i.e. gnome-settings-daemon).&lt;br /&gt;&lt;br /&gt;Longer term TODO:&lt;br /&gt;Get GLX_ARB_robustness done, now that Ian has done the context creation stuff, this should be a lot more trivial. (so trivial someone else could do it :)&lt;br /&gt;&lt;br /&gt;[1] &lt;a href=&quot;http://cgit.freedesktop.org/~airlied/linux/log/?h=drm-prime-dmabuf&quot; rel=&quot;nofollow&quot;&gt;http://cgit.freedesktop.org/~airlied/linux/log/?h=drm-prime-dmabuf&lt;/a&gt;</content>
		<author>
			<name>airlied</name>
			<uri>http://airlied.livejournal.com/</uri>
		</author>
		<source>
			<title type="html">airlied</title>
			<subtitle type="html">airlied</subtitle>
			<link rel="self" href="http://airlied.livejournal.com/data/atom"/>
			<id>urn:lj:livejournal.com:atom1:airlied</id>
		</source>
	</entry>

	<entry>
		<title type="html">Multitouch in X - Getting events</title>
		<link href="http://feedproxy.google.com/~r/Who-t/~3/34WFAyndvzs/multitouch-in-x-getting-events.html"/>
		<id>tag:blogger.com,1999:blog-6112936277054198647.post-1128244402269092940</id>
		<updated>2011-12-22T00:30:21+00:00</updated>
		<content type="html">This post is part of a series on multi-touch support in the X.Org X server.
I recommend re-reading &lt;a href=&quot;http://who-t.blogspot.com/2010/10/thoughts-on-linux-multitouch.html&quot;&gt;Thoughts on Linux multitouch&lt;/a&gt; from last year for some higher-level comments.&lt;br /&gt;
In this post, I'll outline how to identify touch devices and register for touch events.
&lt;br /&gt;&lt;br /&gt;
This post assumes basic knowledge of the XI2 Xlib interfaces. Code examples
should not be scrutinised for language-correctness.
&lt;br /&gt;
&lt;h2&gt;New event types&lt;/h2&gt;
XI 2.2 defines four new event types: &lt;i&gt;XI_TouchBegin&lt;/i&gt;, &lt;i&gt;XI_TouchUpdate&lt;/i&gt;, &lt;i&gt;XI_TouchEnd&lt;/i&gt; are the standard events that most applications will be using. The fourth event, &lt;i&gt;XI_TouchOwnership&lt;/i&gt; is mainly for handling specific situations where reaction speed is at a premium and gesture processing when grabs are active. I won't be covering those in this post.
&lt;h2&gt;
Identifying touch devices&lt;/h2&gt;
To use multitouch functionality from a client application, the client must announce support for the X Input Extension version 2.2 through the &lt;a href=&quot;http://www.x.org/archive/X11R7.5/doc/man/man3/XIQueryVersion.3.html&quot;&gt;XIQueryVersion(3)&lt;/a&gt; request. 
&lt;pre&gt;int major = 2, minor = 2;
XIQueryVersion(dpy, &amp;amp;major, &amp;amp;minor);
if (major * 1000 + minor &amp;lt; 2002)
    printf(&quot;Server does not support XI 2.2\n&quot;);
&lt;/pre&gt;
Once announced, an &lt;a href=&quot;http://www.x.org/archive/X11R7.5/doc/man/man3/XIQueryDevice.3.html&quot;&gt;XIQueryDevice(3)&lt;/a&gt; call may return a new class type, the &lt;i&gt;XITouchClass&lt;/i&gt;. If this class is present on a device, the device supports multitouch.The class struct itself is defined like this:&lt;br /&gt;
&lt;pre&gt;typedef struct
{
    int         type;
    int         sourceid;
    int         mode;
    int         num_touches;
} XITouchClassInfo;
&lt;/pre&gt;
The &lt;b&gt;num_touches&lt;/b&gt; field specifies the number of simultaneous touches supported by the device. If the number is 0, we simply don't know (likely) or the device supports an unlimited number of touches (less likely). Regardless of the value expect that some devices lie, so it's best to treat this value as a guide only.

&lt;br /&gt;
&lt;br /&gt;
The &lt;b&gt;mode&lt;/b&gt; field specifies the type of touch devices. We currently define two types and the server behaviour differs depending on the type:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;XIDirectTouch&lt;/b&gt; for direct-input touch devices (e.g. your average touchscreen or tablet).  For this type of device, the touch events will be delivered to the windows at the of the touch point. Again, similar to what you would expect from a tablet interface - you press top left and the application top-left responds.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;XIDependentTouch&lt;/b&gt; for a indirect input devices with multi-touch functionality. Touchpads are the prime example here. Touch events on such devices will be sent to the window underneath the cursor and clients are expected to interpret the touchpoints as (semantically) relative to the cursor position. For example, if your cursor is inside a Firefox window and you touch with two fingers on the top-left corner of the touchpad, Firefox will get those events. It can then decide on how to interpret those touchpoints.&lt;/li&gt;
&lt;/ul&gt;
A device that has a TouchClass may send touch events, but these events use the same axes as pointer events. Having said that, a touch device may still send pointer events as well - if the physical device generates both.
&lt;br /&gt;
Your code to identify touch devices could roughly look like this:
&lt;br /&gt;
&lt;pre&gt;XIDeviceInfo *info;
int nevices;

info = XIQueryDevice(display, XIAllDevices, &amp;amp;ndevices);

for (i = 0; i &amp;lt; ndevices; i++)
{
    XIDeviceInfo *dev = &amp;amp;info[i];
    printf(&quot;Device name %d\n&quot;, dev-&amp;gt;name);
    for (j = 0; j &amp;lt; dev-&amp;gt;num_classes; j++)
    {
        XIAnyClassInfo *class = dev-&amp;gt;classes[j];
        XITouchClassInfo *t = (XITouchClassInfo*)class;

        if (class-&amp;gt;type != XITouchClass)
            continue;

        printf(&quot;%s touch device, supporting %d touches.\n&quot;,
               (t-&amp;gt;mode == XIDirectTouch) ?  &quot;direct&quot; : &quot;dependent&quot;,
               t-&amp;gt;num_touches);
    }
}

&lt;/pre&gt;
&lt;h2&gt;
Selecting for touch events&lt;/h2&gt;
Selecting for touch events on a window is mostly identical to pointer events. A client creates an event mask and submits it with &lt;a href=&quot;http://www.x.org/archive/X11R7.5/doc/man/man3/XISelectEvents.3.html&quot;&gt;XISelectEvents(3)&lt;/a&gt;. One exception applies: a client must always select for all three touch events &lt;a href=&quot;http://feeds.feedburner.com/Who-t#footnote_1&quot;&gt;[1]&lt;/a&gt;, &lt;i&gt;XI_TouchBegin&lt;/i&gt;, &lt;i&gt;XI_TouchUpdate&lt;/i&gt;, &lt;i&gt;XI_TouchEnd&lt;/i&gt;. Selecting for one or two only will result in a BadValue error.
&lt;br /&gt;&lt;br /&gt;
As for button events, only one client may select for touch events on any given window and the event delivery attempts traverse from the bottom-most window in the window tree up to the root window. Where a matching event selection is found, the event is delivered and the traversal stops.

&lt;br /&gt;
&lt;h2&gt;
Handling touch events&lt;/h2&gt;
The three event types &lt;a href=&quot;http://feeds.feedburner.com/Who-t#footnote_1&quot;&gt;[1]&lt;/a&gt; are &lt;i&gt;XIDeviceEvents&lt;/i&gt; like pointer and keyboard events. So from a client's point of view, in essence all we added was new event types.&lt;br /&gt;
&lt;br /&gt;
The &lt;b&gt;detail&lt;/b&gt; field of touch events specifies the touch ID, a unique ID for this particular touch for the lifetime of the touch sequence. Each touch sequence consists of a TouchBegin event, zero or more TouchUpdate events and one TouchEnd event. Since multiple touch sequences may be ongoing at any time, keeping track of the ID is important. The server guarantees that the touch ID is unique per device and that it will not be re-used &lt;a href=&quot;http://feeds.feedburner.com/Who-t#footnote_2&quot;&gt;[2]&lt;/a&gt;. Note that while touch IDs increase, they increase by an implementation-defined amount. Don't rely on the next touch ID to be the current ID + 1. 
&lt;br /&gt;
&lt;br /&gt;
The button state in a touch event is the state of the physical buttons only. A TouchUpdate or TouchEnd event will thus usually have a zero button state. &lt;a href=&quot;http://feeds.feedburner.com/Who-t#footnote_3&quot;&gt;[3]&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
That's pretty much it, otherwise the handling of touch events is identical to pointer or keyboard events. Touch event handling should be straightforward and the significant deviations from the current protocol are in the grab handling, something I'll handle in a future post.

&lt;br /&gt;
&lt;br /&gt;
&lt;small&gt;
&lt;a href=&quot;http://feeds.feedburner.com/Who-t&quot; name=&quot;footnote_1&quot;&gt;&lt;/a&gt;[1] I know, it's four. Good that you're paying attention.&lt;br /&gt;
&lt;a href=&quot;http://feeds.feedburner.com/Who-t&quot; name=&quot;footnote_2&quot;&gt;&lt;/a&gt;[2] Technically ID collision may occur. For that to happen, you'd need to hold at least one touch down while triggering enough touches to exhaust a 32 bit ID range. And hope that after the wraparound you will get the same ID. There are better ways to spend your weekend.&lt;br /&gt;
&lt;a href=&quot;http://feeds.feedburner.com/Who-t&quot; name=&quot;footnote_3&quot;&gt;&lt;/a&gt;[3] pointer emulation changes this, but I'll get to that some other time.&lt;br /&gt;
&lt;/small&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6112936277054198647-1128244402269092940?l=who-t.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Who-t/~4/34WFAyndvzs&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Peter Hutterer</name>
			<email>noreply@blogger.com</email>
			<uri>http://who-t.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Who-T</title>
			<link rel="self" href="http://feeds.feedburner.com/Who-t"/>
			<id>tag:blogger.com,1999:blog-6112936277054198647</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Qt on wayland: howto</title>
		<link href="http://vignatti.wordpress.com/2011/12/19/qt-on-wayland-howto/"/>
		<id>http://vignatti.wordpress.com/?p=520</id>
		<updated>2011-12-21T09:54:41+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;To run Qt applications on Wayland is fairly simple nowadays. Thank to Qt developers, they are following up quite well our last changes on Wayland protocol and updating accordingly on Qt5 code base — by the way, the fresh and just released Qt 4.8 &lt;a href=&quot;https://qt.gitorious.org/qt/qt/blobs/4.8/src/plugins/platforms/wayland/wayland_sha1.txt&quot;&gt;does not ship the latest&lt;/a&gt; protocol additions, so that’s not the one I’m referring.&lt;/p&gt;
&lt;p&gt;So, today I’ve set up the last bits of Qt environment on my Intel Pine-Trail pretty easy (yeah, I compile on my tablet :-O). You don’t need to clone the whole data base for starting hacking on it. Let’s see.&lt;/p&gt;
&lt;p&gt;first, you have to clone qtbase:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# mkdir qt; cd qt&lt;br /&gt;
# git clone git://gitorious.org/qt/qtbase.git&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Before start the compilation steps, I like to set up my testbed in a different directory than what the ordinary system uses, so I include this on my .bashrc:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
export QTVER=qt5&lt;br /&gt;
export QTDIR=/opt/qt/$QTVER&lt;br /&gt;
export PATH=$QTDIR/bin/:$PATH&lt;br /&gt;
export LD_LIBRARY_PATH=$QTDIR/lib/:$LD_LIBRARY_PATH&lt;br /&gt;
export PKG_CONFIG_PATH=$QTDIR/lib/pkgconfig/:$PKG_CONFIG_PATH&lt;br /&gt;
export QT_PLUGIN_PATH=$QTDIR/lib/plugins/&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;and don’t forget to re-run your bashrc! Now, when developing a Wayland application it’s quite useful to check if your app is behaving nicely, so for doing so I like to compare it with Qt’s XCB backend. Then you’ll need the following — I’m under Ubuntu 11.10:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# apt-get install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-xfixes0-dev&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;you should be ready now to go for the configuration:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# ./configure -confirm-license -opensource -no-qt3support -no-multimedia -no-webkit -no-phonon -no-v8 -debug -qpa -xcb -wayland -egl -opengl es2 -nomake examples -prefix ${QTDIR}&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;and now, the compilation — which took approximately 1hr and half in my system:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# make&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;install it:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# make install&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;At this point you got all Qt libraries, and needed tools to compile qtwayland platform. So go back one directory and clone that:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# cd ../&lt;br /&gt;
# git clone git://gitorious.org/qt/qtwayland.git&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;You need Wayland protocol libraries now in your system, and that’s the very late ones, which means the stock packages from your distro won’t work. Get and&lt;br /&gt;
build them using the following:&lt;br /&gt;
&lt;tt&gt;&lt;/tt&gt;&lt;/p&gt;&lt;tt&gt;
&lt;p&gt;http://wayland.freedesktop.org/building.html&lt;/p&gt;
&lt;/tt&gt;&lt;p&gt;&lt;tt&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;You might want to develop Wayland on the top of X, so before compile you’ll need this:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# apt-get install libxcomposite-dev&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Jørgen Lind, updated me with: “the default buffersharing to use is wayland_egl. To be able to use the xcomposite stuff you need to export the environment variable QT_WAYLAND_GL_CONFIG to be either xcomposite_egl or xcomposite_glx”. So in order do to Wayland on X you will need to tweak it as well.&lt;/p&gt;
&lt;p&gt;and then:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# cd qtwayland/&lt;br /&gt;
# qmake&lt;br /&gt;
# make &amp;amp;&amp;amp; make install&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;To run now a Qt app, I first set the XDG directory that compositor and clients use to talk under Wayland. You better to watch out, cause some distros already have this set somewhere. Anyway, I put this on my .bashrc:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# export XDG_RUNTIME_DIR=$HOME/.xdg&lt;br /&gt;
# mkdir $HOME/.xdg&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;and re-ran .bashrc. Finally the Qt app running and voilà:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
# cd ../qtbase/examples/opengl/hellowindow&lt;br /&gt;
# qmake&lt;br /&gt;
# make&lt;br /&gt;
# wayland-compositor &amp;amp;&lt;br /&gt;
# ./hellowindow -platform wayland&lt;br /&gt;
&lt;/tt&gt;&lt;br /&gt;
—&lt;/p&gt;
&lt;p&gt;Kudos to &lt;a href=&quot;http://www.macieira.org/blog/&quot;&gt;Thiago Macieira&lt;/a&gt; for reviewing the content!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/vignatti.wordpress.com/520/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/vignatti.wordpress.com/520/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/vignatti.wordpress.com/520/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/vignatti.wordpress.com/520/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/vignatti.wordpress.com/520/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/vignatti.wordpress.com/520/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/vignatti.wordpress.com/520/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/vignatti.wordpress.com/520/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/vignatti.wordpress.com/520/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/vignatti.wordpress.com/520/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/vignatti.wordpress.com/520/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/vignatti.wordpress.com/520/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/vignatti.wordpress.com/520/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/vignatti.wordpress.com/520/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=vignatti.wordpress.com&amp;amp;blog=769537&amp;amp;post=520&amp;amp;subd=vignatti&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>vignatti</name>
			<uri>http://vignatti.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Tiago Vignatti</title>
			<subtitle type="html">In The Eyes Of The World</subtitle>
			<link rel="self" href="http://vignatti.wordpress.com/feed/atom/"/>
			<id>http://vignatti.wordpress.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Holidays news from Intel Linux Graphics land</title>
		<link href="http://dodonov.net/blog/2011/12/20/holidays-news-from-intel-linux-graphics-land/"/>
		<id>http://dodonov.net/blog/?p=1202</id>
		<updated>2011-12-20T13:42:16+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Yeah, I admit that my semi-periodic updates about Intel Linux Graphics got more “seldom-periodic” than “truly-periodic” for the past weeks. But have no fear – they are back! And I am still on my self-appointed bi-weekly schedule estimate. This is what’s good about semi-periodic schedule – one never can run too much out of it &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; .&lt;/p&gt;

&lt;p&gt;So starting with the coolest news – the &lt;strong&gt;Mesa&lt;/strong&gt; team is getting close to the GL 3.0 milestone! Yeah, with latest &lt;strong&gt;GL_ext_transform_feedback&lt;/strong&gt; patches from &lt;strong&gt;Paul Berry&lt;/strong&gt;, the last major piece of GL 3.0 spec is getting into place. There are still some extensions missing and lots of smaller tasks to be done, but it is possible to say that &lt;em&gt;we are almost there&lt;/em&gt;. I think that this is really exciting for both us, and for all the Linux and open-source users in the world – so yeah – we’ve been good boys and girls during the year and Santa Claus gift has materialized itself in form of almost-full GL 3.0 support in Mesa.&lt;/p&gt;

&lt;p&gt;Who knows, maybe prior to the Chinese new year we’ll receive the 2nd part of this gift (in other words, &lt;strong&gt;mesa 8.0&lt;/strong&gt; release &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; ).&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;kernel&lt;/strong&gt; side, the &lt;strong&gt;3.2-rc6&lt;/strong&gt; release brought lots of awesome changes to our drivers. Yes, I am talking about everyone’s favorite &lt;strong&gt;rc6&lt;/strong&gt; and &lt;strong&gt;semaphores&lt;/strong&gt; features. They are on by default on &lt;strong&gt;Ivy Bridge&lt;/strong&gt; architecture, and are also enabled on &lt;strong&gt;Sandy Bridge&lt;/strong&gt; if &lt;strong&gt;VTd&lt;/strong&gt; is disabled. So most of you should enjoy greatly improved battery life, considerable faster performance and also enhanced stability within the &lt;strong&gt;i915&lt;/strong&gt; driver when &lt;strong&gt;Linux 3.2&lt;/strong&gt; will be released.&lt;/p&gt;

&lt;p&gt;Besides those patches, work has started on collecting patches for the &lt;strong&gt;3.3&lt;/strong&gt; merge window. &lt;strong&gt;Daniel Vetter&lt;/strong&gt; sent his pending patches in a form of tiny &lt;strong&gt;43&lt;/strong&gt;-patches series. Those patches bring &lt;strong&gt;PPGTT&lt;/strong&gt; support, improve &lt;strong&gt;debugfs&lt;/strong&gt; handling, enhance &lt;strong&gt;pread/pwrite&lt;/strong&gt; performance, fix &lt;strong&gt;swizzling&lt;/strong&gt; for SNB/IVB, improve &lt;strong&gt;forcewake&lt;/strong&gt; operations and enhance debugging support for cases when GPU rings get stuck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ben&lt;/strong&gt; has also sent his patches for scheduling/throttling, but they haven’t received much interest except from myself and phoronix &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; . Those patches add support for more fine-grained GPU scheduling and rings load distribution between individual process. I am really interested in this work, and I hope that they will be accepted into the main kernel in the foreseeable future.&lt;/p&gt;

&lt;p&gt;Also on kernel, &lt;strong&gt;Rodrigo Vivi&lt;/strong&gt; and &lt;strong&gt;Paulo Zanoni&lt;/strong&gt; sent out some patches which finally fix some corner cases for &lt;strong&gt;TV-out&lt;/strong&gt; and &lt;strong&gt;SDVO&lt;/strong&gt; outputs. This certainly should make many users happy out there just in time for Christmas.&lt;/p&gt;

&lt;p&gt;And finally, for the kernel size, &lt;strong&gt;Chris Wilson&lt;/strong&gt; came with a patch which works around the &lt;strong&gt;missed IRQs&lt;/strong&gt; issues on Ivy Bridge platform. With this patch, and with semaphores being enabled on &lt;strong&gt;Ivy Bridge&lt;/strong&gt; by default, I am very happy to say that we don’t have &lt;strong&gt;any&lt;/strong&gt; blocking bugs for &lt;strong&gt;Ivy Bridge&lt;/strong&gt; in our bugzilla. I think that it comes as a nice Christmas gift for all the users out there (the ones who already have an &lt;strong&gt;Ivy Bridge&lt;/strong&gt; machine, and the ones who will get it by its launch – which is still 4 months away). Of course, I won’t talk much about it prior to its official launch, but trust me – &lt;strong&gt;Ivy Bridge rocks!&lt;/strong&gt;. I can’t wait to have an Ultrabook based on this platform for myself…&lt;/p&gt;

&lt;p&gt;Besides &lt;strong&gt;mesa&lt;/strong&gt; and &lt;strong&gt;kernel&lt;/strong&gt;, it is worth mentioning that on the &lt;strong&gt;2D&lt;/strong&gt; side, &lt;strong&gt;Zhigang&lt;/strong&gt; added full &lt;strong&gt;Glamor&lt;/strong&gt; support into the driver. The Glamor acceleration is still considered very experimental and non-stable, but now it is available for the world to take a peek on it and witness how it works with their own eyes.&lt;/p&gt;

&lt;p&gt;So I think that this is pretty much it. We have hundreds of patches floating around for all the projects, thousands of emails and millions of users in the world – and we are working hard to make all of them happy with the results of our work. 2011 was extremely productive and rewarding for us – and I hope that the year of &lt;strong&gt;11111011100&lt;/strong&gt; (a.k.a., 0x7DC or 2012_base10 for the ones still reading in decimal numbers out there &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; ) will be even more interesting*!&lt;/p&gt;

&lt;p&gt;See you!&lt;/p&gt;

&lt;p&gt;(*) Assuming the world won’t end in a core dump caused by the Mayan millennium counter overflow bug &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://dodonov.net/blog/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; .&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html">Multitouch patches posted</title>
		<link href="http://feedproxy.google.com/~r/Who-t/~3/C2iltvx4a74/multitouch-patches-posted.html"/>
		<id>tag:blogger.com,1999:blog-6112936277054198647.post-4647055768960313953</id>
		<updated>2011-12-19T22:18:41+00:00</updated>
		<content type="html">After pulling way too many 12+ hour days, I've finally polished the patchset for native multitouch support in the X.Org server into a reasonable state. The &lt;a href=&quot;http://lists.freedesktop.org/archives/xorg-devel/2011-December/027775.html&quot;&gt;full set of patches&lt;/a&gt; is now on the list. And I'm still expecting this to get merged for 1.12 (and thus in time for Fedora 17). &lt;br /&gt;
&lt;br /&gt;
The code is available from the &lt;i&gt;multitouch&lt;/i&gt; branches of the following repositories:&lt;br /&gt;
&lt;pre&gt;  git://people.freedesktop.org/~whot/xserver
  git://people.freedesktop.org/~whot/inputproto
  git://people.freedesktop.org/~whot/xf86-input-evdev
  git://people.freedesktop.org/~whot/libXi
&lt;/pre&gt;
Here's a screencast running Fedora 16 with the modified X server and a little multitouch event debugging application.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;


&lt;/div&gt;
&lt;br /&gt;
Below is a short summary of what multitouch in X actually means, but one thing is important: being the windowing system, X provides multitouch &lt;b&gt;support&lt;/b&gt;. That does not mean that every X application now supports multitouch, it merely means that they can now &lt;i&gt;use&lt;/i&gt; multitouch if they want to. That also includes gestures, they need application support.&lt;br /&gt;
&lt;br /&gt;
A car analogy: X provides a new road, the applications still have to opt to drive on it.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Multitouch events&lt;/h2&gt;
XI 2.2 adds three main event types: XI_TouchBegin, XI_TouchUpdate and XI_TouchEnd. These three make up a touch sequence. X clients must subscribe to all three events at once and will then receive the events as they come in from the device (more or less, grabs can interfere here). Each touch event has a unique touch ID so clients can track the touches over time.&lt;br /&gt;
&lt;br /&gt;
We support two device types: XIDirectDevice includes tablets and touchscreens where the events are delivered to the position the touch occurs at. XIDependentDevice includes multitouch-capable touchpads. Such devices still control a normal pointer by default, but for multi-finger gestures are possible. For such devices, the touchpoints are delivered to the window underneath the pointer.&lt;br /&gt;
&lt;br /&gt;
That is pretty much the gist of it. I'll post more information over time as the release gets closer, so stay tuned.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Pointer emulation&lt;/h2&gt;
Multitouch can be a compelling interaction method but as said above, X only provides &lt;b&gt;support&lt;/b&gt; for multitouch. It will take a while for applications to pick it up (&lt;a href=&quot;http://blogs.gnome.org/carlosg/&quot;&gt;Carlos Garnacho is working on GTK3&lt;/a&gt;) and some never will. Since we still need to interact with those applications, we provide backwards-compatible pointer emulation. Again, the details are in the protocol but the gist of it is that for the first touchpoint we emulate pointer events.&lt;br /&gt;
&lt;br /&gt;
That's the really nasty bit, because you now have to sync up the grab event semantics of the core, XI 1.x and XI2 protocols and wrap it all around the new grab semantics. So that if you have a multitouch app running under a window manager without multitouch support everything still works as expected.&lt;br /&gt;
That framework is now in place too though I expect it to still have bugs, especially in the hairier corner cases.&lt;br /&gt;
&lt;br /&gt;
But other than that, it should work just as intended. I can interact with my GNOME3 desktop quite well and I get multitouch events to my test applications.&lt;br /&gt;
&lt;br /&gt;
[edit Dec 20: typo fix]&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6112936277054198647-4647055768960313953?l=who-t.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Who-t/~4/C2iltvx4a74&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Peter Hutterer</name>
			<email>noreply@blogger.com</email>
			<uri>http://who-t.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Who-T</title>
			<link rel="self" href="http://feeds.feedburner.com/Who-t"/>
			<id>tag:blogger.com,1999:blog-6112936277054198647</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Flame on: Graphing hot paths through X server code</title>
		<link href="https://blogs.oracle.com/alanc/entry/flame_on_graphing_hot_paths"/>
		<id>https://blogs.oracle.com/alanc/entry/flame_on_graphing_hot_paths</id>
		<updated>2011-12-19T21:34:39+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Last week, &lt;a href=&quot;http://www.brendangregg.com/&quot; rel=&quot;colleague met&quot;&gt;Brendan Gregg&lt;/a&gt;, who wrote &lt;a href=&quot;http://www.dtracebook.com/&quot;&gt;the book on DTrace&lt;/a&gt;, published a new tool for visualizing hot sections of code by sampling the process stack every few milliseconds and then graphing which stacks were seen the most during the run:  &lt;a href=&quot;http://dtrace.org/blogs/brendan/2011/12/16/flame-graphs/&quot;&gt;Flame Graphs&lt;/a&gt;.  This looked neat, but my experience has been that I get the most understanding out of things like this by trying them out myself, so I did.&lt;/p&gt;

&lt;p&gt;Fortunately, it's very easy to setup, as Brendan provided the tools as two standalone perl scripts you can download from &lt;a href=&quot;https://github.com/brendangregg/FlameGraph&quot;&gt;the Flame Graph github repo&lt;/a&gt;.  Then the next step is deciding what you want to run it on and capturing the data from a run of that.&lt;/p&gt;

&lt;p&gt;It just so turns out that a few days before the Flame Graph release, another mail had crossed my inbox that gave me something to look at.   Several years ago, I added some &lt;a href=&quot;http://dtrace.org/blogs/dap/2011/12/13/usdt-providers-redux/&quot;&gt;Userland Statically Defined Tracing&lt;/a&gt; probes to the Xserver code base, creating an &lt;a href=&quot;http://blogs.oracle.com/alanc/entry/xserver_provider_for_dtrace&quot;&gt;Xserver provider for DTrace&lt;/a&gt;.   These got integrated first to &lt;a href=&quot;http://blogs.oracle.com/alanc/entry/xserver_dtrace_probes_integrated&quot;&gt;the Solaris Xservers (both Xsun &amp;amp; Xorg)&lt;/a&gt; and then merged upstream to the X.Org community release for Xserver 1.4, where &lt;a href=&quot;http://www.x.org/releases/X11R7.6/doc/xorg-server/Xserver-DTrace.html&quot; title=&quot;X.Org: Xserver provider for DTrace&quot;&gt;they're available for all platforms with DTrace support&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Earlier this year, &lt;a href=&quot;http://ajaxxx.livejournal.com/&quot; rel=&quot;colleague met&quot; title=&quot;ajax&quot;&gt;Adam Jackson&lt;/a&gt; &lt;a href=&quot;http://pkgs.fedoraproject.org/gitweb/?p=xorg-x11-server.git;a=blobdiff;f=xorg-x11-server.spec;h=5dca6a8d31a0281c59396f8bff456aa24c5f9f4b;hp=16f1fe730d4c75a82655be4e20c4973f513831ea;hb=e57b98d372b96dbc2b6ee80cbfad9e166b25e95c;hpb=dbd06c61725a705dfa8af64c09db89bc830f2802&quot; title=&quot;xorg-x11-server.spec: enable dtrace hooks&quot;&gt;enabled the dtrace hooks in the Fedora Xorg server package&lt;/a&gt;, using the &lt;a href=&quot;https://fedoraproject.org/wiki/Features/SystemtapStaticProbes&quot;&gt;SystemTap static probe support for DTrace probe compatibility&lt;/a&gt;.   He then noticed a performance drop, which isn't supposed to happen, as DTrace probes are simply noops when not being actively traced, and submitted a &lt;a href=&quot;http://patchwork.freedesktop.org/patch/8296/&quot;&gt;fix for it upstream&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This was due to two of the probes I'd defined - when the Xserver processes a request from a client, there's a &lt;i&gt;request-start&lt;/i&gt; probe just before the request is processed, and a &lt;i&gt;request-done&lt;/i&gt; probe right after the request is processed.  If you just want to see what requests a client is making you can trace either one, but if you want to measure the time taken
to run a request, or determine if something is happening while a request is being processed, you need both of the probes.
When &lt;a href=&quot;http://cgit.freedesktop.org/xorg/xserver/commit/?id=49a26681b2bdd95ed65c425f1fa1441d2f092a6e&quot; title=&quot;xorg/xserver: Add DTrace probe points for X server &amp;lt;-&amp;gt; client communications&quot;&gt;they first got integrated&lt;/a&gt;, the code was simple:

  
  
  
    &lt;/p&gt;&lt;div id=&quot;code_frame&quot; style=&quot;background: #ffffcc;&quot;&gt;
      
      &lt;div class=&quot;c&quot;&gt;
	&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#ifdef XSERVER_DTRACE&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de2&quot;&gt;                XSERVER_REQUEST_START&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;GetRequestName&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;MAJOROP&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; MAJOROP&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de1&quot;&gt;                              &lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;xReq &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;client&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;requestBuffer&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;length&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de2&quot;&gt;                              client&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;index&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; client&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;requestBuffer&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de2&quot;&gt;                &lt;i&gt;// skipping over input checking and auditing, to the main event,&lt;/i&gt;&lt;/div&gt;
	&lt;div class=&quot;de1&quot;&gt;                &lt;i&gt;// the call to the request handling proc for the specified opcode:&lt;/i&gt;&lt;/div&gt;
 	&lt;div class=&quot;de2&quot;&gt;                    result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; client&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;requestVector&lt;span class=&quot;br0&quot;&gt;[&lt;/span&gt;MAJOROP&lt;span class=&quot;br0&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;client&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#ifdef XSERVER_DTRACE&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de1&quot;&gt;                XSERVER_REQUEST_DONE&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;GetRequestName&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;MAJOROP&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; MAJOROP&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de2&quot;&gt;                              client&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;sequence&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; client&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;index&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
	&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#endif&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The compiler sees &lt;i&gt;XSERVER_REQUEST_START&lt;/i&gt; and &lt;i&gt;XSERVER_REQUEST_DONE&lt;/i&gt; as simple function calls, so it does whatever work is necessary to set up their arguments and then calls them.   Later, during the linking process, the actual
call instructions are replaced with noops and the addresses recorded so that when a dtrace user enables the probe the call
can be activated at that time.   In these cases, that's not so bad, just a bunch of register access and memory loads of things that are going to be needed nearby.   The one outlier is &lt;i&gt;GetRequestName(MAJOROP)&lt;/i&gt; which looks like a function call, but was really just a macro that used the opcode as the index an array of strings and returned the string name for the opcode so that DTrace probes could see the request names, especially for extensions which don't have static opcode mappings.  For that the compiler would just load a register with the address of the base of the array and then add the offset of the entry specified by MAJOROP in that array.&lt;/p&gt;
&lt;p&gt;All was well and good for a bit, until a later project came along during the Xorg 1.5 development cycle to unify all the different lists of protocol object names in the Xserver, as there were different ones in use by the DTrace probes, the security extensions, and the resource management system.   That &lt;a href=&quot;http://cgit.freedesktop.org/xorg/xserver/commit/?id=996b621bec1bbc4fb21970c75eaec62053bc6ccb&quot;&gt;replaced the simple array lookup macro with a function call&lt;/a&gt;.   While the function doesn't do a lot more work, it does enough to be noticed, and thus the performance hit was taken in the hot path of request dispatching.  Adam's &lt;a href=&quot;http://patchwork.freedesktop.org/patch/8296/&quot;&gt;patch to fix this&lt;/a&gt; simply uses &lt;a href=&quot;http://dtrace.org/blogs/ahl/2006/05/08/user-land-tracing-gets-better-and-better/&quot;&gt;is-enabled probes&lt;/a&gt; to only make those function calls when the probes are actually enabled.   x11perf testing showed the win on a Athlon 64 3200+ test system running Solaris 11:
&lt;/p&gt;&lt;pre&gt;Before: 250000000 trep @   0.0001 msec ( 8500000.0/sec): X protocol NoOperation
After:  300000000 trep @   0.0001 msec (10400000.0/sec): X protocol NoOperation 
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;But numbers are boring, and this gave an excuse to try out Flame Graphs.   To capture the data, I took advantage of synchronization features built into &lt;i&gt;xinit&lt;/i&gt; and &lt;i&gt;dtrace -c&lt;/i&gt;:
&lt;/p&gt;&lt;pre style=&quot;background: #ffffcc;&quot;&gt;# xinit /usr/sbin/dtrace -x ustackframes=100 \
  -n 'profile-997 /execname == &quot;Xorg&quot;/ { @[ustack()] = count(); }' \
  -o out.user_stacks.noop -c &quot;x11perf -noop&quot; \
  -- -config xorg.conf.dummy
&lt;/pre&gt;
To explain this command, I'll start at the end.  For &lt;i&gt;xinit&lt;/i&gt;, everything after the double dash is a set of arguments to the Xserver it starts, in this case, Xorg is told to look in the normal config paths for &lt;i&gt;xorg.conf.dummy&lt;/i&gt;, which it would find is this simple config file in &lt;tt&gt;/etc/X11/xorg.conf.dummy&lt;/tt&gt; setting the driver to the Xvfb-like “dummy” driver, which just uses RAM as a frame buffer to take graphics driver considerations out of this test:
&lt;pre style=&quot;background: #ffffcc;&quot;&gt;Section &quot;Device&quot;
	Identifier  &quot;Card0&quot;
	Driver      &quot;dummy&quot;
EndSection
&lt;/pre&gt;
Since I'm using a modern Xorg version, that's all the configuration needed, all the unspecified sections are autoconfigured.
&lt;i&gt;xinit&lt;/i&gt; starts the Xserver, waits for the Xserver to signal that it's finished its start up, and then runs the first half of the command line as a client with the DISPLAY set to the new Xserver.   In this case it runs the &lt;i&gt;dtrace&lt;/i&gt; command, which sets up the probes based on the examples in the Flame Graphs README, and then runs the command specified as the -c argument, the &lt;i&gt;x11perf&lt;/i&gt; benchmark tool.   When &lt;i&gt;x11perf&lt;/i&gt; exits, dtrace stops the probes, generates its report, and then exits itself, which in turn causes &lt;i&gt;xinit&lt;/i&gt; to shut down the X server and exit.&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The resulting Flame Graphs are, in their native SVG interactive form:
&lt;/p&gt;&lt;h3&gt;Before&lt;/h3&gt;

&lt;h3&gt;After&lt;/h3&gt;

&lt;br /&gt;If your browser can't handle those as inline SVG's, or they're scrunched too small to read, try 
&lt;a href=&quot;http://people.freedesktop.org/~alanc/FlameGraphs/noop.svg&quot; type=&quot;image/svg+xml&quot;&gt;Before (SVG)&lt;/a&gt; or 
&lt;a href=&quot;http://people.freedesktop.org/~alanc/FlameGraphs/noop.png&quot;&gt;Before (PNG)&lt;/a&gt;, and
&lt;a href=&quot;http://people.freedesktop.org/~alanc/FlameGraphs/noop-faster.svg&quot; type=&quot;image/svg+xml&quot;&gt;After (SVG)&lt;/a&gt; or 
&lt;a href=&quot;http://people.freedesktop.org/~alanc/FlameGraphs/noop-faster.png&quot;&gt;After (PNG)&lt;/a&gt;.
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You can see in the first one a bar showing a little over 10% of the time was in stacks involving &lt;i&gt;LookupMajorName&lt;/i&gt;, which is completely gone in the second patch.   Those who saw Adam's patch series come across the xorg-devel list last week may also notice the presence of &lt;i&gt;XaceHook&lt;/i&gt; calls, which Adam &lt;a href=&quot;http://patchwork.freedesktop.org/patch/8295/&quot;&gt;optimized in another patch&lt;/a&gt;.   Unfortunately, while I did build with that patch as well, we don't get the benefits of it since the XC-Security extension is on by default, and those fill in the hooks, so it can't just bypass them as it does when the hooks are empty.&lt;/p&gt;

&lt;p&gt;I also took measurements of what Xorg did as gdm started up and a test user logged in, which produced the much larger flame graph you can see in &lt;a href=&quot;http://people.freedesktop.org/~alanc/FlameGraphs/login.svg&quot; type=&quot;image/svg+xml&quot;&gt;SVG&lt;/a&gt; or 
&lt;a href=&quot;http://people.freedesktop.org/~alanc/FlameGraphs/login.png&quot;&gt;PNG&lt;/a&gt;.   As you can see the recursive calls in the font catalogue scanning functions make for some really tall flame graphs.  You can also see that, to no one's surprise, xf86SlowBCopy is slow, and a large portion of the time is spent &lt;a href=&quot;http://en.wikipedia.org/wiki/Bit_blit&quot; title=&quot;Bit blit&quot;&gt;“blitting” bits&lt;/a&gt; from one place to another.   Some potential areas for improvement stand out - like the 5.7% of time spent rescanning the font path because the Solaris gnome session startup scripts make &lt;i&gt;xset fp&lt;/i&gt; calls to add the fonts for the current locale to the legacy font path for old clients that still use it, and another nearly 5% handling the ListFonts and ListFontsWithInfo calls, which dtracing with the request-start probes turned out to be the Java GUI for the Solaris Visual Panels gnome-panel applet.&lt;/p&gt;

&lt;p&gt;Now because of the way the data for these is gathered, from looking at them alone you can't tell if a wide bar is one really long call to a function (as it is for the &lt;i&gt;main()&lt;/i&gt; function bar in all these) or millions of individual calls (as it was for the &lt;i&gt;ProcNoOperation&lt;/i&gt; calls in the &lt;i&gt;x11perf -noop&lt;/i&gt; trace), but it does give a quick and easy way to pick out which functions the program is spending most of its time in, as a first pass for figuring out where to dig deeper for potential performance improvements.&lt;/p&gt;

&lt;p&gt;Brendan has made these scripts easy to use to generate these graphs, so I encourage you to try them out as well on some sample runs to get familiar with them, so that when you really need them, you know what cases they're good for and how to capture the data and generate the graphs for yourself.   Trying really is the best method of learning.&lt;/p&gt;</content>
		<author>
			<name>alanc</name>
			<uri>https://blogs.oracle.com/alanc/</uri>
		</author>
		<source>
			<title type="html">Alan Coopersmith's Weblog</title>
			<subtitle type="html">&lt;i&gt;Random thoughts of a disorganized mind...&lt;/i&gt;</subtitle>
			<link rel="self" href="https://blogs.oracle.com/alanc/feed/entries/atom"/>
			<id>https://blogs.oracle.com/alanc/feed/entries/atom</id>
		</source>
	</entry>

	<entry>
		<title type="html">The AI Challenge - a look back</title>
		<link href="http://nhaehnle.blogspot.com/2011/12/ai-challenge-look-back.html"/>
		<id>tag:blogger.com,1999:blog-36137506.post-3038561094225745919</id>
		<updated>2011-12-19T10:03:00+00:00</updated>
		<content type="html">For the last four weeks, I have worked on my submission for the &lt;a href=&quot;http://aichallenge.org/&quot;&gt;Google AI Challenge&lt;/a&gt;. The deadline has passed this morning, so it is time to relax while the official final tournament is running on the contest servers. Until yesterday, my submission was ranked quite consistently in the top 20. Then I uploaded my final version (which resets the skill) which was quite consistently better on the unofficial TCP servers, but given that everybody else was doing last minute tweaks, too, it's far too early to call.&lt;br /&gt;&lt;br /&gt;I enjoyed the spirit of this contest immensely, and now I would like to document some of my thoughts on how my submission works. I have uploaded the source code to Github (&lt;a href=&quot;https://github.com/nhaehnle/aiant&quot;&gt;https://github.com/nhaehnle/aiant&lt;/a&gt;) so you can peruse it while following this blog entry if you wish.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;High level structure&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The bot is divided into a number of modules that select high-level goals for the ants it controls. This is done in a very straightforward way. Every ant initially has no direction to go in (the field &lt;code&gt;Ant::assigneddirection&lt;/code&gt; is initialized to &lt;code&gt;false&lt;/code&gt; each turn). The high-level modules then simply assign directions to ants that do not have one yet, and the order in which the modules are called reflects the relative importance I assign to the various tasks. For example, the &lt;code&gt;HillDefense&lt;/code&gt; module will only assign ants that have not been assigned by the &lt;code&gt;FoodSeeker&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;There are two modules that fall outside of this basic structure: The &lt;code&gt;Zoc&lt;/code&gt; (&quot;zone of control&quot;) module does not steer any ants. Instead, it keeps track of how fast my ants vs. enemy ants can reach each square of the map. And the &lt;code&gt;Tactical&lt;/code&gt; module overrides the previous decisions if necessary for ants that may be involved in combat.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The strategy modules&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following strategy modules are used by the bot, assigning jobs to ants in the given order:&lt;ol&gt;&lt;li&gt;&lt;code&gt;FoodSeeker&lt;/code&gt;: Getting enough food is probably the most important problem of the game, and so this module comes first. It greedily sends the closest ant to each item of food that is visible, using several &lt;a href=&quot;http://en.wikipedia.org/wiki/Breadth-first_search&quot;&gt;breadth-first-searches&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;code&gt;HillDefense&lt;/code&gt;: When one of the bot's hills can be reached in few turns by the enemy, this module ensures that a few ants (adjusted based on the number of enemy ants in sight) stick close to the hill.&lt;br /&gt;&lt;br /&gt;An important tweak of this code is that it does not send ants back to the hill indiscriminately. Instead, it only recalls an ant if it is too far away from the hill relative to the closest enemy. This way, ants are not needlessly wasted on patrol duty. It would probably be a good idea to treat multi-hill maps specially, but this is not done.&lt;/li&gt;&lt;li&gt;&lt;code&gt;OpportunisticAttack&lt;/code&gt;: This rather stupid piece of code ensures that the ants move more aggressively towards enemy hills. After all, that is the only way to win the game.&lt;/li&gt;&lt;li&gt;&lt;code&gt;Scout&lt;/code&gt;: This module assigns a tiny number of ants to re-explore squares that have not been seen in a long time.&lt;br /&gt;&lt;br /&gt;This is needed because the rest of the code uses the &lt;code&gt;Zoc&lt;/code&gt; module to understand that an enemy can never come out of a cul-de-sac once it's been secured. So without some re-scouting logic, the bot would simply ignore the food in those secured locations!&lt;/li&gt;&lt;li&gt;&lt;code&gt;Diffusion&lt;/code&gt;: This is a very ad-hoc heuristic to spread out my ants better than they would otherwise. There would probably have been some potential for improvement in this part of the code.&lt;/li&gt;&lt;li&gt;Zoc-based movement: any ant that has not been assigned a move up to this point will simply use the &lt;code&gt;Zoc&lt;/code&gt; data to move closer to the enemy. This is done in &lt;code&gt;Bot::makeMoves&lt;/code&gt; rather than in a separate module.&lt;/li&gt;&lt;/ol&gt;On a &quot;historical&quot; note, it may be interesting to know that I started out with just the &lt;code&gt;FoodSeeker&lt;/code&gt; and the Zoc-based movement. Together with &lt;code&gt;Tactical&lt;/code&gt;, this was enough to get into the top 100 a bit more than two weeks before the deadline.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The tactical logic&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The idea behind the &lt;code&gt;TacticalSm&lt;/code&gt; module is simple:&lt;ol&gt;&lt;li&gt;Carve out small &lt;code&gt;Submap&lt;/code&gt;s that contain all the ants that could potentially be involved in combat on the next turn.&lt;/li&gt;&lt;li&gt;Generate potential moves for both my bot and the enemy. The combination of &lt;code&gt;Submap&lt;/code&gt; and associated &lt;code&gt;PlayerMove&lt;/code&gt;s is called a &lt;code&gt;Theater&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Evaluate those moves using some simple scoring function.&lt;/li&gt;&lt;li&gt;Try to find better moves for both parties.&lt;/li&gt;&lt;li&gt;Repeat until time runs out.&lt;/li&gt;&lt;li&gt;Pick a move using one of two strategies.&lt;/li&gt;&lt;/ol&gt;Note that my tactical code doesn't understand situations involving enemy ants of more than one enemy player. This is certainly a limitation, but it's hard to tell how bad it really is.&lt;br /&gt;&lt;br /&gt;Most of the tactical code is about engineering, and careful consideration of the scoring function. For example, during a major code reorganization halfway through the competition, the tactical code stopped considering proximity to food in the scoring function. That hurt the performance of my bot quite significantly, and my bot's skill recovered when I turned that part of the scoring function back on.&lt;br /&gt;&lt;br /&gt;There are really only two clever parts. One is to use a scoring function that, by default, assigns a higher value to the own ants, to avoid costly trades of ants, but to turn on &lt;code&gt;aggressive&lt;/code&gt; mode if the own ants overpower the enemy. This switch is done randomly based on the ratio of ants, where the probability to turn on aggressive mode is conceptually a &lt;a href=&quot;http://en.wikipedia.org/wiki/Logistic_function&quot;&gt;logistic function&lt;/a&gt; in the log of the ants ratio.&lt;br /&gt;&lt;br /&gt;The second clever part is to use a small bit of &lt;a href=&quot;http://en.wikipedia.org/wiki/Rock-paper-scissors&quot;&gt;rock-paper-scissors&lt;/a&gt; logic in the final move selection. My first method to select a move is a simple min-max (or rather, max-min): pick the move that maximizes the minimum scoring value I could possibly get, given all enemy moves under consideration. Since this is a rather conservative choice of moves, especially given that there is absolutely no look-ahead, I implemented max-average as a second strategy: choose the move that maximizes the average scoring value, where the average is over all enemy moves, weighted by their max-min value.&lt;br /&gt;&lt;br /&gt;Of course, this strategy may sometimes be too aggressive. What's more, the best strategy may depend on the opponent. Therefore, my bot uses a variant of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Randomized_weighted_majority_algorithm&quot;&gt;randomized weighted majority algorithm&lt;/a&gt; to pick the move-selection strategy. At the beginning of each turn, my bot determines what the best strategy would have been &lt;em&gt;in hindsight&lt;/em&gt; to update the weights of the strategy. One important tweak is that the weights depend both on which enemy player my bot is facing, and on the number of ants in play.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Discarded experiments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I experimented with adding more move selection strategies, but the results were not convincing at all, perhaps because it takes longer for the bot to learn which strategy to choose, so I scrapped that again.&lt;br /&gt;&lt;br /&gt;I also implemented map symmetry detection to guess unseen enemy hills and a corresponding module for a coordinated offense against enemy hills. The code is still there, but I have disabled it. The simple implementation I have is far too aggressive and wasteful, and I didn't feel like trying to tweak it to a point where it becomes useful.&lt;br /&gt;&lt;br /&gt;I also did some experiments with an alternative move generation method for my tactical system, as well as a very simple implementation of the sampling-based combat system described by a1k0n on the &lt;a href=&quot;http://forums.aichallenge.org/viewtopic.php?f=24&amp;amp;t=2044&quot;&gt;challenge forums&lt;/a&gt;. This simple method performed worse than my tactical code; I have some ideas for improving it (just like a1k0n obviously did), but ultimately did not have the time to try them out. Those experiments can still be found in the Git history if you feel like digging through it.&lt;br /&gt;&lt;br /&gt;I tried some automatic tuning of parameters using meta-heuristics (see the &lt;code&gt;test/tune.py&lt;/code&gt; script), but somehow that didn't yield very convincing results either.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code quality?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I have to admit that the code is not very well documented, and some of it is rather hackish. I hope you'll forgive me for this type of one-off code.&lt;br /&gt;&lt;br /&gt;There is one thing that I did consistently that I would never do in another type of project, and that is keeping STL containers around as long as possible to avoid re-allocation. I intensively rely on the fact that &lt;code&gt;std::vector::clear&lt;/code&gt; does not free the allocated memory, at least in the default implementation of g++. By keeping those vectors around, I want to avoid unpleasant surprises in the performance of memory management.&lt;br /&gt;&lt;br /&gt;I don't think this is strictly necessary, given that the bot actually uses surprisingly little memory, but it didn't hurt in this case. It reduces the maintainability of the code, which is why I wouldn't do it on other projects, but maintainability was obviously never a goal for a competition like this one.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A neat randomization trick&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&quot;When in doubt, throw a coin&quot; is perhaps the most important lesson that Theoretical Compute Science teaches. When there are several directions to go in that all score the same, which one should you choose? The best approach is to choose randomly.&lt;br /&gt;&lt;br /&gt;To facilitate this, I pre-generated all 24 permutations of the 4 directions, and all 120 permutation of the 5 possible moves of an ant, and I randomly choose one of those permutation whenever I have a loop through directions to choose from.&lt;br /&gt;&lt;br /&gt;Sometimes, however, I have a loop through variable-sized vectors, for example, when choosing ants for an offensive move in the tactical logic. I would like to have a random permutation for those cases as well, and of course there are algorithms to generate them. But they take time, and the benefit of a perfectly uniform distribution is not that clear.&lt;br /&gt;&lt;br /&gt;So here's a little trick I use to permute variable-sized vector of size &lt;code&gt;N&lt;/code&gt;. I pick a random prime &lt;code&gt;p&lt;/code&gt; out of a decently sized pre-generated list of large primes (larger than any &lt;code&gt;N&lt;/code&gt; the code is ever going to see), as well as a random offset &lt;code&gt;ofs&lt;/code&gt; and loop through the numbers &lt;code&gt;0..N-1&lt;/code&gt;. But instead of using these numbers &lt;code&gt;i&lt;/code&gt; as an index, I use &lt;code&gt;(p*i + ofs) % N&lt;/code&gt; as index. Since &lt;code&gt;p&lt;/code&gt; is prime different from &lt;code&gt;N&lt;/code&gt;, it is invertible &lt;a href=&quot;http://en.wikipedia.org/wiki/Modular_arithmetic&quot;&gt;modulo&lt;/a&gt; &lt;code&gt;N&lt;/code&gt;, and therefore the map &lt;code&gt;i -&amp;gt; p*i + ofs&lt;/code&gt; is a bijection, aka a permutation. Of course, this is far from a uniformly distributed permutation: there are &lt;code&gt;N!&lt;/code&gt; potential permutations, out of which this method can generate at most &lt;code&gt;N * &lt;a href=&quot;http://en.wikipedia.org/wiki/Euler%27s_totient_function&quot;&gt;φ&lt;/a&gt;(N)&lt;/code&gt;. But hey: it's good enough for what I need.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/36137506-3038561094225745919?l=nhaehnle.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Nicolai Hähnle</name>
			<email>noreply@blogger.com</email>
			<uri>http://nhaehnle.blogspot.com/search/label/fdo</uri>
		</author>
		<source>
			<title type="html">Tagebuch eines Interplanetaren Botschafters</title>
			<subtitle type="html">Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.</subtitle>
			<link rel="self" href="http://www.blogger.com/feeds/36137506/posts/default/-/fdo"/>
			<id>tag:blogger.com,1999:blog-36137506</id>
		</source>
	</entry>

	<entry>
		<title type="html">My OpenStack work</title>
		<link href="http://julien.danjou.info/blog/2011/my-openstack-work"/>
		<id>http://julien.danjou.info/blog/2011/my-openstack-work</id>
		<updated>2011-12-16T17:34:00+00:00</updated>
		<content type="html"></content>
		<author>
			<name>Julien Danjou</name>
			<uri>http://julien.danjou.info/blog/</uri>
		</author>
		<source>
			<title type="html">jd:/dev/blog</title>
			<link rel="self" href="http://julien.danjou.info/blog/index.xml"/>
			<id>http://julien.danjou.info/blog/index.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">GStreamer 1.0 Application porting hackfest/code sprint</title>
		<link href="http://blogs.gnome.org/uraeus/2011/12/13/gstreamer-1-0-application-porting-hackfestcode-sprint/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1764</id>
		<updated>2011-12-13T11:09:16+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;We are trying to put together a hackfest to help developers using GStreamer to port their applications to GStreamer 1.0. The &lt;a href=&quot;http://gstreamer.freedesktop.org/wiki/GStreamerHackfest2012&quot;&gt;GStreamer Hackfest/Code Sprint 2012&lt;/a&gt; will take place in Malaga, Spain, between 25th to 27th of January (3 full days). I would ask all developers out there interested in attending to add your name to &lt;a href=&quot;http://gstreamer.freedesktop.org/wiki/GStreamerHackfest2012&quot;&gt;the wiki&lt;/a&gt; as quickly as possible, just so we can estimate interest. If you are interested, but don’t know for sure if you can make it there, it would still be good if you added your name with maybe a comment mentioning that you need to verify before you are certain.&lt;/p&gt;
&lt;p&gt;We will be offering some travel sponsorship, so even if you are short on cash we hope to have you attend, more details on the hackfest&amp;amp;codesprint wiki page.&lt;/p&gt;
&lt;p&gt;For those wondering why we choose Malaga, well the reason is that Wim Taymans, the GStreamer 1.0 designer and lead developer lives there, and at a previous hackfest we tried to do in Oslo he ended up in Helsinki instead. So this time we are taking no risks, but instead we are taking the hackfest to him &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; /&gt; &lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Lawrence Lessig interviews Jack Abramoff</title>
		<link href="http://blog.printf.net/articles/2011/12/11/lawrence-lessig-interviews-jack-abramoff"/>
		<id>urn:uuid:6d0ff321-ddc4-42ea-94ae-3c819ddc0356</id>
		<updated>2011-12-11T21:42:48+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/madprime/6474959611/in/photostream/&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7156/6474959611_916157e938_d.jpg&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
Last week I went to the first in a new series of events called &quot;In the Dock&quot; -- Harvard Law professor Lawrence Lessig interviewed Jack Abramoff on the topic of Abramoff's illegal lobbying in specific, and the state of corruption in US politics in general. I took some photos (CC-BY-SA 3.0), you can watch a video of the talk &lt;a href=&quot;http://www.law.harvard.edu/news/2011/12/09_jack_abramoff_talks_about_corruption.html&quot;&gt;here&lt;/a&gt;, and my friend &lt;a href=&quot;http://bemasc.net/wordpress/2011/12/07/in-the-dock/&quot;&gt;Ben Schwartz&lt;/a&gt; also has a write-up including some great quotes.&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/madprime/6474960221/in/photostream/&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7173/6474960221_933ec16b8c_d.jpg&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
I went in willing to detest what Abramoff had done, and him by extension -- and it's not that I ended up liking or trusting him, or that I was unexpecting his &quot;Look, you put a few guys in jail, it doesn't mean the problem's been solved and everything's okay now&quot; argument for why assigning a disproportionate amount of blame to him is unproductive, but he did manage to convince me that he's uniquely placed to be an ally to help fix the system; that he's someone who knows all of its intricacies and is sincere about achieving a sense of redemption by working on stopping other people from doing exactly what he did.&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/madprime/6474960983/in/photostream/&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7173/6474960983_c3fb26e254_d.jpg&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
His argument for how his book tour isn't a cynical attempt to make money is convincing, too: to the small extent that he's able to make money from books and speaking, he's forced to use it to repay a $40m restitution order to the government and his victims.&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/madprime/6474961691/in/photostream/&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7164/6474961691_bfba179160_d.jpg&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
The most surprising thing I learned was that the crimes he went to jail for were not the particularly objectionable democracy-perverting forms of corruption that we ascribe to him -- those are totally legal (even more so than before, thanks to Citizens United) and still happening today across Washington's 30,000 lobbyists -- but instead mostly unrelated charges, like mail fraud. He thinks that the only way to stop bribery in Congress is to ban political contributions from anyone who stands to benefit from public funds (which Lessig criticized as being far too ambiguous and broad: who &lt;b&gt;doesn't&lt;/b&gt; stand to benefit from public funds?), and to ban lawmakers and their staff from later working for lobbyists for the rest of their lives. He described how, before his downfall, he would agree to hire a lawmaker's staffers later while they were still working for the lawmaker, and would then have control over them from that point onwards, even though no money had changed hands -- not only is this movement from being congressional staff to becoming a lobbyist still legal, it's daily routine.&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/madprime/6474962659/in/photostream/&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7031/6474962659_39c699b8f7_d.jpg&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
I hope this talk series continues. I can't think of many other examples of powerful figures being brave enough to open themselves up and engage in an extended ethical (rather than legal or technical) critique and cross-examination by their peers and the public, and it was powerful to watch and learn from.&lt;/p&gt;

&lt;p&gt;(This is reposted from my &lt;a href=&quot;https://plus.google.com/112938759017605010116/posts/7XLFszTxdc6&quot;&gt;Google+&lt;/a&gt; stream.)&lt;/p&gt;</content>
		<author>
			<name>Chris Ball</name>
			<uri>http://blog.printf.net</uri>
		</author>
		<source>
			<title type="html">Chris Ball</title>
			<link rel="self" href="http://blog.printf.net/xml/atom/feed.xml"/>
			<id>tag:blog.printf.net,2005:Typo</id>
		</source>
	</entry>

	<entry>
		<title type="html">XDC 2012: Nuremberg!</title>
		<link href="http://libv.livejournal.com/23462.html"/>
		<id>urn:lj:livejournal.com:atom1:libv:23462</id>
		<updated>2011-12-09T04:32:10+00:00</updated>
		<content type="html">Yes! The board has decided! XDC comes to Nuremberg!&lt;br /&gt;&lt;br /&gt;For 2012 we (Egbert Eich, Professor Hopf, and I) will be hosting the annual X conference in Nuremberg!&lt;br /&gt;&lt;br /&gt;Egbert will try to get the main SuSE conference room, or, failing that, Matthias will try to get us a university aula, so the venue itself will work itself out beautifully in one way or another. Then... Nuremberg is one of those places which is perfect for large crowds who need food and some liquids in the evening (frankonian/bavarian beergarten culture), so it is the perfect (and highly affordable) conference area from that point of view. And, the best part, even though Nuremberg is not the international hub that Frankfurt is, or the european hub that Munich is, it is halfway between the two, and travel is relatively easy from either of those points, either you take the plane, or you take a much more comfortable train from either airport, and get to Nuremberg in pretty much the same time. You can really make a big save comparing those two airports when flying inside european aerospace, and this for no time difference. One insider tip though: you get to ride the ICE at full speed (300+km/h!) when traveling from Munich (you do have to endure the rather pedestrian S-bahn for 45 minutes though).&lt;br /&gt;&lt;br /&gt;Anyway, the main action item now is that Egbert can start to poke SuSE to see when their main conference room is available for 3 days in september 2012 (working network and enough power sockets are a given then!). I doubt that we will get an answer still in the three remaining weeks of this year.&lt;br /&gt;&lt;br /&gt;The actual proposal e-mail sent to the board is sadly only available to X.org foundation members, but a wiki page will soon be created which recreates most of that information. But rest assured, we will get close to the wonderful experiences of XDC Toulouse (thank you Matthieu!) and XDC chicago (thank you Michael!) indeed!&lt;br /&gt;&lt;br /&gt;(oh, and btw, we have &lt;a href=&quot;http://wiki.x.org/wiki/fosdem2012&quot; rel=&quot;nofollow&quot;&gt;a FOSDEM DevRoom&lt;/a&gt; this year, which is rapidly getting its schedule filled! If you are coming, get your talk in right now: first come, first serve!)</content>
		<author>
			<name>Luc Verhaegen</name>
			<uri>http://libv.livejournal.com/</uri>
		</author>
		<source>
			<title type="html">LIBV Intentionally Breaks Videodrivers</title>
			<subtitle type="html">What about Lovely, Intelligent and Beautiful Visionary?</subtitle>
			<link rel="self" href="http://libv.livejournal.com/data/atom"/>
			<id>urn:lj:livejournal.com:atom1:libv</id>
		</source>
	</entry>

	<entry>
		<title type="html">Evergreen HDMI audio ready!</title>
		<link href="http://zajec.net/blog/view/2011-evergreen-hdmi-audio"/>
		<id>http://zajec.net/blog/atom/blog/21</id>
		<updated>2011-12-07T22:31:36+00:00</updated>
		<content type="html">Few days ago I've managed to hack radeon to play audio over HDMI on my Evergreen card. At first I just forced radeon to use single hardcoded HDMI block I've discovered on my card.&lt;br /&gt;
Then I started looking for universal (general) solution. I was trying to do HDMI block mapping based on crtc offset, but it failed. Trying to use encoder type (which is really a transmitter in Radeon hardware) also didn't work out.&lt;br /&gt;
&lt;br /&gt;
Finally, after analyzing dumps I've received from people, I found out the real solution. HDMI block mapping has to be based on DIG encoder.&lt;br /&gt;
&lt;br /&gt;
I want to help the community for helping me with the dumps. Without them I wouldn't write really-working code so fast. Sometimes you don't have to known ANSI C and hardware programming to help in development :)&lt;br /&gt;
&lt;br /&gt;
The patches will be released in minutes, I hope every Evergreen card will be supported now. They hopefully will hit Dave's tree soon and kernel 3.3 as the result.&lt;br /&gt;
&lt;br /&gt;
P.S.&lt;br /&gt;
List of patches:&lt;br /&gt;
[PATCH] drm/radeon/kms: minor HDMI audio cleanups&lt;br /&gt;
[PATCH 1/3] drm/radeon/kms: one more HDMI cleanup (in disabling code)&lt;br /&gt;
[PATCH 2/3] drm/radeon/kms: support for audio on Evergreen&lt;br /&gt;
[PATCH V2 3/3] drm/radeon/kms: enable HDMI mode on Evergreen encoders&lt;br /&gt;
[PATCH V2] drm/radeon/kms: do not force DVI mode on DCE4 if audio is on</content>
		<author>
			<name>Zajec, Rafał Miłecki</name>
			<uri>http://zajec.net</uri>
		</author>
		<source>
			<title type="html">Zajec's blog</title>
			<subtitle type="html">Linux, Opera, XHTML</subtitle>
			<link rel="self" href="http://zajec.net/blog/atom"/>
			<id>http://zajec.net/blog/atom</id>
		</source>
	</entry>

	<entry>
		<title type="html">New job, new blog</title>
		<link href="http://julien.danjou.info/blog/2011/new-job-new-blog"/>
		<id>http://julien.danjou.info/blog/2011/new-job-new-blog</id>
		<updated>2011-12-07T13:47:00+00:00</updated>
		<content type="html"></content>
		<author>
			<name>Julien Danjou</name>
			<uri>http://julien.danjou.info/blog/</uri>
		</author>
		<source>
			<title type="html">jd:/dev/blog</title>
			<link rel="self" href="http://julien.danjou.info/blog/index.xml"/>
			<id>http://julien.danjou.info/blog/index.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Are you in Malaga, Spain? Or know someone there?</title>
		<link href="http://blogs.gnome.org/uraeus/2011/12/07/are-you-in-malaga-spain-or-know-someone-there/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1762</id>
		<updated>2011-12-07T11:52:15+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;I am desperately looking for someone familiar with Malaga, Spain, maybe a local LUG or similar. The reason is that we are interested in doing a GStreamer 1.0 application porting hackfest there in late January. So getting hold of someone with local knowledge who would be able to help us find a suitable venue would be great. Please get in touch with me on christian.schaller(at)gmail.com if you are in the area and willing to help or know someone would probably could help us.&lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">why you don't actually want dpi</title>
		<link href="http://www.fooishbar.org/blog/tech/x/dpi-2011-12-07-04-35"/>
		<id>http://www.fooishbar.org/blog/2011/12/07/dpi-2011-12-07-04-35</id>
		<updated>2011-12-07T04:35:00+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Inspired by a discussion in #wayland today, here are snippets from three people
explaining why X declares its DPI as 96, and why a single 'DPI' sledgehammer
isn't actually what basically anyone* wants.  Please read them.
Thanks.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lists.fedoraproject.org/pipermail/devel/2011-October/157671.html&quot;&gt;Adam Jackson&lt;/a&gt;:&lt;br /&gt;
&lt;/p&gt;&lt;blockquote&gt;I am clearly going to have to explain this one more time, forever.
Let's see if I can't write it authoritatively once and simply answer
with a URL from here out.&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lists.fedoraproject.org/pipermail/devel/2011-October/157760.html&quot;&gt;Matthew Garrett&lt;/a&gt;:&lt;br /&gt;
&lt;/p&gt;&lt;blockquote&gt;But what about the single monitor case? Let's go back to your Vaio. It's 
got a high DPI screen, so let's adjust to that. Now you're happy. Right 
up until you plug in an external monitor and now when you run any 
applications on the external display your fonts are twice the size they 
should be. WOOHOO GO TEAM of course that won't make us look like 
amateurs at all. So you need another heuristic to handle that, and of 
course &quot;heuristic&quot; is an ancient african word meaning &quot;maybe bonghits 
will make this problem more tractable&quot;.&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://people.gnome.org/~federico/news-2007-01.html&quot;&gt;Federico Mena-Quintero&lt;/a&gt;:&lt;br /&gt;
&lt;/p&gt;&lt;blockquote&gt;People who know a bit of typography may know a few factoids:&lt;br /&gt;
- Printed books generally use fonts which can be from about 9 to about 12 points in size.&lt;br /&gt;
- A point is roughly 1/72 of an inch. For people in civilized countries, this translates to &quot;I have no idea what the fuck a quarter pounder is&quot;.&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;*: Yes, I know you need to have actual point equivalence, and you've
had all your displays and printer colour-calibrated for the past ten years
too.  You're doing all this in the GIMP or some other kind of design tool,
so please yell at them to use the display size information that XRandR
gives you right now, already, today.&lt;/p&gt;</content>
		<author>
			<name>Daniel Stone</name>
			<uri>http://www.fooishbar.org/blog</uri>
		</author>
		<source>
			<title type="html">diary of a window system hacker</title>
			<subtitle type="html">can't think of a clever byline</subtitle>
			<link rel="self" href="http://www.fooishbar.org/blog/"/>
			<id>http://www.fooishbar.org/blog/</id>
			<rights type="html">Copyright 2004-2009 Daniel Stone, licensed under Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License</rights>
		</source>
	</entry>

	<entry>
		<title type="html">A short update on multitouch</title>
		<link href="http://feedproxy.google.com/~r/Who-t/~3/-lcWDyWwL-Q/short-update-on-multitouch.html"/>
		<id>tag:blogger.com,1999:blog-6112936277054198647.post-1528783139374363600</id>
		<updated>2011-12-06T22:05:32+00:00</updated>
		<content type="html">For the last couple of weeks I've been pretty much working full-time on getting multitouch/XI 2.2 ready for the merge (well, I was on holidays for a bit too). So first of all - sorry if I've been ignoring bugs or emails, I'm working to a few deadlines here. Anyway, here's a bit of a status update.&lt;br /&gt;&lt;br /&gt;Right now, it looks like touch event delivery is working, including nested grabs.Chase Douglas started on the pointer emulation while I was away and we're now at the point where emulation works, except that pointer grabs on top of multitouch clients aren't handled yet. I'm still rather optimistic to get this into 1.12, though it's getting a bit unwieldly. Carlos Garnacho has already sent me some patches, so he's testing the lot against the GTK branches.&lt;br /&gt;&lt;br /&gt;However, since touch support cannot simply be bolted on top and needs to be integrated properly, this has triggered some extra rewrites here and there. I'm currently some 200 commits ahead of  master sync-point. I'm planning to get this number down to something sane before merging but meanwhile, sorry, I'll have to keep ignoring you until this is done.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6112936277054198647-1528783139374363600?l=who-t.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Who-t/~4/-lcWDyWwL-Q&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Peter Hutterer</name>
			<email>noreply@blogger.com</email>
			<uri>http://who-t.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Who-T</title>
			<link rel="self" href="http://feeds.feedburner.com/Who-t"/>
			<id>tag:blogger.com,1999:blog-6112936277054198647</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">HTML5, Video editing and the Collabora website</title>
		<link href="http://blogs.gnome.org/uraeus/2011/12/06/html5-video-editing-and-the-collabora-website/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1753</id>
		<updated>2011-12-06T16:42:17+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;So I did a bit of work last week to convert the &lt;a href=&quot;http://www.collabora.com&quot;&gt;Collabora website&lt;/a&gt; to HTML5. The actual porting was quite simple, mostly replacing the DOCTYPE tag to the new HTML5 one. Found a few other issues through the &lt;a href=&quot;http://validator.w3.org/&quot;&gt;W3C validator&lt;/a&gt;, but nothing major. Today I took the next (small) step in the process by actual adding some real HTML5 content to the site. Actually I only sort of did. Instead of hosting the video locally and using the new video tag I ended up uploading it to youtube and embedding the WebM video in our page. The small video clip I added is demonstrating the HTML5 video editing demo we released recently. (For those of you who missed it I recommend the &lt;a href=&quot;http://mbatle.wordpress.com/2011/11/02/illusions-in-the-web-a-real-time-video-editor-built-in-html5/&quot;&gt;HTML5 video editing blog entry&lt;/a&gt; by Mateu Batle, which explains the whole thing in detail and also links to the code).&lt;/p&gt;
&lt;p&gt;The demo, while simple, is quite cool, showing off our HTML5 based touch screen interface all built on top of &lt;a href=&quot;http://www.collabora.com/projects/webkit/&quot;&gt;Webkit&lt;/a&gt; and the &lt;a href=&quot;http://www.collabora.com/projects/pitivi/&quot;&gt;GStreamer Editing Services&lt;/a&gt;. The embedded video is to be found on the &lt;a href=&quot;http://www.collabora.com/projects/pitivi/&quot;&gt;GStreamer Editing Services&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;As a sidenote, to make this I actually relied on the GNOME 3 built in screen capture support, which I have to say worked like a charm &lt;img alt=&quot;:)&quot; class=&quot;wp-smiley&quot; src=&quot;http://blogs.gnome.org/uraeus/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; /&gt;  Always felt screen casting to be a pain before, but this time it worked very well for me.&lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">New Intel graphics stack release</title>
		<link href="http://dodonov.net/blog/2011/12/06/new-intel-graphics-stack-release/"/>
		<id>http://dodonov.net/blog/?p=1195</id>
		<updated>2011-12-06T12:16:26+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;As many of you have already seen, we have just &lt;a href=&quot;http://lists.freedesktop.org/archives/intel-gfx/2011-December/013795.html&quot;&gt;released&lt;/a&gt; a new version of the &lt;a href=&quot;http://intellinuxgraphics.org/2011Q4.html&quot;&gt;Intel Linux Graphics stack&lt;/a&gt;, composed by Kernel &lt;strong&gt;3.1&lt;/strong&gt; (or &lt;strong&gt;3.1.x&lt;/strong&gt; in practice), Mesa &lt;strong&gt;7.11.2&lt;/strong&gt;, Libdrm &lt;strong&gt;2.4.27&lt;/strong&gt;, vaapi and vaapi-driver-intel &lt;strong&gt;1.0.15&lt;/strong&gt; and xf86-video-intel &lt;strong&gt;2.17&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The focus of this release was on performance and stability improvements in the drivers, and I think we managed to get the job done according to what we expected. Thanks to &lt;strong&gt;LLC&lt;/strong&gt; caching and improvements in both Kernel and Mesa, 3D performance was improved by a large margin on Sandy Bridge generation of GPUs onwards, and many annoying issues were fixed as well (with some of the fixes already queued for Kernel 3.2 release). And I’d also like to highlight lots of work towards &lt;strong&gt;GLES&lt;/strong&gt; compliance on Sandy Bridge architecture, and many and many different stability fixes in all the projects.&lt;/p&gt;

&lt;p&gt;For statistical purposes, my saved bugzilla searches count &lt;strong&gt;253&lt;/strong&gt; bug reports which were closed after the &lt;a href=&quot;http://intellinuxgraphics.org/2011Q3.html&quot;&gt;previous release&lt;/a&gt;, and we had &lt;strong&gt;594&lt;/strong&gt; bug tickets in total which had any activity since that release. Of course, this does not represents what was done by an accurate number, so please, just use those numbers as some sort of bugzilla pondering references.&lt;/p&gt;

&lt;p&gt;So to sum it all up, I’d like to thank all the developers, QA, users, testers, and all the community we have around Intel Linux Graphics project for your amazing work. Yes, the Intel Linux Graphics project has not only a &lt;a href=&quot;http://intellinuxgraphics.org/team.html&quot;&gt;team&lt;/a&gt; within Intel – but also a huge community and users all around the world, following the Open-Source road from Kernel up to the UI components. Thank you all guys!&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</content>
		<author>
			<name>eugeni</name>
			<uri>http://dodonov.net/blog</uri>
		</author>
		<source>
			<title type="html">Eugeni's blog</title>
			<subtitle type="html">My view on technology, open-source, Linux and other cool things.</subtitle>
			<link rel="self" href="http://dodonov.net/blog/feed/"/>
			<id>http://dodonov.net/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Farstream and libnice, an interview with Youness Alaoui</title>
		<link href="http://blogs.gnome.org/uraeus/2011/12/05/farstream-and-libnice-an-interview-with-youness-alaoui/"/>
		<id>http://blogs.gnome.org/uraeus/?p=1746</id>
		<updated>2011-12-05T14:04:34+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;After the success of the &lt;a href=&quot;http://www.collabora.com/about/gstreamer-interview/&quot;&gt;GStreamer interview with Wim Taymans&lt;/a&gt; I thought we follow up with another great interview with a &lt;a href=&quot;http://www.collabora.com&quot;&gt;Collabora&lt;/a&gt; developer.&lt;/p&gt;
&lt;p&gt;This time we are talking with Youness Alaoui who is one of the maintainers of Farstream, the audio and video conferencing framework built on top of GStreamer. We also cover another of Youness Alaoui projects, libnice, the NAT traversal library. So if you want to know what is happening with audio and video conferencing on Linux be sure to read the &lt;a href=&quot;http://www.collabora.com/about/farstream-interview/&quot;&gt;full interview with Youness Alaoui here.&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>uraeus</name>
			<uri>http://blogs.gnome.org/uraeus</uri>
		</author>
		<source>
			<title type="html">Christian Schaller</title>
			<subtitle type="html">GStreamer and Collabora news and more</subtitle>
			<link rel="self" href="http://blogs.gnome.org/uraeus/feed/"/>
			<id>http://blogs.gnome.org/uraeus</id>
		</source>
	</entry>

	<entry>
		<title type="html">Stalk^W Following designs, the easy way</title>
		<link href="http://www.hadess.net/2011/12/stalkw-following-designs-easy-way.html"/>
		<id>tag:blogger.com,1999:blog-977684764667858073.post-1340165624831027093</id>
		<updated>2011-12-05T10:13:00+00:00</updated>
		<content type="html">If you want to follow all the new designs from the &lt;a href=&quot;https://live.gnome.org/Design&quot;&gt;GNOME Design team&lt;/a&gt;, including work-in-progress mockups, gathering of relevant art, etc. be sure to subscribe yourself to the pages that interest you in the various sections of the &lt;a href=&quot;https://live.gnome.org/&quot;&gt;GNOME Wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A nice trick is using our Wiki's notification, with regex support. Head onto &lt;a href=&quot;https://live.gnome.org/action/userprefs/Home?action=userprefs&amp;amp;sub=notification&quot;&gt;your notification settings page&lt;/a&gt;, and add those lines to the &quot;Subscribed wiki pages&quot;:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot;&gt;GnomeLive:Design*&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot;&gt;GnomeLive:GnomeShell/Design*&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Courier New', Courier, monospace;&quot;&gt;GnomeLive:GnomeOS/Design*&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/977684764667858073-1340165624831027093?l=www.hadess.net&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>hadess</name>
			<email>noreply@blogger.com</email>
			<uri>http://www.hadess.net/</uri>
		</author>
		<source>
			<title type="html">/bɑs ˈtjɛ̃ no ˈse ʁɑ/  (hadess) | News</title>
			<link rel="self" href="http://www.hadess.net/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-977684764667858073</id>
		</source>
	</entry>

</feed>

