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

	<title>GIMP Layers</title>
	<link rel="self" href="http://layers.gimp.org/atom.xml"/>
	<link href="http://layers.gimp.org"/>
	<id>http://layers.gimp.org/atom.xml</id>
	<updated>2009-05-15T06:00:19+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/1.0 +http://www.planetplanet.org</generator>

	<entry>
		<title type="html">Akkana Peck: Graphical Python Programming With PyGTK</title>
		<link href="http://shallowsky.com/blog/writing/python-gtk-graphics-1.html"/>
		<id>http://shallowsky.com/blog/writing/python-gtk-graphics-1.html</id>
		<updated>2009-05-15T02:01:06+00:00</updated>
		<content type="html">This week's Linux Planet article is another one on Python and
graphical toolkits, but this time it's a little more advanced:
&lt;a href=&quot;http://www.linuxplanet.com/linuxplanet/tutorials/6750/&quot;&gt;Graphical
Python Programming With PyGTK&lt;/a&gt;.
&lt;p&gt;
This one started out as a fun and whizzy screensaver sort of program
that draws lots of pretty colors -- but I couldn't quite fit it all
into one article, so that will have to wait for the sequel two weeks
from now.&lt;/p&gt;</content>
		<author>
			<name>Akkana Peck</name>
			<uri>http://shallowsky.com/blog</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Akkana Peck: Upgrading without risk</title>
		<link href="http://shallowsky.com/blog/linux/install/upgrading-without-risk.html"/>
		<id>http://shallowsky.com/blog/linux/install/upgrading-without-risk.html</id>
		<updated>2009-05-13T17:02:06+00:00</updated>
		<content type="html">Someone asked on a mailing list whether to upgrade to a new OS release
when her current install was working so well. I thought I should write
up how I back up my old systems before attempting a risky upgrade
or new install.
&lt;p&gt;
On my disks, I make several relatively small partitions, maybe
15G or so (pause to laugh about what I would have thought ten or
even five years ago if someone told me I'd be referring to 15G
as &quot;small&quot;), one small shared /boot partition, a swap partition,
and use the rest of the disk for /home or other shared data.
&lt;p&gt;
Now you can install a new release, like 9.04, onto a new partition 
without risking your existing install.

&lt;p&gt;
If you prefer upgrading rather than running the installer, you can
do that too.  I needed a jaunty (9.04) install to test
whether a bug was fixed. But my intrepid (8.10) is working fine and
I know there are some issues with jaunty, so I didn't want to risk
the working install. So from Intrepid, I copied the whole root
partition over to one of my spare root partitions, sda5:

