<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Muffin Research Labs</title>
	
	<link>http://muffinresearch.co.uk</link>
	<description>the personal blog of Stuart Colville covering modern web development techniques and best practices</description>
	<pubDate>Mon, 10 Nov 2008 23:26:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<geo:lat>51.1324</geo:lat><geo:long>0.2652</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/muffinresearch" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Inspiring a Sense of Ownership</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/448925067/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/11/10/inspiring-a-sense-of-ownership/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 23:26:54 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Life]]></category>

		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=403</guid>
		<description>Former colleague Mike West talks about how inspiring a team&amp;#8217;s sense of ownership around a project is the key to great things happening: http://mikewest.org/2008/11/the-inspiration-of-ownership. Quality stuff.</description>
			<content:encoded><![CDATA[<p>Former colleague Mike West talks about how inspiring a team&#8217;s sense of ownership around a project is the key to great things happening: <a href="http://mikewest.org/2008/11/the-inspiration-of-ownership">http://mikewest.org/2008/11/the-inspiration-of-ownership</a>. Quality stuff.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=uTPHN"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=uTPHN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=sRkaN"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=sRkaN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=Bx5UN"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=Bx5UN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/448925067" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/11/10/inspiring-a-sense-of-ownership/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F11%2F10%2Finspiring-a-sense-of-ownership%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/11/10/inspiring-a-sense-of-ownership/</feedburner:origLink></item>
		<item>
		<title>Checking tarball contents before extraction</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/448650620/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/11/10/checking-tarball-contents-before-extraction/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 18:05:22 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Linux/Unix]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=402</guid>
		<description>When you are about to unpack a tarball you didn&amp;#8217;t create it&amp;#8217;s a good idea to run the -t flag instead of just assuming it&amp;#8217;s been packed in a sensible way.
tar -tzf foo.tar.gz
This lists all of the files in the tarball so you can be sure it&amp;#8217;s not going to extract to somewhere you didn&amp;#8217;t [...]</description>
			<content:encoded><![CDATA[<p>When you are about to unpack a tarball you didn&#8217;t create it&#8217;s a good idea to run the <code>-t</code> flag instead of just assuming it&#8217;s been packed in a sensible way.</p>
<p><code>tar -tzf foo.tar.gz</code></p>
<p>This lists all of the files in the tarball so you can be sure it&#8217;s not going to extract to somewhere you didn&#8217;t expect.</p>
<p>If you need tar to extract to a different location then you can use the <code>-C</code> flag to tell tar to cd to that directory first and then unpack the contents there.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=H5waN"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=H5waN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=2RtPN"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=2RtPN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=d6uaN"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=d6uaN" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/448650620" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/11/10/checking-tarball-contents-before-extraction/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F11%2F10%2Fchecking-tarball-contents-before-extraction%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/11/10/checking-tarball-contents-before-extraction/</feedburner:origLink></item>
		<item>
		<title>Bash: Resolving Symlinks to Shellscripts</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/416858693/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/10/10/bash-resolving-symlinks-to-shellscripts/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 14:54:21 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Linux/Unix]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=400</guid>
		<description>Here&amp;#8217;s a way to resolve symlinks that call a bash shellscript.
The Problem
I like to be able to use something like this in my bash scripts:
SCRIPTDIR=$(dirname $0)
Which is great for a reference to where the script is, but it suffers from the problem that if you symlink to that script $0 now refers to the symlink [...]</description>
			<content:encoded><![CDATA[<p>Here&#8217;s a way to resolve symlinks that call a bash shellscript.</p>
<h3>The Problem</h3>
<p>I like to be able to use something like this in my bash scripts:</p>
<pre><code>SCRIPTDIR=$(dirname $0)</code></pre>
<p>Which is great for a reference to where the script is, but it suffers from the problem that if you symlink to that script <code>$0</code> now refers to the symlink rather than the actual script.</p>
<h3>The Solution</h3>
<p>The <del>hack</del> <ins>solution</ins> is to use the following instead:</p>
<pre><code>function resolve_symlink {
    SCRIPT=$1 NEWSCRIPT=''
    until [ "$SCRIPT" = "$NEWSCRIPT" ]; do
        if [ "${SCRIPT:0:1}" = '.' ]; then SCRIPT=$PWD/$SCRIPT; fi
        cd $(dirname $SCRIPT)
        if [ ! "${SCRIPT:0:1}" = '.' ]; then SCRIPT=$(basename $SCRIPT); fi
        SCRIPT=${NEWSCRIPT:=$SCRIPT}
        NEWSCRIPT=$(ls -l $SCRIPT | awk &#8216;{ print $NF }&#8217;)
    done
    if [ ! "${SCRIPT:0:1}" = '/' ]; then SCRIPT=$PWD/$SCRIPT; fi
    echo $(dirname $SCRIPT)
}
DIR=$(resolve_symlink $0)
echo $DIR</code></pre>
<p>This updated version should fix the shortcomings of the previous version pointed out in the first comment by resolving links that are relative as well as link chains. Whilst readlink works for linux systems the script above should be portable across unixes which was the original intention.</p>
<p>If you can rely on python then there&#8217;s an even easier way:</p>
<pre><code>DIR=$(python -c "import os; print os.path.realpath(\"${0}\")")
echo $DIR</code></pre>
<p>But again portability is the key.</p>
<p>Find any issues or have improvements to add please let me know. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=k3A5M"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=k3A5M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=JzoZM"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=JzoZM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=eFe2M"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=eFe2M" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/416858693" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/10/10/bash-resolving-symlinks-to-shellscripts/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F10%2F10%2Fbash-resolving-symlinks-to-shellscripts%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/10/10/bash-resolving-symlinks-to-shellscripts/</feedburner:origLink></item>
		<item>
		<title>Ubuntu: change editor globally</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/413535876/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/10/07/ubuntu-change-editor-globally/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 06:43:25 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Linux/Unix]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=399</guid>
		<description>I found the update-alternatives on my travels and very handy it is too especially when on a bytemark box by default the editor is set to &amp;#8220;joe&amp;#8221;. From the man page:
update-alternatives creates, removes, maintains and displays information about the symbolic links comprising the Debian alternatives system.
It is possible for several programs fulfilling the same or [...]</description>
			<content:encoded><![CDATA[<p>I found the <code>update-alternatives</code> on my travels and very handy it is too especially when on a bytemark box by default the editor is set to &#8220;joe&#8221;. From the man page:</p>
<blockquote><p>update-alternatives creates, removes, maintains and displays information about the symbolic links comprising the Debian alternatives system.</p>
<p>It is possible for several programs fulfilling the same or similar functions to be installed on a single system at the same time.  For example, many systems have several text editors installed at once.  This gives choice to the users of a system, allowing each to use a different editor, if desired, but makes it difficult for a program  to  make  a good choice of editor to invoke if the user has not specified a particular preference.</p>
<p>Debian&#8217;s  alternatives  system aims to solve this problem.  A generic name in the filesystem is shared by all files providing interchangeable functionality.  The alternatives system and the system administrator together determine which actual file is referenced by this generic name.  For example, if the text  editors  ed(1)  and  nvi(1)  are  both installed  on  the  system, the alternatives system will cause the generic name /sw/bin/editor to refer to /sw/bin/nvi by default.  The system administrator can override this and cause it to refer to /sw/bin/ed instead, and the alternatives system will not alter this setting until explicitly requested to do so.</p></blockquote>
<h3>To change the editor</h3>
<pre><code>sudo update-alternatives --config editor

There are 8 alternatives which provide `editor'.

  Selection    Alternative
-----------------------------------------------
*         1    /usr/bin/vim.tiny
          2    /bin/nano
 +        3    /usr/bin/joe
          4    /usr/bin/jmacs
          5    /usr/bin/jstar
          6    /usr/bin/jpico
          7    /usr/bin/rjoe
          8    /usr/bin/vim.basic

Press enter to keep the default[*], or type selection number: </code></pre>
<p>Done!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=i0kXM"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=i0kXM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=MpsVM"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=MpsVM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=ENh8M"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=ENh8M" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/413535876" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/10/07/ubuntu-change-editor-globally/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F10%2F07%2Fubuntu-change-editor-globally%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/10/07/ubuntu-change-editor-globally/</feedburner:origLink></item>
		<item>
		<title>Linux: Changing UIDs and GIDs for a user</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/401286999/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/09/24/linux-changing-uids-and-gids-for-user/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 00:41:51 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Linux/Unix]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=397</guid>
		<description>Just had to do a quick switch over of UID and GIDs for a couple of users. 
I&amp;#8217;m using Puppet to manage server configurations and it&amp;#8217;s got some nice features for automating the set-up of users. Unfortunately when I initially set-up the puppet directives, I overlooked setting the UID for each user which means that [...]</description>
			<content:encoded><![CDATA[<p>Just had to do a quick switch over of <a rel="nofollow" href="http://en.wikipedia.org/wiki/User_identifier_(Unix)">UID</a> and <a rel="nofollow" href="http://en.wikipedia.org/wiki/Group_identifier_(Unix)">GIDs</a> for a couple of users. </p>
<p>I&#8217;m using <a href="http://reductivelabs.com/trac/puppet">Puppet</a> to manage server configurations and it&#8217;s got some nice features for automating the set-up of users. Unfortunately when I initially set-up the puppet directives, I overlooked setting the UID for each user which means that the UIDs assigned have been randomly created. As I want to maintain UIDs across all the boxes I&#8217;m using, it means there&#8217;s a need to migrate users&#8217;s uid&#8217;s and gids that are different.</p>
<p><strong>WARNING: Messing with UIDs and GIDs can be hazardous to your sanity if it all goes pear-shaped. Using any of the scripts that follow is done entirely at your own risk.</strong></p>
<h3>A bunch of commands to change UIDS and GIDS</h3>
<p>Here&#8217;s the commands to run as root to change the UID and GID for a user. Simply change the variables in angled brackets to match your settings:</p>
<pre><code>usermod -u &lt;NEWUID&gt; &lt;LOGIN&gt;
groupmod -g &lt;NEWGID&gt; &lt;GROUP&gt;
find / -user &lt;OLDUID&gt; -exec chown &lt;NEWUID&gt; {} \;
find / -group &lt;OLDGID&gt; -exec chgrp &lt;NEWGID&gt; {} \;</code></pre>
<p><code>usermod</code> and <code>groupmod</code> simply change the UID and GID for their respective named counterpart <code>usermod</code> also changes the UID for the files in the homedir but naturally we can&#8217;t assume the only place files have been created is in the user&#8217;s homedir. </p>
<p>The <code>find</code> command recurses the filesystem from / and changes everything with uid of OLDUID to be owned by NEWUID and them changes the group for the files owned by the OLDGROUP</p>
<h3>Swapping Users UIDs</h3>
<p>In my case user bar had a UID of 1001 and user foo had a UID of 1002 and I wanted to swap them over. To do that you have to run the changes with an intermediate step or everything will get in a right pickle. So much so it would be the point in the film where the &#8220;real you&#8221; enters the room and tries to strangle you.</p>
<ol>
<li>Change foo&#8217;s UID and GID from 1001 -> 1012</li>
<li>Change bar&#8217;s UID and GID from 1002 -> 1011</li>
<li>Change foo&#8217;s UID and GID from 1012 -> 1002</li>
<li>Change bar&#8217;s UID and GID from 1011 -> 1001</li>
</ol>
<p>These steps assume that 1012 and 1011 are not taken naturally. </p>
<p>There you have it. User foo now has a UID of 1002 and the foo group now has a GID of 1002 and user bar has a UID of 1001 and the group bar&#8217;s GID is now 1001 too. Phew!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=UPV7L"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=UPV7L" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=ktYdL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=ktYdL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=5tKML"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=5tKML" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/401286999" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/09/24/linux-changing-uids-and-gids-for-user/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F09%2F24%2Flinux-changing-uids-and-gids-for-user%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/09/24/linux-changing-uids-and-gids-for-user/</feedburner:origLink></item>
		<item>
		<title>FAIL of the Week: Apple’s Invisible Transparency</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/397324282/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/09/19/fail-of-the-week-apples-invisible-transparency/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 16:04:20 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=396</guid>
		<description>The Macbook Pro I was issued at work has been plagued with a nasty graphics issue ever since the 10.5.2 update. Prior to that there were also some big graphics issues which caused freezes and crashes which were cleared by the 10.5.3 update but in fixing those issue this new problem appeared.
The Symptoms
The problems experienced [...]</description>
			<content:encoded><![CDATA[<p>The Macbook Pro I was issued at work has been plagued with a nasty graphics issue ever since the 10.5.2 update. Prior to that there were also some big graphics issues which caused freezes and crashes which were cleared by the 10.5.3 update but in fixing those issue this new problem appeared.</p>
<h3>The Symptoms</h3>
<p>The problems experienced showed up in many different ways. For me the worst was a text-tearing issue where the display of text would get scrambled. For example if I was using texmate, lines would overlap when scrolling and the only way to temporarily clear it was to use cmd+a (which presumably caused a re-draw). To stop it completely required a logout. There was also a relationship with sleep modes as it often appeared after waking the machine from sleep.</p>
<p><img src="http://muffinresearch.co.uk/i/gfx-wierdness.png" alt="gfx FAIL" /></p>
<p>There were also occasions where the display was continually covered with white blocks that appeared as you scrolled. These appear in the terminal and places like embedded YouTube players in the browser making it difficult to get RickRolled.</p>
<h3>The FAIL</h3>
<p>Apple&#8217;s failing was to not publicly admit to there being a problem. This combined with the amount of time between the issue occuring and the fix being released made it incredibly frustrating. This main thread on discussions.apple.com was raised on a <a href="http://discussions.apple.com/thread.jspa?messageID=8123876&#038;tstart=0#8123876">back in February</a> and looking at the thread plenty of people had mainboards replaced and yet still the issue persisted like a bad smell emanating from a pair of birkenstocks worn all summer.</p>
<p>From the reports on the thread it also appears that only a very limited number of Apple&#8217;s technical staff had been advised of the issue. I pretty sure the frustration of many people waiting for a fix would have been significantly reduced if there had been a statement issued saying that work was being done to put it right.</p>
<p>The net result of not making a statement amounted to a lot of wasted time spent by MacBook Pro owners and Apple&#8217;s own uninformed staff trying to fix a problem with solutions that would never work.</p>
<p>I&#8217;m pleased it&#8217;s now fixed but seriously, a bit of transparency next time wouldn&#8217;t go amiss! It&#8217;s times like this when the openess and transparency of open source operating systems is much appreciated.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=wcfwL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=wcfwL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=j3WCL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=j3WCL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=oeL1L"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=oeL1L" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/397324282" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/09/19/fail-of-the-week-apples-invisible-transparency/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F09%2F19%2Ffail-of-the-week-apples-invisible-transparency%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/09/19/fail-of-the-week-apples-invisible-transparency/</feedburner:origLink></item>
		<item>
		<title>DjangoCon 2008</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/396590828/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/09/18/djangocon-2008/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 21:31:13 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=381</guid>
		<description>I though it about time I put together a write-up of the First DjangoCon held at the GooglePlex in Mountain View, I enjoyed it immensely and look forward to Euro DjangoCon.
Whilst we were out there our trip co-incided with a YUI 3 event so we thought it would be rude not to head along to [...]</description>
			<content:encoded><![CDATA[<p><img src="http://muffinresearch.co.uk/i/djangocon-logo.png" alt="djangocon 2008" /><br />
I though it about time I put together a write-up of the First DjangoCon held at the GooglePlex in Mountain View, I enjoyed it immensely and look forward to Euro DjangoCon.</p>
<p>Whilst we were out there our trip co-incided with a YUI 3 event so we thought it would be rude not to head along to that.</p>
<h3>YUI 3.0 Event at Brickhouse</h3>
<p>Before DjangoCon started, Cyril and I got the plane to San Francisco and went over to Yahoo&#8217;s Brickhouse to met up with old friend and ex-colleague <a href="http://ben-ward.co.uk/">Ben Ward</a> and to see the YUI 3.0 presentation in the evening. After a swift bit of awesome tex-mex Cyril and I went for a quick mooch around town before getting back in time to see Nate Koechley, Adam Moore and Matt Sweeney talk about YUI 3.0.</p>
<p>All in all I was really quite impressed with how <a href="http://developer.yahoo.com/yui/3/">YUI 3.0</a> is shaping up. As an ex-yahoo who is now using JQuery I feel it&#8217;s looking to have addressed some the things that other people have always criticised. Having used YUI 2 at Yahoo I never found the verbose namespacing that much of an issue but having now using JQuery I can kind of see what people were talking about. This is very much a thing of the past with YUI 3. Also something that I&#8217;ve struggled with using JQuery is that it&#8217;s such an abstraction. I tend to use JQuery for the stuff it does really well like selectors and events (JQuery&#8217;s event implementation is very simple and clear) but use standard JavaScript for most other things. YUI 3.0 sticks to making it&#8217;s interface follow existing JavaScript interfaces much more closely, whilst adding necessary features such as CSS selectors. Although I&#8217;ve yet to play with it I&#8217;m looking forward to trying it out, as I&#8217;m pretty sure I&#8217;m going to like it.</p>
<p>Afterwards Cyril, Tristan and Ben and I headed out for the second mexican of the day; it was like a marketplace team re-union sans fondue! (We made up for that later!).</p>
<h3>DjangoCon Preparation</h3>
<p>On the Friday (Evil)Rob, Cyril and I headed over to the GooglePlex , where we were taken on a tour of the facilities and met with the Open Source team. My take on the Googleplex is that it&#8217;s awesome but at the same time scary, because it&#8217;s clear that the intention is to provide everything so Google becomes the hub of every day. Still with facilities like that you&#8217;re going to want to work long hours!</p>
<h3>DjangoCon Day One</h3>
<p>After helping out on the registration desk we caught Guido&#8217;s talk about AppEngine and it sounds like in the future it&#8217;s going to be possible to get Django&#8217;s ORM talking to BigTable directly which would be fantastic. It was also interesting to see Guido&#8217;s code review app which I got some pictures of someone has ported this to standard Django app and I hope they post details at some point.</p>
<p>Adrian Holovaty&#8217;s presentation on the history of Django was really interesting. It really proved the idea of putting something together and then iterating on it.</p>
<p>Christian Hammond and David Trowbridge talked about ReviewBoard and their utility apps Djblets. Really liked the look of the Djblet called siteconfig. It&#8217;s basically a way to create an interface for Django settings. Review Board itself is something I&#8217;ve been meaning to play with, Cyril asked the question I&#8217;d wanted to ask which was, is there support for bazaar and apparently there is. Excellent!</p>
<p>Malcolm Treddinnick&#8217;s talk about the Django ORM was really impressive, mainly it made it really clear how much effort has gone into the queryset refactoring. Also it came across that the ORM is much more flexible when it comes to creating custom query methods something which was borne out by the next presentation.</p>
<p>Justin Bronn talked about his project GeoDjango. GeoDjango takes your breath away as it&#8217;s got support for a huge range of geo formats and standards and it makes some truly astonishing things possible. What I didn&#8217;t realise is tha GeoDjango uses Geo Queryset methods to perform spatial operations with spatial databases such as PostGIS. An example was shown of an imported dataset of all of the states in the US which had been mapped as polygons. Justin <a href="http://flickr.com/photos/muffinresearch/2837490653/">demonstrated in the admin</a> how it&#8217;s possible to change the co-ordinates of the polygon through a draggable interface and save it. All kinds of queries can be made to find where objects intersect or whether they&#8217;re contained within a boundary etc. Brilliant work.</p>
<p>To close day one, Cal Henderson gave an brilliant presentation on &#8220;Why he hates Django&#8221;. It was mostly a massive piss-take but with some serious points thrown in, and really covered a lot of areas in Django that are no-doubt going to be addressed at some point in the future.<br />
<img src="http://muffinresearch.co.uk/i/cal-djangocon.jpg" alt="Cal Henderson" /></p>
<h3>Day Two</h3>
<p>I saw Mark Ramm talk about what Django could learn from Zope. I thought there were some interesting points made. The main one though is just the general point that the Django community shouldn&#8217;t become blinkered and should look to benefit where possible from other work within the Python Web development community.</p>
<p>Malcolm&#8217;s talk on Code and patch design was good - he cut right to the point on what&#8217;s needed to make a good contribution and pretty much everything he said was common sense.</p>
<p>The Django Success stories was quite interesting as it really focussed on practical things that people had learnt using Django in their work and I think as a general point some of the most interesting stuff learned from attending DjangoCon came from hearing about what people are building with Django. Definitely should be more of that at future DjangoCons.</p>
<p>Lastly after a live eposide of TWiD, Adrian and Jacob hosted a session to close DjangoCon to cover what&#8217;s going to be happening in the future. After detailing their recommendations they opened up to the audience to make their &#8220;I want a Pony&#8221; requests. Utimately Django&#8217;s future is looking really good and I came away from the whole event pleased about the direction it&#8217;s all going in and looking forward to be able to contribute back to the project in whatever way possible. </p>
<p>Well done to <a href="http://www.siudesign.co.uk/">Rob</a> for all his efforts in putting together the conference. Google also did an amazing job of hosting it and I&#8217;m looking forward to the next one.</p>
<p><img src="http://muffinresearch.co.uk/i/djangocon-love.jpg" alt="spreading the love" /></p>
<h3>San Francisco</h3>
<p>With DjangoCon over I took a couple of days to visit San Francisco where I caught up with Ben and Cyril for a great meal at Spork after spending a bit of time in the Haight seeing the <a href="http://flickr.com/photos/muffinresearch/2842433952/">Grateful Dead house</a> and buying a load of awesome Deadhead stickers etc!</p>
<p>I also enjoyed an <a href="http://tinyurl.com/46e3yl">epic walk from the centre of the city out to the Golden Gate bridge</a> prior to meeting up with some Yahoo&#8217;s for Fondue at San Mateo. I made sure to take the chance to sample several of the city&#8217;s finest coffee shops including checking out the <a href="http://flickr.com/photos/muffinresearch/2841592529/">Japanese Syphon bar at the Blue Bottle</a>. San Francisco is awesome and I hope that I can visit again soon!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=PLYzL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=PLYzL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=X4tpL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=X4tpL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=GzQPL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=GzQPL" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/396590828" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/09/18/djangocon-2008/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F09%2F18%2Fdjangocon-2008%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/09/18/djangocon-2008/</feedburner:origLink></item>
		<item>
		<title>VMware Server: Convert Fixed Disk-images to Growable</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/396518275/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/09/18/vmware-server-convert-fixed-disk-images-to-growable/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 20:00:27 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=395</guid>
		<description>Quick tip if you ever want to convert from a fixed disk image to an expandable one then the following command should do it:
sudo vmware-vdiskmanager -r source.vmdk -t 0 expandable.vmdk
Just replace &amp;#8220;source&amp;#8221; and &amp;#8220;expandable&amp;#8221; with your disk image file names. For more on what vmware-vdiskmanager can do for you type vmware-vdiskmanager -h</description>
			<content:encoded><![CDATA[<p>Quick tip if you ever want to convert from a fixed disk image to an expandable one then the following command should do it:</p>
<p><code>sudo vmware-vdiskmanager -r source.vmdk -t 0 expandable.vmdk</code></p>
<p>Just replace &#8220;source&#8221; and &#8220;expandable&#8221; with your disk image file names. For more on what vmware-vdiskmanager can do for you type <code>vmware-vdiskmanager -h</code></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=j9OJL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=j9OJL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=xwe8L"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=xwe8L" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=5CkqL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=5CkqL" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/396518275" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/09/18/vmware-server-convert-fixed-disk-images-to-growable/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F09%2F18%2Fvmware-server-convert-fixed-disk-images-to-growable%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/09/18/vmware-server-convert-fixed-disk-images-to-growable/</feedburner:origLink></item>
		<item>
		<title>SVN Tip: Get List of Files Changed Between Revisions</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/393275814/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/09/15/svn-tip-get-list-of-files-changed-between-revisions/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 15:05:16 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=394</guid>
		<description>svn diff -r REVNO:HEAD --summarize
Just replace REVNO with the start revision and HEAD with the end revision if you don&amp;#8217;t want it to be the latest revision.</description>
			<content:encoded><![CDATA[<p><code>svn diff -r REVNO:HEAD --summarize</code></p>
<p>Just replace REVNO with the start revision and HEAD with the end revision if you don&#8217;t want it to be the latest revision.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=rAOjL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=rAOjL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=Tq4LL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=Tq4LL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=KcbeL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=KcbeL" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/393275814" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/09/15/svn-tip-get-list-of-files-changed-between-revisions/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F09%2F15%2Fsvn-tip-get-list-of-files-changed-between-revisions%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/09/15/svn-tip-get-list-of-files-changed-between-revisions/</feedburner:origLink></item>
		<item>
		<title>Leopard Bug - Screensaver causes coreservicesd to crash</title>
		<link>http://feeds.feedburner.com/~r/muffinresearch/~3/381346606/</link>
		<comments>http://muffinresearch.co.uk/archives/2008/09/02/leopard-bug-screensaver-causes-coreservicesd-to-crash/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 13:06:14 +0000</pubDate>
		<dc:creator>Stuart Colville</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://muffinresearch.co.uk/?p=391</guid>
		<description>I&amp;#8217;ve just found a fix to an annoying issue. I have a keystroke set to activate the screensaver and the lock the screen of my work MacBook Pro via an applescript. I was recently finding when I came back from lunch the system is pretty much dying on it&amp;#8217;s feet. I started poking around the [...]</description>
			<content:encoded><![CDATA[<p>I&#8217;ve just found a fix to an annoying issue. I have a keystroke set to activate the screensaver and the lock the screen of my work MacBook Pro via an applescript. I was recently finding when I came back from lunch the system is pretty much dying on it&#8217;s feet. I started poking around the system logs and googling some of the error message which all seemed to be related to coreservicesd.</p>
<p>From this post <a href="http://www.macosxhints.com/article.php?story=20071102105927735">http://www.macosxhints.com/article.php?story=20071102105927735</a> I found the cause of the issue is that a second instance of the screensaver will kick in at the interval set-up in sys prefs despite the screensaver having already been manually activated when I lock the screen.</p>
<p>The solution for this is to activate the screensaver via an automator script as the link above describes. What I&#8217;ve done is to set the activation of the screensaver to never happen so that I always activate it manually.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/muffinresearch?a=sm7rxL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=sm7rxL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=qHjGIL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=qHjGIL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/muffinresearch?a=gUIczL"><img src="http://feeds.feedburner.com/~f/muffinresearch?i=gUIczL" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/muffinresearch/~4/381346606" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://muffinresearch.co.uk/archives/2008/09/02/leopard-bug-screensaver-causes-coreservicesd-to-crash/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=muffinresearch&amp;itemurl=http%3A%2F%2Fmuffinresearch.co.uk%2Farchives%2F2008%2F09%2F02%2Fleopard-bug-screensaver-causes-coreservicesd-to-crash%2F</feedburner:awareness><feedburner:origLink>http://muffinresearch.co.uk/archives/2008/09/02/leopard-bug-screensaver-causes-coreservicesd-to-crash/</feedburner:origLink></item>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=muffinresearch</feedburner:awareness></channel>
</rss>
