<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for federico</title>
    <link>http://www.advogato.org/person/federico/</link>
    <description>Advogato blog for federico</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 12 Oct 2008 11:47:10 GMT</pubDate>
    <item>
      <pubDate>Thu, 2 Oct 2008 19:04:45 GMT</pubDate>
      <title>Thu 2008/Oct/02</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=127</link>
      <guid>http://www.gnome.org/~federico/news-2008-10.html#02</guid>
      <description>
	&lt;ul&gt;
	  &lt;li id="mortadelo-0.3"&gt;
	    &lt;p&gt;
	      &lt;a href="http://www.gnome.org/~federico/news-2008-10.html#mortadelo-0.3" &gt;&lt;strong&gt;Mortadelo 0.3 is released&lt;/strong&gt;&lt;/a&gt;
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      Source tarball:  &lt;a href="http://www.gnome.org/~federico/hacks/mortadelo/mortadelo-0.3.tar.gz" &gt;mortadelo-0.3.tar.gz&lt;/a&gt;
	    &lt;/p&gt;

	    &lt;p&gt;
	      Git repository: &lt;tt&gt;git clone git://gitorious.org/mortadelo/mainline.git mortadelo&lt;/tt&gt;
	    &lt;/p&gt;

	    &lt;p&gt;
	      openSUSE 11.0 one-click install:  &lt;a
		href="http://software.opensuse.org/ymp/home:federico-mena/openSUSE_11.0/mortadelo.ymp"&gt;&lt;img
		src="http://www.gnome.org/~federico/misc/Oneclick.png" alt="openSUSE one-click install" width="162" height="46"&gt;&lt;/a&gt;
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 23 Sep 2008 19:06:56 GMT</pubDate>
      <title>Tue 2008/Sep/23</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=126</link>
      <guid>http://www.gnome.org/~federico/news-2008-09.html#23</guid>
      <description>
	&lt;ul&gt;
	  &lt;li&gt;
	    &lt;p&gt;
	      The &lt;a
	      href="http://www.survs.com/survey?id=M3PIVU72&amp;channel=2WXE4BVTW8"&gt;Git
	      user's survey 2008&lt;/a&gt; is up!  Be sure to participate to
	      make Git better.  I found question&amp;nbsp;27 very
	      interesting, with a bunch of commands that I never knew
	      about but that could be very useful to me.
	    &lt;/p&gt;
	  &lt;/li&gt;

	  &lt;li&gt;
	    &lt;p&gt;
	      &lt;strong&gt;Everyone who has a laptop:&lt;/strong&gt; 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
	      &lt;tt&gt;XF86Display&lt;/tt&gt;&amp;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.
	    &lt;/p&gt;

	    &lt;p&gt;
	      &lt;a
	      href="http://en.opensuse.org/Laptop_hotkeys_for_RANDR"&gt;We
	      are building a list of laptops&lt;/a&gt; to see how they
	      expose the "toggle displays" and "rotate the screen"
	      hotkeys (for tablets).  If you have a laptop, &lt;a
	      href="http://en.opensuse.org/Laptop_hotkeys_for_RANDR"&gt;please
	      add it to the list&lt;/a&gt; so that we can add support for
	      it.  Thanks!
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 16 Sep 2008 21:09:53 GMT</pubDate>
      <title>Tue 2008/Sep/16</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=125</link>
      <guid>http://www.gnome.org/~federico/news-2008-09.html#16</guid>
      <description>
	&lt;ul&gt;
	  &lt;li id="usability-of-planets"&gt;
	    &lt;p&gt;
	      &lt;strong&gt;&lt;a href="http://www.gnome.org/~federico/news-2008-09.html#usability-of-planets" &gt;Usability of planets&lt;/a&gt;&lt;/strong&gt;
	    &lt;/p&gt;

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

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

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

	    &lt;table class="small-text"&gt;
	      &lt;tbody&gt;
		&lt;tr class="dark-background"&gt;
		  &lt;th&gt;Planet GNOME&lt;/th&gt;
		  &lt;th&gt;Planet SUSE&lt;/th&gt;
		&lt;/tr&gt;

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

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

	    &lt;p&gt;
	      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 &lt;em&gt;Annoying&amp;nbsp;Person&lt;/em&gt;
	      there and uncheck him.
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      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 &lt;em&gt;Annoying&amp;nbsp;Person&lt;/em&gt;.
	      Step 6:  uncheck his checkbox.
	    &lt;/p&gt;

	    &lt;p&gt;
	      That's six steps just to get rid of stupid posts.
	    &lt;/p&gt;

	    &lt;p&gt;
	      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.
	    &lt;/p&gt;

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

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

	    &lt;p&gt;
	      It is clear that Planet&amp;nbsp;SUSE is much more usable
	      than Planet&amp;nbsp;GNOME in terms of "how do I hide the
	      posts by &lt;em&gt;Annoying&amp;nbsp;Person&lt;/em&gt;".  You don't have
	      to &lt;em&gt;know&lt;/em&gt; 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
	      &lt;em&gt;right there by the annoying post&lt;/em&gt;, and you are
	      done.
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 8 Sep 2008 21:06:14 GMT</pubDate>
      <title>Mon 2008/Sep/08</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=124</link>
      <guid>http://www.gnome.org/~federico/news-2008-09.html#08</guid>
      <description>
	&lt;ul&gt;
	  &lt;li id="green-beans"&gt;
	    &lt;p&gt;
	      &lt;strong&gt;&lt;a href="http://www.gnome.org/~federico/news-2008-09.html#green-beans" &gt;Today's harvest, green beans&lt;/a&gt;&lt;/strong&gt;
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      &lt;a href="http://www.gnome.org/~federico/news-photos/2008-08-6719-green-beans.jpg" &gt;&lt;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"&gt;&lt;/a&gt;
	    &lt;/p&gt;

	    &lt;p&gt;
	      I don't know if that kind of yield is low or high, but
	      it definitely feels good to get &lt;em&gt;something
	      edible&lt;/em&gt; out of a little patch in the &lt;a
	      href="http://www.guerrillagardening.org/"&gt;sidewalk&lt;/a&gt;.
	      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.
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      Our gardening book is &lt;em&gt;&lt;a
		href="http://books.google.com/books?id=01xFyEdpX-MC&amp;pg=PA243&amp;lpg=PA243&amp;dq=ecopol+mexico&amp;source=web&amp;ots=Oo2cis0oz9&amp;sig=GFxerjwh7IEAWRimWkDutFiqYL0&amp;hl=en&amp;sa=X&amp;oi=book_result&amp;resnum=9&amp;ct=result#PPA42,M1"&gt;How
		to grow more vegetables&lt;/a&gt;&lt;/em&gt;, by John&amp;nbsp;Jeavons
		(acutally, a slightly newer edition than the one
		presented there).
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 26 Aug 2008 18:08:36 GMT</pubDate>
      <title>Tue 2008/Aug/26</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=123</link>
      <guid>http://www.gnome.org/~federico/news-2008-08.html#26</guid>
      <description>
	&lt;ul&gt;
	  &lt;li id="nautilus-predefined-desktop-items"&gt;
	    &lt;p&gt;
	      &lt;a href="http://www.gnome.org/~federico/news-2008-08.html#nautilus-predefined-desktop-items" &gt;&lt;strong&gt;Predefined desktop items for Nautilus&lt;/strong&gt;&lt;/a&gt;
	    &lt;/p&gt;

	    &lt;p&gt;
	      Back in the Summer of Code 2007, &lt;a
	      href="http://live.gnome.org/SummerOfCode2007/Reports/Sayamindu"&gt;Sayamindu
	      Dasgupta worked on adding support for predefined desktop
	      items to Nautilus&lt;/a&gt;.  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.
	    &lt;/p&gt;

	    &lt;p&gt;
	      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,
	      &lt;tt&gt;/apps/nautilus/desktop/predefined_items_dir&lt;/tt&gt;,
	      and point it to a directory which holds
	      &lt;tt&gt;.desktop&lt;/tt&gt; 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
	      &lt;tt&gt;/var/nautilus/global-desktop-items&lt;/tt&gt;.
	    &lt;/p&gt;

	    &lt;p&gt;
	      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&amp;nbsp;Intranet" or "Link to
	      Helpdesk".  Distros could use normal items for their
	      marketing materials; the perenially hacky
	      "Welcome&amp;nbsp;to&amp;nbsp;FooLinux" icons that currently are
	      hard to do properly.
	    &lt;/p&gt;

	    &lt;p&gt;
	      The problem I'm having is how to make non-mandatory
	      items work.  You want this behavior:
	    &lt;/p&gt;

	    &lt;ol&gt;
	      &lt;li&gt;
		The sysadmin defines a non-mandatory item.
	      &lt;/li&gt;

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

	      &lt;li&gt;
		The user decides that he wants the item back after
		all.  &lt;em&gt;How does he restore it?&lt;/em&gt;
	      &lt;/li&gt;

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

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

	    &lt;p&gt;
	      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...)
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      Does this make sense?  Am I overlooking something?
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Thu, 21 Aug 2008 17:04:56 GMT</pubDate>
      <title>Thu 2008/Aug/21</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=122</link>
      <guid>http://www.gnome.org/~federico/news-2008-08.html#21</guid>
      <description>
	&lt;ul&gt;
	  &lt;li&gt;
	    &lt;p&gt;
	      People who use &lt;a
	      href="http://blogs.gnome.org/johncarr/2008/06/21/git-mirrorgnomeorg/"&gt;git-mirror.gnome.org&lt;/a&gt;
	      may have noticed that SVN tags don't get fetched
	      automatically when they get their daily fix of updates
	      with "&lt;tt&gt;git&amp;nbsp;fetch&lt;/tt&gt;" or "&lt;tt&gt;git&amp;nbsp;pull&lt;/tt&gt;"
	      (that is, you run "&lt;tt&gt;git&amp;nbsp;tag&lt;/tt&gt;" and it doesn't
	      list new tags that appeared since you did your original
	      clone).  Within your repository, take a look at
	      &lt;tt&gt;.git/config&lt;/tt&gt;:
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      The first "fetch" line is already in your
	      &lt;tt&gt;.git/config&lt;/tt&gt; 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).
	    &lt;/p&gt;

	    &lt;p&gt;
	      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".
	    &lt;/p&gt;

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

	  &lt;li&gt;
	    &lt;p&gt;
	      &lt;a
	      href="http://dodgysoftware.net/users/mike/wp/"&gt;Mike&amp;nbsp;Wolf&lt;/a&gt;
	      has been working madly on &lt;a
	      href="http://www.gnome.org/~federico/news-2008-07.html#rpm2git"&gt;rpm2git&lt;/a&gt;
	      to make it easier to use.  He has made some very cool changes:
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      You don't need to have all the &lt;tt&gt;BuildRequires&lt;/tt&gt; from the
	      specfile, either.
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      All of these changes are now merged in the &lt;a
	      href="http://gitorious.org/projects/rpm2git/repos/mainline"&gt;rpm2git
	      repository&lt;/a&gt;.
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Thu, 14 Aug 2008 20:04:44 GMT</pubDate>
      <title>Thu 2008/Aug/14</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=121</link>
      <guid>http://www.gnome.org/~federico/news-2008-08.html#14</guid>
      <description>
	&lt;ul&gt;
	  &lt;li&gt;
	    &lt;p&gt;
	      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.
	    &lt;/p&gt;

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

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

	    &lt;p&gt;
	      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.
	    &lt;/p&gt;

	    &lt;p&gt;
	      I implemented pretty much the same thing for GNOME, with
	      the addition of color-coding.  Hello, sexy:
	    &lt;/p&gt;

	    &lt;p&gt;
	      &lt;a href="http://www.gnome.org/~federico/misc/tray-monitor-labels.png" &gt;&lt;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"&gt;&lt;/a&gt;
	      &lt;a href="http://www.gnome.org/~federico/misc/monitor-labels.png" &gt;&lt;img
		  src="http://www.gnome.org/~federico/misc/monitor-labels-thumb.png" alt="Labels for the display capplet"
		  width="320" height="200" class="photo"&gt;&lt;/a&gt;
	    &lt;/p&gt;

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

	    &lt;ul&gt;
	      &lt;li&gt;&lt;a href="http://gitorious.org/projects/gnome-desktop/repos/mainline" &gt;gnome-desktop&lt;/a&gt;&lt;/li&gt;
	      &lt;li&gt;&lt;a href="http://gitorious.org/projects/gnome-settings-daemon/repos/mainline" &gt;gnome-settings-daemon&lt;/a&gt;&lt;/li&gt;
	      &lt;li&gt;&lt;a href="http://gitorious.org/projects/gnome-control-center/repos/mainline" &gt;gnome-control-center&lt;/a&gt;&lt;/li&gt;
	    &lt;/ul&gt;

	    &lt;p&gt;
	      This is just awaiting approval from the the release team
	      to be committed to SVN :)
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 12 Aug 2008 21:05:06 GMT</pubDate>
      <title>Tue 2008/Aug/12</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=120</link>
      <guid>http://www.gnome.org/~federico/news-2008-08.html#12</guid>
      <description>
	&lt;ul&gt;
	  &lt;li id="git-rebase-interactive"&gt;
	    &lt;p&gt;
	      &lt;strong&gt;&lt;a
	      href="http://www.gnome.org/~federico/news-2008-08.html#git-rebase-interactive"&gt;Why I want to have the children of &lt;tt&gt;git rebase --interactive&lt;/tt&gt;&lt;/a&gt;&lt;/strong&gt;
	    &lt;/p&gt;

	    &lt;p&gt;
	      Sometimes you are hacking madly and committing often.
	      Your commit log looks like this:
	    &lt;/p&gt;

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

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

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

	    &lt;p&gt;
	      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.
	    &lt;/p&gt;

	    &lt;p&gt;
	      &lt;tt&gt;git rebase --interactive&lt;/tt&gt; allows you to pretend
	      you are better than you really are.  This is a good thing.
	    &lt;/p&gt;

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

	    &lt;p&gt;
	      Git will drop you in an editor where you edit this:
	    &lt;/p&gt;

	    &lt;pre class="code-example"&gt;
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&lt;/pre&gt;

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

	    &lt;pre class="code-example"&gt;
