<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>fishsoup &#187; Uncategorized</title>
	<atom:link href="http://blog.fishsoup.net/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fishsoup.net</link>
	<description>Owen Taylor on Coding, Food, etc.</description>
	<lastBuildDate>Wed, 09 Nov 2011 03:13:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.fishsoup.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>fishsoup &#187; Uncategorized</title>
		<link>http://blog.fishsoup.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.fishsoup.net/osd.xml" title="fishsoup" />
	<atom:link rel='hub' href='http://blog.fishsoup.net/?pushpress=hub'/>
		<item>
		<title>Benchmarking compositor performance</title>
		<link>http://blog.fishsoup.net/2011/06/13/benchmarking-compositor-performance/</link>
		<comments>http://blog.fishsoup.net/2011/06/13/benchmarking-compositor-performance/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 20:34:36 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.fishsoup.net/?p=332</guid>
		<description><![CDATA[Recently Phoronix did an article about performance under different compositing and non-compositing window managers. GNOME Shell didn&#8217;t do that well, so lots of people pointed it out to me. Clearly there was a lot of work put into making measurements for the article, but what is measured is a wide range of 3D fullscreen games [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fishsoup.net&amp;blog=1430594&amp;post=332&amp;subd=owtaylor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;">Recently Phoronix did an <a href="http://www.phoronix.com/scan.php?page=article&amp;item=linux_desktop_managers1">article</a> about performance under different compositing and non-compositing window managers. GNOME Shell didn&#8217;t do that well, so lots of people pointed it out to me. Clearly there was a lot of work put into making measurements for the article, but what is measured is a wide range of 3D fullscreen games across different graphics drivers, graphics hardware, and environments.</p>
<p>Now, if what you want to do with your Linux system is play 3D games this is very relevant information, but it really says absolutely nothing about performance in general. Because the obvious technique to use when a 3D game is running is to &#8220;unredirect&#8221; the game &#8211; and let it display normally to the screen without interference from the compositor. Depending on configuration options, both Compiz and KWin will unredirect, while GNOME Shell doesn&#8217;t do that currently, so this (along with driver bugs) probably explains the bulk of difference between GNOME Shell and other environments.</p>
<p>Adel Gadllah has had patches for <a href="https://bugzilla.gnome.org/show_bug.cgi?id=597014">Mutter</a> and <a href="https://bugzilla.gnome.org/show_bug.cgi?id=618497">GNOME Shell</a> to add unredirection for over a year, but I&#8217;ve dragged my feet on landing them, because there were some questions about when it&#8217;s appropriate to unredirect a window and when not that I wasn&#8217;t sure we had fully answered. We want to unredirect fullscreen 3D games, but not necessarily all fullscreen windows. For example, a fullscreen Firefox window is much like any other window and can have separate dialog windows floating above it that need compositing manager interaction to draw properly.</p>
<p>We should land some sort of unredirection soon to benefit 3D gamers, but really, I&#8217;m much more interested in compositing manager performance in situations where the compositing manager actually has to <em>composite</em>. So, that&#8217;s what I set out this week to do: to develop a benchmark to measure the effect of the compositing manager on application redraw performance.</p>
<h2>Creating a benchmark</h2>
<p>The first thing that we need to realize when creating such a benchmark is that the only drawing that matters is drawing that gets to the screen. Any frames drawn that aren&#8217;t displayed by the compositor are useless. If we have a situation where the application is drawing at 60fps, but the compositor only is drawing 1fps, that&#8217;s not a great performing compositor, that&#8217;s a really bad performing compositor. Application frame rate doesn&#8217;t matter unless it&#8217;s throttled to the compositor frame rate.</p>
<p>Now, this immediately gets us to a sticky problem: there are no mechanisms to throttle application frame rate to the compositor frame rate on the X desktop. Any app that is doing animations or video, or anything else, is just throwing frames out there and hoping for the best. Really, doing compositor benchmarks before we fix that problem is just pointless. Luckily, there&#8217;s a workaround that we can use to get some numbers out in the short term &#8211; the same damage extension that compositors use to find out when a window has been redrawn and has to be recomposited to the screen can also be used to monitor the changes that the compositor is making to the screen. (Screen-scraping VNC servers like Vino use this technique to find out what they need to send out over the wire.) So, our benchmark application can draw a frame, and then look for damage events on the root window to see when the drawing they&#8217;ve done has taken effect.</p>
<p>This looks something like:</p>
<p><a href="http://owtaylor.files.wordpress.com/2011/06/benchmark-method-damage.png"><img class="aligncenter size-full wp-image-349" title="Compositor Benchmark with Damage Notifications" src="http://owtaylor.files.wordpress.com/2011/06/benchmark-method-damage.png" alt="" width="640" height="234" /></a></p>
<p>In the above picture, what is shown is a back-buffer to front-buffer copy that creates damage immediately, but is done asynchronously during the vertical blanking interval. The MESA_copy_sub_buffer GL extension basically does with, with the caveat that (for the Intel and AMD drivers) it can entirely block the GPU while waiting for the blank.</p>
<p>I&#8217;ve done some work to develop this idea into a benchmark I&#8217;m calling xcompbench. (<a href="http://git.fishsoup.net/cgit/xcompbench">Source available</a>.)</p>
<h2>Initial Results</h2>
<p>Below is a graph of some results. What is shown here is the frame rate of a benchmark that blends a bunch of surfaces together via cairo as we increase an arbitrary &#8220;load factor&#8221; which is proportional to the number of surfaces blended together. Since having only one window open isn&#8217;t normal, the results are shown for different &#8220;depths&#8221;, which are how many xterms are stacked underneath the benchmark window.</p>
<p style="text-align:center;"><strong>Compositor Benchmark (Cairo Blending)</strong></p>
<p style="text-align:center;"><a href="http://owtaylor.files.wordpress.com/2011/06/benchmark-blend-20110612.png"><img class="size-full wp-image-336 aligncenter" title="Compositor Blend Benchmark 20110612" src="http://owtaylor.files.wordpress.com/2011/06/benchmark-blend-20110612.png" alt="" width="640" height="512" /></a></p>
<p>So, what we see above is that if we are drawing to an offscreen pixmap, or we are running with metacity and no compoisting, frame rate decreases smoothly as the load factor increases. When you add a compositor, things change: if you look at solid blue line for mutter you see the prototypical behavior &#8211; the frame rate pins at 60fps (the vertical refresh rate) until it drops below it, then you see some &#8220;steps&#8221; where it preferentially runs locked to integral fractions of the frame rate &#8211; 40fps, 30fps, 20fps, etc. Other things seen above &#8211; kwin runs similarly to mutter with no other windows open, but drops off as more windows are added, while mutter and compiz are pretty much independent of number of windows. And compiz is running much slower than the other compositors.</p>
<p>Since the effect of the compositor on performance depends on what resources the compositor and application are competing for, it clearly matters what resources the benchmark is using &#8211; is it using CPU time? is it using memory bandwidth? is it using lots of GPU shaders? So, I&#8217;ll show results for two other benchmarks as well. One draws a lot of text, and another is a simple GL benchmark that draws a lot of vertices with blending enabled.</p>
<p style="text-align:center;"><strong>Compositor Benchmark (Text Drawing)</strong></p>
<p style="text-align:center;"><a href="http://owtaylor.files.wordpress.com/2011/06/benchmark-text-20110612.png"><img class="size-full wp-image-336 aligncenter" title="Compositor Text Benchmark 20110612" src="http://owtaylor.files.wordpress.com/2011/06/benchmark-text-20110612.png" alt="" width="640" height="512" /></a></p>
<p style="text-align:center;"><strong>Compositor Benchmark (GL Drawing)</strong></p>
<p style="text-align:center;"><a href="http://owtaylor.files.wordpress.com/2011/06/benchmark-gl-20110612.png"><img class="size-full wp-image-336 aligncenter" title="Compositor GL Benchmark 20110612" src="http://owtaylor.files.wordpress.com/2011/06/benchmark-gl-20110612.png" alt="" width="640" height="512" /></a></p>
<p>There are some interesting quirks there that would be worth some more investigation &#8211; why is the text benchmark considerably faster drawing offscreen than running uncomposited? why is the reverse true for the GL benchmark? But the basic picture we see is the same as for the first benchmark.</p>
<p>So, this looks pretty good for Mutter right? Well, yes. But note:</p>
<h1 style="text-align:center;">It&#8217;s all about Timing</h1>
<p>The reason Compiz is slow here isn&#8217;t that it has slow code, it&#8217;s that the timing of when it redraws is going wrong with this benchmark. The actual algorithm that it uses is rather hard to explain, and so are the ways it interacts with the benchmark badly, but to give a slight flavor of what might be going on, take a look at the following diagram.</p>
<p><a href="http://owtaylor.files.wordpress.com/2011/06/benchmark-method-late-damage.png"><img src="http://owtaylor.files.wordpress.com/2011/06/benchmark-method-late-damage.png" alt="" title="Hypothetical Compositor Timing Problem" width="640" height="239" class="aligncenter size-full wp-image-359" /></a></p>
<p>If a compositor isn&#8217;t redrawing immediately when it receives damage from a client, but is waiting a bit for more damage, then it&#8217;s possible it might wait too long and miss the vertical reblank entirely. Then the frame rate could drop way down, even if there was plenty of CPU and GPU available.</p>
<h2>Future directions</h2>
<p>One thing I&#8217;d like to do is to be able to extract a more compact set of numbers. The charts above clearly represent relative performance between different compositors, but individual data points tell much less. If someone runs my benchmark and reports that on their system, kwin can do 45 fps when running at a load factor of 8 on the blend benchmark, that is most representative of hardware differences and not of compositor code. The ratio of the offscreen framerate to the composited framerate at the &#8220;shoulder&#8221; where we drop off from 60fps might be a good number. If one compositor drops off from 60fps at an offscreen framerate of 90fps, but for a different compositor we have to increase the load factor so that the offscreen framerate is only 75fps at the shoulder, then that should be a mostly hardware independent result.</p>
<p>It is also important to look at the effect of going from a &#8220;bare&#8221; compositor to a desktop environment? The results above are with bare compiz, kwin, and mutter ,and not with Unity, Plasma, or GNOME Shell. My testing indicates pretty similar results with GNOME Shell as with the full desktop. Can I put numbers to that? Is the same true elsewhere?</p>
<p>And finally, how do we actually add proper synchronization instead of using the damage hack? I&#8217;ve done an implementation of an idea that was come up with a couple of years ago in a discussion between <a href="http://mail.gnome.org/archives/wm-spec-list/2009-June/msg00006.html">me</a> and <a href="http://mail.gnome.org/archives/wm-spec-list/2009-July/msg00005.html">Denis Dzyubenko</a> and it looks promising. This blog post is, however, too long already to give more details at this point.</p>
<p>My goal here is that this is a benchmark that we can all use to figure out the right timing algorithms and get them implemented across compositors. At that point, I&#8217;d expect to see only minimal differences, because the basic work that every compositor has to do is the same: just copy the area that the application updated to the screen and let the application start drawing the next frame.</p>
<h2>Test Configuration</h2>
<p>Intel Core i5 laptop @2.53GHz, integrated intel Ironlake graphics<br />
KWin 4.6.3<br />
Compiz 0.9.4<br />
Mutter 3.0.2</p>
<p><b>Update:</b> The sentence &#8220;why is the text benchmark considerably faster drawing offscreen than running uncomposited&#8221; was originally reversed. Pointed out by Benjamin Otte and fixed.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/owtaylor.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/owtaylor.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/owtaylor.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/owtaylor.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/owtaylor.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/owtaylor.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/owtaylor.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/owtaylor.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/owtaylor.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/owtaylor.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/owtaylor.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/owtaylor.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/owtaylor.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/owtaylor.wordpress.com/332/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fishsoup.net&amp;blog=1430594&amp;post=332&amp;subd=owtaylor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.fishsoup.net/2011/06/13/benchmarking-compositor-performance/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a45426932356d75ac19f68c0c958f800?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Owen</media:title>
		</media:content>

		<media:content url="http://owtaylor.files.wordpress.com/2011/06/benchmark-method-damage.png" medium="image">
			<media:title type="html">Compositor Benchmark with Damage Notifications</media:title>
		</media:content>

		<media:content url="http://owtaylor.files.wordpress.com/2011/06/benchmark-blend-20110612.png" medium="image">
			<media:title type="html">Compositor Blend Benchmark 20110612</media:title>
		</media:content>

		<media:content url="http://owtaylor.files.wordpress.com/2011/06/benchmark-text-20110612.png" medium="image">
			<media:title type="html">Compositor Text Benchmark 20110612</media:title>
		</media:content>

		<media:content url="http://owtaylor.files.wordpress.com/2011/06/benchmark-gl-20110612.png" medium="image">
			<media:title type="html">Compositor GL Benchmark 20110612</media:title>
		</media:content>

		<media:content url="http://owtaylor.files.wordpress.com/2011/06/benchmark-method-late-damage.png" medium="image">
			<media:title type="html">Hypothetical Compositor Timing Problem</media:title>
		</media:content>
	</item>
		<item>
		<title>What does the user see?</title>
		<link>http://blog.fishsoup.net/2011/03/11/what-does-the-user-see/</link>
		<comments>http://blog.fishsoup.net/2011/03/11/what-does-the-user-see/#comments</comments>
		<pubDate>Fri, 11 Mar 2011 19:30:31 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.fishsoup.net/?p=318</guid>
		<description><![CDATA[As a long-time GNOME module maintainer and as a team lead within Red Hat, I often get people coming to me for advice about some technical issue or another. And no matter the issue, there&#8217;s one question that I&#8217;ll almost always end up asking at some point: &#8220;what does the user see?&#8221; Code, APIs, protocols [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fishsoup.net&amp;blog=1430594&amp;post=318&amp;subd=owtaylor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As a long-time GNOME module maintainer and as a team lead within Red Hat, I often get people coming to me for advice about some technical issue or another. And no matter the issue, there&#8217;s one question that I&#8217;ll almost always end up asking at some point: &#8220;what does the user see?&#8221; Code, APIs, protocols are all just means to the end-user experience. Discussion of the future of GNOME should also start with what the user sees.</p>
<p><a href="http://www.markshuttleworth.com/archives/654">Mark argues</a> that GNOME should be a place where we have internal competition. But his idea of internal competition seems to be competition between different end-user experiences. His entrant into the competition is Unity, an environment with a user experience designed completely in isolation from GNOME. The other entrant would, I suppose, be the GNOME 3 desktop that GNOME has created.</p>
<p>This competition doesn&#8217;t make sense to me: what would be left of GNOME if Unity &#8220;won&#8221; that competition? Not even the libraries are left, because every decision that is made about what goes into library should be driven by that same question &#8220;what does the user see?&#8221; No widget should go into GTK+ unless it makes sense in a GNOME application. GNOME cannot cede the user experience and still work as a project.</p>
<p>The sort of internal competition I&#8217;d like to see within GNOME is competition of ideas. Competition of mockups and prototypes, and even entire applications. We know that we need better file management within the GNOME Activities Overview for 3.2. Is that organized as a timeline? Does it involve tagging? Is it best implemented with Zeitgeist? With Tracker? With both? Those are things that are still open, and the more people that are working on different designs and approaches, the better off the final result will be.</p>
<p>The basic constraint of any sort of internal competition within GNOME is that you have to be willing for some of your ideas to win and some of your ideas to lose. If you are starting out with the premise that you have complete final control over the user experience, then you aren&#8217;t working on GNOME, you are working on something else. So far, this seems to be the approach of Canonical. In the past, they took GNOME, modified it, and presented the modified result to their users. Now they are taking some GNOME libraries, building a new desktop on top of that, and presenting that to their users. But I&#8217;ve never seen Canonical make the leap and realize that they could actually dive in and make GNOME itself better.</p>
<p>Diving in means a commitment &#8211; it means fighting for your ideas at every step of the way, from the design level, to figuring out how the code pieces fit together, to the line-by-line details of the code. But the thing about open source is that the more you engage at this level with a project, the more you win. You become more in sync with the other contributors about end goals. You learn how to communicate with them better. And soon enough you no longer think of yourself as an outsider. You are just are another insider.</p>
<p>Make no mistake: I&#8217;m very sad to see further splintering of the Linux desktop. I think GNOME 3 is going to be amazing, but how much more amazing could it have been if the design and coding talent that is going into Unity could have been pooled with the work being done inside GNOME? An application developer can create an application that works both within GNOME and within Unity, but we&#8217;re adding extra barriers to the task of creating an application for Linux. That&#8217;s already far too hard.</p>
<p>No matter what happens, all desktops on Linux need to continue to work together to try and provide as much cross-desktop compatibility as possible. But we have to realize the limits of freedesktop.org specifications and standards. Many of the early successes of freedesktop.org were in places where there was broad user interface consensus. Drag-and-drop of text from one application to another made sense in all toolkits, so we made it work between toolkits. But if there isn&#8217;t consensus on the user experience, then the specification isn&#8217;t that useful.</p>
<p>For example, appindicators start off with the proposition any application should be able to create an icon with a drop-down menu and make it a permanent part of the desktop. (I&#8217;m simplifying somewhat &#8211; the original Status Notifier specification leaves the user experience quite unspecified, but that&#8217;s the way that Canonical was using the specification.) If you don&#8217;t have that user interface concept, it&#8217;s not clear how the spec helps. So that&#8217;s what made the Canonical proposal of libappindicator strange. They didn&#8217;t engage with GNOME to make the user interface idea part of future designs. They didn&#8217;t even propose changes to core GNOME components to support application indicators. They showed up with a library that would allow applications to display indicators in a modified GNOME desktop, and proposed that GNOME should bless it as a dependency.</p>
<p>(From the GNOME Shell side we were never considering whether appindicators were useful for their original designed purpose; we were considering whether they were a useful way to implement the fixed system icons we had in the GNOME Shell design. In the end, it seemed much simpler to just code the fixed system icons, and I think that decision has been supported in how things have turned out in practice. We&#8217;ve been able to create system icon drop-downs that match our mockups and use the full capabilities of the shell toolkit without having to figure out how to funnel everything over a D-Bus protocol.)</p>
<p>So, by all means, we should collaborate on standards, but we can&#8217;t just collaborate on standards for the sake of collaborating on standards. We have to start off from understanding what the user sees. Once we understand what the user sees, if there&#8217;s a place to make an application written for one environment work better in another environment, that&#8217;s a place where standardization is useful. Of course, the more that designers from different environments exchange ideas and go down similar user interface paths, the more opportunity there will be for standards.</p>
<p>Is collaboration on standards and on bits of infrastructure, and friendly exchange of UI ideas the way forward for GNOME and Unity? Are they completely separate desktops? Perhaps it&#8217;s the only feasible way forward at this point, but it certainly doesn&#8217;t make me happy. Mark: any time you want discuss how we can work together to create to a single great desktop, we&#8217;re still ready to talk. Design choices, technological choices, the channels and ways we communicate in GNOME, are all things we can reconsider. The only thing to me that&#8217;s untouchable is the central idea that GNOME is ultimately about the experience of our users.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/owtaylor.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/owtaylor.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/owtaylor.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/owtaylor.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/owtaylor.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/owtaylor.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/owtaylor.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/owtaylor.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/owtaylor.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/owtaylor.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/owtaylor.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/owtaylor.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/owtaylor.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/owtaylor.wordpress.com/318/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fishsoup.net&amp;blog=1430594&amp;post=318&amp;subd=owtaylor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.fishsoup.net/2011/03/11/what-does-the-user-see/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a45426932356d75ac19f68c0c958f800?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Owen</media:title>
		</media:content>
	</item>
		<item>
		<title>Istanbul Wed/Thu</title>
		<link>http://blog.fishsoup.net/2008/06/29/istanbul-wedthu/</link>
		<comments>http://blog.fishsoup.net/2008/06/29/istanbul-wedthu/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 22:28:37 +0000</pubDate>
		<dc:creator>Owen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://owtaylor.wordpress.com/?p=69</guid>
		<description><![CDATA[I&#8217;m getting into Istanbul on Wednesday afternoon; going to spend Thursday there before driving over to visit Troy with JRB. (I need to do my touristing pre-GUADEC since I have other plans afterwards.) If anybody else is getting early and wants to meet up for dinner on Wednesday or sightseeing on Thurday, send me an [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fishsoup.net&amp;blog=1430594&amp;post=69&amp;subd=owtaylor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m getting into Istanbul on Wednesday afternoon; going to spend Thursday there before driving over to visit Troy with JRB. (I need to do my touristing pre-GUADEC since I have <a href="http://www.east-durham.org/irishartsweek/">other plans</a> afterwards.) If anybody else is getting early and wants to meet up for dinner on Wednesday or sightseeing on Thurday, send me an <a href="mailto:otaylor@fishsoup.net">email</a> or catch me on IRC over the next few days.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/owtaylor.wordpress.com/69/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/owtaylor.wordpress.com/69/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/owtaylor.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/owtaylor.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/owtaylor.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/owtaylor.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/owtaylor.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/owtaylor.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/owtaylor.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/owtaylor.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/owtaylor.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/owtaylor.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/owtaylor.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/owtaylor.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/owtaylor.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/owtaylor.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fishsoup.net&amp;blog=1430594&amp;post=69&amp;subd=owtaylor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.fishsoup.net/2008/06/29/istanbul-wedthu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a45426932356d75ac19f68c0c958f800?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Owen</media:title>
		</media:content>
	</item>
	</channel>
</rss>
