<?xml version="1.0" encoding="ISO-8859-1" ?><rss version="0.92">
<channel>
<title>For All / There Exists</title>
<link>http://new.jamesjoycewaskorean.com/</link>
<description>Our logic is full of holes ... I can see the bubbles</description>
<language>en-gb</language>
<item>
<title>You have fallen in love with me....</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20120119021548</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20120119021548</guid>
<author>Rob Mitchelmore</author>
<pubDate>Thu, 19 Jan 2012 02:15:48 +0000</pubDate>
<description>&lt;a name=&quot;20120119021548&quot;&gt;&lt;/a&gt;You have fallen in love with me.&lt;br&gt;To the wind shall I scatter you.&lt;br&gt;Listen to me.&lt;br&gt;I warn you now, build up no hopes,&lt;br&gt;Believe me, I shall destroy you.&lt;br&gt;Listen to me.&lt;p&gt;If, like the bee and the ant, you now&lt;br&gt;Were to build two hundred houses,&lt;br&gt;Oh, I shall still make you homeless,&lt;br&gt;Oh, I shall still make you lonely.&lt;br&gt;Listen to me.&lt;p&gt;For me, you are like a dead bird&lt;br&gt;Held in my hand, at hunting time.&lt;br&gt;And I, the hunter, will make you&lt;br&gt;A lure for all the other birds.&lt;br&gt;Listen to me.&lt;p&gt;You are guardian of a treasure,&lt;br&gt;Oh, just like a sleeping serpent,&lt;br&gt;And you shall see; I shall make you&lt;br&gt;Spin around like that sleepy snake.&lt;br&gt;Listen to me.&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Rumi&lt;/div&gt;&lt;br&gt;</description>
</item>
<item>
<title>On All Souls Day</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20111101015839</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20111101015839</guid>
<author>Rob Mitchelmore</author>
<pubDate>Tue, 01 Nov 2011 01:58:39 +0000</pubDate>
<description>&lt;a name=&quot;20111101015839&quot;&gt;&lt;/a&gt;&lt;b&gt;On All Souls Day&lt;/b&gt;&lt;p&gt;Last night they lit your glass with wine &lt;br&gt;And brought for you the sweet soul-cake, &lt;br&gt;And blessed the room with candle-shine &lt;br&gt;For the grave journey you would make.&lt;p&gt;They told me not to stir between &lt;br&gt;The midnight strokes of one and two, &lt;br&gt;And I should see you come again &lt;br&gt;To view the scene that once you knew.&lt;p&gt;&quot;Good night,&quot; they said, and journeyed on. &lt;br&gt;I turned the key, and - turning - smiled, &lt;br&gt;And in the quiet house alone &lt;br&gt;I slept serenely as a child.&lt;p&gt;Innocent was that sleep, and free, &lt;br&gt;And when the first of morning shone &lt;br&gt;I had no need to gaze and see &lt;br&gt;If crumb, or bead of wine, had gone.&lt;p&gt;My heart was easy as this bloom &lt;br&gt;Of waters rising by the bay. &lt;br&gt;I did not watch where you might come, &lt;br&gt;For you had never been away. &lt;br&gt;For you have never been away.&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Charles Causley, from &lt;i&gt;Words for All Seasons&lt;/i&gt;&lt;/div&gt;&lt;br&gt;</description>
</item>
<item>
<title>Using OpenLayers with PhoneGap on iOS: On iOS, the web view that PhoneGap provides doesn't handle ab...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20110908150931</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20110908150931</guid>
<author>Rob Mitchelmore</author>
<pubDate>Thu, 08 Sep 2011 15:09:31 +0100</pubDate>
<description>&lt;a name=&quot;20110908150931&quot;&gt;&lt;/a&gt;&lt;b&gt;Using OpenLayers with PhoneGap on iOS:&lt;/b&gt; On iOS, the web view that PhoneGap provides doesn't handle about:blank.  I was playing with OpenLayers and this caused the map to just not appear and the following error to appear in the console:&lt;p&gt;&lt;blockquote&gt;PhoneGapDelegate::shouldStartLoadWithRequest: Received Unhandled URL about:blank&lt;br&gt;&lt;/blockquote&gt;&lt;p&gt;To fix this is a two-step procedure (one which will work for other things which require about:blank, too).  &lt;b&gt;Firstly&lt;/b&gt;, create an html file in the &lt;i&gt;www&lt;/i&gt; folder called &lt;i&gt;blank.html&lt;/i&gt;, which contains something along the lines of:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;Secondly&lt;/b&gt;, look in the &lt;i&gt;AppDelegate.m&lt;/i&gt; class under the &lt;i&gt;Classes&lt;/i&gt; group in your Xcode project.  There will be a method which looks like this:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;objc&quot;&gt;- &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;BOOL&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;webView:&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;UIWebView *&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;theWebView shouldStartLoadWithRequest:&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURLRequest.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURLRequest&lt;/span&gt;&lt;/a&gt; *&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;request navigationType:&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;UIWebViewNavigationType&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;navigationType&lt;br /&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt; super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This method is where one is able to rewrite requests on their way through.  To rewrite about:blank to point to the &lt;i&gt;blank.html&lt;/i&gt; file, it is first necessary to find the path to the &lt;i&gt;www&lt;/i&gt; folder and thus to &lt;i&gt;blank.html&lt;/i&gt;:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;objc&quot;&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSString.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSString&lt;/span&gt;&lt;/a&gt;* app = &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSBundle.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSBundle&lt;/span&gt;&lt;/a&gt; mainBundle&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; resourcePath&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSString.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSString&lt;/span&gt;&lt;/a&gt;* blankpath = &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSString.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSString&lt;/span&gt;&lt;/a&gt; stringWithFormat: @&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;%@/www/blank.html&amp;quot;&lt;/span&gt;, app&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURL.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURL&lt;/span&gt;&lt;/a&gt;* blankurl = &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURL.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURL&lt;/span&gt;&lt;/a&gt; fileURLWithPath:blankpath&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;And then to generate a new, empty request to pass through to about:blank.  As about:blank should literally be that and shouldn't attempt any processing, one doesn't need to worry too much about loss of state.&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;objc&quot;&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURLRequest.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURLRequest&lt;/span&gt;&lt;/a&gt;* req = &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURLRequest.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURLRequest&lt;/span&gt;&lt;/a&gt; requestWithURL: blankurl&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Thus, the whole method should look like:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;objc&quot;&gt;- &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;BOOL&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;webView:&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;UIWebView *&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;theWebView shouldStartLoadWithRequest:&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURLRequest.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURLRequest&lt;/span&gt;&lt;/a&gt; *&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;request navigationType:&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;UIWebViewNavigationType&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;navigationType&lt;br /&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURLRequest.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURLRequest&lt;/span&gt;&lt;/a&gt;* req = request;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;request URL&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; absoluteString&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; isEqualToString: @&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;about:blank&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSLog&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;@&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;Rewriting about:blank&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSString.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSString&lt;/span&gt;&lt;/a&gt;* app = &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSBundle.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSBundle&lt;/span&gt;&lt;/a&gt; mainBundle&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; resourcePath&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSString.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSString&lt;/span&gt;&lt;/a&gt;* blankpath = &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSString.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSString&lt;/span&gt;&lt;/a&gt; stringWithFormat: @&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;%@/www/blank.html&amp;quot;&lt;/span&gt;, app&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURL.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURL&lt;/span&gt;&lt;/a&gt;* blankurl = &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURL.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURL&lt;/span&gt;&lt;/a&gt; fileURLWithPath:blankpath&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; req = &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSURLRequest.html&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;NSURLRequest&lt;/span&gt;&lt;/a&gt; requestWithURL: blankurl&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt; super webView:theWebView shouldStartLoadWithRequest:req navigationType:navigationType &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This should allow web components that rely on about:blank to work correctly.  It's trivial to extend this to make any about: url return a blank page - change the &lt;tt&gt;if()&lt;/tt&gt; line to use the &lt;tt&gt;hasPrefix:&lt;/tt&gt; selector:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;objc&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;request URL&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; absoluteString&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; hasPrefix: @&lt;span style=&quot;color: #666666;&quot;&gt;&amp;quot;about:&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt; ...&lt;/div&gt;&lt;/div&gt;&lt;br&gt;</description>
</item>
<item>
<title>Luminous Experience of a Brain Scan: (from &quot;The Secret Reader&quot;)</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20110819213745</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20110819213745</guid>
<author>Rob Mitchelmore</author>
<pubDate>Fri, 19 Aug 2011 21:37:45 +0100</pubDate>
<description>&lt;a name=&quot;20110819213745&quot;&gt;&lt;/a&gt;&lt;b&gt;Luminous Experience of a Brain Scan:&lt;/b&gt; (from &lt;i&gt;&quot;The Secret Reader&quot;&lt;/i&gt;)&lt;p&gt;&lt;blockquote&gt;An hour ago the nurse shot technetium&lt;br&gt;into my arm.  At last this human mud&lt;br&gt;is light itself - no eye seeking a crumb&lt;br&gt;of mystery elsewhere.  Radioactive blood.&lt;br&gt;Rigid I press my face against a screen&lt;br&gt;and gamma rays reveal the pilgrimage&lt;br&gt;through every catacomb, scanning unseen&lt;br&gt;vessels and deadly pools.  A squiggly page&lt;br&gt;shows me inside: ravines of fear, a hill&lt;br&gt;of wordy hope, a squawking bumpy map&lt;br&gt;of love, the starry motorcycle spill.&lt;br&gt;&quot;Nurse, what news from my inner tree of night?&quot;&lt;br&gt;&quot;You're scintillating!&quot; But the glowing sap&lt;br&gt;can't see itself.  Only the mind sees light.&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Willis Barnstone&lt;/div&gt;&lt;br&gt;</description>
</item>
<item>
<title>I've been thinking about people being tricked into doing things by web pages.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20110723143628</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20110723143628</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 23 Jul 2011 14:36:28 +0100</pubDate>
<description>&lt;a name=&quot;20110723143628&quot;&gt;&lt;/a&gt;I've been thinking about people being tricked into doing things by web pages.&lt;p&gt;How about a sort of &lt;b&gt;distance metric&lt;/b&gt; from user decisions to help filter out things like the idiot FaceBook video spam that's been going around?&lt;p&gt;I warn you: this is currently on an incredibly vague conceptual level.&lt;p&gt;Let's take a webapp as an example, with a number of widgets that have onClick handlers; and let's say that some lovely lovely person has worked out how to exploit some XSS hole in order to programatically simulate a series of user actions to - for example - spam all their friends.&lt;p&gt;So - how about each time an actual UI event (or at least a UI event generated by partially trusted code, such as the kernel mouse driver, or something authorised to send messages between applications [1]) occurs, we set a dynamically scoped variable which nothing can ever increment to be 1.0; and then each time an event takes place which deals with alters the user-visible context [2], it gets halved.  So - a piece of Javascript that loads a new page, fills in a form then submits it generates a distance from agency of about 0.25, compared to 1.0 if the form submission directly results from the click, and 0.5 if there's one piece of JavaScript in the way.&lt;p&gt;This metric is then sent back with every HTTP request.&lt;p&gt;Thoughts?  I know this is hopelessly naive, but it may be a starting point worth examining?&lt;p&gt;[1] I know this is ducking the problem slightly, but it's a thought experiment, dammit!&lt;p&gt;[2] Obvious examples: anything that causes a reload or relocation of the window; anything that changes the DOM; anything that  performs an action on a user's behalf.&lt;br&gt;</description>
</item>
<item>
<title>Ophelia in the frozen river: you breathe and the soundless bubbles are trapped beneath the cold surf...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20110709140753</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20110709140753</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 09 Jul 2011 14:07:53 +0100</pubDate>
<description>&lt;a name=&quot;20110709140753&quot;&gt;&lt;/a&gt;&lt;b&gt;Ophelia in the frozen river:&lt;/b&gt; you breathe and the soundless bubbles are trapped beneath the cold surface.  They burst inconsequentially, all soaked in half-hidden revelation.  You are covered in leaves: &quot;There's rosemary, that's for remembrance.   Pray you, love, remember.&quot;  There's Salvia.  That's against sanity.  Fingertips melt the surface, but there's no arguing with ice.  There's Yew, that's for churchyards.  Your face is white, and close, and far.&lt;p&gt;The far-flung eyes of Orion are closer than you are to living breath.  On a winter's night steam from my lips can reach upwards and make them shiver.  I have spent hoarfrost midnights singing to Jupiter rising, and he has moved across my sky to reach me.  But breath cannot fight winter; warmth cannot fight cold; and a single momentary presence from which you turned away cannot fight a defined absence.  Entropy is the last dance spoken, in the greatest and the least; and if you drift away from me in complex currents, your hair caught and fractal with the weed, I can do nothing, not even follow.&lt;p&gt;Here's ash.&lt;p&gt;I would cut into living stems to find you, curled up like a pearl, in the seed-pod of a poppy, and bring you back.  A ghost in the rings of an oak; a conversation I had with a distant autumn morning, 4 AM and sodium.  I would have come to you or brought you home or filled your heart with grammatical dreams, had you let me.  But you are Ophelia in the frozen river; your silences are your ice, and your flowers.&lt;br&gt;</description>
</item>
<item>
<title>A hallucination: The floor tears like paper and he screams.  Every change in tone becomes another mo...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20101013190346</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20101013190346</guid>
<author>Rob Mitchelmore</author>
<pubDate>Wed, 13 Oct 2010 19:03:46 +0100</pubDate>
<description>&lt;a name=&quot;20101013190346&quot;&gt;&lt;/a&gt;&lt;b&gt;A hallucination:&lt;/b&gt; The floor tears like paper and he screams.  Every change in tone becomes another mouth as it leaves his, and they float around him like moths with lips cold, feathery and hungry.  One takes a hefty bite from just below his left eyesocket.  He jolts, but one of his ody remains where it was, and another follows his proprioception upwards and then cannot re-merge, so his back is lying on his torso, and his heads lie next to each other.  He slides towards the rip in the floor which is now the wall through which a dark wind blows in C minor, withering the tiny sweet golden meanings which had fruited from the cactus by the side of the bed.  He reaches up with one of his four arms and hurls a notebook at the circling lips; they gibber and vomit onto its pages reams of aromatic blasphemy, then devour the cactus and one of his spatial dimensions, so he is trapped flat against the wall.  He feels it rip, again, behind him.  He lets out a howl as heavy as Jupiter.  His heart hiccoughs.&lt;br&gt;</description>
</item>
<item>
<title>A new poem - a ghazal: &quot;Quiet&quot;.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20100215231348</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20100215231348</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 15 Feb 2010 23:13:48 +0000</pubDate>
<description>&lt;a name=&quot;20100215231348&quot;&gt;&lt;/a&gt;&lt;b&gt;A new poem - a ghazal: &quot;Quiet&quot;.&lt;/b&gt;&lt;p&gt;&lt;blockquote&gt;Bright laughter of the river in this quiet;&lt;br&gt;He dangles feet in water, in his quiet.&lt;p&gt;The thin and frozen mist, the morning light;&lt;br&gt;The calls of homebound geese in breathless quiet.&lt;p&gt;My Lady wears her clothes of words well-ironed;&lt;br&gt;Language is the robe she wears, Miss Quiet.&lt;p&gt;A Godly silence; limestone in the night,&lt;br&gt;Electric blue and golden stained-glass quiet.&lt;p&gt;We trip the light syntactic, waves down fibre;&lt;br&gt;A solitude of numbers, pulses, quiet.&lt;p&gt;Rob is an abstraction, bits and bytes:&lt;br&gt;Water, Carbon, Iron.  Noise, hiss, quiet.&lt;/blockquote&gt;&lt;p&gt;A ghazal is a poetic form which generally explores themes of love and loss in a set of disjoint couplets joined by a common refrain and rhyme.  See &quot;Ravishing Disunities: Real Ghazals in English&quot; for more details on the form and some better-written English ghazals.&lt;br&gt;</description>
</item>
<item>
<title>Java should not look like this: code from the undergraduate archive.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20091105141341</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20091105141341</guid>
<author>Rob Mitchelmore</author>
<pubDate>Thu, 05 Nov 2009 14:13:41 +0000</pubDate>
<description>&lt;a name=&quot;20091105141341&quot;&gt;&lt;/a&gt;&lt;b&gt;Java should not look like this:&lt;/b&gt; &lt;i&gt;code from the undergraduate archive&lt;/i&gt;.&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;java&quot;&gt;&lt;span style=&quot;color: #990000&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #990000&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; s&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; a, &lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; sd&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; b=&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;, ds = sd, dsa = &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;sd!= &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt; ? &lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AMath+java.sun.com&amp;amp;bntI=I%27m%20Feeling%20Lucky&quot;&gt;&lt;span style=&quot;color: #aaaadd; font-weight: bold;&quot;&gt;Math&lt;/span&gt;&lt;/a&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;abs&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;sd&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; : &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;ds=&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;, f=&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// assume 0 is positive&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; d=&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;; d &amp;lt; a.&lt;span style=&quot;color: #006600;&quot;&gt;length&lt;/span&gt;; d++&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; b = &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;a&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;d&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; &amp;gt;&amp;nbsp; b ? a&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;d&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; : b&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; c = &lt;span style=&quot;color: #990000&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;b&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;, e = &lt;span style=&quot;color: #990000&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;a.&lt;span style=&quot;color: #006600;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; d=&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;; d &amp;lt; a.&lt;span style=&quot;color: #006600;&quot;&gt;length&lt;/span&gt;; d++&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; c&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;d&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;-1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;++;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; d=&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;sd &amp;lt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt; ? b&lt;span style=&quot;color: #cc66cc;&quot;&gt;-1&lt;/span&gt; : &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;sd &amp;lt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt; ? d &amp;gt;= &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt; : d &amp;lt; b&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;; d+=&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;ds/dsa&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;while&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;d&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; &amp;gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;e&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;f++&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;=d&lt;span style=&quot;color: #cc66cc;&quot;&gt;+1&lt;/span&gt;; c&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;d&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;--;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #990000&quot;&gt;return&lt;/span&gt; e;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;</description>
</item>
<item>
<title>A vision of the end of the world on the aeroplane to Arlanda: British Airways' GPS screen just showi...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20090921005422</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20090921005422</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 21 Sep 2009 00:54:22 +0100</pubDate>
<description>&lt;a name=&quot;20090921005422&quot;&gt;&lt;/a&gt;&lt;b&gt;A vision of the end of the world on the aeroplane to Arlanda&lt;/b&gt;: British Airways' GPS screen just showing a blue screen with NORTH SEA in the middle of it; and outside only clouds, so all that could be seen was a bright featureless luminous whiteness, cutting the world inside the fuselage off completely from the world outside it. Maybe the end will come as an all-pervading luminous mist, thicker and thicker, dividing everything from everything else until one is alone; and then dividing oneself from oneself, part by part, in reducing awareness until there is no self left to experience, and no world left outside for it to experience either.&lt;br&gt;</description>
</item>
<item>
<title>A brief review of the final of the tournament BWC season held in Waltham Chase on Sunday 30th August...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20090917123806</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20090917123806</guid>
<author>Rob Mitchelmore</author>
<pubDate>Thu, 17 Sep 2009 12:38:06 +0100</pubDate>
<description>&lt;a name=&quot;20090917123806&quot;&gt;&lt;/a&gt;&lt;b&gt;A brief review of the final of the tournament BWC season&lt;/b&gt; held in Waltham Chase on Sunday 30th August 2009.&lt;p&gt;Final scores were:&lt;p&gt;&lt;table cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td class=&quot;row1h&quot;&gt;Rob Mo&lt;/td&gt;&lt;td class=&quot;row1b&quot;&gt;nil &lt;i&gt;but enlightened.  Drawn on by himself.&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;row2h&quot;&gt;Ian&lt;/td&gt;&lt;td class=&quot;row2b&quot;&gt;269+6&lt;i&gt;i&lt;/i&gt;.  &lt;i&gt;Drawn on by Rob Mo.  Lactose intolerant.&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;row1h&quot;&gt;Toby&lt;/td&gt;&lt;td class=&quot;row1b&quot;&gt;96+6&lt;i&gt;i&lt;/i&gt;-5&lt;i&gt;j&lt;/i&gt;.  &lt;i&gt;Drawn on by Rob Mo while gloved.&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;row2h&quot;&gt;Rob Mi&lt;/td&gt;&lt;td class=&quot;row2b&quot;&gt;483+6&lt;i&gt;i&lt;/i&gt;.  &lt;i&gt;Wearing one sock due to iconoclasm.  Half a king.&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;row1h&quot;&gt;Jimmy&lt;/td&gt;&lt;td class=&quot;row1b&quot;&gt;5+7&lt;i&gt;i&lt;/i&gt; &lt;i&gt;but +8 against rodents.&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;row2h&quot;&gt;Emma&lt;/td&gt;&lt;td class=&quot;row2b&quot;&gt;2-765&lt;i&gt;i&lt;/i&gt;. &lt;i&gt;Underwent 90 degree rotation.&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;row1h&quot;&gt;Richard&lt;/td&gt;&lt;td class=&quot;row1b&quot;&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;Some game highlights:&lt;p&gt;&lt;ul&gt;&lt;li&gt;The integer &lt;b&gt;5&lt;/b&gt; was declared not prime.  &lt;b&gt;4&lt;/b&gt; was later declared prime in its place.&lt;/li&gt;&lt;li&gt;There were &lt;b&gt;3 value axes in play&lt;/b&gt;: one complex plane and one auxiliary integer axis.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Iconoclasm&lt;/b&gt; was in play.&lt;/li&gt;&lt;li&gt;Richard scored &lt;b&gt;4 points&lt;/b&gt; despite &lt;i&gt;not actually playing the game&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Rob Mo was under &lt;b&gt;Squirrel Attack&lt;/b&gt; in the latter stages of the game.&lt;/li&gt;&lt;li&gt;Rob Mo was &lt;b&gt;Zen&lt;/b&gt; in the latter stages of the game.&lt;/li&gt;&lt;li&gt;Jimmy was awarded &lt;b&gt;8 points for style, 2 for technique&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Emma played &lt;b&gt;Jason Donovan&lt;/b&gt;, but at 90 degrees to the horizontal.&lt;/li&gt;&lt;li&gt;Ian introduced the &lt;b&gt;&lt;i&gt;j&lt;/i&gt; value axis&lt;/b&gt; at the end of the game.&lt;/li&gt;&lt;li&gt;Toby wore a pair of &lt;b&gt;famous gloves&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Rob Mi had the &lt;b&gt;Eschaton&lt;/b&gt; immanentised beneath him by Rob Mo.&lt;/li&gt;&lt;li&gt;All players ended up on the &lt;b&gt;Circle Line&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;</description>
</item>
<item>
<title>Quick demo of authentication against WHMCS 4.0 (&quot;Loginshare&quot;): In WHCMS 4.0 the authentication schem...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20090707104251</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20090707104251</guid>
<author>Rob Mitchelmore</author>
<pubDate>Tue, 07 Jul 2009 10:42:51 +0100</pubDate>
<description>&lt;a name=&quot;20090707104251&quot;&gt;&lt;/a&gt;&lt;b&gt;Quick demo of authentication against WHMCS 4.0 (&lt;i&gt;&quot;Loginshare&quot;&lt;/i&gt;):&lt;/b&gt; In WHCMS 4.0 the authentication scheme changed to use MD5 passwords, which promptly broke software that authenticates against it.  Now, when you query client details using the getclientdetails call, you get a password hash which looks something like&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;+----------------------------------------+&lt;br&gt;| password                               |&lt;br&gt;+----------------------------------------+&lt;br&gt;| fa91985ac8a79a2b0a308fc816353867:!BJK! | &lt;br&gt;+----------------------------------------+&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is a two-part hash; the part before the colon is an MD5 hash, the part after the colon is a salt.  To verify a user's password, take the password they have given in the login form, prepend the salt to it, and then take the MD5 of the result.  If the MD5 hashes match, then authentication is successful.&lt;p&gt;&lt;i&gt;Remember that different users have different salts!&lt;/i&gt;&lt;p&gt;Example code:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// This actually needs to come from getclientdetails from the WHMCS API&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$hash_from_whmcs&lt;/span&gt; = &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;fa91985ac8a79a2b0a308fc816353867:!BJK!&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$password&lt;/span&gt; = &lt;span style=&quot;color: #0000ff;&quot;&gt;$_POST&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// Split on the colon, concatenate and hash:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$parts&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/explode&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;explode&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;:&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$hash_from_whmcs&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$newhash&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/md5&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;md5&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$parts&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; . &lt;span style=&quot;color: #0000ff;&quot;&gt;$password&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$newhash&lt;/span&gt; == &lt;span style=&quot;color: #0000ff;&quot;&gt;$parts&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.php.net/print&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;print&lt;/span&gt;&lt;/a&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Well done, you can remember your password.&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.php.net/print&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;print&lt;/span&gt;&lt;/a&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;You are either amnesiac or an impostor, go away.&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;</description>
</item>
<item>
<title>Things that are not going to be released from the &quot;In Shadow&quot;/TS2 studio marathon:The Jazz versio...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20090415105330</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20090415105330</guid>
<author>Rob Mitchelmore</author>
<pubDate>Wed, 15 Apr 2009 10:53:30 +0100</pubDate>
<description>&lt;a name=&quot;20090415105330&quot;&gt;&lt;/a&gt;&lt;b&gt;Things that are not going to be released&lt;/b&gt; from the &quot;In Shadow&quot;/TS2 studio marathon:&lt;p&gt;&lt;ul&gt;&lt;li&gt;The Jazz version of Recessional.&lt;/li&gt;&lt;li&gt;&quot;Billy Jean&quot; arranged badly for bass and tenor recorders and bass.&lt;/li&gt;&lt;li&gt;&quot;We Like Knitting&quot; - a rap track in which Paul expounds his philosophy of knitting and gives an emotional rendition of a knitting pattern.&lt;/li&gt;&lt;li&gt;Some political prisoner or other who just sat in the corner and sulked all weekend.&lt;/li&gt;&lt;/ul&gt;</description>
</item>
<item>
<title>An approximation to beauty: sitting in Arlanda airport, watching the snow fall over the aeroplanes a...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20081122022916</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20081122022916</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 22 Nov 2008 02:29:16 +0000</pubDate>
<description>&lt;a name=&quot;20081122022916&quot;&gt;&lt;/a&gt;&lt;b&gt;An approximation to beauty:&lt;/b&gt; sitting in Arlanda airport, watching the snow fall over the aeroplanes and the lights move on the vehicles, listening to Kodaly's &lt;i&gt;Laudes Organi&lt;/i&gt; very loudly.&lt;br&gt;</description>
</item>
<item>
<title>Oh to walk my way with kindness,...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20080924011900</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20080924011900</guid>
<author>Rob Mitchelmore</author>
<pubDate>Wed, 24 Sep 2008 01:19:00 +0100</pubDate>
<description>&lt;a name=&quot;20080924011900&quot;&gt;&lt;/a&gt;&lt;blockquote&gt;Oh to walk my way with kindness,&lt;br&gt;And not betray my life to a cloud of suspicions...&lt;br&gt;How I wish that someone would believe me,&lt;br&gt;How I wish that I could believe someone.&lt;p&gt;To triumph in an unequal battle,&lt;br&gt;To embrace with love both small and big,&lt;br&gt;How I wish that someone would believe me,&lt;br&gt;How I wish that I could believe someone.&lt;p&gt;Let the silence burst forth with fury&lt;br&gt;And the eternal noise die down for good...&lt;br&gt;How I wish that someone would believe me,&lt;br&gt;How I wish that I could believe someone.&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Hamo Sahyan&lt;/div&gt;&lt;br&gt;</description>
</item>
<item>
<title>IPMI polling on Dell PowerEdge R200s (and other Intel CPU rackmounts): polling the Dell PowerEdge R2...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20080408170129</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20080408170129</guid>
<author>Rob Mitchelmore</author>
<pubDate>Tue, 08 Apr 2008 17:01:29 +0100</pubDate>
<description>&lt;a name=&quot;20080408170129&quot;&gt;&lt;/a&gt;&lt;b&gt;IPMI polling on Dell PowerEdge R200s&lt;/b&gt; &lt;i&gt;(and other Intel CPU rackmounts)&lt;/i&gt;: polling the Dell PowerEdge R200 using IPMI-over-LAN, it may be surprising to find the 'Temp' sensor reporting comfortably arctic temperatures, low to the point of being sub-zero, and critical failure:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;Temp             | -52 degrees C     | cr&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In moderately recent time, Intel have taken to giving this temperature not as an absolute temperature, but have instead redefined the scale of Degrees Celsius so that it is measured relative to the &quot;melting point&quot; of the CPU.&lt;p&gt;Once this is compensated for, it should give the actual temperature of the machine.&lt;br&gt;</description>
</item>
<item>
<title>A partial solution to the Nokia N800 boot issue: there is a problem, or a family of related problems...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20080113142728</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20080113142728</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sun, 13 Jan 2008 14:27:28 +0000</pubDate>
<description>&lt;a name=&quot;20080113142728&quot;&gt;&lt;/a&gt;&lt;b&gt;A partial solution to the Nokia N800 boot issue&lt;/b&gt;: there is a problem, or a family of related problems in booting on the Nokia N800 linux tablet, where the tablet will not power on correctly when connected to a mains output and will not charge reliably - or at all.&lt;p&gt;The solution to this in some cases is to turn off extended virtual memory on the memory card (under &lt;i&gt;Control Panel&lt;/i&gt; - &lt;i&gt;Memory&lt;/i&gt;), as this appears to impact the way it 'boots' to go into charging mode.  Battery charging appears to be largely software-monitored and controlled.&lt;p&gt;Of course, this rather depends on the machine booting in the first place; in some cases the machine will boot intermittently (which sounds like a timing issue), if it does not then a solution may be to get hold of an offline, 'dumb' nokia battery charger to give the tablet battery an initial charge.&lt;p&gt;You may also find that removing the battery for a while helps.&lt;br&gt;</description>
</item>
<item>
<title>A peacock-like fan with each feather an ivy branch escher-tesselate; in the middle of each leaf a si...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20071203230559</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20071203230559</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 03 Dec 2007 23:05:59 +0000</pubDate>
<description>&lt;a name=&quot;20071203230559&quot;&gt;&lt;/a&gt;&lt;i&gt;A peacock-like fan with each feather an ivy branch escher-tesselate; in the middle of each leaf a single eye with slowly dilating pupil and all in the reds and golds of autumn.&lt;p&gt;Watching.&lt;/i&gt;&lt;br&gt;</description>
</item>
<item>
<title>The Apple Lisa Office System GUI: an exercise in digital arch&amp;aelig;ology.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20071002051130</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20071002051130</guid>
<author>Rob Mitchelmore</author>
<pubDate>Tue, 02 Oct 2007 05:11:30 +0100</pubDate>
<description>&lt;a name=&quot;20071002051130&quot;&gt;&lt;/a&gt;&lt;b&gt;The Apple Lisa Office System GUI: an exercise in digital arch&amp;aelig;ology.&lt;/b&gt;&lt;p&gt;&lt;i&gt;All screenshots have been produced with LisaEm, which incorrectly draws scroll bars.  This is an emulator issue and not an issue with the OS itself.  Apart from this glitch, the emulator seems to be stable and usable.&lt;/i&gt;&lt;p&gt;It is tempting to view the Apple Lisa Office System as a prototype for the Macintosh; this is not, however the case, as beneath its slightly clunkier visual appearance, it is certainly a more sophisticated operating system than the Macintosh System was intially, and in some ways a more sophisticated operating system than any version of the Macintosh System that was ever released.&lt;p&gt;In addition to the Lisa Office System, the Lisa hardware could run Xenix, (rumouredly) CP/M, and with the addition of MacWorks and a video modification, the Macintosh System.&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/lisa1.png&quot;&gt;&lt;p&gt;&lt;i&gt;The Lisa Office System desktop&lt;/i&gt;&lt;/center&gt;&lt;p&gt;The Lisa Office System provides a spatial graphical user interface.  The desktop is not a glorified folder, but a place for items in use to be put, more like the RISC OS pinboard.  Icons can be placed here for quick reference by dragging them from a folder window; alternatively, open documents can be 'set aside', which puts them onto the desktop in their unsaved state ready to be opened again later, or to be 'put away' back into their folder.&lt;p&gt;Windows in the Lisa system are far more strongly identified with their originating icon than even on the Macintosh.  The small icon corresponding to the originating icon is shown in the top left hand corner of each window, and to save changes and collapse the window back down to its originating icon, the small icon is double-clicked.  This is equivalent to choosing 'Save changes and put away' from the 'File/Print' menu.  When a document is opened, its document icon changes to the 'opened' state (on the Macintosh, this icon state could only be seen on folders and applications, because the one document to one window rule was abandoned).&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/lisa2.png&quot;&gt;&lt;p&gt;&lt;i&gt;The 'Walrus' document is open&lt;/i&gt;&lt;/center&gt;&lt;p&gt;The Lisa system is far more document-centred than the systems that replaced it; and it is fair to say that conceptually, the concept of an 'application' as a way of creating documents does not exist in the same way at all.  Every document must have a corresponding icon within the folder heirarchy; so there cannot be any such thing as an untitled document which does not yet have an on-disc presence (as a side-effect of this, there is no 'Save As' or anything like it, as this would mean that a window could become attached to a different icon in the course of its lifetime).&lt;p&gt;By the same token, there is no such thing as an active application; when a document's window is frontmost, the appropriate menus for that document are displayed, but there is no application launch or application switch.  It is worth noting that this is only possible because, unlike the Macintosh System, the Lisa Office System has true multi-tasking.&lt;p&gt;Documents must be created from a stationery pad (a concept which reappeared to some extent in System 7).  Each 'tool' provides an initial blank stationery pad (named 'LisaWrite Paper', 'LisaDraw Paper' etc.), and any document can be turned into a stationery pad by selecting 'Make Stationery Pad' from the 'File/Print' menu while the document's icon is selected.  When a stationery pad is double-clicked on, a new document icon is created next to it, named after the name of the stationery pad and the date.  This metaphor extends to folders too; initially, the 'Empty Folders' pad is used to create folders, and any folder can become a stationery pad.&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/lisa3.png&quot;&gt;&lt;p&gt;&lt;i&gt;Creating a new LisaWrite document&lt;/i&gt;&lt;/center&gt;&lt;p&gt;As an aside, the Lisa system does not appear to have any issue with having multiple files with the same name; and, conceptually, why should it?  If the icon is the window is the document, the file name is simply a label used as a memory aid by the user in association with the icon and the spatial position of the icon.&lt;p&gt;Documents and folders can be password-protected; the password is set from the 'Attributes of...' menu item in the 'File/Print' menu (which is the equivalent to the Macintosh's 'Get Info' item).  When a potected document or folder is opened, the system will ask for the password before opening it.&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/lisa5.png&quot;&gt;&lt;p&gt;&lt;i&gt;&quot;Attributes of LisaWrite Paper 09/07&quot;&lt;/i&gt;&lt;/center&gt;&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/lisa6.png&quot;&gt;&lt;p&gt;&lt;i&gt;Opening a protected document&lt;/i&gt;&lt;/center&gt;&lt;p&gt;It is possible to have tools that are not associated with documents; two examples of this are the clock and the calculator.  To launch these, their icons can be double-clicked; but to show that they are not documents, the resulting windows have a different style of title bar with solid corners and solid black when active.  This is a convention that was carried over to the Macintosh.&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/lisa4.png&quot;&gt;&lt;p&gt;&lt;i&gt;Desk accessories&lt;/i&gt;&lt;/center&gt;&lt;p&gt;If a document-centric tool is double-clicked on, then the tool tells you to tear off a piece of stationery.&lt;p&gt;Using the Lisa makes the choice of certain terminology in the Macintosh make more sense; the existence of the 'Put Away' menu item on the Macintosh to return an icon on the desktop to its original location is a feature for those who wish to use it in a Lisa-like fashion.  Visually, the Lisa is less clear and well laid-out than the Macintosh; it feels considerably more cluttered, the icons are less ideographic and the fonts are less well-constructed.  In terms of feel, however, the Macintosh feels less well-thought-through; it suffered greatly from being a single-tasking operating system, a constraint which must enforce a program-centric approach in user interaction with the system.  By the time the Macintosh OS had gained some degree of multitasking with the MultiFinder, it was impossible to re-integrate the document model into the spatial interface; and in the MacOS X UI the spatial elements were effectively abandoned altogether.&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/lisa7.png&quot;&gt;&lt;p&gt;&lt;i&gt;Running MacWorks&lt;/i&gt;&lt;/center&gt;&lt;br&gt;</description>
</item>
<item>
<title>Thoughts on user-land semantics for directed-graph filesystems:  The filing systems associated with ...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070830040818</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070830040818</guid>
<author>Rob Mitchelmore</author>
<pubDate>Thu, 30 Aug 2007 04:08:18 +0100</pubDate>
<description>&lt;a name=&quot;20070830040818&quot;&gt;&lt;/a&gt;&lt;b&gt;Thoughts on user-land semantics for directed-graph filesystems:&lt;/b&gt;  The filing systems associated with most modern operating systems are tree-like in nature: there exists a root directory which contains subdirectories, which contain subdirectories below them, and so forth (for the purposes of this writing, files do not exist; as they do not play an active part in the directory tree, they can be largely ignored).&lt;p&gt;This is an attempt to create a userland semantics for a roughly UNIX-like filesystem that nonetheless is a directed graph rather than a simple tree.&lt;p&gt;It is important to note at this stage that filenames in the UNIX filesystem are in fact not node names at all, but &lt;i&gt;edge names&lt;/i&gt;.  Files are uniquely identified by a node number on disc; and by that, every instance of a file in the filesystem has the same node number.  However, every instance of a file in the filesystem can have a different name; see the following example:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;~$ mkdir a b&lt;br&gt;~$ touch a/dugong&lt;br&gt;~$ ln a/dugong b/walrus&lt;br&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;i&gt;dugong&lt;/i&gt; and &lt;i&gt;walrus&lt;/i&gt; are now two names for the same on-disc file; in other words, this part of the filesystem now looks like:&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/dag1.png&quot;&gt;&lt;br&gt;&lt;i&gt;Fig. 1&lt;/i&gt;&lt;/center&gt;&lt;p&gt;Using the &lt;code&gt;cd&lt;/code&gt; command to change directory is to traverse the named edge in the directory tree.&lt;p&gt;Early versions of UNIX did in fact have a directory graph rather than a directory tree (see Dennis Ritchie: &lt;a href=&quot;http://cm.bell-labs.com/cm/cs/who/dmr/hist.html&quot;&gt;The Evolution of the Unix Time-sharing System&lt;/a&gt;); this did not last very long, because it violated a principle herein called (in honour of Tom Stoppard) the Elsinore principle.  It made much greater use of hard links than is customary in more recent iterations; notably because to change to a directory that 'contained' the current directory required significant contortions, which made the resulting filesystem considerably more difficult to use and incomprehensible than the tree-based version which succeeded it.&lt;p&gt;This leads to the statement of the Elsinore principle: that &lt;i&gt;&quot;every entrance is an exit somewhere else&quot;&lt;/i&gt; - or, in other words, that doors or edges do not disappear once you have gone through them.&lt;p&gt;It is trivial to see that the tree-based UNIX filesystem adheres to this principle.  The subdirectory relation defines two links between the directories involved, the named link, pointing from the parent to its subdirectory, and another called '..' pointing from the subdirectory to the parent.  As soon as one of these edges is traversed, the 'door' remains visible in the form of the other.  The UNIX filesystem is a tree so that users can backtrack through the path from which they came.  How can this be done in the graph case?&lt;p&gt;A na&amp;iuml;ve approach which makes a lot of intuitive sense says to reserve a set of filenames (much as '.' and '..' are reserved), one for each parent.  A sensible choice would be filenames beginning with the &lt;code&gt;^&lt;/code&gt; character.  If, in the above example, &lt;code&gt;dugong&lt;/code&gt; were a directory rather than a file, its list might look somewhat like:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;dugong$ ls -a&lt;br&gt;.         ..        ^a        ^b&lt;br&gt;file.txt&lt;br&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This falls foul of the nature of the filesystem, however: in the UNIX filesystem, edges are labelled, and the parent directories have no inherent name.  If the filesystem is a graph, any given directory could have any number of names.  This would evidently be extremely confusing for the user, which leads us to another principle: people generally want to know where they are with more urgency than how they got there, and where they are going to be with more urgency than how they are going to get there.&lt;p&gt;This leads us to what will be referred to here as the Castle principle: name rooms in preference to doors.  Name doors as well, if you so desire, but name rooms primarily.&lt;p&gt;In terms of physical spaces, this seems moderately obvious; going from an unknown place through a door to another unknown place, only to turn around and find that all the doors have been relabelled would be a deeply disorientating experience, and pity the poor user who steps through 'The ill-fated door of Sir Boris the Vertiginous' into a teetering mass of turretry, the only exit from which is directly downwards.&lt;p&gt;In software, where there are no 'physical' direction cues, this problem is exacerbated.&lt;p&gt;It should be noted that it is potentially useful to label doors; and so perhaps a 'relabel' command would be a useful thing to have.&lt;p&gt;Another point: whither '..'?  Need we sacrifice this very useful convention?&lt;p&gt;To a great extent, this convention can be reinstated by storing the full path through which the current directory was reached as the current directory rather than just the node number of the current directory; this acts as a directory stack, where using 'cd' with an absolute path loads the stack from the pathname, 'cd' with a relative path pushes all elements of that path onto the stack, and .. refers to the directory reached through all nodes in the path except the very last.  It is unclear how heavy a demand this would place on the computational or storage capacities of the computer, but it seems feasible.&lt;p&gt;This is only possible if the system contains the possibility of absolute paths; it can be argued (and has been by Jimmy) that if the filesystem is a directed graph, there is no need to have a 'root' directory, and rather base each user in their home directory.  However, while backed by sound spatial reasoning (if the home directory of the user is identified with their desktop, then the 'visual' root of the screen corresponds to the conceptual root of the filesystem) this falls foul of the Castle principle, as places on the computer no longer have place names that are independent of the viewpoint of the user using it.  In addition, the operating system needs to know where to find its own system files.  It thus does make a good deal of sense to have a single 'root' point from which all edges are outgoing.  Even the archaic UNIX graph filesystem had a similar concept to this; although it had no pathnames, every directory had a special 'dd' directory which linked to the directory of home directories.&lt;p&gt;That being said, why make a distinction between outgoing and incoming edges to a directory?  The answer to this one is quite simple from a user's perspective; if all edges are equal then all recursive operations will eventually spread out to fill the entire filesystem, making most kinds of operations on directories at worst extremely space-hungry and marginally useless and at worst actively dangerous.&lt;p&gt;&lt;b&gt;Some problems with this approach:&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;One clearly cannot expect users to give every file and directory on their system an entirely unique name.  Not only would this provoke outright user rebellion, it would also render operations like 'copy directory' entirely useless.  How can situations be dealt with where a directory is 'in' two directories which have the same name, such as the not unreasonable case where a directory called 'html' is within two different directories called 'www'?  A bruteforce approach would be to call the first-created uplink &lt;code&gt;^www&lt;/code&gt; and the second &lt;code&gt;^www2&lt;/code&gt;, but that seems ugly and just pushes the problem further along; one cannot simply label each non-unique parent with its own parent, as it may have multiple parents.&lt;/li&gt;&lt;li&gt;How does this interact with a spatial browsing approach?  All the above is couched in language strongly influenced by the navigational-browsing metaphor enforced by a terminal-centric interaction approach.  While the act of moving to a subdirectory is conceptually modelled by the user as moving from one room to another then these assumptions hold; even if a subset-like containment approach is taken, then these assumptions may hold, as any given subset can be a subset of multiple supersets; but what of the conceptual model where subdirectories are truly 'within' each other, nested &lt;i&gt;&quot;like Russian Dolls&quot;&lt;/i&gt;?  This does not seem too far distant from the subset problem, if you view directory boundaries as permeable, but requires more thought.&lt;/i&gt;&lt;br&gt;&lt;/ul&gt;</description>
</item>
<item>
<title>Some notes on Schenck's paintings 'Anguish' and 'The Orphan'....</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070825205013</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070825205013</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 25 Aug 2007 20:50:13 +0100</pubDate>
<description>&lt;a name=&quot;20070825205013&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://ca.geocities.com/pfsearle@rogers.com/albertschenckdata03.html&quot;&gt;Some notes on Schenck's paintings 'Anguish' and 'The Orphan'.&lt;/a&gt;&lt;br&gt;</description>
</item>
<item>
<title>Noun cases should be represented ideographically within computer user interfaces: the command line a...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070731032648</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070731032648</guid>
<author>Rob Mitchelmore</author>
<pubDate>Tue, 31 Jul 2007 03:26:48 +0100</pubDate>
<description>&lt;a name=&quot;20070731032648&quot;&gt;&lt;/a&gt;&lt;b&gt;Noun cases should be represented ideographically&lt;/b&gt; within computer user interfaces: the command line as it stands is a peculiarly English system, relying as it does upon word order and putting great importance on the verb.  It also requires you to know what you want to do before you do it.  In a case-driven interaction system, the nouns and verbs could be specified in any order, distinguished by their case-markers.  These, as previously suggested, could be ideographic icons; they could also be colours (ideas heading in this direction can be found in Chuck Moore's &lt;i&gt;&lt;span style=&quot;color:red&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color:green&quot;&gt;Forth&lt;/span&gt;&lt;/i&gt; language), by plain-text conventions (possibly akin to perl's use of @ and $ for 'plural' and 'singular') or in some peculiar cases with case endings from the 'host' natural language.&lt;p&gt;This is heading in similar directions to some of the work Jimmy has done; one question is how to decide which set of cases is necessary and sufficient to describe the set of operations the system provides.  Should applications be able to define their own?&lt;p&gt;This does not affect the UNIX &lt;i&gt;pipe&lt;/i&gt;, &lt;i&gt;and&lt;/i&gt; and &lt;i&gt;or&lt;/i&gt; operations and others like them, as they are conjunctions; the input and output redirection operators, however, would become shortcuts for a pipe, the verbs 'read', 'write' or 'append' and a locative or ablative noun.&lt;br&gt;</description>
</item>
<item>
<title>Mornington Crescent: a transcript of a game played by Tom Isaac and Rob Mitchelmore between the 10th...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070715044636</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070715044636</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sun, 15 Jul 2007 04:46:36 +0100</pubDate>
<description>&lt;a name=&quot;20070715044636&quot;&gt;&lt;/a&gt;&lt;b&gt;Mornington Crescent:&lt;/b&gt; a transcript of a game played by &lt;span style=&quot;background: #9999CC; padding: 1px&quot;&gt;&lt;a href=&quot;http://sablogtage.blogspot.com/&quot;&gt;Tom Isaac&lt;/a&gt;&lt;/span&gt; and &lt;span style=&quot;background: #99CC99; padding: 1px&quot;&gt;Rob Mitchelmore&lt;/span&gt; between the 10th-14th July 2007 online,  provided here for study. Millar's 2007 tricycle rules are in play:&lt;p&gt;&lt;blockquote&gt;&lt;i&gt;Stations with three circles count double, unless one of them is DLR in which case you forfeit the ability to ask for a hawk-eye linecall on Liverpool street&lt;/i&gt;.&lt;/blockquote&gt;&lt;p&gt;&lt;center&gt;&lt;i&gt;&lt;b&gt;Tom Isaac is to start play.&lt;/b&gt;&lt;/i&gt;&lt;p&gt;&lt;table border=1 cellpadding=2&gt;&lt;br&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;&lt;b&gt;Fulham Broadway&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;Oh dear, I'm a bit rusty at these rules. OK...&lt;p&gt;I shall play &lt;b&gt;Kilburn&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;Hmmm....&lt;p&gt;&lt;b&gt;Notting Hill Gate&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;&lt;b&gt;Willesden Park&lt;/b&gt;.&lt;p&gt;(opening the westernmost helix)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;&lt;b&gt;Hammersmith&lt;/b&gt;.&lt;p&gt;I think I'm getting dangerously close to falling in to the left-side backhand pass trap.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;It is unkind of you to take advantage of my insomnia; that said, yes, you are dangerously close. Thus:&lt;p&gt;&lt;b&gt;Farringdon&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;oooohhh. nasty. &lt;b&gt;Bank&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;&lt;i&gt;(Hang on, hang on. Was that a tricycle I saw heading in my direction? But Bank already counts double according to Cryer (consult page 271, the little paragraph at the bottom) because it has two names. Doesn't it?&lt;p&gt;Does this mean I get four goes? I'm so confused...)&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;&lt;i&gt;(Ah, but then Bank's got a fourth circle on the DLR with wheel chair access. So I make that a total of eight wheels including the little castor-type wheels on your standard issue wheelchair, which is 2.666666etc. tricycles. So I think you get as many goes as I have typed recurring sixes. It is Tuesday right?)&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;It is Tuesday, yes, so the Fourier rule applies for orthogonalisation of tricycles... now there's a clause in the rules I didn't expect to have to use.&lt;p&gt;Since it's a recurring decimal, I'll go around &lt;b&gt;South Kensington - Victoria - Green Park&lt;/b&gt;; as moves map 1:1 onto natural numbers, the set is countably infinite (see &lt;i&gt;Cantor&lt;/i&gt;), thus it's your go again.&lt;p&gt;As a gesture of goodwill, I'm going to remind you that moving to inside an infinitely recurring icoseles triangle puts you non-negotiably in &lt;b&gt;Nid&lt;/b&gt;. (As opposed to an infinitely recurring equilateral triangle, which doesn't, or an infinitely recurring scalene triangle, which is just downright rude)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;Gah, infinite set theory at this stage of the game! &lt;i&gt;ponders, leans on point of an isoceles triangle, bleeds&lt;/i&gt; Err... Doesn't that put M. C. somewhere in to the uncountable set of all the real numbers? Hmmph. Well I'm going to start climbing this asymptote and theoretically end up at &lt;b&gt;Canary Wharf&lt;/b&gt;. Your move! (And please be kind, I'm a physicist, Maple does all my mathematics for me!)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;It sounds kinda complex to me. It's not so much important whether it is in the set of reals as whether it is in the set described by the metric. Millar gives a transform on&lt;center&gt;&lt;i&gt;z' = z&lt;sup&gt;2&lt;/sup&gt; + c&lt;/i&gt;&lt;/center&gt; and as such, I refer to you to the following diagram:&lt;p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://new.jamesjoycewaskorean.com/figures/z2plusc.png&quot;&gt;http://new.jamesjoycewaskorean.com/figures/z2plusc.png&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As you can see, the horizontal axis of the set is aligned at the left on the central line with the far lobe on White City, and on the rightmost side the central line and DLR are nearly symmetrical. The leftmost major lobe is described by the pair (Baker Street, Picadilly Circus) and the far lobe by (Dalston Kingsland, Canada Water) &lt;i&gt;(sigh)&lt;/i&gt;.&lt;p&gt;By plotting it one can trivially see that MC is within the ending conditions for the game.&lt;p&gt;With this in mind: &lt;b&gt;Royal Oak&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;Rob, I hereby officially award you man of the match for overlaying a fractal on to the Tube Map in a game of Mornington Crescent.&lt;p&gt;And I shall take advantage of this chaotic twist to the game and bifurcate. &lt;b&gt;Maida Vale AND Kennington&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;Now it's getting difficult. Fortunately I can control the decay by playing a parallel:&lt;p&gt;&lt;b&gt;Hatton Cross and Hammersmith&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;Swapsies: &lt;b&gt;Kennington and Maida Vale&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;Going round a little dollis hill loop all your own?&lt;p&gt;&lt;b&gt;Finsbury Park, Kentish Town, Swiss Cottage AND Harrow &amp; Wealdstone&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;OK, now cashing in all the tricycles from earlier, bifurcating three times and breaking causality a bit:&lt;p&gt;&lt;b&gt;The continuum of all stations between West Ealing and Embankment on the District line, excluding St. James Park&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #99CC99&quot;&gt;&lt;b&gt;The Circle line&lt;/b&gt;.&lt;p&gt;If we keep on going like this we're going to get to M.C purely by default you do realise.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;background: #9999CC&quot;&gt;Ah hu - &lt;b&gt;Zones 1 &amp; 2&lt;/b&gt;. Ergo, &lt;b&gt;&lt;big&gt;Mornington Crescent&lt;/big&gt;&lt;/b&gt;. And I think my Oyster card has exploded :-)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;Tom Isaac wins.&lt;/i&gt;&lt;/b&gt;&lt;/center&gt;&lt;p&gt;&lt;b&gt;Aftermath:&lt;/b&gt;&lt;p&gt;&lt;blockquote&gt;'Tricycle is one of my favourite rulesets as there are actually only two stations with three circles on the standard map - but on newer editions Bank has a separate, fourth wheelchair access circle. Compare &lt;a href=&quot;http://www.bbc.co.uk/london/travel/downloads/tube_map.html&quot;&gt;http://www.bbc.co.uk/london/travel/downloads/tube_map.html&lt;/a&gt; and &lt;a href=&quot;http://www.metro-map.ru/world/img/london_print_map.pdf&quot;&gt;http://www.metro-map.ru/world/img/london_print_map.pdf&lt;/a&gt;. Knowing Rob was likely an oldschool M.C. player I took a gamble that he might be using the old map. Of course this all backfired once he found the footnote in Cryer that threw Bank straight back at me.&quot; &lt;p&gt;'After that the algebra got a little heavy and I had to consult my rusty Pure Math from back in the day. But Rob rather sportingly handed me a clue in the shape of that fractal-map, and when things get chaotic, he who forks first forks most. In this case it was me.'&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Tom Isaac&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;'I was hampered by being unfamiliar with the Millar rules; fortunately his style is seated deep in the traditional nature of the game rather than the more recent and (by most objective measures) ridiculous postmodern variants.  The increased importance of tricycles makes the game dynamic considerably more complicated as the upper bound on the number of foci in play is raised dramatically.'&lt;p&gt;'If Tom's loop had gone anticlockwise rather than clockwise, after his station-continuum move, I could have played the Northern line and won; but alas that option was closed off from me.  Had I been more familiar with Millar I'd have played a virtual Waterloo as we were already in the complex plane; this could have been played without penalty so long as I returned the train to the point I had got it from sufficiently rapidly.  Unfortunately I didn't think fast enough, so failed to control the bifurcation and lost the game.'&lt;p&gt;'It could have been much worse; I was expecting Tom to head over towards Heathrow, where the ending of the game would have entirely depended on how many wheels (in aggregate) that day's flights had attached to them.'&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Rob Mitchelmore&lt;/div&gt;&lt;br&gt;</description>
</item>
<item>
<title>No....</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070713072913</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070713072913</guid>
<author>Rob Mitchelmore</author>
<pubDate>Fri, 13 Jul 2007 07:29:13 +0100</pubDate>
<description>&lt;a name=&quot;20070713072913&quot;&gt;&lt;/a&gt;&lt;center&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/no.png&quot;&gt;&lt;p&gt;&lt;i&gt;No.&lt;/i&gt;&lt;p&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/no2.png&quot;&gt;&lt;/center&gt;&lt;br&gt;</description>
</item>
<item>
<title>A terse HOWTO on exposing SugarCRM Open Source contacts via LDAP.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070521140804</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070521140804</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 21 May 2007 14:08:04 +0100</pubDate>
<description>&lt;a name=&quot;20070521140804&quot;&gt;&lt;/a&gt;A terse HOWTO on &lt;a href=&quot;http://new.jamesjoycewaskorean.com/writing.php?sec=06_nonfiction&amp;art=sugarcrm-ldap-howto&quot;&gt;exposing SugarCRM Open Source contacts via LDAP&lt;/a&gt;.&lt;p&gt;&lt;small&gt;Update: fixed an error that stopped filters of the form (|(...)...(mail=*)) working.&lt;/small&gt;&lt;br&gt;</description>
</item>
<item>
<title>On an early springtime day, the station-minding software sings:</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070410002447</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070410002447</guid>
<author>Rob Mitchelmore</author>
<pubDate>Tue, 10 Apr 2007 00:24:47 +0100</pubDate>
<description>&lt;a name=&quot;20070410002447&quot;&gt;&lt;/a&gt;On an early springtime day, the station-minding software sings:&lt;p&gt;&lt;blockquote&gt;The train at platform 5 is now ready to depart.&lt;br&gt;The train at platform 5 is now ready to depart.&lt;br&gt;The train at platform 5 is now ready to depart.&lt;br&gt;Please stand away from this service.&lt;/blockquote&gt;&lt;p&gt;which wasn't set to the tune of &quot;Glory Glory Hallelujah&quot; but sounded like it should have been.&lt;p&gt;Then that train pulled out of Reading, and then the next one and the next; and, later, merging and losing themselves in the patterns of the fabric on the seats reflected in the rounded-rectangle windows, two narrowboats could be seen nosing their way lazily down the mercury canal.&lt;br&gt;</description>
</item>
<item>
<title>Wouldn't The Matrix have been a better film if Neo had actually had root on the universe?</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070322072821</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070322072821</guid>
<author>Rob Mitchelmore</author>
<pubDate>Thu, 22 Mar 2007 07:28:21 +0000</pubDate>
<description>&lt;a name=&quot;20070322072821&quot;&gt;&lt;/a&gt;Wouldn't &lt;cite&gt;The Matrix&lt;/cite&gt; have been a better film if Neo had actually had root on the universe?&lt;p&gt;The world would be treated to an hour and a half of him wandering around accidentally deleting things, swearing, and attempting to restore them from backups before anyone noticed.  He would also have to execute administration commands on a regular basis, for example&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;# /etc/init.d/gravity stop&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or change people's nameservers because Auntie Flo can't remember where Bert is.&lt;p&gt;He would also have to yell 'sudo!' before doing anything.&lt;br&gt;</description>
</item>
<item>
<title>An important moment is: walking down a street of houses, early in the evening, just as the streetlam...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070224194303</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070224194303</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 24 Feb 2007 19:43:03 +0000</pubDate>
<description>&lt;a name=&quot;20070224194303&quot;&gt;&lt;/a&gt;&lt;b&gt;An important moment&lt;/b&gt; is: walking down a street of houses, early in the evening, just as the streetlamps have been lit; the lights in the houses themselves are not yet on except in one house where there is one light on on the upper floor, about halfway down the road.  In that window, facing into the street, a woman is sitting practicing the cello in front of a grey enamel music-stand.  She has long light-brown hair that falls over her shoulder, and she is very quietly smiling.&lt;p&gt;</description>
</item>
<item>
<title>Vertical centring (centering for the U.S people) in CSS: One trick that has proved quite tricky in C...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070124023426</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070124023426</guid>
<author>Rob Mitchelmore</author>
<pubDate>Wed, 24 Jan 2007 02:34:26 +0000</pubDate>
<description>&lt;a name=&quot;20070124023426&quot;&gt;&lt;/a&gt;&lt;b&gt;Vertical centring (centering for the U.S people) in CSS:&lt;/b&gt; One trick that has proved quite tricky in CSS is to put an element in the centre of the window (or any other element) both vertically and horizontally.  It is, however, possible to do this by means of a cunning arrangement of strut elements and judicious application of inline block elements (which behave like images do; a block element that flows as an item within the text).  An example of this can be found at &lt;a href=&quot;http://new.jamesjoycewaskorean.com/experiments/centring.html&quot;&gt;/examples/centring.html&lt;/a&gt;.  This has been tested on recent versions of Firefox, Safari and Internet Explorer, but should not be treated as necessarily accurate.  Accusations can be levelled at it of not correctly using CSS, but as there seems to be no way of using CSS that is all of sane, correct and working, this argument lacks a certain punch.&lt;p&gt;The vertical-align CSS property is used to align elements on a line, rather than relative to their container (as valign=&quot;center&quot; did).  However, a &quot;strut&quot; the full height of the parent element can be used; subsequent elements with &lt;code&gt;vertical-align: center&lt;/code&gt; will be aligned with their centres on a line with the centre of the strut element, and thus with the centre of the containing element.  Note there are some caveats; the containing element must have a definite height (even if it is a percentage), for example, but this is not usually a problem in situations where it is useful.&lt;p&gt;However, things are not quite this simple.  Firstly, Firefox does not implement &lt;code&gt;display: inline-block&lt;/code&gt;; it has a rough equivalent called &lt;code&gt;-moz-inline-box&lt;/code&gt;, which doesn't work exactly the same as the w3 seem to think that it should, but is near enough for this purpose (those intending to make use of this technique are encouraged to beat their own heads off these differences).  Also, Internet Explorer will not apply &lt;code&gt;display: inline-block&lt;/code&gt; to elements that are already block elements, for whatever twisted reasons apply in these cases.  Thus, you have to apply &lt;code&gt;display: inline&lt;/code&gt;, &lt;code&gt;display: inline-block&lt;/code&gt; and &lt;code&gt;display: -moz-inline-box&lt;/code&gt; to any block that needs to behave as an inline-block.  There is also a Firefox bug which seems to enforce that on certain versions no inline-block on a line can be any smaller than the first.&lt;p&gt;Thus, the solution consists of the following elements, all &lt;code&gt;div&lt;/code&gt;s:&lt;ul&gt;&lt;li&gt;A container div, containing:&lt;br&gt;&lt;ol&gt;&lt;li&gt;A tiny workaround for the firefox bug&lt;/li&gt;&lt;li&gt;A strut element with a height of 100%&lt;/li&gt;&lt;li&gt;At least one other element which contains the content to be centred&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The CSS stylesheet for the example given in the first paragraph (containing border styling for educational use; these would be removed in most 'live' use) is:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;css&quot;&gt;&lt;span style=&quot;color: #6666ff;&quot;&gt;.container &lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;text-align&lt;/span&gt;: &lt;span style=&quot;color: #990000&quot;&gt;center&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border&lt;/span&gt;: 1px &lt;span style=&quot;color: #990000&quot;&gt;solid&lt;/span&gt; &lt;span style=&quot;color: #990000&quot;&gt;green&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;height&lt;/span&gt;: &lt;span style=&quot;color: #cc66cc;&quot;&gt;100&lt;/span&gt;%;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6666ff;&quot;&gt;.ffhack &lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: &lt;span style=&quot;color: #990000&quot;&gt;inline&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6666ff;&quot;&gt;.ffhack &lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: inline-&lt;span style=&quot;color: #990000&quot;&gt;block&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: -moz-inline-box;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;height&lt;/span&gt;: 0px;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;width&lt;/span&gt;: 0px;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border&lt;/span&gt;: 1px &lt;span style=&quot;color: #990000&quot;&gt;solid&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;black&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;vertical-align&lt;/span&gt;: &lt;span style=&quot;color: #990000&quot;&gt;middle&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6666ff;&quot;&gt;.brace &lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: &lt;span style=&quot;color: #990000&quot;&gt;inline&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6666ff;&quot;&gt;.brace &lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: inline-&lt;span style=&quot;color: #990000&quot;&gt;block&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: -moz-inline-box;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;height&lt;/span&gt;: &lt;span style=&quot;color: #cc66cc;&quot;&gt;100&lt;/span&gt;%;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;width&lt;/span&gt;: 0px;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border&lt;/span&gt;: 1px &lt;span style=&quot;color: #990000&quot;&gt;solid&lt;/span&gt; &lt;span style=&quot;color: #990000&quot;&gt;red&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;vertical-align&lt;/span&gt;: &lt;span style=&quot;color: #990000&quot;&gt;middle&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6666ff;&quot;&gt;.cbox &lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: &lt;span style=&quot;color: #990000&quot;&gt;inline&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6666ff;&quot;&gt;.cbox &lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: inline-&lt;span style=&quot;color: #990000&quot;&gt;block&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;display&lt;/span&gt;: -moz-inline-box;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;border&lt;/span&gt;: 1px &lt;span style=&quot;color: #990000&quot;&gt;solid&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;blue&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;vertical-align&lt;/span&gt;: &lt;span style=&quot;color: #990000&quot;&gt;middle&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;The container class contains the overall container; the brace class contains the strut; the ffhack class contains the 0x0 workaround for the Firefox bug mentioned earlier; the two rules for each class are necessary to work around the IE misfeature.&lt;p&gt;Also, it is snowing.&lt;br&gt;</description>
</item>
<item>
<title>Resuscitating Roland, or, how I learned to stop worrying and love fsdb(8): just before christmas, th...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070112011445</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070112011445</guid>
<author>Rob Mitchelmore</author>
<pubDate>Fri, 12 Jan 2007 01:14:45 +0000</pubDate>
<description>&lt;a name=&quot;20070112011445&quot;&gt;&lt;/a&gt;&lt;b&gt;Resuscitating Roland, or, how I learned to stop worrying and love fsdb(8):&lt;/b&gt; just before christmas, the server roland.midworld.co.uk suffered a sudden disc failure and fell over.  This annoyed quite a lot of people as, due to various miscommunications and crises, the backup system was not as good as it might have been.  After the failure, the machine would not successfully boot due to an error occurring in the superblock, although the disc itself showed up on the IDE bus.&lt;p&gt;First of all, the disc in the server was replaced, a newer version of OpenBSD was installed on it, and an image was taken of the old disc with dd(1) and backed up many many times.  The image was then bound to a loopback device using vnconfig(8).  There was an error over the disklabel, which ate the filesystem type for /dev/vnd0a, so this was fixed using disklabel(8) with the -E option.  Then fsck(8) was run over the filesystem using -b 32 to specify an alternative superblock.  This is rather where the fun began.&lt;p&gt;fsck immediately reported an overflow, wandered through the filesystem for a bit fixing and removing things and then promptly abnormally terminated with a segmentation fault.  Rerunning it caused it to 'fix' more problems and then exit normally - its last action being to remove 'redundant' links to &lt;tt&gt;/&lt;/tt&gt;, which had the effect of entirely removing every directory in &lt;tt&gt;/&lt;/tt&gt;.  This being a suboptimal result, a backup of the image was restored and another attempt was made.&lt;p&gt;Using the -b 32 and -y options to fsck and then hitting break has the useful side-effect of writing the backup superblock to the primary superblock and doing nothing else.  Once this was done, the filesystem could be mounted read-only and some salvage work could be done.  &lt;tt&gt;/home&lt;/tt&gt; and &lt;tt&gt;/etc&lt;/tt&gt; were sound and rescuable, but &lt;tt&gt;/var&lt;/tt&gt; had disappeared completely - some of the time.  It showed up in the normal ls listing, but not in ls -l.&lt;p&gt;Unmounting the partition and then running fsdb over the raw device showed the issue - the inode for the &lt;tt&gt;/var&lt;/tt&gt; partition was broken and marked as unallocated.  Each file, directory, device or special node in the filesystem has an associated inode; in UFS, all the file metadata and the addresses of the data zones associated with the file are kept in the inode while a directory is a set of &lt;i&gt;(inode, name)&lt;/i&gt; pairs.  This explains why &lt;tt&gt;/var&lt;/tt&gt; did not show up in ls -l, as its metadata was missing, but did in ls, as its name (being attached to &lt;tt&gt;/&lt;/tt&gt;) was intact.  Any data underneath &lt;tt&gt;/var&lt;/tt&gt;, for example the fairly crucial &lt;tt&gt;/var/www&lt;/tt&gt; and &lt;tt&gt;/var/mysql&lt;/tt&gt; directories, were thus marooned somewhere in limbo if they were intact at all.&lt;p&gt;fsdb has the ability to examine an inode by number; if that inode is a directory, it supports listing the contents with the 'ls' command.  It also supports traversing the directory tree with 'cd'.  If repairs need to be done then it will prompt as fsck does for &lt;tt&gt;y/n/F&lt;/tt&gt;, where 'F' is 'fix all'.  This can be used to write a simple program that interacts with fsdb to list every filename on a volume, albeit slowly and unpleasantly.  The source code to a rudimentary utility to do this, &lt;tt&gt;ohfuck.c&lt;/tt&gt; follows.&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;c&quot;&gt;&lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; main&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; c, &lt;span style=&quot;color: #993333;&quot;&gt;char&lt;/span&gt;** v&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; i;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;i=&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;;i&amp;lt;=&lt;span style=&quot;color: #cc66cc;&quot;&gt;4863488&lt;/span&gt;;i++&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.opengroup.org/onlinepubs/009695399/functions/printf.html&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;printf&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;inode %d&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;ls&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;F&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, i&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This program was used on the input of fsdb to iterate through every inode on the partition, and then grep was used to find known directory names, for example:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;./ohfuck | fsdb -f /dev/vnd0a 2&amp;gt;&amp;1 | grep mysql&lt;br&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This gives a set of directory entries for 'mysql'.  fsdb can then be used interactively to cd into each directory named 'mysql' and see if it is the correct one - in this case, it correctly found &lt;tt&gt;/var/mysql/mysql&lt;/tt&gt;, and cd-ing to .. showed that the &lt;tt&gt;/var/mysql&lt;/tt&gt; directory was intact.  Once this had been found, a note was made of its inode number and this was substituted for the inode attached to &lt;tt&gt;/var&lt;/tt&gt; in &lt;tt&gt;/&lt;/tt&gt;.  Thus the &lt;tt&gt;/var&lt;/tt&gt; entry pointed to the directory that was &lt;tt&gt;/var/mysql&lt;/tt&gt; - it could then be rescued with rsync -a to a backup directory.  A similar procedure was followed to rescue &lt;tt&gt;/var/www&lt;/tt&gt;.&lt;p&gt;The software we could remember installing was then reinstalled from ports, and all was well again with the world.&lt;br&gt;</description>
</item>
<item>
<title>If, Sir, you were to put as much effort into maintaining your friendships as breaking them, then you...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20070104142431</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20070104142431</guid>
<author>Rob Mitchelmore</author>
<pubDate>Thu, 04 Jan 2007 14:24:31 +0000</pubDate>
<description>&lt;a name=&quot;20070104142431&quot;&gt;&lt;/a&gt;If, Sir, you were to put as much effort into maintaining your friendships as breaking them, then you would be twice the man you are now.  That takes &lt;i&gt;balls&lt;/i&gt;.  You could stand tall.&lt;p&gt;It is possible to show this using Pythagoras.  If your manliness is doubled and your height increases (assuming of course that your manliness is currently non-negative, as is suggested by the use of a gender-specific honorific) then your perceived masculinity, &lt;i&gt;M&lt;sub&gt;p&lt;/sub&gt;&lt;/i&gt; will increase, your new &lt;i&gt;M&lt;sub&gt;p&lt;/sub&gt;'&lt;/i&gt; being given by &amp;radic;(manliness&lt;sup&gt;2&lt;/sup&gt; + height&lt;sup&gt;2&lt;/sup&gt;).&lt;p&gt;Furthermore assuming that due to biological constraints, increased self-respect cannot actually &lt;i&gt;double&lt;/i&gt; your height, the gradient of your perceived masculinity (which is of course a vector quantity; the angle of the dangle and so forth) will be considerably lessened; leading to your being perceived as kinder, gentler, and yet more ballsy.&lt;p&gt;Thus it is beaten into the ground like a dead horse with a siege engine.  QEF, QFT.&lt;br&gt;</description>
</item>
<item>
<title>Best spam title this month:</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20061216075328</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20061216075328</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 16 Dec 2006 07:53:28 +0000</pubDate>
<description>&lt;a name=&quot;20061216075328&quot;&gt;&lt;/a&gt;Best spam title this month:&lt;p&gt;&lt;blockquote&gt;desolation; and suckling also.&lt;/blockquote&gt;&lt;br&gt;</description>
</item>
<item>
<title>Poetry: A new translation of Petrarch's Canzoniere 102 in verse.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20061121050215</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20061121050215</guid>
<author>Rob Mitchelmore</author>
<pubDate>Tue, 21 Nov 2006 05:02:15 +0000</pubDate>
<description>&lt;a name=&quot;20061121050215&quot;&gt;&lt;/a&gt;Poetry: &lt;a href=&quot;http://new.jamesjoycewaskorean.com/writing.php?sec=00_translations&amp;art=rimesparse102b&quot;&gt;A new translation of Petrarch's Canzoniere 102&lt;/a&gt; in verse.&lt;p&gt;Yay &lt;a href=&quot;http://new.jamesjoycewaskorean.com/words.php&quot;&gt;words&lt;/a&gt;.&lt;br&gt;</description>
</item>
<item>
<title>A tour of the history of character codes.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20061106044331</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20061106044331</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 06 Nov 2006 04:43:31 +0000</pubDate>
<description>&lt;a name=&quot;20061106044331&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://wps.com/projects/codes/&quot;&gt;A tour of the history of character codes.&lt;/a&gt;&lt;p&gt;Particularly interesting in the light of some of the stuff &lt;a href=&quot;http://www.vickycoleman.co.uk/&quot;&gt;Jimmy&lt;/a&gt; has been doing about chorded input methods; also, is a serial transmission speech or writing?  Don't all answer at once.&lt;br&gt;</description>
</item>
<item>
<title>Rhapsody in purple.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20061025074515</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20061025074515</guid>
<author>Rob Mitchelmore</author>
<pubDate>Wed, 25 Oct 2006 07:45:15 +0100</pubDate>
<description>&lt;a name=&quot;20061025074515&quot;&gt;&lt;/a&gt;Rhapsody in purple.&lt;p&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/rhap/front.png&quot; class=&quot;figure&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://new.jamesjoycewaskorean.com/writing.php?sec=06_nonfiction&amp;art=rhapsody-vmware-howto&quot;&gt;A full HOWTO on installing the Rhapsody DR2 OS under VMWare workstation.&lt;/a&gt;&lt;br&gt;</description>
</item>
<item>
<title>Surreal happenings at EasyNet?...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20061023073115</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20061023073115</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 23 Oct 2006 07:31:15 +0100</pubDate>
<description>&lt;a name=&quot;20061023073115&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.theregister.co.uk/2006/10/20/easynet_brick_lane_robbery/&quot;&gt;Surreal happenings at EasyNet&lt;/a&gt;?&lt;br&gt;</description>
</item>
<item>
<title>BIAS should now have RSS support that almost works available at http://new.jamesjoycewaskorean.com/r...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20061001172227</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20061001172227</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sun, 01 Oct 2006 17:22:27 +0100</pubDate>
<description>&lt;a name=&quot;20061001172227&quot;&gt;&lt;/a&gt;BIAS should now have RSS support that almost works available at &lt;a href=&quot;http://new.jamesjoycewaskorean.com/rss.php&quot;&gt;http://new.jamesjoycewaskorean.com/rss.php&lt;/a&gt;.  There remain as yet some bugs in it.&lt;br&gt;</description>
</item>
<item>
<title>Hair.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060926001855</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060926001855</guid>
<author>Rob Mitchelmore</author>
<pubDate>Tue, 26 Sep 2006 00:18:55 +0100</pubDate>
<description>&lt;a name=&quot;20060926001855&quot;&gt;&lt;/a&gt;Hair.&lt;p&gt;Keep it under your hat, old man.&lt;br&gt;</description>
</item>
<item>
<title>Profile...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060916200242</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060916200242</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 16 Sep 2006 20:02:42 +0100</pubDate>
<description>&lt;a name=&quot;20060916200242&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://new.jamesjoycewaskorean.com/gal.php?gal=feedback&quot;&gt;&lt;img class=&quot;figure&quot; src=&quot;http://new.jamesjoycewaskorean.com/figures/self-portrait-sep-2006.jpg&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;center&gt;&lt;i&gt;Profile&lt;/i&gt;&lt;/center&gt;&lt;br&gt;</description>
</item>
<item>
<title>The Emo Pirate boards the ship via an improvised grappling hook made from an electric guitar.  His m...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060908150252</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060908150252</guid>
<author>Rob Mitchelmore</author>
<pubDate>Fri, 08 Sep 2006 15:02:52 +0100</pubDate>
<description>&lt;a name=&quot;20060908150252&quot;&gt;&lt;/a&gt;The Emo Pirate boards the ship via an improvised grappling hook made from an electric guitar.  His men then climb up his fringe onto your deck.  He takes out his iPod headphones and paces up and down dramatically.&lt;p&gt;He thinks aloud about killing you, but then decides that it is more of a punishment to let you continue to live in this vale of tears.  Especially on a boat.  He &lt;em&gt;hates&lt;/em&gt; boats.&lt;p&gt;He thinks aloud also about robbing you of your treasure, but he knows that this would not fill his empty and misunderstood soul, so it isn't worth the effort.&lt;p&gt;He cries a bit, and then wanders off.&lt;p&gt;Abigail pointed out the reason for Emo Pirate being so miserable; he is inefficient, and wears his fringe over his &lt;em&gt;left&lt;/em&gt; eye, while wearing his eyepatch over his &lt;em&gt;right&lt;/em&gt; eye.  This makes it almost impossible for him to see where he is going.&lt;p&gt;After colliding painfully with the mast twenty-three times in five days, one is bound to acquire a somewhat melancholy view on the question of free will versus determinism.&lt;br&gt;</description>
</item>
<item>
<title>It is possible to indent code sensibly using CSS and still have lines wrap in a moderately readable ...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060904023001</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060904023001</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 04 Sep 2006 02:30:01 +0100</pubDate>
<description>&lt;a name=&quot;20060904023001&quot;&gt;&lt;/a&gt;It is possible to indent code sensibly using CSS and still have lines wrap in a moderately readable fashion.  This example will emulate the following style of ccode formatting:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;if ((a long expression) &amp;&amp;&lt;br&gt;  (a long expression)) {&lt;br&gt;    test test test;&lt;br&gt;    test test test;&lt;br&gt;}&lt;br&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That is - continuations of lines are indented by a fixed amount relative to the 'main' line, and blocks are indented more (usually with a tab).&lt;p&gt;This is trivially implementable using the CSS text-indent property.  An algorithm to format code is shown below:&lt;p&gt;&lt;ol&gt;&lt;li&gt;for each line do:&lt;ol&gt;&lt;li&gt;replace tabs in line with spaces&lt;/li&gt;&lt;li&gt;count initial spaces in line&lt;/li&gt;&lt;li&gt;add &lt;i&gt;indent&lt;/i&gt; to it&lt;/li&gt;&lt;li&gt;convert special characters in code to html entities&lt;/li&gt;&lt;li&gt;trim leading spaces and put code in div with style=&quot;padding-left: &lt;i&gt;indent + depth&lt;/i&gt; em; text-indent: -&lt;i&gt;indent&lt;/i&gt; em;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;wrap indented code in a div with overall formatting and output&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In PHP this could be coded something along the lines of:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$tabwidth&lt;/span&gt; = &lt;span style=&quot;color: #cc66cc;&quot;&gt;4&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$indent&lt;/span&gt; = &lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #990000&quot;&gt;function&lt;/span&gt; indenttastic&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$code&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.php.net/global&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;global&lt;/span&gt;&lt;/a&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$tabwidth&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$indent&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$ar&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/explode&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;explode&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\t&lt;/span&gt;&amp;quot;&lt;/span&gt;, &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.php.net/str_repeat&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;str_repeat&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$tabwidth&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$code&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$newcode&lt;/span&gt; = &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;foreach&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$ar&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$line&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$ln&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/ltrim&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;ltrim&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$line&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$depth&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/strlen&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$line&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;a href=&quot;http://www.php.net/strlen&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$ln&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$nl&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/sprintf&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;sprintf&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'&amp;lt;div style=&amp;quot;padding-left: %d em;'&lt;/span&gt; .&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #ff0000;&quot;&gt;' text-indent: %d em&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;'&lt;/span&gt; . &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$depth&lt;/span&gt; + &lt;span style=&quot;color: #0000ff;&quot;&gt;$indent&lt;/span&gt;, -&lt;span style=&quot;color: #0000ff;&quot;&gt;$indent&lt;/span&gt;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.php.net/htmlentities&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;htmlentities&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$ln&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$newcode&lt;/span&gt; .= &lt;span style=&quot;color: #0000ff;&quot;&gt;$nl&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&amp;lt;div class=&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&amp;quot;&lt;/span&gt;code&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;gt;&amp;quot;&lt;/span&gt; . &lt;span style=&quot;color: #0000ff;&quot;&gt;$newcode&lt;/span&gt; . &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;(please note this code is untested, and does not deal with the case of having multiple contiguous spaces in the middle of lines, which HTML will compress into invidual spaces).&lt;p&gt;If some knowledge of language structure is held at layout-time, then the indent length could be altered to be the same length as the first lexical token in the line followed by any whitespace.&lt;p&gt;Also note that 1em indent may not correspond to one space-width.  Experimentation may be necessary.&lt;br&gt;</description>
</item>
<item>
<title>Decay....</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060902211657</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060902211657</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 02 Sep 2006 21:16:57 +0100</pubDate>
<description>&lt;a name=&quot;20060902211657&quot;&gt;&lt;/a&gt;&lt;img class=&quot;figure&quot; src=&quot;http://new.jamesjoycewaskorean.com/figures/train-decay.jpg&quot;&gt;&lt;p&gt;&lt;center&gt;&lt;i&gt;Decay.&lt;/i&gt;&lt;/center&gt;&lt;br&gt;</description>
</item>
<item>
<title>It is possible to add support for emoticons (also known as smileys) to a Blogger weblog, so long as ...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060901170236</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060901170236</guid>
<author>Rob Mitchelmore</author>
<pubDate>Fri, 01 Sep 2006 17:02:36 +0100</pubDate>
<description>&lt;a name=&quot;20060901170236&quot;&gt;&lt;/a&gt;It is possible to add support for emoticons (also known as smileys) to a &lt;a href=&quot;http://www.blogger.com/&quot;&gt;Blogger&lt;/a&gt; weblog, so long as it is hosted on a webhost that supports PHP (using the FTP or SFTP upload options provided by Blogger).  This technique has not been tested using the Blogger beta.  It uses the PHP &lt;code&gt;str_replace&lt;/code&gt; function and the &quot;here document&quot; syntax.&lt;p&gt;Always take a backup of your blog template before editing it.  This is important.&lt;p&gt;Please note that it is important to roughly understand what the code presented here is doing before using it; it is a bad habit to import code entirely blindly.  In addition, this technique is not very efficient.  It is merely adequate.&lt;p&gt;To begin with, it is important that the pages are being published as .php files.  To check this, look under Settings, then under Publishing, and look for the &lt;cite&gt;Blog Filename&lt;/cite&gt; option.  The file name should end in &quot;.php&quot;:&lt;p&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/blogger-blogfilename.png&quot; alt=&quot;Screenshot&quot; class=&quot;figure&quot;&gt;&lt;p&gt;Also look under Settings, Archives; the archive file name  should also end in .php:&lt;p&gt;&lt;img src=&quot;http://new.jamesjoycewaskorean.com/figures/blogger-archivefilename.png&quot; alt=&quot;Screenshot&quot; class=&quot;figure&quot;&gt;&lt;p&gt;If these needed to be changed, then republish the blog and check that the PHP pages work.  If the server returns the source code rather than a formatted page,  then PHP is set up incorrectly.  Once this is working, remove and archive the old .html blog and archive files.&lt;p&gt;Once this has been done and the blog is behaving as it was before, create a file &lt;cite&gt;emote.php&lt;/cite&gt;.  This should contain the following:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;span style=&quot;color: #990000&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$emotes&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #990000&quot;&gt;function&lt;/span&gt; emotify&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$post&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.php.net/global&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;global&lt;/span&gt;&lt;/a&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$emotes&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$p&lt;/span&gt; = &lt;span style=&quot;color: #0000ff;&quot;&gt;$post&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$emotes&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$txt&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$url&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$p&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$txt&lt;/span&gt;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #ff0000;&quot;&gt;'&amp;lt;img src=&amp;quot;'&lt;/span&gt; . &lt;span style=&quot;color: #0000ff;&quot;&gt;$url&lt;/span&gt; . &lt;span style=&quot;color: #ff0000;&quot;&gt;'&amp;quot; alt=&amp;quot;'&lt;/span&gt; .&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.php.net/htmlentities&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;htmlentities&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$txt&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; . &lt;span style=&quot;color: #ff0000;&quot;&gt;'&amp;quot; /&amp;gt;'&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$p&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$p&lt;/span&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #990000&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Upload this to, or create this in, the root directory of the blog, with the main blog file (index.php or whatever was entered in the file name box earlier).  Then edit the template and add the following line to the very top of the template:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;span style=&quot;color: #990000&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;include&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;/full/path/to/emote.php&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;; &lt;span style=&quot;color: #990000&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;replacing the &lt;code&gt;/full/path/to&lt;/code&gt; with the actual filesystem path of emote.php.  Then republish the blog to ensure that it is still working.  If errors are raised, they are probably in emote.php; make sure that your copy of emote.php is correct.&lt;p&gt;If all is correct up to this stage, edit the template of the weblog again.  Find the line that contains &lt;code&gt;&amp;lt;$BlogItemBody$&amp;gt;&lt;/code&gt;.  If the tag is not on a line on its own, then insert linebreaks before and after it so that it is.&lt;p&gt;Then add the following line before it:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;span style=&quot;color: #990000&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$p&lt;/span&gt; = &amp;lt;&amp;lt;&amp;lt; EOP&amp;lt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$BlogItemNumber&lt;/span&gt;$&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;and the following lines after it:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;php&quot;&gt;EOP&amp;lt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$BlogItemNumber&lt;/span&gt;$&amp;gt;;&lt;br /&gt;&lt;a href=&quot;http://www.php.net/print&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;print&lt;/span&gt;&lt;/a&gt; emotify&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$p&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #990000&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;It is very important that the line beginning EOP has no spaces or other characters before it.&lt;p&gt;Once this is done, republish the blog again, and ensure that it works exactly as it did before.&lt;p&gt;Create an emoticons directory in the root of the blog with emote.php.  Upload the emoticon images into this directory.  To activate them, edit the first line of emote.php.  Each emoticon should have an entry consisting of a piece of text and an image url, which should point to your emoticons directory.  For example:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;:)&amp;quot;&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;/emoticons/smiley.png&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;These definitions should be separated by commas; thus, the first lines of emote.php might look like:&lt;p&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;span style=&quot;color: #990000&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$emotes&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;:)&amp;quot;&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;/emoticons/smiley.png&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;;)&amp;quot;&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;/emoticons/wink.png&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&amp;lt;3&amp;quot;&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;/emoticons/heart.png&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;These emoticons will then be substituted into posts when used.&lt;br&gt;</description>
</item>
<item>
<title>A Webchat utilities script for irssi.  Is likely to be very buggy.</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060826162825</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060826162825</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sat, 26 Aug 2006 16:28:25 +0100</pubDate>
<description>&lt;a name=&quot;20060826162825&quot;&gt;&lt;/a&gt;A &lt;a href=&quot;http://new.jamesjoycewaskorean.com/code/irssi/webchat-utils/webchat-utils.pl&quot;&gt;Webchat utilities&lt;/a&gt; script for &lt;a href=&quot;http://irssi.org/&quot;&gt;irssi&lt;/a&gt;.  Is likely to be very buggy.&lt;p&gt;&lt;a href=&quot;http://cgiirc.sourceforge.net/&quot;&gt;CGI:IRC&lt;/a&gt; tends to provide the IP of the originating HTTP connection in hex in the username field.  This script checks to see whether the username is of the form expected and, if so, converts it to a decimal IP and reverse-resolves it where possible.  It provides the following features:&lt;p&gt;&lt;ul&gt;&lt;li&gt;Shows the hostname on join:&lt;br&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;16:14 -!- cheesey_ [~7f000001@testchat.airwired.org] has joined #airwired&lt;br&gt;16:14 -!- cheesey_ is from localhost via cgi:irc&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Shows the hostname in WHOIS:&lt;br&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;16:34 [airwired] -!- cheesey_ [~7f000001@testchat.airwired.org]&lt;br&gt;16:34 [airwired] -!-  actually : localhost&lt;br&gt;16:34 [airwired] -!-  server   : irc.airwired.org [Airwired UK Server]&lt;br&gt;16:34 [airwired] -!- End of WHOIS&lt;br&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Shows hostname in WHOWAS:&lt;br&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;pre&gt;16:35 [airwired] -!- cheesey_ [~7f000001@testchat.airwired.org]&lt;br&gt;16:35 [airwired] -!-  actually : localhost&lt;br&gt;16:35 [airwired] -!-  was      : I am bloody vengeance&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Should just ignore things it doesn't understand rather than crashing horribly.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It requires &lt;code&gt;Net::DNS&lt;/code&gt;.  In addition, please note that at this time the script makes a lookup every time a request is made; there is not yet any caching of DNS responses.&lt;p&gt;If the connection is being bounced through a proxy then the proxy IP will show up and not the originating IP.  There is also no guarantee that an eight-digit hexadecimal ident comes from CGI:IRC, or is the actual IP.  Any data produced by this script should be taken only as guidance.&lt;br&gt;</description>
</item>
<item>
<title>You Are The Sky, Part 2 is now online.  It is probably best to read part 1 before part 2....</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060821152904</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060821152904</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 21 Aug 2006 15:29:04 +0100</pubDate>
<description>&lt;a name=&quot;20060821152904&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.youarethesky.co.uk/&quot;&gt;You Are The Sky&lt;/a&gt;, &lt;a href=&quot;http://www.youarethesky.co.uk/yats.php?id=31&quot;&gt;Part 2&lt;/a&gt; is now online.  It is probably best to read part 1 before part 2.&lt;p&gt;</description>
</item>
<item>
<title>Once upon a time there was a hemulen who worked in a pleasure-ground, which doesn't necessarily mean...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060820035729</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060820035729</guid>
<author>Rob Mitchelmore</author>
<pubDate>Sun, 20 Aug 2006 03:57:29 +0100</pubDate>
<description>&lt;a name=&quot;20060820035729&quot;&gt;&lt;/a&gt;&lt;blockquote&gt;Once upon a time there was a hemulen who worked in a pleasure-ground, which doesn't necessarily mean having a lot of fun. The hemulen's job was to punch holes in tickets, so that people wouldn't have fun more than once, and such a job is quite enough to make anyone sad if you have to do it all your life.&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Tove Jansson, Tales from Moominvalley&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;http://www.kirjasto.sci.fi/tjansson.htm&quot;&gt;Tove Jansson&lt;/a&gt;'s illustrations for &lt;a href=&quot;http://www.zepe.de/tjillu/index.html&quot;&gt;&lt;cite&gt;Alice in Wonderland&lt;/cite&gt;, &lt;cite&gt;The Hunting of the Snark&lt;/cite&gt; and &lt;cite&gt;The Hobbit&lt;/cite&gt;&lt;/a&gt;.&lt;br&gt;</description>
</item>
<item>
<title>Currency conversion script for irssi.  Knocked up in about two hours last night, so may be buggy yet...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060814141514</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060814141514</guid>
<author>Rob Mitchelmore</author>
<pubDate>Mon, 14 Aug 2006 14:15:14 +0100</pubDate>
<description>&lt;a name=&quot;20060814141514&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://new.jamesjoycewaskorean.com/code/irssi/currconv/currconv.pl&quot;&gt;Currency conversion script&lt;/a&gt; for &lt;a href=&quot;http://irssi.org&quot;&gt;irssi&lt;/a&gt;.  Knocked up in about two hours last night, so may be buggy yet.  It fetches the daily XML feed from the &lt;a href=&quot;http://www.ecb.int/&quot;&gt;European Central Bank&lt;/a&gt; (feed is &lt;a href=&quot;http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml&quot;&gt;here&lt;/a&gt;) every twelve hours.&lt;p&gt;To find the list of currencies supported, use the &lt;code&gt;/curlist&lt;/code&gt; command.  To convert a currency use  &lt;code&gt;/cur &amp;lt;amount&amp;gt; &amp;lt;from&amp;gt; &amp;lt;to&amp;gt;&lt;/code&gt;.&lt;p&gt;Let me know if you find any problems.&lt;br&gt;</description>
</item>
<item>
<title>&quot;Soldier, as you sit astride Viellantif...</title>
<link>http://new.jamesjoycewaskorean.com/post.php?post=20060810230059</link>
<guid>http://new.jamesjoycewaskorean.com/post.php?post=20060810230059</guid>
<author>Rob Mitchelmore</author>
<pubDate>Thu, 10 Aug 2006 23:00:59 +0100</pubDate>
<description>&lt;a name=&quot;20060810230059&quot;&gt;&lt;/a&gt;&lt;blockquote&gt;&quot;Soldier, as you sit astride Viellantif&lt;br&gt;Durendal abides inside your sheath; soon you shall grace the day.&quot;&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Van der Graaf Generator - &lt;cite&gt;Ronceveaux&lt;/cite&gt;&lt;/div&gt;&lt;p&gt;&lt;blockquote&gt;&quot;When I shall stand in this great clash of hosts&lt;br&gt;I'll strike a thousand and then seven hundred strokes,&lt;br&gt;Blood-red the steel of Durendal shall run.&quot;&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; &lt;cite&gt;The Song of Roland&lt;/cite&gt; 85 (tr. Dorothy L. Sayers)&lt;/div&gt;&lt;p&gt;&lt;blockquote&gt;&quot;You shouldn't ask yourself such worthless questions.  Aim higher.  Try this: why am I here? Why do I exist, and what is my purpose in this universe?&lt;p&gt;(Answers: 'Cause you are. 'Cause you do. 'Cause I got a shotgun, and you ain't got one.)&lt;p&gt;Notably Unstable,&lt;br&gt;Durandal&quot;&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Bungie - &lt;cite&gt;Marathon (Blaspheme Quarantine, Terminal 2)&lt;/cite&gt;&lt;/div&gt;&lt;p&gt;The &lt;a href=&quot;http://www.gutenberg.org/etext/391&quot;&gt;Song of Roland&lt;/a&gt; is an epic hero-poem in Anglo-Norman (more specifically, it is a &lt;i&gt;chanson de geste&lt;/i&gt;, or song of deeds), which according to Dorothy L Sayers probably took the shape in which we now have it in the late eleventh century.  It tells the story of the betrayal of Count Roland to the Saracens by Ganelon, of the resulting Battle of Roncevaux Pass, of the death of Roland and of Emperor Charlemagne's subsequent revenge for his death.&lt;p&gt;This poem has been referred to in many places; two examples that point out something interesting - possibly about human nature in general - can be found in Bungie's Mac game &quot;&lt;a href=&quot;http://marathon.bungie.org/&quot;&gt;Marathon&lt;/a&gt;&quot; (now downloadable from &lt;a href=&quot;http://trilogyrelease.bungie.org/&quot;&gt;trilogyrelease.bungie.org&lt;/a&gt;) and in the track &quot;Meurglys III&quot; by Van der Graaf Generator.&lt;p&gt;In &lt;i&gt;Marathon&lt;/i&gt;, the player's character appears at the beginning of the game on a space-ship, with little or no memory of his life up until this point.  Upon this ship are three artificial intelligences - the first, Leela, is sane and motherly; the second, Durandal, is insane and treacherous; the third, Tycho, is initially entirely missing.  Durendal shares a name with Roland's sword.&lt;p&gt;In an inversion of the situation in &lt;i&gt;Roland&lt;/i&gt;, Durandal adopts the player as his tool or his champion, or indeed as his sword.  So whose sword is Durandal?&lt;p&gt;&lt;i&gt;Meurglys III&lt;/i&gt; is a song about &lt;a href=&quot;http://www.vandergraafgenerator.co.uk/ph_guitars.htm&quot;&gt;a guitar&lt;/a&gt; called Meurglys III, which in turn shares its name with Ganelon's sword:&lt;p&gt;&lt;blockquote&gt;&quot;Then said Marsile: 'One thing alone remains:&lt;br&gt;There's no good bond where there is no good faith;&lt;br&gt;Give me your oath Count Roland to betray.'&lt;br&gt;Ganelon replies: 'It shall be as you say.'&lt;br&gt;Upon the relics of his good sword Murgleys&lt;br&gt;He sware the treason and sware his faith away.&quot;&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; &lt;cite&gt;Roland&lt;/cite&gt; 46 (tr. Dorothy L. Sayers with a slight modification)&lt;/div&gt;&lt;p&gt;By contrast to Ganelon's treachery, his sword's &lt;a href=&quot;http://www.vandergraafgenerator.co.uk/over2.jpg&quot;&gt;namesake&lt;/a&gt; is spoken of as something trustworthy:&lt;p&gt;&lt;blockquote&gt;&quot;Meurglys III, he's my friend,&lt;br&gt;The only one that I can trust&lt;br&gt;To let it be without pretence:&lt;br&gt;There's no-one else.&lt;p&gt;It's killing me but in the end&lt;br&gt;There's no-one else I know is true&lt;br&gt;There's none in all the masks of men,&lt;br&gt;There's nothing else but my guitar&lt;br&gt;I suppose he'll have to do.&quot;&lt;/blockquote&gt;&lt;br&gt;&lt;div class=&quot;attr&quot;&gt;&amp;mdash; Van der Graaf Generator - &lt;cite&gt;Meurglys III&lt;/cite&gt;&lt;/div&gt;&lt;p&gt;So - allowing for the fact that in general whether the sword or computer or instrument's trustworthiness, or &quot;goodness&quot;, is a projection of its wielder's or its user's or its player's - what does it say about someone's view of themselves that they name their treacherous (albeit fictional) computer after the good man's sword, or their trustworthy guitar after the traitor's?&lt;br&gt;</description>
</item>
</channel>
</rss>