pick ab365cf Add some fields for a popup menu
squash 289cf1a Add missing include gtkmenu.h
# Oops, forgot to "#include &amp;lt;gtk/gtkmenu.h&amp;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&lt;/pre&gt;

	    &lt;p&gt;
	      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.
	    &lt;/p&gt;

	    &lt;p&gt;
	      The important thing here is to &lt;em&gt;do one commit per
	      compilation error&lt;/em&gt;.  Then it's very easy to reorder
	      your commits, where you squash each fix with the
	      corresponding "real"&amp;nbsp;commit.
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 8 Aug 2008 16:08:37 GMT</pubDate>
      <title>Fri 2008/Aug/08</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=119</link>
      <guid>http://www.gnome.org/~federico/news-2008-08.html#08</guid>
      <description>
	&lt;ul&gt;
	  &lt;li&gt;
	    &lt;p&gt;
	      Two-stone handicap for me on a 9x9 go board, and the &lt;a
	      href="http://hpjansson.org/blag/2008/08/08/tick-tock/"&gt;birthdayful
	      HPJ&lt;/a&gt; still manages to kick my ass by twenty-something
	      points.
	    &lt;/p&gt;

	    &lt;p&gt;
	      They must have put something in the cake, as I had two
	      big slices while HPJ had a single tiny one.
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Thu, 7 Aug 2008 15:07:08 GMT</pubDate>
      <title>Thu 2008/Aug/07</title>
      <link>http://www.advogato.org/person/federico/diary.html?start=118</link>
      <guid>http://www.gnome.org/~federico/news-2008-08.html#07</guid>
      <description>
	&lt;ul&gt;
	  &lt;li id="rpm2git-usage"&gt;
	    &lt;p&gt;
	      &lt;strong&gt;&lt;a href="http://www.gnome.org/~federico/news-2008-08.html#rpm2git-usage" &gt;How to use rpm2git&lt;/a&gt;&lt;/strong&gt;
	    &lt;/p&gt;

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

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

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

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

	    &lt;p&gt;
	      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?
	    &lt;/p&gt;

	    &lt;p&gt;
	      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.
	    &lt;/p&gt;
	  &lt;/li&gt;
	&lt;/ul&gt;
</description>
    </item>
  </channel>
</rss>