&lt;pre&gt;
mkfs.ext3 /dev/sda5
mkdir /jaunty
mount /dev/sda5 /jaunty
cp -ax / /jaunty
&lt;/pre&gt;
(that last step takes quite a while: you're copying the whole system.)

&lt;p&gt;
Now there are a couple of things you have to do to make that /jaunty
partition work as a bootable install:

&lt;p&gt;
1. /dev on an ubuntu system isn't a real file system, but something
magically created by the kernel and udev. But to boot, you need some
basic stuff there. When you're up and running, that's stored in
/dev/.static, so you can copy it like this:
cp -ax /dev/.static/dev/ /jaunty/dev/

&lt;p&gt;
2. /etc/fstab on the system you just created points to the wrong 
root partition, so you have to fix that. As root, edit /etc/fstab
in your favorite editor (e.g. sudo vim /etc/fstab or whatever)
and find the line for the root filesystem -- the one where the
second entry on the line is /. It'll look something like this:
&lt;pre&gt;
# /dev/sda1
UUID=f7djaac8-fd44-672b-3432-5afd759bc561  /  ext3  relatime,errors=remount-ro  0 1
&lt;/pre&gt;

&lt;p&gt;
The easy fix is to change that to point to your new disk partition:

&lt;pre&gt;
# jaunty is now on /dev/sda5
/dev/sda5  /  ext3  relatime,errors=remount-ro  0 1
&lt;/pre&gt;

&lt;p&gt;
If you want to do it the &quot;right&quot;, ubuntu-approved way, with UUIDs,
you can get the UUID of your disk this way:

&lt;pre&gt;
ls -l /dev/disk/by-uuid/ | grep sda5
&lt;/pre&gt;

&lt;p&gt;
Take the UUID (that's the big long hex number with the dashes) and
put it after the UUID= in the original fstab line.

&lt;p&gt;
While you're editing /etc/fstab, be sure to look for any lines that
might mount /dev/sda5 as something other than root and delete them
or comment them out.

&lt;p&gt;
Now you should have a partition that you can boot into and upgrade.
Now you just need to tell grub about it.  As root, edit 
/boot/grub/menu.lst and find the line that's booting your current
kernel. If you haven't changed the file yourself, that's probably
right after a line that says:

&lt;pre&gt;
## ## End Default Options ##
&lt;/pre&gt;

It will look something like this:
&lt;pre&gt;
title           Ubuntu 8.10, kernel 2.6.27-11-generic
uuid            f7djaac8-fd44-672b-3432-5afd759bc561
kernel          /vmlinuz-2.6.27-11-generic root=UUID=f7djaac8-fd44-672b-3432-5afd759bc561 ro
initrd          /initrd.img-2.6.27-11-generic
&lt;/pre&gt;

&lt;p&gt;
Make a copy of this whole stanza, so you have two identical copies,
and edit one of them. (If you edit the first of them, the new OS
it will be the default when you boot; if you're not that confident,
edit the second copy.) Change the two UUIDs to point to your new disk
partition (the same UUID you just put into /etc/fstab) and change
the Title to say 9.04 or Jaunty or My Copy or whatever you want the
title to be (this is the title that shows up in the grub menu when
you first boot the machine).

&lt;p&gt;
Now you should be able to boot into your new partition.
Most things should basically work -- certainly enough to start
a &lt;code&gt;do-release-upgrade&lt;/code&gt; without risking your original
install.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Akkana Peck</name>
			<uri>http://shallowsky.com/blog</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Akkana Peck: Making desktop recordings with recordmydesktop</title>
		<link href="http://shallowsky.com/blog/linux/recordmydesktop.html"/>
		<id>http://shallowsky.com/blog/linux/recordmydesktop.html</id>
		<updated>2009-05-12T17:31:09+00:00</updated>
		<content type="html">Apress asked me to make some short screencast videos illustrating
GIMP tips, to help advertise the second edition of
&lt;a href=&quot;http://gimpbook.com&quot;&gt;Beginning GIMP&lt;/a&gt;.
&lt;p&gt;
I've never made videos (except for putting a digital camera in
video mode) so it's been an interesting learning experience, and
I was surprised at how easy it was in the end.
&lt;p&gt;
My Apress contact suggested XVidCap and Wink as possible options.
XVidCap looked quite interesting but didn't seem to work in its Ubuntu
incarnation. Wink worked very nicely and produced flash videos that
worked in a browser with no extra fiddling ... but unfortunately
when I tried plugging in a microphone, Wink didn't seem able to read it.
And it seemed to slow down all my cursor movements, rather than
following my actions in real-time.
&lt;p&gt;
But while working with those two, I stumbled across recordmydesktop.
It records mouse movements in real-time and it handles the microphone too.
It has several front ends available (such as gtk-recordmydesktop) but
I found the basic command-line version easiest to use.
&lt;p&gt;
To make a video in the upper left 1024x768 section of my screen:
&lt;br /&gt;
&lt;code&gt;recordmydesktop -width 1024 -height 768 -o layermask.ogv&lt;/code&gt;
&lt;p&gt;
Since I need to make sure all the action happens within that
rectangle, I made a special desktop background that has a nice, not
too distracting image in just that 1024x768 rectangle.
Any other windows I'm using in that desktop
(such the terminal window I'm using to control recordmydesktop)
stay outside that area.
&lt;p&gt;
recordmydesktop starts recording right away. I run through my tutorial
steps, narrating as I go, and when I'm done, I move the mouse back to
the terminal window where I started the recording and hit Ctrl-C, and
recordmydesktop stops recording and encodes the video (which takes a while).
&lt;p&gt;
It saves to ogg format, .ogv. Of course, most web surfers can't view
that, and youtube doesn't accept it either (at least, ogg isn't on its
list of allowed formats) so I needed to translate it into something
else. Youtube suggests mpeg4, so that's what I used. Luckily, I already had
a mencoder incantation that some helpful person gave me a long time ago:
&lt;br /&gt;
&lt;code&gt;mencoder movie.ogv -oac pcm -ovc lavc -lavcopts vcodec=mpeg4:vqmin=2:vlelim=-4:vcelim=9:lumi_mask=0.05:dark_mask=0.01:vhq -o movie.mp4&lt;/code&gt;

&lt;p&gt;
Only one problem: the audio came out very faint and difficult to hear.
I'm sure that's a problem with the microphone I'm using, a cheap OEM
model that came with some computer or other many years ago -- it's
been sitting in a box since I normally have no use for a microphone.
But it turns out mencoder can amplify the volume, with &lt;i&gt;-af volume=X&lt;/i&gt;
where X is decibels. A little experimentation with &lt;i&gt;mplayer -af volume=X&lt;/i&gt;
on the original ogg suggested a value around 15 or 20, so the final
encoding was:
&lt;br /&gt;
&lt;code&gt;mencoder movie.ogv -af volume=19 -oac pcm -ovc lavc -lavcopts vcodec=mpeg4:vqmin=2:vlelim=-4:vcelim=9:lumi_mask=0.05:dark_mask=0.01:vhq -o movie.mp4&lt;/code&gt;

&lt;p&gt;
But Apress tells me that their Windows boxen had trouble with the mp4
and they had to run it through something called &quot;Handbrake&quot;, so maybe
some other format would have worked better. Here are two other mencoder
incantations I know (without the sound amplification):&lt;br /&gt;
&lt;code&gt;mencoder movie.ogv -oac pcm -ovc lavc -o movie.divx&lt;/code&gt; (divx -- Windows sometimes has trouble with this too)&lt;br /&gt;
&lt;code&gt;mencoder movie.ogv -oac pcm -ovc lavc -lavcopts vcodec=mpeg1video -o movie.mpeg&lt;/code&gt; (mpeg1)

&lt;p&gt;
It's not great cinema, but the end result is up on the Apress page for the
&lt;a href=&quot;http://apress.com/book/view/1430210702&quot;&gt;GIMP book&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Akkana Peck</name>
			<uri>http://shallowsky.com/blog</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Dave Neary: Run a marathon… check!</title>
		<link href="http://blogs.gnome.org/bolsh/2009/05/11/run-a-marathon-check/"/>
		<id>http://blogs.gnome.org/bolsh/?p=912</id>
		<updated>2009-05-11T14:02:33+00:00</updated>
		<content type="html">&lt;p&gt;Yesterday, on my second serious attempt (&lt;a href=&quot;http://blogs.gnome.org/bolsh/2007/03/27/running-is-bad-for-your-health/&quot;&gt;previously I injured myself&lt;/a&gt; 4 weeks before the race) I finally ran a marathon in Geneva, Switzerland.&lt;/p&gt;
&lt;p&gt;Since getting injured in 2007, I&amp;#8217;ve taken up running fairly seriously, joined a club, and this time round I was fairly conscientious about my training, getting in most of my long runs, speed work &amp;amp; pace runs as planned. I thought I was prepared, but I don&amp;#8217;t think anything can prepare you for actually running 42.195 kilometers at race pace. Athletes will tell you that the marathon is one of the hardest events out there because it&amp;#8217;s not just a long-distance race, it&amp;#8217;s also a race where you have to run fast all the time. But until you&amp;#8217;ve done it, it&amp;#8217;s hard to appreciate what they mean.&lt;/p&gt;
&lt;p&gt;This year, the club chose the Geneva marathon as a club outing, and around 40 club members signed up for either the marathon or the half-marathon on the banks of Lac Leman, and I couldn&amp;#8217;t resist signing up for the marathon.&lt;/p&gt;
&lt;p&gt;I wasn&amp;#8217;t in perfect health, since I&amp;#8217;ve been feeling some twinges in my right hip &amp;amp; hamstring for the past couple of weeks, but during taper before the race I&amp;#8217;ve been taking it very easy, and I felt pretty good the day before. With the club we met up on Saturday 9th after lunch, and drove to Geneva to get our race numbers, and then to the hotel in Annemasse for a &amp;#8220;special marathon runner&amp;#8217;s&amp;#8221; dinner (which had a little too much lardons, vinaigrette &amp;amp; buttery sauce to be called a true marathon runner meal), last minute preparations for the big day, and a good night&amp;#8217;s rest.&lt;/p&gt;
&lt;p&gt;Up early, light breakfast, back into Geneva for the race. Arrived at 7am, lots of marathon runners around, and the excitement levels are starting to climb. After the usual formalities (&lt;a href=&quot;http://www.associatedcontent.com/article/1576441/how_runners_can_prevent_thigh_chafing.html&quot;&gt;vaseline under armpits and between thighs&lt;/a&gt;, &lt;a href=&quot;http://www.ehow.com/how_2152756_bleeding-during-long-run-marathon.html&quot;&gt;taped nipples&lt;/a&gt;, &lt;a href=&quot;http://walking.about.com/cs/med/a/sensstools.htm&quot;&gt;visit to toilet&lt;/a&gt;) we made our way to the starting line for the 8am start.&lt;/p&gt;
&lt;p&gt;Nice pace from the start - a little fast, even, but by the 3rd kilometer I&amp;#8217;d settled into my race pace, at around 4&amp;#8242;40 per kilometer (aiming for 3h20 with a couple of minutes margin). Walked across every water station to get two or three good mouthfuls of water and banana without upsetting my tummy. Around kilometer 7, I started to feel a little twinge in the hamstring and piriformis/pyramidal muscle, and I felt like I might be in for a long day. It didn&amp;#8217;t start affecting me for a while, but by kilometer 16, I was starting to feel muscles seize up in my hip in reaction to the pain.&lt;/p&gt;
&lt;p&gt;First half completed on schedule, 1h38&amp;#8242;55, and I was feeling pretty good. Not long afterwards, every step was getting painful. Around kilometer 26, I decided (or was my body deciding for me?) to ease off on the pace a little and I started running kilometers at 4&amp;#8242;50 to 5&amp;#8242;.&lt;/p&gt;
&lt;p&gt;They talk about the wall, but you don&amp;#8217;t know what they mean until you hit it. Around kilometer 32, I found out. At first, I welcomed the feeling of heavy legs - it drowned out the pain from my hip, and here was a familiar sensation I thought I could manage. But as the kilometers wore on, and my pace dropped, I was having a harder and harder time putting one foot in front of the other. Starting again after walking across a water stop at kilometers 33 and 38 was hard -  it was pure will that got me going again. My pace was slipping - from 5&amp;#8242; to 5&amp;#8242;30 - one kilometer I ran in 6&amp;#8242;. It looked like I was barely going to finish in 3&amp;#8242;30, if I made it to the end at all.&lt;/p&gt;
&lt;p&gt;Then a club-mate who was on a slower pace caught up to me, tapped me on the shoulder, and said &amp;#8220;Hang on to me, we&amp;#8217;ll finish together&amp;#8221; (&amp;#8221;accroche toi, on termine ensemble&amp;#8221;). A life-saver. Manna from heaven. I picked up speed to match him - if only for 100m. After that, I said to myself, I&amp;#8217;ll try to keep this up for another kilometer. When we passed the marker for 40k, I said I&amp;#8217;d make it to 41 with him, and let him off for the last straight. And when we got to the final straight, I summoned up everything I had left to go for the last 1200m.&lt;/p&gt;
&lt;p&gt;In the end, I covered those last 3200m in an average of 4&amp;#8242;35 per kilometer - which just went to teach me that those 5km when I was feeling sorry for myself were more mental blockage than anything else, and I was able to overcome my body screaming out at me to stop.&lt;/p&gt;
&lt;p&gt;The record will show that I ran 3h26&amp;#8242;33 for my first marathon, but that doesn&amp;#8217;t come close to telling the story.&lt;/p&gt;
&lt;p&gt;Afterwards, I got a massage, drank a lot of water, ate some banana, and, feeling emptied &amp;amp; drained, a wave of emotion overcame me when I realised what I&amp;#8217;d done.&lt;/p&gt;
&lt;p&gt;Congratulations to the other first-time marathon runners who ran with me yesterday, and thank you Paco, I&amp;#8217;ll never forget that you got me to the end of my first marathon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The marathon organisers had a video camera recording everyone&amp;#8217;s arrival during the race. I discovered this afterwards, otherwise I might have been slightly more restrained after crossing the line.&lt;/p&gt;
&lt;p&gt;You can see me arriving &lt;a href=&quot;http://www.migros-finisherclip.ch/en/previews/index/39/414/DSL/links&quot;&gt;here&lt;/a&gt;, and Paco, who arrived a few seconds after me, &lt;a href=&quot;http://www.migros-finisherclip.ch/en/previews/index/39/262/DSL/links&quot;&gt;here&lt;/a&gt; - for the extended sound-track.&lt;/p&gt;</content>
		<author>
			<name>Dave Neary</name>
			<uri>http://blogs.gnome.org/bolsh</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Carol Spears: Google Summer of Code</title>
		<link href="http://carol.gimp.org/bikeshed/business/GSOC.html"/>
		<id>http://carol.gimp.org/bikeshed/business/GSOC</id>
		<updated>2009-05-10T15:16:00+00:00</updated>
		<content type="html">&lt;p&gt;
    I tried one software that was produced via the Google Summer of Code machine.  It did not work.
    How many of those softwares actually do what they are supposed to?
  &lt;/p&gt;</content>
		<author>
			<name>Carol Spears</name>
			<uri>http://carol.gimp.org/bikeshed</uri>
		</author>
	</entry>

</feed>
