<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://planet.gllug.org.uk">
	<title>Planet GLLUG</title>
	<link>http://planet.gllug.org.uk</link>
	<description>Planet GLLUG - http://planet.gllug.org.uk</description>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="tag:blog.dave.org.uk,2010://1.1694" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2086" />
			<rdf:li rdf:resource="http://blog.hinterlands.org/?p=232" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2083" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2074" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2071" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2065" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2063" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2050" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2042" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-7305662280706773984.post-3350553347337058838" />
			<rdf:li rdf:resource="http://www.karan.org/blog/xmlsrv/315@http://www.karan.org/blog/" />
			<rdf:li rdf:resource="tag:blog.unixdaemon.net,2010:/tools/adventures-in-cronologger" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2039" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2035" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-7305662280706773984.post-5991303057497360098" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2031" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2027" />
			<rdf:li rdf:resource="http://blog.roseman.org.uk/2010/08/14/getting-related-item-aggregate/" />
			<rdf:li rdf:resource="http://blog.hinterlands.org/?p=226" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2020" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2010" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2005" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=2002" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=1998" />
			<rdf:li rdf:resource="http://willj.net/?p=738" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=1993" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=1986" />
			<rdf:li rdf:resource="tag:blog.dave.org.uk,2010://1.1693" />
			<rdf:li rdf:resource="http://blog.hinterlands.org/?p=217" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="tag:blog.dave.org.uk,2010://1.1694">
	<title>davblog - Dave Cross: Been Away</title>
	<link>http://blog.dave.org.uk/2010/09/been-away.html</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/davorg/4949354824/&quot; title=&quot;Colosseum, Rome by Dave Cross, on Flickr&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4141/4949354824_ae211711d3_m.jpg&quot; alt=&quot;Colosseum, Rome&quot; height=&quot;240&quot; width=&quot;159&quot; align=&quot;left&quot; /&gt;&lt;/a&gt;It's over a month since I've posted anything here. Sorry about that. For the first half of August I was in Italy. The first week, I was speaking at &lt;a href=&quot;http://lanyrd.com/2010/yapceu/&quot;&gt;a conference in Pisa&lt;/a&gt; and after that we spent a few days in Rome and Venice. I took more than a few photos and they're slowly making their way onto &lt;a href=&quot;http://www.flickr.com/photos/davorg/collections/72157624733930327/&quot;&gt;my Flickr page&lt;/a&gt;. They should all be up there in a week or so (although, having said that, I still haven't sorted out the photos from last year's holiday in the Baltic).&lt;/p&gt;
&lt;p&gt;Rather pleased with the way this photo of the Colosseum came out. But given a half-decent camera, an ancient monument and the Italian flair for lighting there probably wasn't much that could go wrong.&lt;/p&gt;
&lt;p&gt;Not quite sure what happened to the rest of August though...&lt;/p&gt;</content:encoded>
	<dc:date>2010-09-02T17:46:26+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2086">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/09/01/best-unicode-spinner-and-progress-bar/</link>
	<content:encoded>&lt;p&gt;&lt;i&gt;Update: The big animated GIFs are killing the alternate webserver I use to host them.  If you don&amp;#8217;t see the images below, wait a bit and try again &amp;#8230;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Unicode provides &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/List_of_Unicode_characters#Block_elements&quot;&gt;lots of fun block characters&lt;/a&gt;.  But can we use them to improve on the traditional ASCII spinner and progress bar?&lt;/p&gt;
&lt;p&gt;This is what I settled for in &lt;a href=&quot;http://rwmj.wordpress.com/2010/08/31/virt-resize-progress-bars/&quot;&gt;my recent addition&lt;/a&gt; to &lt;a href=&quot;http://libguestfs.org/guestfish.1.html&quot;&gt;guestfish&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/guestfish.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a traditional ASCII progress bar for comparison:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/ascii.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The problem with Unicode is not with the completeness of the fonts, but with consistency and rendering.  Characters that belong to the same logical group just vary in size or consistency, like the circular spinner used here:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/white-circle-quadrant.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The rendering of fonts doesn&amp;#8217;t appear to be very well tuned for block characters.  The light grey dither in the following bar should &lt;i&gt;not&lt;/i&gt; be split into two like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/zx81.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Unicode characters themselves are not arranged logically (check out &lt;a href=&quot;http://xahlee.org/comp/unicode_arrows.html&quot;&gt;Xah Lee&amp;#8217;s description of Unicode arrows&lt;/a&gt;).  Thus it was very hard to find anything which points in all 8 directions, with many characters pointing only in say 3 or 4 out of 8 directions (eg. NE, E, SE and nothing else .. wtf?).  In fact the only usable one was this arrow:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/arrow.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here are some other attempts:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/black-pointing-triangle.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/black-triangle.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/white-pointing-triangle.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.annexia.org/tmp/spin/white-square-quadrant.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Want to try making your own?  &lt;a href=&quot;http://www.annexia.org/tmp/spin/spin.c&quot;&gt;Here is the little C program&lt;/a&gt; that I used to make the animations above.&lt;/p&gt;
&lt;p&gt;PS. If you are going to use UTF-8 in your program, &lt;a href=&quot;http://www.cl.cam.ac.uk/~mgk25/unicode.html#activate&quot;&gt;make sure you&amp;#8217;re running in a UTF-8 locale&lt;/a&gt;, and provide a simple ASCII fallback.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2086/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2086/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2086/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2086/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2086/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2086/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2086/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2086/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2086/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2086/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2086/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2086/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2086/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2086/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2086&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-09-01T20:11:28+00:00</dc:date>
</item>
<item rdf:about="http://blog.hinterlands.org/?p=232">
	<title>Martin A. Brooks: A quickstart guide to Systems Management</title>
	<link>http://blog.hinterlands.org/2010/09/a-quickstart-guide-to-systems-management/</link>
	<content:encoded>&lt;p&gt;Systems management is very easy.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start with a blank slate.&lt;/li&gt;
&lt;li&gt;Write on the slate.&lt;/li&gt;
&lt;li&gt;Demonstrate that, in the event of the slate being wiped clean, you can reproduce the contents of the slate in full.&lt;/li&gt;
&lt;li&gt;Wipe the slate clean.&lt;/li&gt;
&lt;li&gt;See 3.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content:encoded>
	<dc:date>2010-08-31T23:28:24+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2083">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/31/virt-resize-progress-bars/</link>
	<content:encoded>&lt;p&gt;After a &lt;a href=&quot;https://www.redhat.com/archives/libguestfs/2010-August/msg00172.html&quot;&gt;mammoth 12 part patch series&lt;/a&gt;, &lt;a href=&quot;http://libguestfs.org/&quot;&gt;libguestfs&lt;/a&gt;&amp;#8216;s &lt;a href=&quot;http://libguestfs.org/virt-resize.1.html&quot;&gt;virt-resize tool for resizing virtual machines&lt;/a&gt; now displays progress bars when you are doing the long copy operations:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;virt-resize --expand=/dev/sda2 /tmp/F13x64.img /tmp/test.img&lt;/b&gt;
