<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Federico Mena-Quintero - Activity Log</title>
    <link>http://www.gnome.org/~federico/news.html</link>
    <description>Boring news about Federico</description>

    <copyright>2008 Federico Mena-Quintero</copyright>
    <managingEditor>federico@gnome.org</managingEditor>
    <webMaster>federico@gnome.org</webMaster>
    <language>en</language>
    <lastBuildDate>Wed, 19 Nov 2008 15:06:36 CST</lastBuildDate>

    <item>
      <title>Wed 2008/Nov/19</title>
      <link>http://www.gnome.org/~federico/news-2008-11.html#19</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-11.html#19</guid>
      <pubDate>Wed, 19 Nov 2008 15:01:00 CST</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      Everyone should read the <a
	      href="http://book.git-scm.com/index.html">Git Community
	      Book</a>, a very nice manual for Git.  You can also <a
	      href="http://github.com/schacon/gitscm/wikis/how-to-contribute">contribute
	      to it</a>!
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Nov/11</title>
      <link>http://www.gnome.org/~federico/news-2008-11.html#11</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-11.html#11</guid>
      <pubDate>Tue, 11 Nov 2008 17:56:00 CST</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      My friend <a
	      href="http://estebangutierrez.com/">Esteban</a>, who has
	      been taking some amazing photographs, informs that
	      December&nbsp;31st of this year will have a <a
	      href="http://www.cenam.mx/hora_oficial/segundobisiesto.aspx">leap&nbsp;second</a>.
	      Watch out for the prized hh:mm:60 moment!
	    </p>
	  </li>

	  <li>
	    <p>
	      I am in the process of seeing why <a
	      href="http://gtk-vnc.sourceforge.net/">gtk-vnc</a> (the
	      VNC client implementation used by <a
	      href="http://projects.gnome.org/vinagre/">Vinagre</a>,
	      <a href="http://virt-manager.org/">virt-viewer</a>, et
	      al) is much slower by default than <a
	      href="http://www.tightvnc.com/">TightVNC</a>.  It seems
	      to be something around the preferred ordering of
	      encodings which VNC supports, plus TightVNC's funny
	      extensions.  So, I have been modifying the ever-amazing
	      <a href="http://www.wireshark.org/">Wireshark</a> to
	      support decoding TightVNC's extensions to the basic VNC
	      protocol.  This will make it easy to compare what
	      TightVNC and gtk-vnc are doing.
	    </p>
	  </li>

	  <li>
	    <p>
	      I just ran into a bug in Nautilus caused by a <a
	      href="http://bugzilla.gnome.org/show_bug.cgi?id=45062">FIXME
	      from December 2000</a>, from the Eazel days.  The bug
	      only gets triggered by my <a
	      href="http://www.gnome.org/~federico/news-2008-08.html#nautilus-predefined-desktop-items">patch
	      to allow desktop icons defined by the sysadmin</a>; the
	      original code doesn't seem to be subject to this.
	      Dr.&nbsp;House, move over for here I come.
	    </p>

	    <p>
	      I am starting to think that Nautilus, like any big
	      system with a lot of history, is not a beautiful piece
	      of clockwork.  It is not neurotic and exact; it is more
	      like a living organism where data flows in
	      semi-predictable directions and all your changes to the
	      code have to be prepared for anything.  You cannot know
	      exactly what data you will get, or all the code paths
	      that may lead to your code getting called.
	    </p>

	    <p>
	      This is not a bad thing by itself.  You cannot have a
	      large, mature system that functions with 100%
	      predictably, like clockwork.  You have to allow for
	      things to happen even if you did not expect them.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Fri 2008/Oct/31</title>
      <link>http://www.gnome.org/~federico/news-2008-10.html#31</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-10.html#31</guid>
      <pubDate>Fri, 31 Oct 2008 11:58:00 CST</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      The ever-excellent <a
	      href="http://www.permaculture.org.au/">blog of the
	      Permaculture Research Institute of Australia</a> links
	      to a fantastic <a
	      href="http://permaculture.org.au/2008/10/26/human-footprint/">documentary
	      on an individual's human footprint</a>:  how much you
	      consume and produce throughout your life.
	    </p>
	  </li>

	  <li>
	    <p>
	      A couple of days ago we were finally able to move our
	      bedroom to the second story of our house.  It's
	      interesting how a change of environment modifies your
	      habits.  While our old bedroom was on the south-west
	      corner of the house, so it only ever got direct sunlight
	      in the afternoon, the new bedroom has windows facing the
	      north-east and we get all the early morning sunlight.
	      The result is that now we are waking up automatically
	      between 6:30 and 7:00, instead of at 9:00 due to Luciana
	      clamoring for attention.
	    </p>

	    <p>
	      One small bug in this setup is that the bedroom gets
	      little direct sunlight in the afternoon, so it cools
	      down and the roof can't radiate heat during the night.
	      Fortunately, a little insulation in the windows and good
	      bed-covers fix the problem &mdash; one of the advantages
	      of living inside the tropics :)
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Thu 2008/Oct/23</title>
      <link>http://www.gnome.org/~federico/news-2008-10.html#23</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-10.html#23</guid>
      <pubDate>Thu, 23 Oct 2008 11:12:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="gui-hackfest-file-management-1">
	    <p>
	      <strong><a
	      href="http://www.gnome.org/~federico/news-2008-10.html#gui-hackfest-file-management-1">Everyday
	      file management at the user experience hackfest</a></strong>
	    </p>

	    <p>
	      During the <a
	      href="http://live.gnome.org/Boston2008/GUIHackfest">user
	      experience hackfest</a> I was part of the team that
	      brainstormed about how to make file management easier.
	      My other team-mates were <a
	      href="http://www.organise-fw.org/screenshots.html">Sebastian&nbsp;Faubel</a>, <a
	      href="http://mihmo.livejournal.com/">Máirín&nbsp;Duffy</a>,
	      <a
	      href="http://linuxart.com/log/">Garret&nbsp;LeSage</a>,
	      and <a
	      href="http://mpt.net.nz/">Matthew&nbsp;Paul&nbsp;Thomas</a>.
	    </p>

	    <p>
	      It is useful to think of file management as two
	      different-but-related problems:  dealing with your
	      everyday files ("what I am working on"), and dealing
	      with your archived files ("what I did in the past").
	      For now I'll write about the first problem.
	    </p>

	    <p>
	      <strong>Dealing with your everyday files</strong>
	    </p>

	    <p>
	      My talk at GUADEC, <em><a
	      href="http://www.gnome.org/~federico/docs/2008-GUADEC/html/index.html">Document-centric
	      GNOME</a></em>, explained a few of the problems that
	      cause people to have a lot of trouble when dealing with
	      their everyday files or other data.
	    </p>

	    <p>
	      People have a hard time finding the files they worked on
	      recently ("my homework paper that I was typing last
	      Monday").  When you start up your computer, you get a
	      desktop with some scattered icons which are probably
	      <em>not</em> the files you are interested in.  If you
	      work on a physical desk with physical items like paper
	      notebooks and pens, your stuff remains where you left
	      it:  you can just go back to your desk and resume work
	      immediately.
	    </p>

	    <p>
	      Programs do not provide any sort of help in actually
	      finding the files you are interested in.  Let's consider
	      a very common workflow:  download an image from a web
	      site, make some modifications to it, and attach it to an
	      e-mail.  When you do "save image as" in your web
	      browser, it will default to ~/Downloads or even
	      ~/Desktop.  When you do "file/open" in the GIMP, it will
	      default to the last directory you used in the GIMP, even
	      if it was from days ago (on my machine right now, the
	      GIMP defaulted to look at files from
	      ~/src/some-random-directory).  Finally, Evolution's
	      "insert attachment" defaults also to the last directory
	      you used in Evolution (~/.ssh for me right now, since I
	      mailed my public key to someone yesterday).  The end
	      result is that your workflow gets shattered to pieces,
	      as programs try to be helpful <em>within
	      themselves</em>, but they totally fail at being helpful
	      <em>within your workflow</em>.
	    </p>

	    <p>
	      So, programs contribute to having files scattered around
	      everywhere, and there is no easy way to look at
	      everything together.
	    </p>

	    <p>
	      <strong>The journal</strong>
	    </p>

	    <p>
	      It is useful to think of your <em>working set of
	      data</em>.  This is the stuff that you have been working
	      on recently:  documents that you typed, photos that you
	      edited, e-mails that you sent, web sites that you
	      researched.  People have a reasonably good memory of
	      <em>when</em> they did things recently.  "I started
	      typing my homework last Monday, because I knew it was
	      due on my Thursday class".  "I mailed you that photo two
	      weeks ago, right after my birthday party".
	    </p>

	    <p>
	      A few years ago I started to maintain a big text file in
	      which I keep a journal of what I do during the day.
	      October&nbsp;23&nbsp;2008: filed bug #12345 about blah
	      blah; mailed someone@foo.com about this and that;
	      started ~/Documents/SomeProject/important-file.odt.  I
	      can search through that text file really easily to find
	      when I did something, to remind me of bugs I was dealing
	      with, to find important files which I don't want to
	      lose.  Sometimes I put in annotations there ("paid the
	      electrical bill on the bank's web site, with transaction
	      number 1234"), or very specific things that I need to do
	      over the next few days (somewhat like an ad-hoc to-do
	      list).
	    </p>

	    <p>
	      Similarly, different people in many professions keep
	      journals or log books of their work.  It is very useful
	      to be able to look at your journal later, to remind
	      yourself of related things that you were doing around
	      any particular time.
	    </p>

	    <p>
	      OLPC announced the <a
	      href="http://wiki.laptop.org/go/OLPC_Human_Interface_Guidelines/The_Laptop_Experience/The_Journal">XO&nbsp;Journal</a>
	      some time ago.  It shows you a timeline with all the
	      work you do on your laptop:  it is a computer-generated
	      version of the journal I keep in a hand-written text
	      file.
	    </p>

	    <p>
	      On the hackfest we took the <a
	      href="http://www.gnome.org/~federico/docs/2008-GUADEC/html/img31.html">mock-ups that I
	      showed during GUADEC</a> and improved them to make them
	      more useful.
	    </p>

	    <p>
	      <a
	      href="http://live.gnome.org/Boston2008/GUIHackfest/FileManagement/FindingStuff/Journal"><img
	      src="http://www.gnome.org/~federico/misc/journal-with-functions.png"
	      alt="Journal mock-up" width="648" height="486"></img></a>
	    </p>

	    <p>
	      The journal shows a timeline of the files you have
	      worked on, e-mails that you have written, web sites that
	      you have visited, IM conversations that you have had.
	      We can implement this gradually, starting with the
	      RecentFiles infrastructure we already have, and then
	      writing little providers for the other data sources.
	    </p>

	    <p>
	      The journal lets you put hand-written annotations at
	      convenient spots, like "phoned my mom about her vampire
	      costume" or "paid the bills with transaction number
	      123".
	    </p>

	    <p>
	      You can "pin" items in the journal, or mark them with a
	      star, so that they will also be displayed in a fixed
	      place for "starred items".  This way you can anchor
	      important things so that you don't have to hunt for them
	      in the timeline.
	    </p>

	    <p>
	      You can create documents directly from the journal.
	      Consider this case from the physical world:  you get an
	      idea, grab your paper notebook, open it to the first
	      available page, and write something about your idea.  Or
	      you do a small sketch.  Then you close your notebook.
	      If what you scribbled is not very important, you'll just
	      leave it in the notebook and forget about it.  But if it
	      turns out to be good stuff that you want to keep around,
	      you'll tear out that sheet of paper and put it in a
	      "good place":  a stack of papers for a particular
	      project, or a folder or binder if you are really
	      organized.  The point is that you can start creating
	      stuff <em>without having to think in advance of a place
	      to put it</em>.  You can just keep your stuff in the
	      journal until you think of a good place for it (and when
	      you move it to a folder, you can still access the files
	      from the journal, of course).
	    </p>

	    <p>
	      Finally, the journal needs to be <em>really easy to
	      access</em>.  Since it is your "holding tray" of things
	      that you are working on, you want to be able to access
	      the journal without moving away all of your windows or
	      hunting for it in your cluttered desktop.  The mock-up
	      proposes using a tab on the edge of the screen.  The tab
	      is normally hidden so that it does not obstruct your
	      work.  If you move the mouse to the edge of the screen,
	      the tab appears and you can click on it to slide out the
	      journal window.  This scheme may change based on the
	      ideas from the <a
	      href="http://live.gnome.org/Boston2008/GUIHackfest/WindowManagementAndMore">window
	      management team</a>.  Fortunately, the position of the
	      journal is easy to change:  give me a parent window and
	      I'll move the world.
	    </p>

	    <p>
	      <strong>Implementation</strong>
	    </p>

	    <p>
	      I started implementing the journal as a Nautilus
	      extension (see my <a
	      href="http://www.gnome.org/~federico/news-2008-10.html#start-of-nautilus-journal">previous
	      post about this</a> for screenshots and source code).
	    </p>

	    <p>
	      However, Seif&nbsp;Lotfy has a <a
	      href="http://seilo.geekyogre.com/2008/10/more-updates-on-the-timeline-semi-working-mockup/">much
	      more complete implementation of the journal</a> in the
	      form of the Mayanna&nbsp;Timeline.  Mayanna is the
	      maintained version of Gimmie, and a lot of good work has
	      been going into it.
	    </p>

	    <p>
	      <a
	      href="http://seilo.geekyogre.com/2008/10/more-updates-on-the-timeline-semi-working-mockup/"><img
	      src="http://farm4.static.flickr.com/3008/2964646956_d8363f98df.jpg"
	      alt="Mayanna timeline"></a>
	    </p>

	    <p>
	      Seif and I have been talking about how to proceed.  It
	      seems that we'll reuse his data providers for the
	      timeline or journal, and rewrite the layout/view code to
	      make it really fast and lean.  In particular, I'm pretty
	      interested in looking at the layout code from the <a
	      href="http://iola.dk/nemo/">Nemo file manager</a>.
	    </p>

	    <p>
	      <strong>Stay tuned</strong>
	    </p>

	    <p>
	      I'll write about the second problem with file management
	      over the next few days:  how to deal with your archived
	      files.  Sebastian, Máirín, and Garrett have excellent
	      ideas in this space.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Mon 2008/Oct/13</title>
      <link>http://www.gnome.org/~federico/news-2008-10.html#13</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-10.html#13</guid>
      <pubDate>Mon, 13 Oct 2008 14:27:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="start-of-nautilus-journal">
	    <p>
	      <a href="http://www.gnome.org/~federico/news-2008-10.html#start-of-nautilus-journal"><strong>Start of the Nautilus Journal</strong></a>
	    </p>

	    <p>
	      On the <a
	      href="http://live.gnome.org/Boston2008/GUIHackfest">GUI
	      Hackfest</a> we talked about a lot of <a
	      href="http://live.gnome.org/Boston2008/GUIHackfest/FileManagement">ideas
	      for file management</a>, including the <a
	      href="http://live.gnome.org/Boston2008/GUIHackfest/FileManagement/FindingStuff/Journal">Journal</a>
	      that I described <a
	      href="http://www.gnome.org/~federico/docs/2008-GUADEC/html/index.html">during
	      GUADEC</a>.  The journal view is now a work-in-progress;
	      here is a quick screenshot:
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/misc/nautilus-journal-2008-10-13.png"><img
		  src="http://www.gnome.org/~federico/misc/nautilus-journal-2008-10-13-thumb.png" alt="Nautilus Journal"
		  width="480" height="212" class="photo"></a>
	    </p>

	    <p>
	      There is no behavior right now (you can't click or
	      anything); the journal just scrolls.  In the end this
	      will not live in a normal framed window, but rather in a
	      tab on the side of the screen or some other place that
	      is easy to access.
	    </p>

	    <p>
	      You can play with this in <a
	      href="http://gitorious.org/projects/nautilus/repos/mainline">the
	      Gitorious repository for Nautilus</a>; look in the
	      <tt>document-centric</tt> branch.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Thu 2008/Oct/02</title>
      <link>http://www.gnome.org/~federico/news-2008-10.html#02</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-10.html#02</guid>
      <pubDate>Thu, 02 Oct 2008 12:54:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="mortadelo-0.3">
	    <p>
	      <a href="http://www.gnome.org/~federico/news-2008-10.html#mortadelo-0.3"><strong>Mortadelo 0.3 is released</strong></a>
	    </p>

	    <p>
	      I've just released <a
	      href="http://live.gnome.org/Mortadelo">Mortadelo</a>&nbsp;0.3,
	      the graphical, systemwide version of strace.  You can
	      use Mortadelo to examine the system calls from all your
	      processes.
	    </p>

	    <p>
	      Source tarball:  <a href="http://www.gnome.org/~federico/hacks/mortadelo/mortadelo-0.3.tar.gz">mortadelo-0.3.tar.gz</a>
	    </p>

	    <p>
	      Git repository: <tt>git clone git://gitorious.org/mortadelo/mainline.git mortadelo</tt>
	    </p>

	    <p>
	      openSUSE 11.0 one-click install:  <a
		href="http://software.opensuse.org/ymp/home:federico-mena/openSUSE_11.0/mortadelo.ymp"><img
		src="http://www.gnome.org/~federico/misc/Oneclick.png" alt="openSUSE one-click install" width="162" height="46"></a>
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Sep/23</title>
      <link>http://www.gnome.org/~federico/news-2008-09.html#23</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-09.html#23</guid>
      <pubDate>Tue, 23 Sep 2008 13:58:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      The <a
	      href="http://www.survs.com/survey?id=M3PIVU72&channel=2WXE4BVTW8">Git
	      user's survey 2008</a> is up!  Be sure to participate to
	      make Git better.  I found question&nbsp;27 very
	      interesting, with a bunch of commands that I never knew
	      about but that could be very useful to me.
	    </p>
	  </li>

	  <li>
	    <p>
	      <strong>Everyone who has a laptop:</strong> GNOME is now
	      wired to support the hotkey which laptops have to toggle
	      the internal/external display output (Fn-F7 on
	      Thinkpads, for instance).  X exposes this as the
	      <tt>XF86Display</tt>&nbsp;keysym.  However, not all
	      laptops expose that key in the same fashion.  For some
	      of them to work, one needs to add entries to HAL's
	      description files, or do some ACPI magic.
	    </p>

	    <p>
	      <a
	      href="http://en.opensuse.org/Laptop_hotkeys_for_RANDR">We
	      are building a list of laptops</a> to see how they
	      expose the "toggle displays" and "rotate the screen"
	      hotkeys (for tablets).  If you have a laptop, <a
	      href="http://en.opensuse.org/Laptop_hotkeys_for_RANDR">please
	      add it to the list</a> so that we can add support for
	      it.  Thanks!
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Sep/16</title>
      <link>http://www.gnome.org/~federico/news-2008-09.html#16</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-09.html#16</guid>
      <pubDate>Tue, 16 Sep 2008 15:46:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="usability-of-planets">
	    <p>
	      <strong><a href="http://www.gnome.org/~federico/news-2008-09.html#usability-of-planets">Usability of planets</a></strong>
	    </p>

	    <p>
	      We have <em>another</em> flamewar about inappropriate
	      posts on <a
	      href="http://planet.gnome.org/">Planet&nbsp;GNOME</a>.
	    </p>

	    <p>
	      Why does this keep happening?  Let's take a
	      user-centered view.  Say you are a reader of a planet
	      aggregator.  Your question is, <strong>how do I get rid
	      of the posts by <em>Annoying&nbsp;Person</em>?</strong>
	    </p>

	    <p>
	      Now, let's compare two planets:  <a
	      href="http://planet.gnome.org/">Planet&nbsp;GNOME</a>
	      and <a
	      href="http://planetsuse.org/">Planet&nbsp;SUSE</a>.
	    </p>

	    <table class="small-text">
	      <tbody>
		<tr class="dark-background">
		  <th>Planet GNOME</th>
		  <th>Planet SUSE</th>
		</tr>

		<tr valign="top">
		  <td>
		    <img src="http://www.gnome.org/~federico/misc/planet-gnome.png" alt="Planet GNOME"
		      width="320" height="490" class="photo"></img>
		  </td>

		  <td>
		    <img src="http://www.gnome.org/~federico/misc/planet-suse.png" alt="Planet SUSE"
		      width="320" height="367" class="photo"></img>
		  </td>
		</tr>
	      </tbody>
	    </table>

	    <p>
	      In Planet GNOME, you must scroll to the bottom of the
	      (very long) page, click on the "Feeds" line to expand
	      it, and then you will find checkboxes for each of the
	      feeds.  You can then find <em>Annoying&nbsp;Person</em>
	      there and uncheck him.
	    </p>

	    <p>
	      <img src="http://www.gnome.org/~federico/misc/planet-gnome-feeds.png" alt="Planet GNOME feeds"
		width="328" height="360" class="photo"></img>
	    </p>

	    <p>
	      Step 1:  wait for PGO to load.  Step 2: scroll to the
	      bottom.  Step 3: find the "Feeds" line.  Step 4: click
	      on "Feeds".  Step 5: find <em>Annoying&nbsp;Person</em>.
	      Step 6:  uncheck his checkbox.
	    </p>

	    <p>
	      That's six steps just to get rid of stupid posts.
	    </p>

	    <p>
	      In Planet SUSE, each post has an "X" icon.  If you click
	      it, the icon turns into a checkmark, and all of that
	      person's entries will be hidden the next time you load
	      the planet.
	    </p>

	    <p>
	      <img src="http://www.gnome.org/~federico/misc/planet-suse-hidden-feed.png" alt="Planet SUSE hidden feed"
		width="749" height="54" class="photo"></img>
	    </p>

	    <p>
	      Step 1: Find the "X" icon next to
	      <em>Annoying&nbsp;Person</em>'s post.  Step 2:  Click
	      the icon.
	    </p>

	    <p>
	      It is clear that Planet&nbsp;SUSE is much more usable
	      than Planet&nbsp;GNOME in terms of "how do I hide the
	      posts by <em>Annoying&nbsp;Person</em>".  You don't have
	      to <em>know</em> that to hide someone, you must scroll
	      to the bottom of the page, find a magic little expander,
	      etc.  You just click on the "go away" icon which is
	      <em>right there by the annoying post</em>, and you are
	      done.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Mon 2008/Sep/08</title>
      <link>http://www.gnome.org/~federico/news-2008-09.html#08</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-09.html#08</guid>
      <pubDate>Mon, 08 Sep 2008 15:38:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="green-beans">
	    <p>
	      <strong><a href="http://www.gnome.org/~federico/news-2008-09.html#green-beans">Today's harvest, green beans</a></strong>
	    </p>

	    <p>
	      This is about 240&nbsp;grams of green beans that we grew
	      out of eight plants, on more or less 40x40&nbsp;cm of
	      soil.  The plants should yield about three times that
	      amount, once the younger beans and flowers mature.
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-08-6719-green-beans.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-08-6719-green-beans.jpg" alt="Green beans"
		  width="320" height="214" class="photo"></a>
	    </p>

	    <p>
	      I don't know if that kind of yield is low or high, but
	      it definitely feels good to get <em>something
	      edible</em> out of a little patch in the <a
	      href="http://www.guerrillagardening.org/">sidewalk</a>.
	      No fertilizers or anything, just soil from our little
	      compost heap.  This is the sidewalk in question; the
	      beans are the ones with the large leaves.  There is also
	      epazote (anti-flatulent aromatic herb for cooking
	      beans), garlic, mint, a couple of watermelon seedlings,
	      rosemary, petunias, roses, rue, and a couple of plants
	      whose names we don't know.
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-08-6721-sidewalk.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-08-6721-sidewalk.jpg" alt="Planted sidewalk"
		  width="320" height="214" class="photo"></a>
	    </p>

	    <p>
	      Our gardening book is <em><a
		href="http://books.google.com/books?id=01xFyEdpX-MC&pg=PA243&lpg=PA243&dq=ecopol+mexico&source=web&ots=Oo2cis0oz9&sig=GFxerjwh7IEAWRimWkDutFiqYL0&hl=en&sa=X&oi=book_result&resnum=9&ct=result#PPA42,M1">How
		to grow more vegetables</a></em>, by John&nbsp;Jeavons
		(acutally, a slightly newer edition than the one
		presented there).
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Aug/26</title>
      <link>http://www.gnome.org/~federico/news-2008-08.html#26</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-08.html#26</guid>
      <pubDate>Tue, 26 Aug 2008 11:42:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="nautilus-predefined-desktop-items">
	    <p>
	      <a href="http://www.gnome.org/~federico/news-2008-08.html#nautilus-predefined-desktop-items"><strong>Predefined desktop items for Nautilus</strong></a>
	    </p>

	    <p>
	      Back in the Summer of Code 2007, <a
	      href="http://live.gnome.org/SummerOfCode2007/Reports/Sayamindu">Sayamindu
	      Dasgupta worked on adding support for predefined desktop
	      items to Nautilus</a>.  This is so that system
	      administrators can set up desktop links that will appear
	      on users' desktops.  A university could set up an icon
	      to take people to the university's intranet, for
	      example.
	    </p>

	    <p>
	      Basically, I'm reviving Sayamindu's patch and bringing
	      it up to date for the current Nautilus.  The idea is
	      that you set up a GConf key,
	      <tt>/apps/nautilus/desktop/predefined_items_dir</tt>,
	      and point it to a directory which holds
	      <tt>.desktop</tt> files.  This kind of indirection
	      through a GConf key is what makes the scheme work nicely
	      for deployments with Sabayon:  sysadmins can have
	      predefined items for various groups of users, and select
	      among those by simply changing a mandatory GConf key for
	      each user.  This wouldn't be so easy if there were a
	      hardcoded directory like
	      <tt>/var/nautilus/global-desktop-items</tt>.
	    </p>

	    <p>
	      Sysadmins should be able to define mandatory items,
	      which users cannot change or delete, and also "normal"
	      items, which users can tweak or remove.  Mandatory ones
	      would be ones like "Company&nbsp;Intranet" or "Link to
	      Helpdesk".  Distros could use normal items for their
	      marketing materials; the perenially hacky
	      "Welcome&nbsp;to&nbsp;FooLinux" icons that currently are
	      hard to do properly.
	    </p>

	    <p>
	      The problem I'm having is how to make non-mandatory
	      items work.  You want this behavior:
	    </p>

	    <ol>
	      <li>
		The sysadmin defines a non-mandatory item.
	      </li>

	      <li>
		The user sees the item in his desktop.  He doesn't
		want it anymore, so he deletes it.  <em>Where do we
		mark this deletion?</em>
	      </li>

	      <li>
		The user decides that he wants the item back after
		all.  <em>How does he restore it?</em>
	      </li>

	      <li>
		The sysadmin updates the non-mandatory item and he
		wants it to show up again in people's desktops.
		<em>How can this override what the user had done?</em>
	      </li>
	    </ol>

	    <p>
	      I'm leaning toward having two extra boolean values in .desktop
	      files:  an <tt>X-GNOME-Mandatory</tt> and
	      <tt>X-GNOME-Deleted</tt>.  If the "mandatory" value is
	      false, then the user may change or delete the item.  For
	      changes, the item is copied from the
	      <tt>predefined_items_dir</tt> to the user's
	      <tt>~/Desktop</tt> and that version is modified.  For
	      deletions, the item is copied there as well, but then
	      the "deleted" flag gets turned on.
	    </p>

	    <p>
	      If the user wants an item back, he turns on "show hidden
	      files" and those files get shown again.  (Or we could
	      hack the Trash to restore the item by turning off the
	      "deleted" flag...)
	    </p>

	    <p>
	      If the sysadmin updates an item in the
	      <tt>predefined_items_dir</tt>, this item will override
	      items of the same name in users' desktops, based on the
	      item's timestamp.
	    </p>

	    <p>
	      Does this make sense?  Am I overlooking something?
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Thu 2008/Aug/21</title>
      <link>http://www.gnome.org/~federico/news-2008-08.html#21</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-08.html#21</guid>
      <pubDate>Thu, 21 Aug 2008 12:29:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      People who use <a
	      href="http://blogs.gnome.org/johncarr/2008/06/21/git-mirrorgnomeorg/">git-mirror.gnome.org</a>
	      may have noticed that SVN tags don't get fetched
	      automatically when they get their daily fix of updates
	      with "<tt>git&nbsp;fetch</tt>" or "<tt>git&nbsp;pull</tt>"
	      (that is, you run "<tt>git&nbsp;tag</tt>" and it doesn't
	      list new tags that appeared since you did your original
	      clone).  Within your repository, take a look at
	      <tt>.git/config</tt>:
	    </p>

	    <pre class="code-example">
[remote "origin"]
	url = git://git-mirror.gnome.org/git/gtk+
	fetch = +refs/heads/*:refs/remotes/origin/*
	fetch = +refs/tags/*:refs/tags/*      ### &lt;---- Add this line!</pre>

	    <p>
	      The first "fetch" line is already in your
	      <tt>.git/config</tt> and it means, "every time I fetch
	      from the origin, get all the branch heads in the
	      origin's refs/heads and stuff them in the
	      refs/remotes/origin namespace" (i.e. update all the
	      branch heads).
	    </p>

	    <p>
	      The second "fetch" line is what you need to add.  It
	      means, "every time I fetch from the origin, also get all
	      the tags and stuff them in my own namespace".
	    </p>

	    <p>
	      After that, just do "<tt>git&nbsp;fetch&nbsp;origin</tt>"
	      and all the tags will be downloaded to your repository.
	    </p>
	  </li>

	  <li>
	    <p>
	      <a
	      href="http://nachosetcrayons.blogspot.com/">Mike&nbsp;Wolf</a>
	      has been working madly on <a
	      href="http://www.gnome.org/~federico/news-2008-07.html#rpm2git">rpm2git</a>
	      to make it easier to use.  He has made some very cool changes:
	    </p>

	    <p>
	      Rpm2git no longer requires you to have an environment
	      suitable for <tt>rpmbuild</tt> (e.g. specfiles in
	      <tt>/usr/src/packages/SPECS</tt>, patches in
	      <tt>/usr/src/packages/SOURCES</tt>).  If you have a single
	      directory with a specfile and patches, you can simply
	      run rpm2git on that.
	    </p>

	    <p>
	      You don't need to have all the <tt>BuildRequires</tt> from the
	      specfile, either.
	    </p>

	    <p>
	      Perhaps most importantly, you don't need to mess with
	      your <tt>$PATH</tt> anymore nor install helper scripts.
	      Rpm2git now works out of the box after
	      "<tt>make&nbsp;install</tt>".
	    </p>

	    <p>
	      All of these changes are now merged in the <a
	      href="http://gitorious.org/projects/rpm2git/repos/mainline">rpm2git
	      repository</a>.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Thu 2008/Aug/14</title>
      <link>http://www.gnome.org/~federico/news-2008-08.html#14</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-08.html#14</guid>
      <pubDate>Thu, 14 Aug 2008 19:40:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      Sometimes Oralia boils water in the kettle, and adds a
	      stick of cinnamon to make an infusion.  The other day I
	      heard the kettle boiling and I thought, "time for some
	      green tea!".  I didn't notice that the water was
	      actually cinnamon, and made my tea as usual.
	    </p>

	    <p>
	      Well, hot damn, green tea made with cinnamon water
	      turned out to be *good stuff*.  I think I could grow an
	      addiction to this.
	    </p>
	  </li>

	  <li id="randr-monitor-labels">
	    <p>
	      <strong><a
	      href="http://www.gnome.org/~federico/news-2008-08.html#randr-monitor-labels">Labels for RANDR monitors</a></strong>
	    </p>

	    <p>
	      When you configure multiple monitors, it is useful to
	      know which physical monitor corresponds to each element
	      in the configuration GUI.  Both KDE and MacOS display
	      cute labels on each monitor.
	    </p>

	    <p>
	      I implemented pretty much the same thing for GNOME, with
	      the addition of color-coding.  Hello, sexy:
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/misc/tray-monitor-labels.png"><img
		  src="http://www.gnome.org/~federico/misc/tray-monitor-labels-thumb.png" alt="Labels for the tray icon's menu"
		  width="320" height="200" class="photo"></a>
	      <a href="http://www.gnome.org/~federico/misc/monitor-labels.png"><img
		  src="http://www.gnome.org/~federico/misc/monitor-labels-thumb.png" alt="Labels for the display capplet"
		  width="320" height="200" class="photo"></a>
	    </p>

	    <p>
	      This is in the following Git repositories (look at the
	      <tt>monitor-labeling</tt> branches in all of them, and
	      also <tt>tray-icon-rotation</tt> for gnome-settings-daemon):
	    </p>

	    <ul>
	      <li><a href="http://gitorious.org/projects/gnome-desktop/repos/mainline">gnome-desktop</a></li>
	      <li><a href="http://gitorious.org/projects/gnome-settings-daemon/repos/mainline">gnome-settings-daemon</a></li>
	      <li><a href="http://gitorious.org/projects/gnome-control-center/repos/mainline">gnome-control-center</a></li>
	    </ul>

	    <p>
	      This is just awaiting approval from the the release team
	      to be committed to SVN :)
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Aug/12</title>
      <link>http://www.gnome.org/~federico/news-2008-08.html#12</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-08.html#12</guid>
      <pubDate>Tue, 12 Aug 2008 14:50:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="git-rebase-interactive">
	    <p>
	      <strong><a
	      href="http://www.gnome.org/~federico/news-2008-08.html#git-rebase-interactive">Why I want to have the children of <tt>git rebase --interactive</tt></a></strong>
	    </p>

	    <p>
	      Sometimes you are hacking madly and committing often.
	      Your commit log looks like this:
	    </p>

	    <p>
	      <tt>
	      * Add some fields for a popup menu<br>
	      * Create the popup menu<br>
	      * Refactor the base object to accomodate the menu's commands<br>
	      * Implement the signal handlers for the menu's commands<br>
	      </tt>
	    </p>

	    <p>
	      Then you type <tt>make</tt> and of course your code doesn't
	      compile.  So you do one-liner commits, one for each
	      build error:
	    </p>

	    <p>
	      <tt>
	      * Add missing include gtkmenu.h<br>
	      * Fix typo in popup_menu variable name<br>
	      * Forgot to declare a menu_item variable<br>
	      * Add missing argument for gtk_menu_popup function<br>
	      </tt>
	    </p>

	    <p>
	      But you don't want you submit all of those patches
	      upstream!  You only want to send perfect patches which
	      are either additions or refactorings to the upstream
	      code.  You don't want the maintainer to know that you
	      are a fallible human being who forgets include files and
	      variable declarations; instead, you want him to believe
	      that you are a coding god who sends a perfect series of
	      patches every time.
	    </p>

	    <p>
	      <tt>git rebase --interactive</tt> allows you to pretend
	      you are better than you really are.  This is a good thing.
	    </p>

	    <p>
	      We have 8&nbsp;commits in total (4 "good" ones that
	      don't compile, and 4 "embarrassing" ones that are little
	      fixes).  So, run
	      <tt>git&nbsp;rebase&nbsp;--interactive&nbsp;HEAD~8</tt>.
	      This means, "let me fix any fuckups since 8&nbsp;commits ago".
	    </p>

	    <p>
	      Git will drop you in an editor where you edit this:
	    </p>

	    <pre class="code-example">
pick ab365cf Add some fields for a popup menu
pick 2478bac Create the popup menu
pick 9180ffe Refactor the base object to accomodate the menu's commands
pick a6c2467 Implement the signal handlers for the menu's commands
pick 289cf1a Add missing include gtkmenu.h
pick 378ac2b Fix typo in popup_menu variable name
pick 821ac6f Forgot to declare a menu_item variable
pick 24acf67 Add missing argument for gtk_menu_popup function

# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit</pre>

	    <p>
	      Now let's <em>reorder the lines</em> there, and replace some
	      <tt>pick</tt> commands by <tt>squash</tt>.  I've put in
	      some comments about what each moved line does.
	    </p>

	    <pre class="code-example">
pick ab365cf Add some fields for a popup menu
squash 289cf1a Add missing include gtkmenu.h
# Oops, forgot to "#include &lt;gtk/gtkmenu.h&gt;" to have a field declared "GtkMenu *popup_menu"
	      
pick 2478bac Create the popup menu
squash 821ac6f Forgot to declare a menu_item variable
# Oops, while creating the menu items I forgot to declare my menu_item variable

squash 24acf67 Add missing argument for gtk_menu_popup function
# Oops, while creating the menu I also missed an argument to this function (how couldn't anyone?)

pick 9180ffe Refactor the base object to accomodate the menu's commands

pick a6c2467 Implement the signal handlers for the menu's commands
squash 378ac2b Fix typo in popup_menu variable name
# ... and I also mistyped popup_menu in a signal handler</pre>

	    <p>
	      When you are done, save that temporary file and exit
	      your editor.  Git will rewrite your commit history so
	      that you have a clean log, with no commits like "fix
	      this little thing".  When you send that patch series to
	      the maintainer, he'll have an easier time reading your
	      code, and he'll be amazed at your meticulousness.
	    </p>

	    <p>
	      The important thing here is to <em>do one commit per
	      compilation error</em>.  Then it's very easy to reorder
	      your commits, where you squash each fix with the
	      corresponding "real"&nbsp;commit.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Fri 2008/Aug/08</title>
      <link>http://www.gnome.org/~federico/news-2008-08.html#08</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-08.html#08</guid>
      <pubDate>Fri, 08 Aug 2008 10:50:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      Two-stone handicap for me on a 9x9 go board, and the <a
	      href="http://hpjansson.org/blag/2008/08/08/tick-tock/">birthdayful
	      HPJ</a> still manages to kick my ass by twenty-something
	      points.
	    </p>

	    <p>
	      They must have put something in the cake, as I had two
	      big slices while HPJ had a single tiny one.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Thu 2008/Aug/07</title>
      <link>http://www.gnome.org/~federico/news-2008-08.html#07</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-08.html#07</guid>
      <pubDate>Thu, 07 Aug 2008 13:41:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="rpm2git-usage">
	    <p>
	      <strong><a href="http://www.gnome.org/~federico/news-2008-08.html#rpm2git-usage">How to use rpm2git</a></strong>
	    </p>

	    <p>
	      Here is a second screencast on <a
	      href="http://www.gnome.org/~federico/news-2008-07.html#rpm2git">rpm2git</a>
	      (Ogg&nbsp;Theora, 69&nbsp;MB).  This one tells you how
	      to use rpm2git to take the patches from a SRPM and put
	      them in a Git branch.
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/docs/rpm2git/rpm2git-usage.ogg"><img
		  src="http://www.gnome.org/~federico/docs/rpm2git/rpm2git-usage.png" alt="screencast on rpm2git usage"
		  width="320" height="232" class="photo"></a>
	    </p>
	  </li>

	  <li>
	    <p>
	      During <a href="http://2005.guadec.org/">GUADEC in
	      Stuttgart</a> and in <a href="http://2003.guadec.org/">Dublin</a>, <a
	      href="http://www.sussex.ac.uk/Users/eb32/">Evangelia&nbsp;Berdou</a>
	      was interviewing people about how they contribute in
	      GNOME.  She used this information for her dissertation,
	      <a
	      href="http://opensource.mit.edu/papers/PhD_Berdou.pdf"><em>Managing
	      the Bazaar: Commercialization and peripheral
	      participation in mature, community-led Free/Open source
	      software projects</em></a>.  Over 100&nbsp;people from
	      the GNOME Foundation contributed to her study!
	    </p>

	    <p>
	      <a href="http://opensource.mit.edu/papers/PhD_Berdou.pdf"><img
		  src="http://www.gnome.org/~federico/misc/berdou-gnome-contributions.png" alt="Distribution of effort by group"
		  width="600" height="421" class="photo"></a>
	    </p>

	    <p>
	      There is very valuable information in this work:  how
	      many core-platform hackers, core-desktop hackers,
	      secondary-desktop hackers, translators, and peripheral
	      contributors do we have?  Which of them are employed to
	      work only on GNOME, on GNOME and other free software, or
	      are not paid for their contributions?  How do people
	      move from being peripheral contributors to core ones?
	    </p>

	    <p>
	      For people thinking about which sub-group of GNOME needs
	      better tools (translators!) and support from GNOME at
	      large, this is exactly what they need to read.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Wed 2008/Aug/06</title>
      <link>http://www.gnome.org/~federico/news-2008-08.html#06</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-08.html#06</guid>
      <pubDate>Wed, 06 Aug 2008 22:38:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      Two things that made my day today.
	    </p>

	    <p>
	      First, <a
	      href="https://build.opensuse.org/package/show?package=meld&project=home%3Aajorgensen">Andrew
	      Jorgensen packaged Meld for openSUSE 11.0, based on
	      Pavol Rusnak's version</a>, which
	      makes <tt>git-mergetool</tt> <a href="http://meld.sourceforge.net/">awesome</a>.
	    </p>

	    <p>
	      Two, <a
	      href="https://build.opensuse.org/package/show?package=git-merge-changelog&project=home%3Ai-nZ">Ivan
	      Zlatev packaged git-merge-changelog</a> (<a
	      href="http://www.mail-archive.com/bug-gnulib@gnu.org/msg09183.html">README</a>),
	      which makes merging ChangeLog entries surprisingly
	      painless.  You can even cherry-pick from other branches,
	      where the ChangeLog's diff would not apply cleanly to
	      the destination branch, and git-merge-changelog
	      Just&nbsp;Works(tm) without any manual intervention.
	      This *is* magic.
	    </p>
	  </li>

	  <li id="rpm2git-screencast">
	    <p>
	      <strong><a href="http://www.gnome.org/~federico/news-2008-08.html#rpm2git-screencast">rpm2git screencast</a></strong>
	    </p>

	    <p>
	      Here is a little screencast about the problem that <a
	      href="http://www.gnome.org/~federico/news-2008-07.html#rpm2git">rpm2git</a> tries to
	      solve (Ogg&nbsp;Theora, 12.5&nbsp;MB):
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/docs/rpm2git/rpm2git-intro.ogg"><img
		  src="http://www.gnome.org/~federico/docs/rpm2git/rpm2git-intro.png" alt="rpm2git screencast"
		  width="320" height="240" class="photo"></a>
	    </p>

	    <p>
	      You can also <a
	      href="http://opensuse.blip.tv/#1161436">watch the
	      rpm2git screencast in opensuse.blip.tv</a>.
	    </p>

	    <p>
	      (Screencast recorded with <a
	      href="http://recordmydesktop.sourceforge.net/about.php">recordMyDesktop</a>.
	      Man, my voice sucks.  I swear it sounded better inside my head.)
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Aug/05</title>
      <link>http://www.gnome.org/~federico/news-2008-08.html#05</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-08.html#05</guid>
      <pubDate>Tue, 05 Aug 2008 21:31:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      I'm no security expert, but <a
	      href="http://www.0xdeadbeef.com/weblog/?p=521">the
	      Firefox guys keep saying</a> that the new "this SSL
	      certificate is funny" scheme in Firefox&nbsp;3 is
	      actually a good thing, but that is just bullshit.
	    </p>

	    <p>
	      <a
	      href="http://www.cs.auckland.ac.nz/~pgut001/pubs/phishing.pdf">Certificates
	      are broken as designed</a> because every web browser
	      (including Firefox&nbsp;3) has a button that says "let
	      me access the site anyway", and that's what
	      <em>everyone</em>, including yours truly, does <em>all
	      the time</em>.  People just do not know, nor care, how
	      to ensure that a certificate is valid.  "What's a
	      certificate, anyway?  The site says it is secure!"
	    </p>

	    <p>
	      If anything, the new scheme for funny certificates in
	      Firefox&nbsp;3 is <em>worse</em> than it was before,
	      because the warnings are more frequent.  So, you get
	      <em>really well-conditioned</em> to hitting the button
	      that says, "begone, stupid warning, and let me access
	      the fucking web site already".
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Wed 2008/Jul/30</title>
      <link>http://www.gnome.org/~federico/news-2008-07.html#30</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-07.html#30</guid>
      <pubDate>Wed, 30 Jul 2008 19:18:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      <a
	      href="http://fredmorcos.blogspot.com/2008/06/gnome-in-age-of-decadence.html">People
	      like were thinking of a document-centric desktop</a>
	      before my GUADEC talk.  W00t.  It's nice to see people
	      tuned in to the same channel.
	    </p>

	    <p>
	      (There is a lot of material in that blog post.  Digest
	      it slowly, bit by bit.  I don't agree with the parts
	      about needing to dump the fundamentals of our platform,
	      but that's perhaps better seen from an implementator's
	      perspective.)
	    </p>
	  </li>

	  <li>
	    <p>
	      <a href="http://www.iola.dk/nemo/">Nemo</a> is a file
	      manager for GNOME which displays your files based on
	      <em>time</em>, not on folder hierarchies.  It also
	      handles categories for files, like tags in F-spot.  I
	      had not seen it before GUADEC, and it's a pretty cool
	      concept &mdash; much more developed than the simplistic
	      timeline-of-days that I showed in GUADEC.  Maybe we can
	      <a href="http://mono-project.com/Embedding_Mono">embed
	      the Mono VM</a> into Nautilus and reuse <a
	      href="http://www.iola.dk/nemo/blog/?p=3">Nemo's
	      super-sexy widgets for time-based displays</a>.
	    </p>
	  </li>

	  <li id="rpm2git">
	    <p>
	      <strong><a href="http://www.gnome.org/~federico/news-2008-07.html#rpm2git">rpm2git &mdash; an easy way to publish distro patches</a></strong>
	    </p>

	    <p>
	      Various GNU/Linux distros have developed different,
	      ad-hoc ways of publishing the patches they put on top of
	      "pristine" released tarballs from upstream projects like
	      GNOME.  <a href="http://ftp.opensuse.org/">openSUSE lets
	      you download full SRPMS</a> from an FTP site, or in a
	      slower but more elegant way through the <a
	      href="https://build.opensuse.org/">openSUSE Build
	      Service</a>.  <a
	      href="http://cvs.fedoraproject.org/viewcvs/">Fedora has
	      a CVS repository</a> where they put specfiles and
	      patches.  Back in the Ximian days, we had a pretty cute
	      web page, <a
	      href="http://web.archive.org/web/20040123204854/http://patches.ximian.com/">patches.ximian.com</a>,
	      where you could ask for the patches for a specific
	      module, for one or more distros.
	    </p>

	    <p>
	      Since every distro publishes its patches in a different
	      way, the following happens.
	    </p>

	    <p>
	      First, upstream developers have a hard time actually
	      looking for those patches to review them and see if they
	      are fit for inclusion in the mainline releases.  Where
	      does $distro publish its stuff?  How do I know what its
	      latest version is?  How do I know what bugs they were
	      trying to fix?  Upstream developers should not have to
	      learn the idiosyncrasies of each distro just to get
	      code from them.
	    </p>

	    <p>
	      Second, distros themselves end up doing a lot of
	      duplicated work.  I just found out that both Fedora and
	      openSUSE have patches in their gtk package to do the
	      same things:  one for GtkEntry to change the "*" into a
	      "●" when the entry is being used for password entry;
	      another one to let 64-bit builds install the 32-bit and
	      64-bit libraries in the correct places.  If there had
	      been an easy way to share those patches, maybe they
	      wouldn't have duplicated the same work.
	    </p>

	    <p>
	      I am pleased to give you <a
	      href="http://gitorious.org/projects/rpm2git/repos/mainline"><strong>rpm2git</strong></a>.
	      This is a little tool that you can use as follows:
	    </p>

	    <p>
	      First, you get a Git clone of an upstream repository,
	      for example, something out of git-mirror.gnome.org.
	    </p>

	    <p>
	      Second, you get a SRPM and unpack it.  You look at the
	      version of that package (say, Nautilus 2.22.2).
	    </p>

	    <p>
	      Third, you find the Git tag for that version
	      (svn/NAUTILUS_2_22_2).
	    </p>

	    <p>
	      Fourth, you call <tt>rpm2git</tt> with that tag name,
	      your specfile, and a destination branch name.
	    </p>

	    <p>
	      Rpm2git will create a branch starting at the tag you
	      specified, and it will apply the patches from the SRPM
	      as individual commits.  The commit messages come from
	      the patch comments.
	    </p>

	    <p>
	      The idea is that you can later just publish this Git
	      repository, and upstream developers or other distros
	      will be able fetch your branches into their own base
	      repositories.  Then, they can cherry-pick patches at
	      their convenience.
	    </p>

	    <p>
	      You can get rpm2git like this:
	    </p>

	    <pre class="code-example">
git clone git://gitorious.org/rpm2git/mainline.git rpm2git</pre>

	    <p>
	      Over the next few days I hope to start publishing Git
	      repositories of the GNOME packages we ship in openSUSE,
	      with branches for the patches we use.
	    </p>

	    <p>
	      Note that rpm2git is not the same as <a
	      href="http://vcs-pkg.org/">VCS-PKG</a>, a really
	      interesting project to go directly from source code
	      under revision control to compiled distro packages.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Jul/29</title>
      <link>http://www.gnome.org/~federico/news-2008-07.html#29</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-07.html#29</guid>
      <pubDate>Tue, 29 Jul 2008 14:44:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      Here is a fantastic <a
	      href="http://officeblogs.net/UI/UX09_Harris.pdf">presentation
	      of how the Office&nbsp;2007 user interface was
	      redesigned</a> (<a
	      href="http://blogs.msdn.com/jensenh/archive/2008/03/12/the-story-of-the-ribbon.aspx">full
	      blog post</a>).  <a
	      href="http://tirania.org/blog/archive/2008/Mar-11.html">Miguel
	      already talked about this presentation</a> when he went
	      to the MIX08 conference.
	    </p>

	    <p>
	      Obligatory snarky comments:  the presentation's slides
	      look like ass.  Garish backgrounds.  Three different
	      fonts on a slide.  <a
	      href="http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001yB&topic_id=1&topic=Ask+E%2eT%2e">Bullets</a>.
	      Anyway, that's the visual material.  The actual content
	      of the presentation is very interesting.
	    </p>

	    <p>
	      Microsoft was in this situation:  with Office they had a
	      tremendously powerful piece of software with which
	      people no longer felt comfortable.  It's too complex.  I
	      don't know all the features anymore.  I'm sure it has
	      the feature I want, but I cannot find it.  This fucking
	      paper clip never gives me good advice and just gets in my
	      way.
	    </p>

	    <p>
	      The thing is, designing or improving user interfaces is
	      Real&nbsp;Work(tm).  You have to <em>watch people
	      work</em> and see where they get stuck.  You have to
	      make prototypes and see how people react to them.
	      Microsoft did that for Office&nbsp;2007.
	    </p>

	    <p>
	      On a much smaller scale, this is why I think that the
	      plan for <a
	      href="http://www.gnome.org/~federico/news-2008-07.html#document-centric-gnome">document-centric
	      GNOME</a> has a good chance of being successful.  We can
	      show Apple and Microsoft that free software has the
	      balls to change the toplevel way in which people
	      interact with their files.  We can definitely turn our
	      desktop into a <strong>more comfortable
	      environment</strong> than what those proprietary
	      environments gave us twenty years ago.
	    </p>
	  </li>

	  <li>
	    <p>
	      Speaking of comfortable environments, this is a street
	      cafe one or two blocks away from the grand bazaar in
	      Istanbul.  I had the pleasure of having apple tea and
	      coffee with <a href="http://hpjansson.org/blag/">HPJ</a>
	      and <a href="http://jprosevear.org/blog/">JPR</a> on one
	      of those tables, getting relaxed and ready before
	      terrorizing the grand bazaar with our <a
	      href="http://wikitravel.org/en/Haggle">extreme haggling
	      skills</a>.
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-07-6171-street-cafe.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-07-6171-street-cafe.jpg" alt="Street cafe"
		  width="214" height="320" class="photo"></a>
	    </p>

	    <p>
	      Let's see how many <a
	      href="http://web.archive.org/web/20040930233237/www.jacana.org.uk/pattern/P0.htm">patterns
	      of good urbanism</a> there are in that place:
	    </p>

	    <ul>
	      <li>
		<a
		href="http://web.archive.org/web/20041022193405/www.jacana.org.uk/pattern/P100.htm">Pedestrian
		street</a> whose width does not exceed the height of
		the surrounding buildings, so you feel cozy.
	      </li>
	      <li>
		<a
		href="http://web.archive.org/web/20041023154934/www.jacana.org.uk/pattern/P69.htm">Public
		outdoor room</a> which makes you feel sheltered and is
		nicely decorated.
	      </li>
	      <li>
		<a
		href="http://web.archive.org/web/20041023114227/www.jacana.org.uk/pattern/P238.htm">Filtered
		light</a> from the trees, so you can enjoy a cool
		shade on a sunny day.
	      </li>
	      <li>
		<a
		href="http://web.archive.org/web/20041023145836/www.jacana.org.uk/pattern/P88.htm">Street
		cafe</a> to talk and relax and see people go by.
	      </li>
	      <li>
		<a
		href="http://web.archive.org/web/20040930233237/http://www.jacana.org.uk/pattern/P21.htm">Four-story
		limit</a> so that buildings don't overpower people.
	      </li>
	      <li>
		<a
		href="http://web.archive.org/web/20040930233237/http://www.jacana.org.uk/pattern/P106.htm">Positive
		outdoor space</a> so that you have a sense of place.
	      </li>
	    </ul>
	  </li>

	  <li>
	    <p>
	      I would love it if our <a
	      href="http://library.gnome.org/devel/hig-book/stable/">Human
	      Interface Guidelines</a> were closer in spirit to <a
	      href="http://web.archive.org/web/20041020034125/www.jacana.org.uk/pattern/P0.htm"><em>A
	      Pattern Language</em></a> (<a
	      href="http://www.amazon.com/Pattern-Language-Buildings-Construction-Environmental/dp/0195019199/ref=cm_lmf_tit_7_rsrsrs0">book</a>)
	      than to <a
	      href="http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/chapter_1_section_1.html">Apple's
	      HIG</a>.
	    </p>
	  </li>

	  <li>
	    <p>
	      One of the most pleasurable things about GUADEC is the
	      chance to find out that hackers share common interests
	      outside of programming.
	    </p>

	    <p>
	      <a href="http://wingolog.org/">Andy&nbsp;Wingo</a> was
	      telling me about Richard&nbsp;Gabriel's book, <em><a
	      href="http://www.dreamsongs.com/Files/PatternsOfSoftware.pdf">Patterns
	      of Software</a></em>.  Christopher&nbsp;Alexander wrote
	      the preface &mdash; he's the main guy who defined those
	      architectural and urbanism patterns from above.
	    </p>

	    <p>
	      JPR, HPJ, and myself were talking about <a
	      href="http://www.theoildrum.com/">peak oil</a>.  Will
	      free software even be relevant if we can't keep the
	      Internet running?
	    </p>

	    <p>
	      It turns out that our baby and <a
	      href="http://www.0xdeadbeef.com/weblog/">Chris&nbsp;Blizzard</a>'s
	      as well have the same kind of baby chair and swing.
	    </p>

	    <p>
	      It's fun to talk about camera-nerding with <a
	      href="http://www.figuiere.net/hub/blog/">Hub</a>.
	    </p>
	  </li>

	  <li>
	    <p>
	      Today I'm 0x20&nbsp;years old.  Yay.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Wed 2008/Jul/23</title>
      <link>http://www.gnome.org/~federico/news-2008-07.html#23</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-07.html#23</guid>
      <pubDate>Wed, 23 Jul 2008 19:03:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      I'm writing a little utility that generates Git
	      repositories from some unpleasantly-formatted data.  The
	      test suite for this was really simple to write:  you can
	      simply ask git, "give me the SHA-1 hash that you have
	      for the content" at the end of the test run
	      (i.e. "<tt>git-cat-file&nbsp;-p&nbsp;HEAD</tt>" and
	      parse out the "tree" hash from there).  If the obtained
	      hash matches your expected hash, then you know the test
	      succeeded.  This is much easier than comparing all of the
	      expected/obtained content by hand.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Jul/22</title>
      <link>http://www.gnome.org/~federico/news-2008-07.html#22</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-07.html#22</guid>
      <pubDate>Tue, 22 Jul 2008 12:42:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="document-centric-gnome">
	    <p>
	      <strong><a href="http://www.gnome.org/~federico/news-2008-07.html#document-centric-gnome">Document-centric GNOME</a></strong>
	    </p>

	    <p>
	      Here is my presentation from GUADEC:  <a
	      href="http://www.gnome.org/~federico/docs/2008-GUADEC/html/index.html">Document-centric
	      GNOME</a> (<a href="http://www.gnome.org/~federico/docs/2008-GUADEC/fmq-2008-document-centric-gnome.odp">ODP</a>).
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/docs/2008-GUADEC/html/index.html"><img
		  src="http://www.gnome.org/~federico/docs/2008-GUADEC/html/img0-thumb.jpg" alt="Document-centric GNOME"
		  width="320" height="240" class="photo"></a>
	    </p>

	    <p>
	      The code for document-centric Nautilus consists of the journal
	      view and the Nautilus extension interface for journal
	      providers.  This code is not finished yet (nothing gets
	      displayed to the screen; it's all engine code), but you
	      can take a look here:
	    </p>

	    <pre class="code-example">
git clone git://gitorious.org/nautilus/mainline.git nautilus-document-centric</pre>

	    <p>
	      The master branch contains the document-centric code,
	      which is built on top of nautilus-2.22.2.  You can also
	      visit the <a
	      href="http://gitorious.org/projects/nautilus/repos/mainline">Gitorious
	      repository for document-centric Nautilus</a> and create
	      your forks there.
	    </p>
	  </li>

	  <li>
	    <p>
	      <a href="http://blog.sontek.net/">John&nbsp;Anderson</a>
	      has posted a great little <a
	      href="http://opensuse-tutorials.com/2008/07/nautilus-tips-and-tricks/">tutorial
	      on Nautilus tips and tricks</a>.  Life-savers for me:
	      the list of keyboard shortcuts and enabling the "advanced
	      permissions" view.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Wed 2008/Jul/16</title>
      <link>http://www.gnome.org/~federico/news-2008-07.html#16</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-07.html#16</guid>
      <pubDate>Wed, 16 Jul 2008 14:04:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      Hot damn, <a
	      href="http://www.crisp.demon.co.uk/blog/index.html">someone
	      is porting DTrace to Linux</a> (<a
	      href="ftp://crisp.dynalias.com/pub/release/website/dtrace">source
	      code</a>).  Maybe <a
	      href="http://www.gnome.org/~federico/news-2007-07.html#05">Mortadelo</a> will be useful
	      in the future again.
	    </p>
	  </li>

	  <li>
	    <p>
	      Ah, Istanbul.
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-07-6200-waterpipe-tram.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-07-6200-waterpipe-tram.jpg" alt="Waterpipe and tram"
		  width="214" height="320" class="photo"></a>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-07-6197-tomb.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-07-6197-tomb.jpg" alt="Tomb"
		  width="320" height="214" class="photo"></a>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-07-6074-boats.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-07-6074-boats.jpg" alt="Boats and mosque"
		  width="320" height="214" class="photo"></a>
	    </p>
	  </li>

	  <li>
	    <p>
	      The <a
	      href="http://en.wikipedia.org/wiki/Sultan_Ahmed_Mosque">Blue
	      Mosque</a> introduced me to painted domes and arches.
	      Now I know how to paint and decorate our <a
	      href="http://www.gnome.org/~federico/news-2007-08.html#11">vaults</a> on the inside,
	      which are just plain whitewashed right now.
	    </p>

	    <p>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-07-5938-painted-vault.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-07-5938-painted-vault.jpg" alt="Painted vault"
		  width="320" height="214" class="photo"></a>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-07-6251-blue-mosque-arches.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-07-6251-blue-mosque-arches.jpg" alt="Painted domes and arches"
		  width="320" height="214" class="photo"></a>
	      <a href="http://www.gnome.org/~federico/news-photos/2008-07-6258-arches.jpg"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-07-6258-arches.jpg" alt="Painted arches and ceilings"
		  width="214" height="320" class="photo"></a>
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Thu 2008/Jul/03</title>
      <link>http://www.gnome.org/~federico/news-2008-07.html#03</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-07.html#03</guid>
      <pubDate>Thu, 03 Jul 2008 13:03:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      <a
	      href="http://pygi.wordpress.com/2008/07/01/broken-by-birth/">Mario&nbsp;Ðanić
	      has another interesting post about distributed version
	      control systems</a>.  He proposes that each developer
	      (or at least, every maintainer) could use the DVCS of
	      their choice, but then we could have a common
	      web/collaboration interface to all the DVCSs.
	    </p>
	  </li>

	  <li>
	    <p>
	      My current favorite way of developing against a stable release:
	    </p>

	    <pre class="code-example">
<strong>$ cat ~/bin/make-nautilus</strong>
#!/bin/sh
module_name=nautilus
diff_name=~/suse/11.0/src/SOURCES/nautilus-<a href="http://guadec.expectnation.com/guadec08/public/schedule/detail/69">document-centric</a>.diff
anchor_name=OPENSUSE_11_0_PATCHES
branch_name=document-centric
cd ~/src/$module_name
git diff $anchor_name..$branch_name &gt; $diff_name
cd ~/suse/11.0/src/SPECS
if rpmbuild -ba $module_name.spec
then
    cd ../RPMS/i586
    gnomesu -c "rpm -Uvh --force *$module_name*"
    notify-send -t 0 "$module_name is installed now"
else
    notify-send -t 0 "$module_name doesn't build!"
fi</pre>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Thu 2008/Jun/26</title>
      <link>http://www.gnome.org/~federico/news-2008-06.html#26</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-06.html#26</guid>
      <pubDate>Thu, 26 Jun 2008 10:55:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      <a
	      href="http://blogs.gnome.org/johncarr/2008/06/26/the-mirror-man-says/">John says</a>:
	    </p>

	    <p>
	      <em>The main reason</em> [why git-mirror.gnome.org
	      doesn't make git.gnome.org any easier] <em>is of course
	      the polluted logs (filled with git-svn rev id
	      metadata). I would resist any module having a Git repo
	      with such ickyness in its history.</em>
	    </p>

	    <p>
	      This is a non-issue.  <a
	      href="http://www.rubyonrails.org/">Ruby on Rails</a>
	      used to be hosted on Subversion, and then it switched to
	      Git.  To do the conversion, they simply used git-svn.
	      You can do
	      "<tt>git&nbsp;clone&nbsp;git://github.com/rails/rails.git</tt>",
	      then "<tt>git&nbsp;log</tt>" and search for "git-svn" in
	      the output in order to find the git-svn metadata.
	    </p>

	    <p>
	      You'll see this:
	    </p>

	    <pre class="code-example">
<strong>... git-based development goes here ...</strong>

commit 67022671bfa28d5675a30925a8d1e271c576f4d2
Author: David Heinemeier Hansson <david@loudthinking.com>
Date:   Thu Apr 10 22:09:13 2008 -0500

    Testing commits

commit ed99dda174da439a0947cdabea3babf027c672ac
Author: Rick Olson <technoweenie@gmail.com>
Date:   Thu Apr 10 18:06:05 2008 +0000

    Change validates_uniqueness_of :case_sensitive option default back to true (from [9160]).  Love your database columns, do
n't LOWER them.  [rick]
    
    git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9248 5ecf4fe2-1ee6-0310-87b1-e25e094e27de

<strong>... svn-based development went here ...</strong>
	    </pre>

	    <p>
	      So, in the commit logs, you have everything since
	      $beginning_of_time until $switchover_date with the
	      git-svn-id strings, and everything after that without
	      any such garbage, as would be normal for "plain" git
	      repositories.
	    </p>

	    <p>
	      Having that metadata in the log actually provides
	      valuable information.
	    </p>

	    <p>
	      If you have to do <a
	      href="http://mail.gnome.org/archives/desktop-devel-list/2007-September/msg00238.html">code
	      archaeology</a> (which Eric&nbsp;Sink calls "<a
	      href="http://www.ericsink.com/alm/traceability.html">traceability</a>"),
	      then the commit log will tell you <em>when</em> the
	      svn->git switchover occured.  Before that point, you
	      know that any branches are dead-ends and merges are
	      funny (svn didn't handle them).
	    </p>

	    <p>
	      You'll know that before the switchover point,
	      information about code attribution will not be 100%
	      clear, as you couldn't specify <tt>--author</tt> in an
	      svn commit (so you'll perhaps have to look at the actual
	      ChangeLog and hope that the committer was kind enough to
	      say "original patch by $author").
	    </p>

	    <p>
	      When you do a conversion between revision control
	      systems, you keep the old system around in read-only
	      mode for if anything goes wrong.  It's nice to know that
	      if we ever need to check something in the original SVN
	      repository, we'll have the SVN revision numbers from the
	      git-svn metadata.
	    </p>

	    <p>
	      Finally, the git-svn strings in commit logs will
	      disappear really quickly from your everyday view.  They
	      just appear further and furter back in time, and you
	      seldom look at those commits, anyway.
	    </p>
	  </li>

	  <li>
	    <p>
	      <a
	      href="http://pygi.wordpress.com/">Mario&nbsp;Ðanić</a>
	      has been investigating about <a
	      href="http://techbase.kde.org/index.php?title=Contribute/GitoriousKDE">adapting
	      Gitorious for KDE</a>.  He says he would be happy to
	      talk to people who would like to adapt Gitorious for
	      GNOME's needs as well.  Among other things, Mario is
	      working on the Summer of Code to write a <a
	      href="http://blogs.gnome.org/rodrigo/2008/04/22/summer-of-code-2008/">GNOME
	      client</a> for the <a
	      href="https://build.opensuse.org/">openSUSE build
	      service</a>.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Wed 2008/Jun/25</title>
      <link>http://www.gnome.org/~federico/news-2008-06.html#25</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-06.html#25</guid>
      <pubDate>Wed, 25 Jun 2008 12:37:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      <a
	      href="http://blogs.gnome.org/johncarr/2008/06/23/dvcs-mirror-updates/">Git-mirror.gnome.org
	      is AWESOME</a> and John&nbsp;Carr deserves large amounts
	      of beer for it.  The git-mirror has already saved my ass
	      twice this week ("Where is this patch in trunk?  Was it
	      backported to the stable branch?").  Now that we
	      actually have full Git repositories of GNOME, we could
	      easily move to using Git for everything.
	    </p>

	    <p>
	      Søren, Bryce, James, and myself had a pretty productive
	      time hacking on support for RANDR&nbsp;1.2 in
	      gnome-desktop, gnome-settings-daemon, and
	      gnome-control-center, all in Git repositories.
	    </p>

	    <p>
	      <a href="http://gitorious.org/">Gitorious</a> is like a
	      free version of <a href="http://github.com/">Github</a>:
	      you can create public Git repositories in a central
	      server, push to them, <em>and monitor who clones your
	      repositories</em>.  Later those people can inform you,
	      "I have some cool stuff in my repo; you should fetch
	      those changes from it".  Or you can say the same to
	      them, and Gitorious/Github will notify the people in
	      question.  This is far, far more productive than
	      monitoring an svn-commits-list or similar.
	    </p>

	    <p>
	      <a
	      href="http://gitorious.org/projects/gitorious">Gitorious
	      is hosted in a Gitorious installation itself</a>, so you
	      can of course "git clone" is source code.  It would be
	      reasonably easy to use this in GNOME's infrastructure,
	      and it would automatically let module maintainers
	      communicate better with contributors (and allow
	      contributors to play with experimental branches without
	      disrupting the maintainer's work).
	    </p>
	  </li>

	  <li>
	    <p>
	      ... Which reminds me, if you are tired of wasting your
	      time with Subversion, be sure to attend the BoF on <a
	      href="http://guadec.expectnation.com/guadec08/public/schedule/detail/81">distributed
	      version control systems</a> at GUADEC, where <a
	      href="http://mces.blogspot.com/">Behdad</a> and yours
	      truly will delight you with our widely-acclaimed
	      acrobatic act.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/May/20</title>
      <link>http://www.gnome.org/~federico/news-2008-05.html#20</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-05.html#20</guid>
      <pubDate>Tue, 20 May 2008 21:02:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      This year I am mentoring two students for the Summer of Code:
	    </p>

	    <p>
	      <a
	      href="http://asoare-gnome.blogspot.com/">Andrei&nbsp;Soare</a>
	      is working on <a
	      href="http://live.gnome.org/SummerOfCode2008/Ideas/MemoryFragmentation">measuring
	      memory fragmentation in the GNOME libraries</a>.  The
	      idea is to find the main culprits for fragmentation, and
	      see what we need to do to fix them (use more stack
	      allocations?  provide substring APIs that can take a
	      buffer and a length, instead of g_strdup()ing temporary
	      crap everywhere?  use flat buffers with pointers
	      into them for static structs rather than structs full of
	      pointers to individually-allocated sub-buffers?).  <a
	      href="http://github.com/asoare/bprof/tree/master">Andrei's
	      code is available as a Git repository</a>.  So far, he
	      has a modified version of of <a
	      href="http://svn.gnome.org/viewvc/bprof/">Stefan&nbsp;Kost's
	      <em>bprof</em></a>, suitable for use with <a
	      href="http://people.mozilla.com/~pavlov/memview.py">Stuart&nbsp;Parmenter's
	      memview</a>.  Andrei has found a few bugs where we do
	      things like using g_free() on a malloc()ed buffer, or
	      vice-versa.  I hope he starts <a href="http://asoare-gnome.blogspot.com/">blogging</a>
	      his first fragmentation plots soon.
	    </p>

	    <p>
	      <a
	      href="http://slusnys.wordpress.com/">Stanislav&nbsp;Slušný</a>
	      is working on <a
	      href="http://live.gnome.org/SummerOfCode2008/Ideas/EvolutionDataServerCalendar">profiling
	      the calendar in evolution-data-server</a>, in particular
	      the engine for live queries.  The query engine is very
	      simple; it just iterates through all the items in a
	      calendar and returns the items that match the query.  We
	      think that most queries are of the form, "give me all
	      the items in $date_range", so the query engine could use
	      a smart data structure like an interval tree to avoid
	      scanning all the items.  So far, Stanislav has added a
	      logging mechanism to evolution-data-server so that we
	      can see which queries get performed (by Evolution
	      itself, the panel's clock applet, and various things
	      across the desktop), and how long the queries remain
	      active.  This is <a
	      href="http://github.com/slusnys/evolution-data-server/tree/master">available
	      in a Git repository</a>.  Stanislav showed me a couple
	      of pretty sexy plots of query lifetimes; let's hope he
	      <a href="http://slusnys.wordpress.com/">blogs</a> about
	      them soon.
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Tue 2008/Apr/22</title>
      <link>http://www.gnome.org/~federico/news-2008-04.html#22</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-04.html#22</guid>
      <pubDate>Tue, 22 Apr 2008 10:50:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li>
	    <p>
	      And now for a gratuitous baby picture.
	    </p>

	    <p>
	      <a href="http://www.flickr.com/photos/federico_mena_quintero/"><img
		  src="http://www.gnome.org/~federico/news-photos/thumb/2008-04-4771-ladle.jpg" alt="Luciana in the ladle"
		  width="320" height="214" class="photo"></a>
	    </p>
	  </li>
	</ul>
]]></description>
    </item>

    <item>
      <title>Thu 2008/Apr/17</title>
      <link>http://www.gnome.org/~federico/news-2008-04.html#17</link>
      <guid isPermaLink="true">http://www.gnome.org/~federico/news-2008-04.html#17</guid>
      <pubDate>Thu, 17 Apr 2008 15:26:00 CDT</pubDate>
      <description><![CDATA[
	<ul>
	  <li id="multiscreen-hackfest-01">
	    <p>
	      <a href="http://www.gnome.org/~federico/news-2008-04.html#multiscreen-hackfest-01"><strong>Multiscreen hackfest for openSUSE</strong></a>
	    </p>

	    <p>
	      <img src="http://www.gnome.org/~federico/news-photos/2008-04-17-gnome-display-properties.png" alt="gnome-display-properties and RandR 1.2"
		width="558" height="533" class="photo"></a>
	    </p>

	    <p>
	      Here is a belated announcement for the <a href="http://en.opensuse.org/GNOME/Multiscreen">multiscreen
		hackfest</a> we are having at openSUSE this week and the
	      next.
	    </p>

	    <p>
	      Do you have multiple monitors connected to the same machine?  A
	      laptop and a projector or an external display?  Do you get a lot
	      of pain from trying to get it all to work?
	    </p>

	    <p>
	      If so, be sure to participate in the <a
		href="http://en.opensuse.org/GNOME/Multiscreen">multiscreen hackfest</a>!
	    </p>

	    <p>
	      Some work we are doing:
	    </p>

	    <ul>
	      <li>
		<p>
		  Integrate Søren&nbsp;Sandmann's, Bryce&nbsp;Harrington's, and
		  James&nbsp;Westby's <a href="http://live.gnome.org/RandR1.2">work for gnome-desktop,
		  gnome-settings-daemon, and gnome-control-center</a> so that the
		  Display capplet will let you configure your multiple monitors easily.
		</p>
	      </li>

	      <li>
		<p>
		  Pay attention to all the bugs in X drivers that we run into
		  while testing the configuration tools.  Document any quirks
		  that need to be set in xorg.conf by hand.
		</p>
	      </li>

	      <li>
		<p>
		  Fix all the <a href="https://bugzilla.novell.com/show_bug.cgi?id=374148">bugs in applications when used in
		    multiscreen</a> mode ("I clicked on a button but the dialog
		  appeared in the wrong monitor").
		</p>
	      </li>
	    </ul>
	  </li>
	</ul>
]]></description>
    </item>

  </channel>
</rss>