Summary of changes:
/dev/sda1: partition will be left alone
/dev/sda2: partition will be resized from 7.5G to 9.5G
/dev/sda2: content will be expanded using the 'pvresize' method
Copying /dev/sda1 ...
&lt;b&gt;[##################################################################]&lt;/b&gt;
Copying /dev/sda2 ...
&lt;b&gt;[##----------------------------------------------------------------]&lt;/b&gt;
&lt;/pre&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2083/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2083/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2083/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2083/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2083/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2083/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2083/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2083/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2083/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2083/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2083/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2083/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2083/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2083/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2083&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-31T21:09:47+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2074">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/30/python-script-to-replace-templates-in-configuration-files-in-vms/</link>
	<content:encoded>&lt;p&gt;The idea behind this script is you create a template VM, and when you need a new VM, you duplicate the disk image and use the script to put final values into configuration files.  This script will take a disk image containing a configuration file like:&lt;/p&gt;
&lt;pre&gt;
HOSTNAME=@HOSTNAME@
&lt;/pre&gt;
&lt;p&gt;and edit it to:&lt;/p&gt;
&lt;pre&gt;
HOSTNAME=yourhost.example.com
&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;
#!/usr/bin/python

image = &quot;disk.img&quot;
root_filesystem = &quot;/dev/vg_template/lv_root&quot;
filename = &quot;/etc/sysconfig/network&quot;
pattern = &quot;@HOSTNAME@&quot;
replacement = &quot;yourhost.example.com&quot;

import tempfile
import os
import fileinput
import shutil
import guestfs

g = guestfs.GuestFS ()

g.add_drive (image)
g.launch ()
g.mount_options (&quot;&quot;, root_filesystem, &quot;/&quot;)

tmpdir = tempfile.mkdtemp ()
tmpfile = os.path.join (tmpdir, &quot;file&quot;)

g.download (filename, tmpfile)

for line in fileinput.FileInput (tmpfile, inplace=1):
    line = line.replace (pattern, replacement)
    print line,

g.upload (tmpfile, filename)

g.umount_all ()
g.sync ()

shutil.rmtree (tmpdir)
&lt;/pre&gt;
&lt;p&gt;If you have to make many changes to a VM image, don&amp;#8217;t run this script repeatedly.  Instead, duplicate the &lt;code&gt;download ... upload&lt;/code&gt; section of the code as required.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2074/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2074/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2074/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2074/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2074/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2074/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2074/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2074/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2074/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2074/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2074/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2074/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2074/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2074/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2074&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-30T22:02:53+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2071">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/28/slimp3/</link>
	<content:encoded>&lt;p&gt;Yay I got my original (non-wireless) &lt;a href=&quot;http://wiki.slimdevices.com/index.php/SLIMP3&quot;&gt;SLIMP3&lt;/a&gt; working again &amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2010/08/slimp3.jpg?w=500&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2071/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2071/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2071/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2071/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2071/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2071/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2071/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2071/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2071/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2071/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2071/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2071/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2071/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2071/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2071&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-28T21:46:22+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2065">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/27/another-libguestfs-on-fedora-13-time/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://rwmj.wordpress.com/2010/08/23/libguestfs-boots-in-5-seconds-now-using-virtio-serial/&quot;&gt;It gets even better&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;time guestfish -a /dev/null run&lt;/b&gt;
real    &lt;b&gt;0m3.524s&lt;/b&gt;
user    0m1.627s
sys     0m1.127s
&lt;/pre&gt;
&lt;p&gt;For this you will need &lt;a href=&quot;https://admin.fedoraproject.org/updates/febootstrap-2.9-1.fc13&quot;&gt;febootstrap 2.9&lt;/a&gt; (&lt;a href=&quot;http://koji.fedoraproject.org/koji/buildinfo?buildID=192430&quot;&gt;build&lt;/a&gt;) and &lt;a href=&quot;https://admin.fedoraproject.org/updates/libguestfs-1.4.3-3.fc13&quot;&gt;libguestfs 1.4.3-3&lt;/a&gt; (&lt;a href=&quot;http://koji.fedoraproject.org/koji/buildinfo?buildID=192435&quot;&gt;build&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Please up-mod the updates if they work for you.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2065/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2065/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2065/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2065/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2065/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2065/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2065/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2065/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2065/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2065/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2065/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2065/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2065/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2065/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2065&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-27T19:28:48+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2063">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/27/i-hate-bt/</link>
	<content:encoded>&lt;p&gt;Yet another scam from BT.  &amp;#8220;Unlimited Anytime&amp;#8221; calls &amp;#8212; sounds like that should be &amp;#8220;unlimited&amp;#8221; and &amp;#8220;any time&amp;#8221; &amp;#8230; right?&lt;/p&gt;
&lt;p&gt;I checked my bill today to find I&amp;#8217;d been charged £3.46 for calls to UK landlines.  Surely some mistake?  No: if you &lt;a href=&quot;http://www.productsandservices.bt.com:80/consumer/consumerProducts/pdf/UKInternationalprices.pdf&quot;&gt;read the fine print&lt;/a&gt;, a call is only free for the first 60 minutes, and thereafter it&amp;#8217;s a staggering 6.9 pence per minute.  Of course my phone meetings often go on for over an hour, so now I have to drop the call and rejoin.&lt;/p&gt;
&lt;p&gt;If I was in charge, my first act would be to dismember BT and return the land lines to the people who paid for them.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2063/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2063/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2063/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2063/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2063/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2063/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2063/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2063/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2063/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2063/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2063/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2063/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2063/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2063/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2063&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-27T18:50:34+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2050">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/25/libguestfs-binaries-for-all-linux-distros/</link>
	<content:encoded>&lt;p&gt;I uploaded some &lt;a href=&quot;http://libguestfs.org/download/binaries/&quot;&gt;distro-independent Linux/x86-64 binaries of libguestfs, guestfish, guestmount and the virt-* tools&lt;/a&gt;.  Be sure to &lt;a href=&quot;http://libguestfs.org/download/binaries/README.txt&quot;&gt;read the README file&lt;/a&gt; first.&lt;/p&gt;
&lt;p&gt;These are a little experimental and I&amp;#8217;d welcome feedback.  I got them to work fine on Debian 5.0 after upgrading glibc and Perl, but YMMV.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update: OpenSUSE 11.3&lt;/b&gt; working.&lt;/p&gt;
&lt;p&gt;The version of KVM supplied is too old (doesn&amp;#8217;t support virtio-serial) so I had to compile &lt;a href=&quot;http://savannah.nongnu.org/git/?group=qemu&quot;&gt;qemu from git&lt;/a&gt; and drop the following qemu wrapper in place:&lt;/p&gt;
&lt;pre&gt;
#!/bin/sh -
qemudir=/home/rjones/d/qemu
exec $qemudir/x86_64-softmmu/qemu-system-x86_64 -L $qemudir/pc-bios &quot;$@&quot;
&lt;/pre&gt;
&lt;p&gt;The next problem which had me confused for a very long time was that qemu kept aborting while allocating memory.  After trying things like adding swap, playing with overcommit settings and so on, it turned out that SUSE uses some really silly, and very small default ulimits for virtual memory.  You have to do:&lt;/p&gt;
&lt;pre&gt;
ulimit -Hv unlimited
ulimit -Sv unlimited
ulimit -Hm unlimited
ulimit -Sm unlimited
&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Update: Ubuntu 10.04&lt;/b&gt; working.&lt;/p&gt;
&lt;p&gt;As with SUSE, the version of KVM shipped by Ubuntu is too old to support virtio-serial.  All I had to do was replace it with &lt;a href=&quot;http://savannah.nongnu.org/git/?group=qemu&quot;&gt;qemu from git&lt;/a&gt; and the same qemu wrapper above.&lt;/p&gt;
&lt;p&gt;After that guestfish works fine.&lt;/p&gt;
&lt;p&gt;If you need the Perl tools, then you have to upgrade Perl to 5.12.1, install hivex, and link libpcre.so.0 -&amp;gt; libpcre.so.3.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2050/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2050/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2050/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2050/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2050/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2050/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2050/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2050/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2050/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2050/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2050/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2050/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2050/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2050/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2050&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-25T16:43:28+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2042">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/24/printf/</link>
	<content:encoded>&lt;p&gt;What&amp;#8217;s the longest named &lt;code&gt;*printf&lt;/code&gt; function?  Amongst the GNU libraries it appears to be &lt;a href=&quot;http://www.gnu.org/software/gnulib/MODULES.html#module=xvasprintf&quot;&gt;xvasprintf&lt;/a&gt;.&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt; &lt;code&gt;x&lt;/code&gt; &lt;/td&gt;
&lt;td colspan=&quot;4&quot;&gt; aborts on allocation failure &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt; &lt;code&gt;v&lt;/code&gt; &lt;/td&gt;
&lt;td colspan=&quot;3&quot;&gt; takes va_list of arguments &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt; &lt;code&gt;a&lt;/code&gt; &lt;/td&gt;
&lt;td colspan=&quot;2&quot;&gt; allocates space for return string &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt; &lt;code&gt;s&lt;/code&gt; &lt;/td&gt;
&lt;td&gt; prints to a string &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt; &lt;code&gt;print&lt;/code&gt; &lt;code&gt;f&lt;/code&gt;ormatted &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;It&amp;#8217;s a shame, as &lt;a href=&quot;http://lists.gnu.org/archive/html/bug-gnulib/2009-10/msg00110.html&quot;&gt;Eric suggests in this email&lt;/a&gt;, that we don&amp;#8217;t have &lt;code&gt;xvasnprintf&lt;/code&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2042/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2042/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2042/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2042/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2042/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2042/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2042/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2042/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2042/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2042/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2042/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2042/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2042/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2042/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2042&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-24T14:28:04+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-7305662280706773984.post-3350553347337058838">
	<title>Ross Lawley: How to configure VM Fusion NAT to be visible on port 80 of the host</title>
	<link>http://feedproxy.google.com/~r/RossLawley/~3/IxAUZsBn-yQ/how-to-configure-vm-fusion-nat-to-be.html</link>
	<content:encoded>I do all my development on VMWares, as they are cheap and easy to setup and mimic the real deployment environment.  I've always used NAT networking on my vmwares rather than put them on the network as standalone bridged items, however, recently I was asked to &quot;share&quot; my latest code on the network.  My host hacks didn't get translated so I needed to to forward the port 80 traffic from the Mac to</content:encoded>
	<dc:date>2010-08-24T14:17:17+00:00</dc:date>
</item>
<item rdf:about="http://www.karan.org/blog/xmlsrv/315@http://www.karan.org/blog/">
	<title>Karanbir Singh: Is it time to ponder a CentOS/Sparc build again ?</title>
	<link>http://www.karan.org/blog/index.php/2010/08/24/is-it-time-to-ponder-a-centos-sparc-build-again</link>
	<content:encoded>&lt;p&gt;Given the &lt;a href=&quot;http://www.reuters.com/article/idUS293639102720100824&quot;&gt;recent&lt;/a&gt; &lt;a href=&quot;http://www.channelregister.co.uk/2010/08/13/opensolaris_is_dead/&quot;&gt;developments&lt;/a&gt; on the &lt;a href=&quot;http://mail.opensolaris.org/pipermail/opensolaris-discuss/2010-August/059310.html&quot;&gt;opensolaris&lt;/a&gt; front, there is again the issue of what OS do people run on their existing sparc hardware ? And I wonder if now is a good time to consider bringing up the CentOS on Sparc conversations again.&lt;/p&gt;


&lt;p&gt;I have some hardware that can be used for the builds and I know there is enough contributed / contribute-able resources around to setup some development instances as well. However, the real issue is : is there much desire out there to have CentOS running on these machines ?&lt;/p&gt;


&lt;p&gt;Even though I don't have any equipment in production running off Sparc anymore, I know there are quite a few people who do. And it looks like Oracle wants to put these people in a position where they either run a paid for supported Solaris or nothing at all. If we can do something to create an option, that would be awesome. And given the huge commitment to open source that the CentOS upstream has, doing it here on this platform makes the most sense since efforts put in will stay in an open source model, with equal opportunity for anyone to join the effort and continue it. Knowing that there is no vendor preferences or vendor isolation / ownership issues being involved.&lt;/p&gt;


&lt;p&gt;CentOS also makes for a good choice since the porting and development effort would need to only really be done at one point - when a major new release is announced upstream - and from that point on, its a case of maintaining the builds for the lifespan. Considering that the lifespan for a CentOS release would be 7 years or more, it makes the effort even more worthwhile.&lt;/p&gt;

&lt;p&gt;Usual suspects still hold true : long life, stable releases, &lt;a href=&quot;http://www.centos.org/docs/&quot;&gt;documentation&lt;/a&gt; that is shared with the i386/x86_64 world for most parts, userspace &lt;a href=&quot;http://wiki.centos.org/GettingHelp&quot;&gt;support in the regular media&lt;/a&gt;, a clueful community and an awesome &lt;a href=&quot;http://wiki.centos.org/InfraWiki&quot;&gt;infrastructure setup&lt;/a&gt; etc.&lt;/p&gt;

&lt;p&gt;Maybe we can sync up with the &lt;a href=&quot;http://fedoraproject.org/wiki/Architectures/SPARC&quot;&gt;Fedora-sparc guys&lt;/a&gt; and see if there is any synergy there. I know that they have been &lt;a href=&quot;http://ausil.us/blog/fedora-12-sparc-beta&quot;&gt;getting ready for a new release&lt;/a&gt; soon.&lt;/p&gt;

&lt;p&gt;Something to think about. &lt;/p&gt;

&lt;p&gt;- KB&lt;/p&gt;</content:encoded>
	<dc:date>2010-08-24T11:04:52+00:00</dc:date>
</item>
<item rdf:about="tag:blog.unixdaemon.net,2010:/tools/adventures-in-cronologger">
	<title>Dean Wilson: Adventures in Cronologger</title>
	<link>http://blog.unixdaemon.net/cgi-bin/blosxom.pl/tools/adventures-in-cronologger.html</link>
	<content:encoded>Cronjobs are one of those necessary evils of any decent sized Unix setup,
they provide often essential pieces of a sites data flows but are often
treated as second class citizens. While I've already mentioned my &lt;a href=&quot;http://www.unixdaemon.net/sysadmin/cron-commandments.html&quot;&gt;Cron
commandments&lt;/a&gt; I'm always looking for improvements in the
rest of my cron tool set and, with Vladimir Vuksan's &lt;a href=&quot;http://github.com/vvuksan/cronologger&quot;&gt;cronologger&lt;/a&gt;, I may have
found another piece of the puzzle.

&lt;p&gt;The concept is simple, you add a command to the front of your crontabs
and it invokes your actual cron command. This wrapper script collects the
stdout, stderr and some other details such as exit code and run time. The
backend is a couchdb data store and the simple reporting pages are written
in PHP, and are easy to work through, crib and base your own reports
from. Having all this cron information also helps provide a talking point
with development, it's easy to show progress and imbue a sense of actually
getting somewhere when the number of cronjobs
with errors drops each day, rather than the systems team mentioning that
their email boxes are a little emptier since the last release.&lt;/p&gt;

&lt;p&gt;While our initial tests seem positive there are a couple of reports and
tweaks to the command line data injector that we want for our local usage.
The biggest problem with the project may well be that the idea is so
obviously correct that we end up re-implementing it in something a little
more suitable for our environment. Maybe a Python command line client and
Perl Template Toolkit driven reports to replace the PHP. But that's a
possibility for later - for now cronologger is a great 80% solver.&lt;/p&gt;</content:encoded>
	<dc:date>2010-08-23T21:49:00+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2039">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/23/libguestfs-boots-in-5-seconds-now-using-virtio-serial/</link>
	<content:encoded>&lt;p&gt;We always wanted the libguestfs appliance to boot in 5 seconds, and today after about a week of tweaking and optimization, we made that happen.  On relatively old hardware too &amp;#8230;&lt;/p&gt;
&lt;pre&gt;
  real	  &lt;b&gt;0m4.954s&lt;/b&gt;
  user	  0m2.117s
  sys	  0m1.739s
&lt;/pre&gt;
&lt;p&gt;The patches are not upstream yet, but we hope to have the required changes in Fedora 14 by the time it comes out.&lt;/p&gt;
&lt;p&gt;Another optimization that we made was to switch to using &lt;a href=&quot;http://fedoraproject.org/wiki/Features/VirtioSerial&quot;&gt;virtio-serial&lt;/a&gt; for communications.  This is considerably faster than the current qemu user-net-based communication channel.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2039/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2039/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2039/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2039/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2039/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2039/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2039/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2039/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2039/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2039/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2039/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2039/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2039/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2039/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2039&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-23T21:34:59+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2035">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/19/creating-ext2-filesystems-from-scratch/</link>
	<content:encoded>&lt;p&gt;We&amp;#8217;ve &lt;a href=&quot;https://www.redhat.com/archives/libguestfs/2010-August/msg00028.html&quot;&gt;had to change the way libguestfs boots its appliance&lt;/a&gt;, so now the appliance will be an ext2 filesystem from an ordinary drive, &lt;a href=&quot;http://lists.gnu.org/archive/html/qemu-devel/2010-08/threads.html#00133&quot;&gt;instead of an initrd&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem is that we need to create the ext2 filesystem &lt;a href=&quot;http://rwmj.wordpress.com/2009/10/22/supermin-appliance-now-in-febootstrap/&quot;&gt;on the fly&lt;/a&gt;, and we can&amp;#8217;t use libguestfs to do this (which would be way easier than the method I&amp;#8217;m about to describe).&lt;/p&gt;
&lt;p&gt;However &lt;a href=&quot;http://e2fsprogs.sourceforge.net/&quot;&gt;e2fsprogs&lt;/a&gt; comes with a low-level library for manipulating ext2 filesystem images, and it is just about possible to use this to make an ext2 filesystem and put files and directories on to it.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://koeritz.org/docs/e2fslibs/html-info/libext2fs_1.html&quot;&gt;documentation on libext2fs&lt;/a&gt; is very light on detail, but I have written some example code:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;a href=&quot;http://www.annexia.org/tmp/ext2fs_test.c&quot;&gt;http://www.annexia.org/tmp/ext2fs_test.c&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Compile and run this with:&lt;/p&gt;
&lt;pre&gt;
$ &lt;b&gt;gcc -Wall test.c -o test -lext2fs -lcom_err&lt;/b&gt;
$ &lt;b&gt;./test&lt;/b&gt;
$ &lt;b&gt;guestfish -a /tmp/test.img -m /dev/sda&lt;/b&gt;
&amp;gt;&amp;lt;fs&amp;gt; &lt;b&gt;ll /&lt;/b&gt;
drwxr-xr-x  4  500  500   1024 Aug 19 12:08 .
dr-xr-xr-x 20 root root      0 Aug 19 12:09 ..
-rw-r--r--  1 root root 100000 Aug 19 12:08 hello
drwx------  2 root root  12288 Aug 19 12:08 lost+found
drwxr-xr-x  2 root root   1024 Aug 19 12:08 mydir
&amp;gt;&amp;lt;fs&amp;gt; &lt;b&gt;ll /mydir/&lt;/b&gt;
total 3
drwxr-xr-x 2 root root 1024 Aug 19 12:08 .
drwxr-xr-x 4  500  500 1024 Aug 19 12:08 ..
-rw-r--r-- 1 root root   99 Aug 19 12:08 file_in_mydir
&amp;gt;&amp;lt;fs&amp;gt; &lt;b&gt;cat /mydir/file_in_mydir&lt;/b&gt;
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstu
&lt;/pre&gt;
&lt;p&gt;It&amp;#8217;s also advisable to read about how &lt;a href=&quot;http://e2fsprogs.sourceforge.net/ext2intro.html&quot;&gt;ext2 works internally&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2035/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2035/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2035/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2035/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2035/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2035/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2035/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2035/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2035/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2035/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2035/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2035/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2035/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2035/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2035&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-19T11:11:52+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-7305662280706773984.post-5991303057497360098">
	<title>Ross Lawley: Using Django to serve parts of your site over HTTPS</title>
	<link>http://feedproxy.google.com/~r/RossLawley/~3/Mo3AdQUgS4o/using-django-to-serve-parts-of-your.html</link>
	<content:encoded>Firstly, you'll need to get your web server up and running with https, you'll need
your certificate and key set up, happily theres already loads of posts about that,
so I won't cover it here!


The second area of pain is that djangos development runserver doesn't support HTTPS,
which is irksome but apparently there are ways around it! 
The django-weave project
go into detail about it.  I'm lucky</content:encoded>
	<dc:date>2010-08-19T11:25:20+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2031">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/18/kvm-forum-presentations-are-now-online/</link>
	<content:encoded>&lt;p&gt;If you didn&amp;#8217;t make it to the KVM Forum &lt;a href=&quot;http://rwmj.wordpress.com/2010/07/31/im-at-the-kvm-forum-and-linuxcon-boston/&quot;&gt;last week&lt;/a&gt; don&amp;#8217;t worry because &lt;a href=&quot;http://www.linux-kvm.org/page/KVM_Forum_2010#Presentations&quot;&gt;the presentations are now online&lt;/a&gt;, and Andy has promised to have videos up shortly too.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.linux-kvm.org/page/Image:GroupPhoto.JPG&quot;&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2010/08/kvmgroupphoto.jpg?w=500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2031/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2031/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2031/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2031/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2031/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2031/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2031/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2031/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2031/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2031/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2031/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2031/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2031/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2031/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2031&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-18T20:27:32+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2027">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/17/libguestfs-news/</link>
	<content:encoded>&lt;p&gt;We rewrote the &lt;a href=&quot;http://libguestfs.org/virt-inspector.1.html&quot;&gt;inspection code&lt;/a&gt; in C (originally it was Perl).  One advantage to this is you can inspect unknown OS images from any language binding, not just Perl.&lt;/p&gt;
&lt;p&gt;Another is that it makes the &lt;a href=&quot;http://libguestfs.org/guestfish.1.html&quot;&gt;guestfish&lt;/a&gt; &lt;a href=&quot;http://rwmj.wordpress.com/2010/03/25/guestfish-i-thats-inspector-not-interactive/&quot;&gt;-i option&lt;/a&gt; both smarter and faster.  The following will only work in the latest development version, 1.5.3:&lt;/p&gt;
&lt;pre&gt;
$ guestfish -i -d Debian5x64 --ro

Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.

Type: 'help' for a list of commands
      'man' to read the manual
      'quit' to quit the shell

&lt;b&gt;Operating system: squeeze/sid
/dev/mapper/debian5x64-root mounted on /
/dev/vda1 mounted on /boot
/dev/mapper/debian5x64-home mounted on /home
/dev/mapper/debian5x64-tmp mounted on /tmp
/dev/mapper/debian5x64-usr mounted on /usr
/dev/mapper/debian5x64-var mounted on /var&lt;/b&gt;
&amp;gt;&amp;lt;fs&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The inspection API is &lt;a href=&quot;http://libguestfs.org/guestfs.3.html#inspection&quot;&gt;documented in the main manual&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We are also maintaining two stable branches by backporting only conservative bug fixes.  &lt;a href=&quot;http://libguestfs.org/download/?C=M;O=D&quot;&gt;libguestfs 1.2.11&lt;/a&gt; is the latest &lt;a href=&quot;http://libguestfs.org/guestfs.3.html#libguestfs_version_numbers&quot;&gt;old stable version&lt;/a&gt; along the 1.2 branch, and &lt;a href=&quot;http://libguestfs.org/download/?C=M;O=D&quot;&gt;libguestfs 1.4.2&lt;/a&gt; is the latest stable version along the 1.4 branch.  (If you want to start using libguestfs and you don&amp;#8217;t want the bleeding edge, use 1.4.x).&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2027/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2027/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2027/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2027/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2027/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2027/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2027/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2027/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2027/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2027/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2027/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2027/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2027/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2027/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2027&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-17T18:34:53+00:00</dc:date>
</item>
<item rdf:about="http://blog.roseman.org.uk/2010/08/14/getting-related-item-aggregate/">
	<title>Daniel Roseman: Getting the related item in an aggregate</title>
	<link>http://blog.roseman.org.uk/2010/08/14/getting-related-item-aggregate/</link>
	<content:encoded>&lt;p&gt;There's a question I see quite a lot at StackOverflow and the Django Users group regarding aggregation in Django. It goes like this: I know how to annotate a max/min value for a related item on each item in a queryset. But how do I get the actual related item itself?&lt;/p&gt;
&lt;p&gt;I wish this was easier than it actually is. The problem is that in the underlying SQL, annotating the value is a simple aggregation query on the related item, whereas getting the entire object means moving to a complicated dependent subquery.&lt;/p&gt;
&lt;p&gt;To illustrate, take these models:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Model&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CharField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max_length&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Entry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Model&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ForeignKey&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;added&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DateTimeField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;auto_now_add&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;text&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TextField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Getting the date of the latest Entry for each Blog is simple: &lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;blogs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Blog&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;objects&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;annotate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Max&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'entry__added'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and the underlying SQL is just as simple:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;MAX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;added&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog_blog&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog_entry&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;blog_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;BY&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;But that doesn't work if you want the whole Entry object. You need to do something much more complicated:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;added&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;text&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog_blog&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog_entry&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog_entry&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e2&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;blog_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;BY&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;added&lt;/span&gt; 
    &lt;span class=&quot;k&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and currently there's no support for this in the Django ORM.&lt;/p&gt;
&lt;p&gt;Now, you could just pass the above query to the &lt;code&gt;.raw&lt;/code&gt; queryset method in Django 1.2: &lt;code&gt;Blog.objects.raw('SELECT...')&lt;/code&gt;, and perhaps surprisingly, this will work, in that the extra fields from the Entry model will be appended to each Blog instance. If you needed the actual Entry instance - say if you had some extra methods on the Entry model that you needed to run with each one - you would have to iterate through the queryset and instantiate new Entry objects with the fields from each Blog.&lt;/p&gt;
&lt;p&gt;Also note there's another gotcha with raw querysets, which is that they are re-executed every time you slice them or access one of their members - so it's probably best to cast them to a plain list first.&lt;/p&gt;
&lt;p&gt;There is another approach which gets you the items related in the normal Django way, so that you can do &lt;code&gt;entry_instance.blog&lt;/code&gt;. It does this in two queries, with a bit of Python processing in the meantime. &lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;django&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;db&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Max&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;blogs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Blog&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;objects&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;annotate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Max&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'entry__added'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;values&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tuple&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max__entry__added&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blogs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;entries&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Entry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;objects&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;extra&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'(blog_id, added) IN %s'&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;values&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,)])&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;blog_dict&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dict&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blogs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;entries&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;entries&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; 
&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;entries:&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_blog_cache&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;blog_dict&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;entry&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;blog_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here we do a standard annotate query to get the &lt;code&gt;added&lt;/code&gt; values for each relevant Entry. Then we can do an &lt;code&gt;extra&lt;/code&gt; query to get the actual Entries associated with each &lt;code&gt;(blog_id, max_entry)&lt;/code&gt; tuple (note we can't use the &lt;code&gt;params&lt;/code&gt; argument for the values list, unfortunately, as it will get double-quoted). Finally, we can re-associate each Entry with its Blog - I've done it that way round to fit in with the standard ForeignKey and its automatic mapping of &lt;code&gt;entry._blog_cache&lt;/code&gt; to &lt;code&gt;entry.blog&lt;/code&gt;, and since we're only interested in one entry per blog it shouldn't matter whether we have to iterate through blogs or entries.&lt;/p&gt;
&lt;p&gt;Again, it's a shame we have to drop to raw SQL for the middle step here. The query depends on matching multiple values for each row, and although it would be possible to do this by iterating through and adding Q objects for each row, it would be an absolutely horrible query. At least we're using &lt;code&gt;extra&lt;/code&gt; here, which is arguably better than the &lt;code&gt;raw&lt;/code&gt; we used in the first attempt above. &lt;/p&gt;</content:encoded>
	<dc:date>2010-08-14T20:18:46+00:00</dc:date>
</item>
<item rdf:about="http://blog.hinterlands.org/?p=226">
	<title>Martin A. Brooks: How to get less junk email</title>
	<link>http://blog.hinterlands.org/2010/08/how-to-get-less-junk-email/</link>
	<content:encoded>&lt;p&gt;I am fairly frequently asked for tips on getting less junk email.  There&amp;#8217;s quite a few things you can do that will cut the amount of junk you get, or at  least let you get an idea of where it came from.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don&amp;#8217;t have a catchall account, only ever accept mail for real mailboxes.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Use as few generic or role addresses as you can.  sales@, info@, help@ etc will all draw in unwanted junk.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Delete or disable legacy mailboxes, don&amp;#8217;t alias them to another user&amp;#8217;s mailbox.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Use different email aliases for different sites.  So I might have  martin-slashdot@ for Slashdot,  martin-elreg@ for The Register, martin-dominos@ for Dominos etc etc.   If mails arrives to these addresses, and it&amp;#8217;s not from that specific organisation, then something has leaked when it shouldn&amp;#8217;t have.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Once you&amp;#8217;ve finished with a particular site, remove the alias.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Don&amp;#8217;t be afraid to pick up the phone.  If you get email you didn&amp;#8217;t want from a company, call them to get yourself removed. Where you&amp;#8217;ve had no contact with a company before, tell them politely that they are breaking the law by sending you unsolicited email.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Understand the difference between spam and UCE.  With spam it is rarely worth your time tracking down the sender, UCE may well be.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Don&amp;#8217;t click on unsubscribe links in spam messages.  Do click on unsubscribe links in UCE messages.  With the latter, if the unsubscribe isn&amp;#8217;t instant (&amp;#8220;It may take up to 10 days&amp;#8230;.&amp;#8221;) then blacklist the sender.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And, of course, if junk mail really is a big problem for you, consider using a commercial anti-spam and anti-virus filtering service to get rid of it.  Obviously I would recommend &lt;a title=&quot;antibodyMX - antispam &amp; antivirus email filtering.&quot; href=&quot;http://antibodymx.net/&quot; target=&quot;_blank&quot;&gt;antibodyMX&lt;/a&gt;, but there are plenty of other providers out there.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content:encoded>
	<dc:date>2010-08-09T18:45:27+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2020">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/07/jonesforth-git-repository/</link>
	<content:encoded>&lt;p&gt;A few years ago I wrote a literate &lt;a href=&quot;http://www.annexia.org/forth&quot;&gt;FORTH compiler and tutorial called JONESFORTH&lt;/a&gt;.  It&amp;#8217;s a good way, I think, to understand the power and limitations of &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Forth_(programming_language)&quot;&gt;FORTH&lt;/a&gt;, and a good way to learn a completely different and mind-blowing programming language.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;ve not heard of FORTH before, cogitate on this: It is possible to write a FORTH program in 2,000 lines.  A program which will boot and provide an entire development environment (inc. editor, compiler etc) on bare hardware.&lt;/p&gt;
&lt;p&gt;Anyhow, I just uploaded my semi-private CVS repository to git.  You can find it here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://git.annexia.org/?p=jonesforth.git;a=summary&quot;&gt;http://git.annexia.org/?p=jonesforth.git;a=summary&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The original tutorial is in two parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://www.annexia.org/_file/jonesforth.s.txt&quot;&gt;http://www.annexia.org/_file/jonesforth.s.txt&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.annexia.org/_file/jonesforth.f.txt&quot;&gt;http://www.annexia.org/_file/jonesforth.f.txt&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2020/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2020/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2020/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2020/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2020/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2020/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2020/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2020/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2020/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2020/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2020/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2020/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2020/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2020/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2020&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-07T22:35:41+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2010">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/04/usb-hardware-random-number-generator/</link>
	<content:encoded>&lt;p&gt;This is a USB &lt;a href=&quot;http://www.entropykey.co.uk&quot;&gt;Entropy Key&lt;/a&gt;, cost £42 inc VAT and delivery from a company up in Lancashire.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2010/08/entropy.jpg?w=500&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;
usb 2-1: new full speed USB device using uhci_hcd and address 2
usb 2-1: New USB device found, idVendor=20df, idProduct=0001
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1: Product: Entropy Key
usb 2-1: Manufacturer: Simtec Electronics
usb 2-1: SerialNumber: M/xxx
&lt;/pre&gt;
&lt;p&gt;I can report that it works fine in Fedora 13 with the &lt;a href=&quot;https://fedoraproject.org/wiki/Licensing:MIT&quot;&gt;open source&lt;/a&gt; daemon provided.  The entropy can be collected in a file, passed to &lt;a href=&quot;http://egd.sourceforge.net/&quot;&gt;egd&lt;/a&gt;, but by default it is added to the kernel entropy pool for use by &lt;a href=&quot;http://linux.die.net/man/4/random&quot;&gt;/dev/random&lt;/a&gt; and things like &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Address_space_layout_randomization&quot;&gt;ASLR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I love how overengineered (yet cheap) this thing is.  From the documentation:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&amp;#8220;The Entropy Key uses &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/P-N_junction&quot;&gt;P-N semiconductor junctions&lt;/a&gt; &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Zener_breakdown&quot;&gt;reverse biased&lt;/a&gt; with a high enough voltage to bring them near to, but not beyond, &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Avalanche_breakdown&quot;&gt;breakdown&lt;/a&gt; in order to generate noise.  In other words, it has a pair of devices that are wired up in such a way that as a high potential is applied across them, where electrons do not normally flow in this direction and would be blocked, the high voltage compresses the semiconduction gap sufficiently that the occasional stray electron will &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Quantum_tunnelling&quot;&gt;quantum tunnel&lt;/a&gt; through the P-N junction. (This is sometimes referred to as avalanche noise.)  When this happens is unpredictable, and the occurrence of these events is what the Entropy Key measures.&lt;/p&gt;
&lt;p&gt;These noise generators are then coupled to a 72MHz &lt;a href=&quot;http://www.arm.com/products/processors/cortex-m/&quot;&gt;ARM Cortex-M3 CPU&lt;/a&gt; on the device.  This processor samples the generators at a high frequency, forming a stream of random bytes.  These streams of bytes are then analyzed using &lt;a href=&quot;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.1911&quot;&gt;Ueli Maurer&amp;#8217;s universal test for random bit generators&lt;/a&gt; whereby the amount of entropy in the streams is estimated rather conservatively.  The streams are also exclusive-ORed together and that stream&amp;#8217;s entropy is estimated in the same manner.  If the raw streams appear to have severely reduced entropy then it indicates a fault in that generator, if the third stream has low entropy then it indicates that the generators have correlated and are not independently gathering entropy.  Any of those three states are considered a failure mode and will result in the eKey locking itself out of the host, returning only an error code instead of generating entropy packets.&lt;/p&gt;
&lt;p&gt;The two raw streams are then processed further in a de-biasing process invented by John von Neumann.  Their entropy is estimated after the de-biasing process has been performed.  Again, if the estimated entropy in the streams is seen to vary too wildly at this stage, the Entropy Key will lock itself out.  The processed streams are then mixed into a pool made with a secure hashing function.  Once at least 50% more (estimated) entropy has been mixed into the pool than it could possibly hold it is finalised and another pool initialised.  Once enough pools have been processed to fill 20000 bits, the totality is subjected to the tests stipulated in &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/FIPS_140-2&quot;&gt;FIPS 140-2&lt;/a&gt;.  These tests produce a PASS/FAIL indicator for the block.  On its own, this is not useful, since a perfectly random block could quite plausibly fail the tests.  The Entropy Key therefore keeps running statistics on the FIPS 140-2 tests and will lock itself out if the ratio of failed blocks to passed blocks rises above a conservative estimate of the statistical likelihood of failure.&lt;/p&gt;
&lt;p&gt;Once the block has been analysed, regardless of its PASS/FAIL indication, it is chopped up into 32 byte packets and these are handed off to the protocol handler in the device.  Through this process therefore, each 256 bit block of data handed to the host was formed from somewhere in the region of between 3000 and 5000 bits read from the generators.&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2010/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2010/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2010/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2010/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2010/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2010/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2010/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2010/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2010/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2010/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2010/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2010/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2010/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2010/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2010&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-04T10:24:55+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2005">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/03/video-xavier-leroy-explains-the-new-features-in-ocaml-3-12/</link>
	<content:encoded>&lt;p&gt;In this video from the &lt;a href=&quot;http://rwmj.wordpress.com/2010/04/17/ocaml-users-conference-2010/&quot;&gt;OCaml Users Conference&lt;/a&gt; back in April, Xavier Leroy explains the 8 new features in OCaml 3.12.  &lt;a href=&quot;http://www.reddit.com/r/programming/comments/cwfi5/objective_caml_release_3120_firstclass_modules/&quot;&gt;As I said elsewhere&lt;/a&gt;, none of the features are earth-shattering, but they make a great programming language that little bit nicer.&lt;/p&gt;
&lt;p&gt;The bit where he discusses the new features starts at around &lt;b&gt;11 mins 50 seconds&lt;/b&gt; in.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;

	
	
	
	
	

&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://vimeo.com/13746263&quot;&gt;Direct link to the video site (also requires flash)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;http://sylvain.le-gall.net/&quot;&gt;Sylvain Le Gall&lt;/a&gt; for organizing this.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2005/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2005/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2005/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2005/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2005/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2005/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2005/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2005/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2005/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2005/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2005/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2005/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2005/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2005/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2005&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-03T18:50:06+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=2002">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/03/linux-core_pattern-fail/</link>
	<content:encoded>&lt;ol&gt;
&lt;li&gt; core_pattern obeys the current chroot, which effectively makes it useless as a way to collect cores centrally if your system has any chrooted processes.
&lt;li&gt; core_pattern &lt;a href=&quot;http://lxr.linux.no/linux+v2.6.34.1/fs/exec.c#L1930&quot;&gt;explicitly prevents you from dumping to non-regular files&lt;/a&gt;.  In a virtual environment it&amp;#8217;d be very useful to coredump to a block device.
&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/2002/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/2002/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/2002/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/2002/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/2002/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/2002/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/2002/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/2002/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/2002/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/2002/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/2002/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/2002/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/2002/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/2002/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=2002&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-03T08:57:56+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=1998">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/08/02/article-on-libguestfs-in-this-months-linux-magazine/</link>
	<content:encoded>&lt;p&gt;The &lt;a href=&quot;http://www.linux-magazine.com/&quot;&gt;current issue #118 of Linux Magazine&lt;/a&gt; (known as Linux Pro Magazine in North America) contains a feature on virtualization and an article on libguestfs.  It was published in Europe today, the USA on August 27th, and Australians have to wait until September 27th.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2010/08/linuxmagvirt1.jpg?w=500&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2010/08/linuxmagvirt2.jpg?w=500&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/1998/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/1998/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/1998/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/1998/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/1998/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/1998/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/1998/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/1998/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/1998/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/1998/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/1998/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/1998/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/1998/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/1998/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=1998&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-08-02T20:28:28+00:00</dc:date>
</item>
<item rdf:about="http://willj.net/?p=738">
	<title>Will Jessop: Basic zeroMQ Ruby example</title>
	<link>http://willj.net/2010/08/01/basic-zero-mq-ruby-example/</link>
	<content:encoded>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: As Jake pointed out in the comments you obviously need zero MQ installed for this example to work. Just &amp;#8216;brew install zeromq&amp;#8217; or &amp;#8216;port install zmq&amp;#8217; on OS X, or use your Linux package manager.&lt;/p&gt;
&lt;p&gt;I couldn&amp;#8217;t find may examples of zeroMQ usage in Ruby so here is a basic sender/consumer I made to test it. First install the &amp;#8216;zmq&amp;#8217; gem:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gem install zmq --no-ri --no-rdoc&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now start a worker, you can start as many as you want:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Now stick some messages on the queue:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You should get messages distributed to all the worker processes you started up. Pretty simple!&lt;/p&gt;</content:encoded>
	<dc:date>2010-07-31T23:58:16+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=1993">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/07/31/im-at-the-kvm-forum-and-linuxcon-boston/</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;http://rwmj.files.wordpress.com/2010/07/kvm.png?w=500&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I will be at the &lt;a href=&quot;http://www.linux-kvm.org/page/KvmForum2010&quot;&gt;KVM Forum&lt;/a&gt; and &lt;a href=&quot;http://events.linuxfoundation.org/events/linuxcon&quot;&gt;LinuxCon&lt;/a&gt; from 9th August in Boston, USA.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/1993/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/1993/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/1993/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/1993/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/1993/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/1993/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/1993/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/1993/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/1993/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/1993/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/1993/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/1993/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/1993/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/1993/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=1993&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-07-31T20:48:56+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=1986">
	<title>Richard WM Jones: rich</title>
	<link>http://rwmj.wordpress.com/2010/07/30/everything-old-is-new-again/</link>
	<content:encoded>&lt;p&gt;The &lt;a href=&quot;http://www.perl.com/pub/2010/07/welcome-rakudo-star.html&quot;&gt;big news&lt;/a&gt; is that  Perl 6 has &lt;a href=&quot;http://en.wikipedia.org/wiki/Perl_6_rules&quot;&gt;grammars&lt;/a&gt;.  Copying something that OCaml (&lt;a href=&quot;http://en.wikipedia.org/wiki/Camlp4&quot;&gt;camlp4&lt;/a&gt;) has had for over a decade.  Arguably influenced by LISP which has had non-grammatical macros for decades.  Being able to modify the grammar of a language is fantastic: see &lt;a href=&quot;http://code.google.com/p/bitstring/&quot;&gt;the bitmatch&lt;/a&gt; and &lt;a href=&quot;http://martin.jambon.free.fr/micmatch.html&quot;&gt;micmatch&lt;/a&gt; projects.  Welcome to the party, Perl 6 users.  I wonder if one day we&amp;#8217;ll see type inference, phantom types, the ability to get close to the metal, real GC, etc etc?&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/1986/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/1986/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rwmj.wordpress.com/1986/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rwmj.wordpress.com/1986/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rwmj.wordpress.com/1986/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rwmj.wordpress.com/1986/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rwmj.wordpress.com/1986/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rwmj.wordpress.com/1986/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rwmj.wordpress.com/1986/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rwmj.wordpress.com/1986/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rwmj.wordpress.com/1986/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rwmj.wordpress.com/1986/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rwmj.wordpress.com/1986/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rwmj.wordpress.com/1986/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;blog=6840703&amp;post=1986&amp;subd=rwmj&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2010-07-30T08:08:31+00:00</dc:date>
</item>
<item rdf:about="tag:blog.dave.org.uk,2010://1.1693">
	<title>davblog - Dave Cross: Greens and Science</title>
	<link>http://blog.dave.org.uk/2010/07/greens-and-science.html</link>
	<content:encoded>At the time of the European election last year, there was &lt;a href=&quot;http://blog.dave.org.uk/2009/06/voting-dilemmas.html&quot;&gt;some debate in the blogosphere&lt;/a&gt; about the Green Party's attitude to science.&amp;nbsp; &lt;a href=&quot;http://holfordwatch.info/2009/06/01/green-party-health-policy/&quot;&gt;Holfordwatch&lt;/a&gt; picked up on a report which said that the Greens supported the continued use of &quot;alternative medicine&quot; in the NHS. Rational people, of course, gave up all idea of voting for them.&lt;br /&gt;&lt;br /&gt;To their credit, the Greens responded to this by clarifying (and, actually, seeming to completely drop) some of these policies. In &lt;a href=&quot;http://www.guardian.co.uk/science/2010/apr/29/green-party-science-policy&quot;&gt;this Q&amp;amp;A&lt;/a&gt; in the Guardian, their press officer, Scott Redding, was asked:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If the balance of evidence suggests that a treatment does not perform any better than placebo, should it be supported by the NHS?&lt;br /&gt;&lt;/blockquote&gt;He replied:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The short answer is No. Our policy is that any medicine or treatment available on the NHS should be backed up by scientific evidence. Some new treatments, and some currently available on the NHS, will pass this test, others will not.&lt;br /&gt;&lt;/blockquote&gt;Of course, you might well think that it doesn't matter what the Green Party thinks on this as they'll never have the power to enact their policies. And you'd be right to think that.&lt;br /&gt;&lt;br /&gt;But they do have an MP now. Caroline Lucas is the MP for Brighton Pavilion. And whilst she's not exactly driving government policy, she does have the same ways to make her views known as all other MPs, including signing Early Day Motions.&lt;br /&gt;&lt;br /&gt;So, given the clear direction indicated by Scott Redding, it's disappointing to see the she has signed one of David Tredinnick's &lt;a href=&quot;http://edmi.parliament.uk/EDMi/EDMDetails.aspx?EDMID=41216&amp;SESSION=905&quot;&gt;nonsense EDMs&lt;/a&gt; on homeopathy (as &lt;a href=&quot;http://blog.dave.org.uk/2010/06/on-the-intelligence-of-mps.html&quot;&gt;discussed previously&lt;/a&gt; on this blog).&lt;br /&gt;&lt;br /&gt;On one hand, the Greens clearly say that they won't support medical treatments without scientific evidence to support them. And then their first ever MP goes and gives her support to something that is on a the same level as witchcraft. If I was one of the enlightened people who voted for her back in May, I'd be feeling pretty pissed off about now.&lt;br /&gt;&lt;br /&gt;I had hoped that, at least, the Green Party would prove themselves to be above the lies and spin that characterise so much of British politics. I'm really disappointed to see those hopes dashed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Lucas has received a lot of comment over this on Twitter in the last few hours. She has posted what I can only assume is supposed to be &lt;a href=&quot;http://twitter.com/CarolineLucas/statuses/19834521552&quot;&gt;an explanation for her actions&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;EDM is about lack of BMA's consultation &amp;amp; argues that local NHS better placed to know patient needs, based on objective clinical assessment&lt;br /&gt;&lt;/blockquote&gt;It's nonsense of course. Tredinnick is a well-known parliamentary advocate for homeopathy. His EDM is purely about supporting the provision of quackery on the NHS. Tredinnick is deliberately inventing scientific controversy where none exists. The science is settled. Homeopathy does not work.&lt;br /&gt;&lt;br /&gt;If patients have been told that homeopathy is worth investigating, then their doctors should make it clear to them that they have been misled. Doctors should not be encouraging this delusion.&lt;br /&gt;</content:encoded>
	<dc:date>2010-07-29T20:03:28+00:00</dc:date>
</item>
<item rdf:about="http://blog.hinterlands.org/?p=217">
	<title>Martin A. Brooks: There’s a hole in my door, dear Renault – part 2</title>
	<link>http://blog.hinterlands.org/2010/07/there%e2%80%99s-a-hole-in-my-door-dear-renault-part-2/</link>
	<content:encoded>&lt;p&gt;So I arranged to take my car in Saturday to have the bit-of-plastic-on-the-driver&amp;#8217;s-door fitted.  I turn up, chap at the desk expected me and was very helpful.&lt;/p&gt;
&lt;p&gt;Him&amp;gt;  Ahh yes,  part&amp;#8217;s right here, shouldn&amp;#8217;t take a mo to fit, I&amp;#8217;ll just get some tools.&lt;/p&gt;
&lt;p&gt;Me&amp;gt;  Super thanks.&lt;/p&gt;
&lt;p&gt;&amp;lt;fx&amp;gt;fiddling with the door happens&amp;lt;/fx&amp;gt;&lt;/p&gt;
&lt;p&gt;Him&amp;gt; Just going to make a phonecall, this isn&amp;#8217;t looking how I expected&lt;/p&gt;
&lt;p&gt;Me&amp;gt;  It doesn&amp;#8217;t look like a door with a well understood piece of plastic missing,  I didn&amp;#8217;t say.&lt;/p&gt;
&lt;p&gt;Me&amp;gt;  Uhh, sure.&lt;/p&gt;
&lt;p&gt;&amp;lt;fx&amp;gt;phone call happens&amp;lt;/fx&amp;gt;&lt;/p&gt;
&lt;p&gt;Him&amp;gt; Sorry, but it looks like I can&amp;#8217;t fit this part.&lt;/p&gt;
&lt;p&gt;Me&amp;gt; You can&amp;#8217;t fit this part.&lt;/p&gt;
&lt;p&gt;Him&amp;gt; No, I think the inside door panel needs to be removed.&lt;/p&gt;
&lt;p&gt;Me&amp;gt; The inside door panel needs to be removed, you think.&lt;/p&gt;
&lt;p&gt;Him&amp;gt; Yes, and I&amp;#8217;m not qualified.&lt;/p&gt;
&lt;p&gt;Me&amp;gt; You&amp;#8217;re not qualified. Super. Thanks.&lt;/p&gt;
&lt;p&gt;I still have a hole in my door.&lt;/p&gt;
&lt;p&gt;Meanwhile, 75cm toward the rear of my car&amp;#8230;.&lt;/p&gt;
&lt;p&gt;You may recall that Renault Romford mistakenly did work I didn&amp;#8217;t ask them to do, then insisted I pay for said work or I couldn&amp;#8217;t have my car back.  I decided to take them up on their offer to simply undo the work and put back the faulty door mechanism and then give me a full refund.&lt;/p&gt;
&lt;p&gt;Me&amp;gt; I&amp;#8217;ve decided to take you up on your offer to simply undo the work and put back the faulty door mechanism and then give me a full refund.&lt;/p&gt;
&lt;p&gt;Renault Romford&amp;gt; We can&amp;#8217;t, we&amp;#8217;ve thrown the old parts away.&lt;/p&gt;
&lt;p&gt;Me&amp;gt;  You&amp;#8217;ve thrown the old parts away. Can I have a refund?&lt;/p&gt;
&lt;p&gt;Renault Romford&amp;gt; I&amp;#8217;ll need to call customer services for you&amp;#8230;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve had no call from Renault UK Customer services today, I left messages, Yvonne&amp;#8217;s been a bit busy.&lt;/p&gt;
&lt;p&gt;Still, nice to know I&amp;#8217;m dealing with a reputable professional company, and not some east-end railway-arch crook.&lt;/p&gt;</content:encoded>
	<dc:date>2010-07-26T21:47:52+00:00</dc:date>
</item>

</rdf:RDF>
