﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bassett-Jones.com</title>
	<atom:link href="http://www.bassett-jones.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bassett-jones.com</link>
	<description>The web site of Hugh Bassett-Jones</description>
	<lastBuildDate>Sun, 07 Mar 2010 15:00:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>BBC Micro Chuckie Egg Level 4 Guide</title>
		<link>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-4-guide/</link>
		<comments>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-4-guide/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 15:00:02 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[bbc micro]]></category>
		<category><![CDATA[chuckie egg]]></category>
		<category><![CDATA[level 4]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=599</guid>
		<description><![CDATA[Chuckie Egg level 4: lift, gaps and eggs.]]></description>
			<content:encoded><![CDATA[<p>This is my guide to each Chuckie Egg level:</p>
<ol>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-1-guide">Level 1</a></li>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-2-guide">Level 2</a></li>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-3-guide">Level 3</a></li>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-4-guide">Level 4</a></li>
</ol>
<h2>Level 4</h2>
<ul>
<li>Difficulty: <img class="two-star" src="/wp-content/themes/hugh/images/stars.png" alt="Two star out of five difficulty" /></li>
<li>Best time remaining: <strong>826</strong></li>
<li>Number of hens: <strong>4</strong></li>
<li>Speed of hens: <strong>slow</strong></li>
</ul>
<h3>Level 4 strategy</h3>
<p>With a lift and a gap in the bottom platform, this level combines the features introduced in <a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-2-guide">level 2</a> and <a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-3-guide">level 3</a> and adds some tricky jumps to the mix. In particular, the top left jump nearest the caged bird can cause you to fall through if you jump from the nearest platform.</p>
<p>Avoiding hens is still fairly easy where the central ladder can be used to escape.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2010/03/chuckie-egg-level-4.png"><img class="alignnone size-full wp-image-600" title="chuckie-egg-level-4" src="http://www.bassett-jones.com/wp-content/uploads/2010/03/chuckie-egg-level-4.png" alt="" width="600" height="481" /></a></p>
<p><span id="more-599"></span></p>
<h3>Level 4 video play through</h3>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="473" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/v5IEyJgawbg&amp;hl=en_GB&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="600" height="473" src="http://www.youtube-nocookie.com/v/v5IEyJgawbg&amp;hl=en_GB&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-4-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BBC Micro Chuckie Egg Level 3 Guide</title>
		<link>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-3-guide/</link>
		<comments>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-3-guide/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 14:29:36 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[bbc micro]]></category>
		<category><![CDATA[chuckie egg]]></category>
		<category><![CDATA[level 3]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=595</guid>
		<description><![CDATA[Chuckie Egg level 3 introduces the lift!]]></description>
			<content:encoded><![CDATA[<p>This is my guide to each Chuckie Egg level:</p>
<ol>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-1-guide">Level 1</a></li>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-2-guide">Level 2</a></li>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-3-guide">Level 3</a></li>
</ol>
<h2>Level 3</h2>
<ul>
<li>Difficulty: <img class="two-star" src="/wp-content/themes/hugh/images/stars.png" alt="Two star out of five difficulty" /></li>
<li>Best time remaining: <strong>888</strong></li>
<li>Number of hens: <strong>3</strong></li>
<li>Speed of hens: <strong>slow</strong></li>
</ul>
<h3>Level 3 strategy</h3>
<p>This level introduces the lift. This is three moving platforms, moving vertically up the screen. The platforms are not evenly spaced, with two appearing closer together. Missing the lift and falling down the gap between the lift and the platform will result in a life lost.</p>
<p>The level design makes it easy to avoid the hens, but good timing is needed to complete it quickly.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2010/03/chuckie-egg-level-3.png"><img class="alignnone size-full wp-image-596" title="chuckie-egg-level-3" src="http://www.bassett-jones.com/wp-content/uploads/2010/03/chuckie-egg-level-3.png" alt="" width="600" height="480" /></a></p>
<p><span id="more-595"></span></p>
<h3>Level 3 video play through</h3>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="473" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/82lHfmCc-vk&amp;hl=en_GB&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="600" height="473" src="http://www.youtube-nocookie.com/v/82lHfmCc-vk&amp;hl=en_GB&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-3-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BBC Micro Chuckie Egg Level 2 Guide</title>
		<link>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-2-guide/</link>
		<comments>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-2-guide/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 11:46:10 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[bbc micro]]></category>
		<category><![CDATA[chuckie egg]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[playthough]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=590</guid>
		<description><![CDATA[Level 2 complete guide to BBC Micro Chuckie Egg with video play through]]></description>
			<content:encoded><![CDATA[<p>This is my guide to each Chuckie Egg level:</p>
<ol>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-1-guide">Level 1</a></li>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-2-guide">Level 2</a></li>
</ol>
<h2>Level 2</h2>
<ul>
<li>Difficulty: <img class="one-star" src="/wp-content/themes/hugh/images/stars.png" alt="One star out of five difficulty" /></li>
<li>Best time remaining: <strong>831</strong></li>
<li>Number of hens: <strong>3</strong></li>
<li>Speed of hens: <strong>slow</strong><strong> </strong></li>
</ul>
<h3>Level 2 strategy</h3>
<p>The second level has a large number of ladders connecting the platforms. Although there is one more hen compared to level one, there are many jump-able gaps to aid escape and turn back hens.</p>
<p>The single gap on the bottom platform has a gap and falling through results in an instant life lost.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2010/03/chuckie-egg-level-2.png"><img class="alignnone size-full wp-image-591" title="chuckie-egg-level-2" src="http://www.bassett-jones.com/wp-content/uploads/2010/03/chuckie-egg-level-2.png" alt="" width="600" height="479" /></a></p>
<p><span id="more-590"></span></p>
<h3>Level 2 video play through</h3>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="473" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/d0nJBY71wEY&amp;hl=en_GB&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="600" height="473" src="http://www.youtube-nocookie.com/v/d0nJBY71wEY&amp;hl=en_GB&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-2-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BBC Micro Chuckie Egg Level 1 Guide</title>
		<link>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-1-guide/</link>
		<comments>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-1-guide/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 22:39:27 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[bbc micro]]></category>
		<category><![CDATA[chuckie egg]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[playthough]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=536</guid>
		<description><![CDATA[Level 1 Complete guide to BBC Micro Chuckie Egg with video playthrough]]></description>
			<content:encoded><![CDATA[<p>I was a massive fan of <a href="http://en.wikipedia.org/wiki/Chuckie_Eg">Chuckie Egg</a> on the BBC Micro when I was about 10 years old. There have been a <a href="http://www.gameheads.co.uk/games/retro/chuckie-egg-flash/579">couple</a> <a href="http://www.twinbee.org/hob/play.php?snap=chuckie">of</a> <a href="http://marklomas.net/ch-egg/dhtmlch-egg/playch-egg.htm">ports</a>, but it wasn&#8217;t until 2009 that Mark Lomas released the <a href="http://www.marklomas.net/ch-egg/native/native.htm">ultimate version</a> built on an BBC emulator for the PC.</p>
<p>This is my guide to each Chuckie Egg level:</p>
<ol>
<li><a href="http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-1-guide">Level 1</a></li>
</ol>
<h2>Level 1</h2>
<ul>
<li>Difficulty: <img class="one-star" src="/wp-content/themes/hugh/images/stars.png" alt="One star out of five difficulty" /></li>
<li>Best score: <strong>2,260</strong></li>
<li>Number of hens: <strong>2</strong></li>
<li>Speed of hens: <strong>slow</strong><strong> </strong></li>
</ul>
<h3>Level 1 strategy</h3>
<p>The first level is dominated by a central ladder running through all five platforms. Two hens start in the top left of the level, moving slowly towards the bottom. They can sometimes get in the way on the central ladder, but several nearby platforms can be used to wait them out.</p>
<p>The bottom two platforms have plenty of ladders to avoid getting trapped and to practice running and jumping.</p>
<p><img class="alignnone size-full wp-image-542" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/chuckie-egg-level-1.png" alt="Strategy path for completing level 1 of Chuckie Egg" width="600" /><br />
<br/><br />
<span id="more-536"></span></p>
<h3>Level 1 video play through</h3>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="473" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/rEiY2HBihTI&amp;hl=en_GB&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="600" height="473" src="http://www.youtube-nocookie.com/v/rEiY2HBihTI&amp;hl=en_GB&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/bbc-micro-chuckie-egg-level-1-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logging laptop battery life</title>
		<link>http://www.bassett-jones.com/logging-laptop-battery-life/</link>
		<comments>http://www.bassett-jones.com/logging-laptop-battery-life/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 11:35:28 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[battery life]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[scheduled tasks]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=461</guid>
		<description><![CDATA[Checking out netbook battery life on Windows 7 with a bit of C#]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-488 noborder" title="1005 ha netbook in shiny white" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/1005ha.jpg" alt="1005 ha netbook in shiny white" width="125" height="125" />I bought an <a href="http://eeepc.asus.com/global/product1005ha.html">Asus EeePC 1005HA Seashell</a> net book for Christmas with Windows 7 and have been very impressed with battery life and lightness. Still… I wasn&#8217;t sure if <a href="http://en.wikipedia.org/wiki/Sleep_mode">Sleep mode</a> was working as expected, so I logged the battery life for a couple of days under normal use.</p>
<p>I didn&#8217;t use any rigorous scientific testing — &#8216;normal use&#8217; for me was watching a bit of YouTube or iPlayer, checking my email, using Facebook and that kind of thing. If power <em>was</em> still being consumed in Sleep mode, then I would expect big falls in power levels as the net book logged the level after coming out of Sleep.</p>
<h2>Results</h2>
<p>Download <a href="http://www.bassett-jones.com/wp-content/uploads/2010/01/BatteryStatusData.zip">BatteryStatusData</a> for CSV data file of this graph.<br />
<img class="aligncenter noborder size-full wp-image-504" title="netbook-battery-graph" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/netbook-battery-graph.gif" alt="line graph of battery life of my network in percentage remaining and calculated number of hours left" width="570" height="290" /><br />
<span id="more-461"></span>The gaps in the <em>hours remaining</em> green line are where I&#8217;ve removed data that reported -1 hours remaining.</p>
<p><em>Hours remaining</em> appears to be calculated depending on the current task when the log was taken. For example, if I was watching a video, the projected hours remaining if I kept just watching videos is less than if I closed the video and browsed the web.</p>
<p><em>Percentage remaining</em> shows a steady decline. Logging only takes place when the laptop is open, so this is as expected if sleep mode is working as expected. Looks like everything is working as it should be.</p>
<h2>Logging battery life</h2>
<p>Download <a href="http://www.bassett-jones.com/wp-content/uploads/2010/01/BatteryLogger.zip">BatteryLogging.exe</a> and <a href="http://www.bassett-jones.com/wp-content/uploads/2010/01/BatteryLoggerTask.zip">Windows 7 scheduled task</a>.</p>
<p>The battery logger is a scheduled task that runs a simple C# console application regularly. It requires at least version 2.0 of the .net framework due to the PowerStatus class.</p>
<pre>1.  string logFile = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop), "BatteryStatus.csv");
2.
3.  if (!System.IO.File.Exists(logFile))
4.    System.IO.File.WriteAllText(logFile, "Date,Life in seconds,Life in percentage" + System.Environment.NewLine);
5.
6.  string CSV = string.Join(",", new string[] {
7.    System.DateTime.Now.ToString("s"),
8.    System.Windows.Forms.SystemInformation.PowerStatus.BatteryLifeRemaining.ToString(),
9.    System.Windows.Forms.SystemInformation.PowerStatus.BatteryLifePercent.ToString(),
10.   System.Environment.NewLine});
11.
12. System.IO.File.AppendAllText(logFile, CSV);</pre>
<h3>Code breakdown</h3>
<p>1. <code>logFile</code> uses the <code>SpecialFolder</code> enum to create a file path to the user&#8217;s desktop<br />
3. Checks whether the file already exists.<br />
4. <code>WriteAllText</code> will create the file and add the headings of the columns. <code>Environment.NewLine</code> is used to avoid hard-coding in line breaks.<br />
6. <code>CSV</code> will hold line of data to add to the CSV file. <code>string.Join</code> creates the comma separated list.<br />
7. <code>"s"</code> is the <a title="see on msdn" href="http://msdn.microsoft.com/en-us/library/az4se3k1.aspx">standard date and time format</a> for the sortable date time pattern e.g. 2010-01-17T13:45:30.<br />
8. <code>BatteryLifeRemaining</code> gets the approximate number of seconds of battery time remaining using the <a title="see on msdn" href="http://msdn.microsoft.com/en-us/library/system.windows.forms.powerstatus">PowerStatus</a> class.<br />
9. <code>BatteryLifeRemaining</code> gets the approximate percentage of full battery time remaining and appears to be a bit more accurate sometimes for my netbook than BatteryLifeRemaining.<br />
12. <code>AppendAllText</code> open, adds the line of data and closes the file.</p>
<h3>Creating a Window 7 scheduled task</h3>
<p>Press the Windows key and enter &#8216;task scheduler&#8217; into the search box. Select <em>Task Scheduler</em> from the <em>Programs</em> section.</p>
<p><img class="aligncenter size-full wp-image-509" title="launch-task-scheduler" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/launch-task-scheduler.png" alt="screen shot of task scheduler" width="410" height="291" /></p>
<p>Select <em>Create Task&#8230;</em> from the <em>Actions</em> menu.</p>
<p><img class="aligncenter size-full wp-image-511" title="create-task" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/create-task.png" alt="screen shot of creating a new scheduled task" width="600" height="300" /></p>
<p>Complete the fields <em>Name</em> and <em>Description</em> in the General tab. Leave the other options as default.</p>
<p><img class="size-full wp-image-510" title="create-task-1" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/create-task-1.png" alt="screen shot of creating a scheduled task" width="600" height="451" /></p>
<p>From the <em>Triggers</em> tab, select <em>New&#8230; </em>Under advanced settings, make sure <em>Repeat task</em> and <em>Enabled</em> are set.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2010/01/task-trigger.png"><img class="aligncenter size-full wp-image-523" title="task-trigger" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/task-trigger.png" alt="screen shot of setting a scheduled task trigger" width="600" /></a></p>
<p>When the task trigger has been hit, we want the <em>BatteryLogger</em> program to run.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2010/01/task-actions.png"><img class="aligncenter size-full wp-image-520" title="task-actions" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/task-actions.png" alt="screen shot of scheduled task actions" width="600" /></a></p>
<p>By default, scheduled tasks are only run when the computer is plugged into the power socket.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2010/01/task-conditions.png"><img class="aligncenter size-full wp-image-524" title="task-conditions" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/task-conditions.png" alt="screen shot of scheduled task conditions" width="600" /></a></p>
<p>The new task is ready to run.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2010/01/task-status.png"><img class="aligncenter size-full wp-image-522" title="task-status" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/task-status.png" alt="screen shot of completed scheduled task" width="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/logging-laptop-battery-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extract a web site&#8217;s colour palette</title>
		<link>http://www.bassett-jones.com/extract-a-web-sites-colour-palette/</link>
		<comments>http://www.bassett-jones.com/extract-a-web-sites-colour-palette/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 19:06:19 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jslint]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=433</guid>
		<description><![CDATA[How to build a bookmarklet that shows the colour palette of a web site]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bassett-jones.com/wp-content/uploads/2010/01/example-colour-schema.png"><img class="alignright size-full wp-image-447" title="example-colour-schema" src="http://www.bassett-jones.com/wp-content/uploads/2010/01/example-colour-schema.png" alt="" width="251" height="200" /></a><a href="http://www.hextractor.com/">Hextractor </a>is an awesome tool. From their website:</p>
<blockquote><p>Hextractor will extract the colors from your stylesheet — whether they're hex codes, RGB, or named colors — and generate a color palette from them showing you exactly what you've got, displayed in the formats you prefer.</p></blockquote>
<p>However, extracting the colours does rely on a server-side php script and I thought it would make an ideal javascript bookmarklet. An example of the result is shown on the right.</p>
<p>This page also helps me to documents some common javascript examples and links for reference.</p>
<h3>How to install the colour palette bookmarklet</h3>
<p>Try it now! Click <a href="javascript:'use strict';(function(){var g=document.getElementsByTagName('*'),c=g.length,b=['color','borderTopColor','borderRightColor','borderBottomColor','borderLeftColor','backgroundColor'],h={},d,a='',e,f;do{d=g[c-1].currentStyle?g[c-1].currentStyle:window.getComputedStyle(g[c-1],null);for(e=0;e<b.length;e+=1){h[d[b[e]]]=h[d[b[e]]]===undefined?1:h[d[b[e]]]+1}}while(--c);for(f in h){if(h.hasOwnProperty(f)){a+='
<li style=%22margin:3px;padding-left:3px;border-left:solid 50px '+f+'%22>'+f+' ('+h[f]+')</li>
<p>'}}document.getElementsByTagName('body')[0].innerHTML='
<ol style=%22color:#111;margin:5px;padding:5px;width:250px;border:solid 1px goldenrod;background:#fff;opacity:0.9;%22>
<li style=%22padding:0 0 5px 0;font-weight:bold;color:#111;%22>Colours used on this page</li>
<p>'+a+'<br><a href=%22http://www.bassett-jones.com/extract-a-web-sites-colour-palette%22>About this bookmarklet</a> | <a href=%22http://hugh.bassett-jones.com%22>By Hugh</a></ol>
<p>'+document.getElementsByTagName('body')[0].innerHTML}());">this link</a> to view the colours on this site.</p>
<p>To use on other web sites, click and drag this <a href="javascript:'use strict';(function(){var g=document.getElementsByTagName('*'),c=g.length,b=['color','borderTopColor','borderRightColor','borderBottomColor','borderLeftColor','backgroundColor'],h={},d,a='',e,f;do{d=g[c-1].currentStyle?g[c-1].currentStyle:window.getComputedStyle(g[c-1],null);for(e=0;e<b.length;e+=1){h[d[b[e]]]=h[d[b[e]]]===undefined?1:h[d[b[e]]]+1}}while(--c);for(f in h){if(h.hasOwnProperty(f)){a+='
<li style=%22margin:3px;padding-left:3px;border-left:solid 50px '+f+'%22>'+f+' ('+h[f]+')</li>
<p>'}}document.getElementsByTagName('body')[0].innerHTML='
<ol style=%22color:#111;margin:5px;padding:5px;width:250px;border:solid 1px goldenrod;background:#fff;opacity:0.9;%22>
<li style=%22padding:0 0 5px 0;font-weight:bold;color:#111;%22>Colours used on this page</li>
<p>'+a+'<br><a href=%22http://www.bassett-jones.com/extract-a-web-sites-colour-palette%22>About this bookmarklet</a> | <a href=%22http://hugh.bassett-jones.com%22>By Hugh</a></ol>
<p>'+document.getElementsByTagName('body')[0].innerHTML}());">show page colours</a> link to add it to your favorites or bookmarks bar. Visit the web site you would like to see the colour palette of and click on the bookmark or favorite. It will then show the 'Colours used on this page' table.</p>
<ol>
<li><a href="/extract-a-web-sites-colour-palette/#whatis">What is a bookmarklet?</a></li>
<li><a href="/extract-a-web-sites-colour-palette/#outline">Outline of the colour palette bookmarklet</a></li>
<li><a href="/extract-a-web-sites-colour-palette/#code">Code deconstruction</a></li>
<li><a href="/extract-a-web-sites-colour-palette/#jslint">Using JSLint for best practice javascript</a></li>
<li><a href="/extract-a-web-sites-colour-palette/#compressing">Compressing the bookmarklet</a></li>
</ol>
<p><span id="more-433"></span></p>
<h2 id="whatis">What is a bookmarklet?</h2>
<p>A <a href="http://en.wikipedia.org/wiki/Bookmarklet">bookmarklet</a>, or <a href="http://tantek.com/favelets/">favelet</a> is usually a small piece of javascript that can modify a page in a particular way. By adding the bookmarklet to a user's bookmarks, it can be executed on any web page. Examples of bookmarklets include:</p>
<ul>
<li><a href="javascript:void(window.resizeTo(640,480))">changing the window size to 1024 x 768 pixels</a></li>
<li><a href="javascript:void(document.location='http://validator.w3.org/check?uri='+escape(document.location))">validating the current page with the W3C validator</a></li>
<li><a href="javascript:(function(){var i,x; for (i=0;x=document.links[i];++i)x.style.color=[%22blue%22,%22red%22,%22orange%22][sim(x,location)]; function sim(a,b) { if (a.hostname!=b.hostname) return 0; if (fixPath(a.pathname)!=fixPath(b.pathname) || a.search!=b.search) return 1; return 2; } function fixPath(p){ p = (p.charAt(0)==%22/%22 ? %22%22 : %22/%22) + p;/*many browsers*/ p=p.split(%22?%22)[0];/*opera*/ return p; } })()">highlighting links in a page</a></li>
</ul>
<h2 id="outline">Outline of the colour palette bookmarklet</h2>
<p>The bookmarklet can be broken down into the following steps:</p>
<ol>
<li>Get all the html tags that make up the web page</li>
<li>Examine each tag to see its text colour, border colour and background colour.</li>
<li>Add each colour to a holding array</li>
<li>Show a list of distinct colours and their values</li>
</ol>
<h2 id="code">Code deconstruction</h2>
<p>Full listing with line numbers:</p>
<pre><a href="#line1">1</a>  'use strict';
<a href="#line2">2</a>  /*global window: false */
3
<a href="#line4">4</a>  (function () {
<a href="#line5">5</a>    var elements = document.getElementsByTagName('*'),
<a href="#line5">6</a>    elementsLength = elements.length,
<a href="#line5">7</a>    attributes = ['color', 'borderTopColor', 'borderRightColor', 'borderBottomColor', 'borderLeftColor', 'backgroundColor'],
<a href="#line5">8</a>    colours = {},
<a href="#line5">9</a>    style,
<a href="#line5">10</a>   output = '',
<a href="#line5">11</a>   count,
<a href="#line5">12</a>   property;
13
<a href="#line14">14</a>   do {
<a href="#line15">15</a>     style = elements[elementsLength - 1].currentStyle ? elements[elementsLength - 1].currentStyle : window.getComputedStyle(elements[elementsLength - 1], null);
<a href="#line16">16</a>     for (count = 0; count &lt; attributes.length; count += 1) {
<a href="#line17">17</a>       colours[style[attributes[count]]] = colours[style[attributes[count]]] === undefined ? 1 : colours[style[attributes[count]]] + 1;
<a href="#line16">18</a>     }
<a href="#line14">19</a>   } while (--elementsLength);
20
<a href="#line21">21</a>   for (property in colours) {
<a href="#line22">22</a>     if (colours.hasOwnProperty(property)) {
<a href="#line23">23</a>       output += '&lt;li style=%22margin:3px;padding-left:3px;border-left:solid 50px ' + property + '%22&gt;' + property + ' (' + colours[property] + ')&lt;/li&gt;';
<a href="#line22">24</a>     }
<a href="#line21">25</a>   }
26
<a href="#line27">27</a>   document.getElementsByTagName('body')[0].innerHTML = '&lt;ol style=%22color:#111;margin:5px;padding:5px;width:250px;border:solid 1px goldenrod;background:#fff;opacity:0.9;%22&gt;&lt;li style=%22padding:0 0 5px 0;font-weight:bold;color:#111;%22&gt;Colours used on this page&lt;/li&gt;' + output + '&lt;br&gt;&lt;a href=%22http://www.bassett-jones.com/page-colours-bookmarklet%22&gt;About this bookmarklet&lt;/a&gt; | &lt;a href=%22http://hugh.bassett-jones.com%22&gt;By Hugh&lt;/a&gt;&lt;/ol&gt;' + document.getElementsByTagName('body')[0].innerHTML;
28
<a href="#line4">29</a> }());</pre>
<p><em>Line 1</em> is a way of reporting errors when using poor javascript practice. John Resig covers it in more detail in <a href="http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more">ECMAScript 5 Strict Mode</a>.</p>
<p><em>Line 2</em> comment used for the <a href="#jslint">JSLint checker</a>.</p>
<p><em>Line 4</em> encapsulates the javascript to avoid conflicts and global scope of variables. <a href="http://stackoverflow.com/questions/1634268/explain-javascripts-encapsulated-anonymous-function-syntax">Stack Overflow</a> has a great explanation.</p>
<p><em>Lines 5-12</em> declare and initial all variables used in the script.</p>
<p><em>Lines 14 + 19</em> efficiently loop backwards through all the elements in the page.</p>
<p><em>Line 15</em> get the <a href="https://developer.mozilla.org/en/DOM/window.getComputedStyle">computedStyle</a> for non-IE browsers or the <a href="http://msdn.microsoft.com/en-us/library/ms535231(VS.85).aspx">currentStyle</a> for Internet Explorer.</p>
<p><em>Line 16</em> loop through the list of previously declared style attributes such as background colour and border colour.</p>
<p><em>Line 17</em> check whether the holding colour list already contains the style colour. If so, add to the count, otherwise add it to the list.</p>
<p><em>Line 21</em> loop through the properties of the colour holding list.</p>
<p><em>Line 22</em> <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference:Global_Objects:Object:hasOwnProperty">hasOwnProperty</a> removes properties inherited through the prototype chain.</p>
<p><em>Line 23</em> adds a html list item to the output string. %22 is the <a href="http://www.w3schools.com/jsref/jsref_escape.asp">escaped value</a> of ", as the raw quote symbol will eventually be used in the href link.</p>
<p><em>Line 27</em> inserts the output string at the top of the &lt;body&gt; tag.</p>
<h2 id="jslint">Using JSLint for best practice javascript</h2>
<p>Once the javascript is written and tested in a couple of browsers to make sure it works, it can be a good idea to run it though <a href="http://jslint.com">JSLint</a> to test for code quality. The colour palette bookmarklet was run through with 'The Good Parts' and 'Assume a browser' checked, which results in the options list of:</p>
<pre>/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */</pre>
<h2 id="compressing">Compressing the bookmarklet</h2>
<p>Internet Explorer supports a <a href="http://support.microsoft.com/kb/208427">maximum URL length of 1,083</a>, with other modern browsers having no effective limit. This means that the javascript needs to be under 1,083 characters in total to work in IE. Luckily, there are a number of <a href="http://compressorrater.thruhere.net/">javascript compressors available online</a> which can crunch variable names to single characters, remove unnecessary comments and delete white space.</p>
<p>Using the <a href="http://developer.yahoo.com/yui/compressor/">YUI compressor</a> results in 1,010 characters for the colour bookmarklet</p>
<pre>javascript:'use strict';(function(){var g=document.getElementsByTagName('*'),c=g.length,b=['color','borderTopColor','borderRightColor','borderBottomColor','borderLeftColor','backgroundColor'],h={},d,a='',e,f;do{d=g[c-1].currentStyle?g[c-1].currentStyle:window.getComputedStyle(g[c-1],null);for(e=0;e&lt;b.length;e+=1){h[d[b[e]]]=h[d[b[e]]]===undefined?1:h[d[b[e]]]+1}}while(--c);for(f in h){if(h.hasOwnProperty(f)){a+='&lt;li style=%22margin:3px;padding-left:3px;border-left:solid 50px '+f+'%22&gt;'+f+' ('+h[f]+')&lt;/li&gt;'}}document.getElementsByTagName('body')[0].innerHTML='&lt;ol style=%22color:#111;margin:5px;padding:5px;width:250px;border:solid 1px goldenrod;background:#fff;opacity:0.9;%22&gt;&lt;li style=%22padding:0 0 5px 0;font-weight:bold;color:#111;%22&gt;Colours used on this page&lt;/li&gt;'+a+'&lt;br&gt;&lt;a href=%22http://www.bassett-jones.com/extract-a-web-sites-colour-palette%22&gt;About this bookmarklet&lt;/a&gt; | &lt;a href=%22http://hugh.bassett-jones.com%22&gt;By Hugh&lt;/a&gt;&lt;/ol&gt;'+document.getElementsByTagName('body')[0].innerHTML}());</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/extract-a-web-sites-colour-palette/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making a magic dragon</title>
		<link>http://www.bassett-jones.com/making-a-magic-dragon/</link>
		<comments>http://www.bassett-jones.com/making-a-magic-dragon/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 13:10:56 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[dragon]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[optical illusion]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=379</guid>
		<description><![CDATA[Step by step instructions on how to cut out and assemble a dragon that stares at you as you walk around the room]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/vhttv0jiHd0&amp;hl=en_GB&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube-nocookie.com/v/vhttv0jiHd0&amp;hl=en_GB&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p style="text-align: center;"><a href="http://www.youtube.com/watch?v=vhttv0jiHd0"> TROGDOR the BURNINATOR Magic Dragon on YouTube</a></p>
<h2>You will need</h2>
<ol>
<li><a href="http://www.bassett-jones.com/making-a-magic-dragon/#templates">Template print out</a></li>
<li>Scissors</li>
<li>A tiny bit of sticky tape</li>
<li>Socks to be knocked off</li>
</ol>
<h3 id="templates">Templates</h3>
<table border="0">
<tbody>
<tr>
<td>
<h4 style="text-align: center;">Cat Illusion</h4>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/Cat-Illusion-779x1024.jpg"><img class="alignleft size-thumbnail wp-image-382" title="cat illusion template" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/Cat-Illusion-150x150.jpg" alt="Cat Illusion template" width="150" height="150" /></a></p>
<p style="text-align: center;"><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/Cat-Illusion-779x1024.jpg">download</a> | <a href="http://papercraft.wikidot.com/papercraft:cat-illusion">source</a></p>
</td>
<td>
<h4 style="text-align: center;">Dragon Illusion</h4>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/green-dragon-778x1024.jpg"><img class="alignleft size-thumbnail wp-image-390" title="dragon illusion template" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/green-dragon-150x150.jpg" alt="green dragon illusion template" width="150" height="150" /></a></p>
<p style="text-align: center;"><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/green-dragon-778x1024.jpg">download</a> | <a href="http://www.grand-illusions.com/opticalillusions/dragon_illusion/">source</a></p>
</td>
<td>
<h4 style="text-align: center;">Super Robot Dog</h4>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/superrobot.pdf"> <img class="alignleft size-thumbnail wp-image-396" title="super robot dog illusion template" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/SuperRobot_Dog_pat-150x150.jpg" alt="SuperRobot illusion template" width="150" height="150" /></a></p>
<p style="text-align: center;"><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/superrobot.pdf">download</a> | <a href="http://pekko.exteen.com/20081118/superrobot-dog-version">source</a></p>
</td>
</tr>
</tbody>
</table>
<p><span id="more-379"></span></p>
<h2>Cut out the template</h2>
<p>Cut around the black line of the template, just leaving the part in the middle. Don&#8217;t forget to cut the slits at the bottom for the tabs to go into.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout1.jpg"><img class="alignleft size-thumbnail wp-image-406" title="cutting round the template" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout1-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout2.jpg"><img class="alignleft size-thumbnail wp-image-407" title="cutting round the cat template" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout2-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout3.jpg"><img class="alignleft size-thumbnail wp-image-408" title="cutting round the cat template" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout3-150x150.jpg" alt="" width="150" height="150" /></a><br />
<a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout4.jpg"><img class="alignleft size-thumbnail wp-image-409" title="cutting out the cat template" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout4-150x150.jpg" alt="cutout 4" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout5.jpg"><img class="alignleft size-thumbnail wp-image-410" title="cat template cut out" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout5-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout6.jpg"><img class="alignleft size-thumbnail wp-image-405" title="cat template cutout" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/cutout6-150x150.jpg" alt="" width="150" height="150" /></a></p>
<h2>Assemble the template</h2>
<p>Score, fold and tape the template together. Scoring by running the scissor edge along the fold line helps crease the paper in the correct place. The only tricky part of this is to make sure you fold the head part <em>in</em>. This is shown in <a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold4.jpg">this angle</a> and the <a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/tape2.jpg">head close up</a>. If this goes wrong, you can always re-fold it the correct way.</p>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/score1.jpg"><img class="alignleft size-thumbnail wp-image-420" title="scoring along the fold line" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/score1-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/score2.jpg"><img class="alignleft size-thumbnail wp-image-421" title="scoring along the fold line" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/score2-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/score3.jpg"><img class="alignleft size-thumbnail wp-image-422" title="scoring along the fold line" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/score3-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold1.jpg"><img class="alignleft size-thumbnail wp-image-416" title="folding the base" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold1-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold2.jpg"><img class="alignleft size-thumbnail wp-image-417" title="base folded and tucked" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold2-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold3.jpg"><img class="alignleft size-thumbnail wp-image-418" title="base folded and tucked" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold3-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold4.jpg"><img class="alignleft size-thumbnail wp-image-419" title="demonstration of head fold" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/fold4-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/tape1.jpg"><img class="alignleft size-thumbnail wp-image-423" title="taping the head from behind" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/tape1-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/tape2.jpg"><img class="alignleft size-thumbnail wp-image-415" title="close up of taping the head" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/tape2-150x150.jpg" alt="" width="150" height="150" /></a></p>
<h2>Be amazed</h2>
<p><a href="http://www.bassett-jones.com/wp-content/uploads/2009/12/complete.jpg"><img class="alignnone size-full wp-image-414" title="completed and assembled cat illusion" src="http://www.bassett-jones.com/wp-content/uploads/2009/12/complete.jpg" alt="" width="600" height="450" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/making-a-magic-dragon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My development toolbox</title>
		<link>http://www.bassett-jones.com/my-development-toolbox/</link>
		<comments>http://www.bassett-jones.com/my-development-toolbox/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 22:40:24 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[balsamiq mockups]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[filezilla]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[notepad++]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=164</guid>
		<description><![CDATA[My top software tools for building stuff]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a core list of software tools that I find indispensable for development in the office and at home. This list helps me keep track of the tools I need when re-building a computer.</p>
<h3>1. <a href="http://msdn.microsoft.com/en-gb/vstudio/">Visual Studio</a></h3>
<p>As a .net developer, VS 2008 is a fantastic Integrated Developer Environment. From code snippets to Intellisense, debugging to stack traces, Visual Studio helps me develop swiftly while concentrating on the code.</p>
<h3>2. <a href="http://www.mozilla.com/firefox/ ">Firefox</a> + <a href="http://getfirebug.com/ ">Firebug extension</a> + <a href="http://chrispederick.com/work/web-developer/">Web Developer extension</a></h3>
<p>I recently had a problem running Firefox on my new PC and boy, did I miss Firebug and the Web Developer extension. Although some of the features overlap, the simplicity of Web Developer means that it is very quick and easy to disable CSS, view all images or check page size.</p>
<p>Firebug is indispensable to hunt down CSS inheritance irritations, preview quick style modifications or unravel client-side javascript complexities.</p>
<p>Special mention to <a href="https://addons.mozilla.org/en-US/firefox/addon/271">ColorZilla</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/59">User Agent Switcher</a> and <a href="https://addons.mozilla.org/en-US/firefox/addon/5648">FireShot</a>.</p>
<p><span id="more-164"></span></p>
<h3>3. <a href="http://www.fiddlertool.com/">Fiddler</a></h3>
<p>A comprehensive HTTP debugging  proxy, Fiddler allows you to examine the raw HTTP traffic between the browser and server. Works well with HTTPS too.</p>
<h3>4. <a href="http://notepad-plus.sourceforge.net/ ">Notepad++</a></h3>
<p>Notepad++ is a text editor hitting all my major requirements: colour coding, quick to load, and excellent FTP integration.</p>
<h3>5. <a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a></h3>
<p>Useful, quick and easy wire framing for web applications and iphone designs.</p>
<h3>6. <a href="http://www.adobe.com/products/photoshop">Photoshop</a></h3>
<p>The granddaddy of image manipulation software, I probably only use 5% of all its features. Once I got over it&#8217;s irritating non-standard menus, I really appreciated the way tools such as spot healing work so well.</p>
<h3>7. <a href="http://filezilla-project.org/">FileZilla</a></h3>
<p>A bit under-rated, FileZilla is a top-notch FTP client that is small, light and regularly updated.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/my-development-toolbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding google.co.uk as a search provider</title>
		<link>http://www.bassett-jones.com/adding-google-co-uk-as-a-search-provider/</link>
		<comments>http://www.bassett-jones.com/adding-google-co-uk-as-a-search-provider/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 22:30:55 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=339</guid>
		<description><![CDATA[How to set the local Google United Kingdom as the default search instead of Google.com]]></description>
			<content:encoded><![CDATA[<p>I found changing the default Google search from google.com to the local google.co.uk a bit of a faff.  As IE 7 and 8, Firefox 2 and 3, and Chrome all support <a href="http://www.opensearch.org/Specifications/OpenSearch/1.1">OpenSearch</a>, there are two simple ways to set google.co.uk as the default search provider:</p>

<h3>Click on the button</h3>
<p style="text-align:center;"><input type="button" value="click to set google.co.uk as a search provider"
   onClick="window.external.AddSearchProvider('http://www.bassett-jones.com/wp-content/uploads/2009/10/googlecouk.xml');"></p>
<span id="more-339"></span>
<h3>OpenSearch xml</h3>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"&gt;
    &lt;ShortName&gt;Google.co.uk&lt;/ShortName&gt;
    &lt;Description&gt;Google United Kingdom search provider&lt;/Description&gt;
    &lt;Url type="text/html" template="http://www.google.co.uk/search?q={searchTerms}&amp;meta=cr%3DcountryUK%7CcountryGB"/&gt;  
    &lt;Url rel="suggestions" type="application/x-suggestions+xml" template="http://clients5.google.com/complete/search?q={searchTerms}&amp;mw={ie:maxWidth}&amp;sh={ie:sectionHeight}&amp;rh={ie:rowHeight}&amp;inputencoding={inputEncoding}&amp;outputencoding={outputEncoding}" /&gt;
    &lt;Image height="16" width="16" type="image/icon"&gt;http://www.google.com/favicon.ico&lt;/Image&gt;
&lt;/OpenSearchDescription&gt;
</pre>
<h3>Or follow these steps in Internet Explorer</h3>
<ol>
<li>Use the drop down menu in the search engine box and click on <a href="http://www.ieaddons.com/gb/searchproviders">Find more providers...
<img src="http://www.bassett-jones.com/wp-content/uploads/2009/10/findmoreproviders.png" alt="find more providers" width="312" height="163" class="alignnone size-full wp-image-346" /></a><br /><br />
</li>
<li>Scroll down to the bottom of the page and click on <a href="http://www.ieaddons.com/gb/createsearch.aspx">Create your own Search Provider<img src="http://www.bassett-jones.com/wp-content/uploads/2009/10/createownprovider.png" alt="create your own provider" width="100%" class="alignnone size-full wp-image-348" /></a><br /><br /></li>
<li>Enter the following:
<ul>
<li>URL: <input type="text" value="http://www.google.co.uk/search?q=TEST&meta=cr%3DcountryUK%7CcountryGB" style="width: 500px;" /></li>
<li>Name: <input type="text" value="Google.co.uk" /></li>
<li>Character encoding: <input type="text" value="UTF-8" /></li>
</ul>
 and click on <em>Install Search Provider</em> button<br /<img src="http://www.bassett-jones.com/wp-content/uploads/2009/10/createownprovider21.png" alt="create your own provider2" width="492" height="388" class="alignnone size-full wp-image-353" /></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/adding-google-co-uk-as-a-search-provider/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Installing WordPress 2.8 on a Windows server: an anatomy of a web site</title>
		<link>http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/</link>
		<comments>http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 11:52:33 +0000</pubDate>
		<dc:creator>Hugh</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[win2k3]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress plugin]]></category>

		<guid isPermaLink="false">http://www.bassett-jones.com/?p=142</guid>
		<description><![CDATA[How I installed Wordpress 2.8 on Windows 2003 server with pretty permalinks and custom theme]]></description>
			<content:encoded><![CDATA[<p>The company that hosts my website — <a href="http://www.csnewmedia.com">CS New Media</a> — provide Linux or Windows hosting. As <a href="http://hugh.bassett-jones.com">I&#8217;m a developer</a> who works mainly in Microsoft technologies, I&#8217;ve opted for the Windows hosting package which also supports ASP.NET 3.5, PHP 5, MS SQL Server and MySQL.</p>
<p>This guide details how I set up <a href="http://www.bassett-jones.com">Bassett-Jones.com</a> and dealt with any problems along the way. There was a learning curve as I hadn&#8217;t much exposure to PHP, but documentation is one of <a href="http://www.php.net/manual/en/">PHP</a> and <a href="http://codex.wordpress.org/">WordPress</a>&#8217;s strengths.</p>
<ol>
<li><a href="http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#section1">Setting up a basic Wordpress installation</a></li>
<li><a href="http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#section2">Setting user-friendly custom permalinks</a></li>
<li><a href="http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#section3">Designing the theme</a></li>
<li><a href="http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#section4">Creating custom theme pages</a></li>
<li><a href="http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#section5">Getting hugh.bassett-jones.com subdomain to work as a Wordpress page</a></li>
<li><a href="http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#section6">Installing standard plugins plugins</a></li>
<li><a href="http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#section7">Modifying and tweaking plugins</a></li>
<li><a href="http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/#section8">Writing custom plugins</a></li>
</ol>
<h2 id="section1">1. Setting up a basic Wordpress installation</h2>
<p><strong>Difficulty:</strong> <img class="one-star" src="/wp-content/themes/hugh/images/stars.png" alt="One star out of five" /></p>
<p>WordPress&#8217;s basic set up and installation is wonderfully simple.</p>
<h3>Things to check first with your web host documentation:</h3>
<ul>
<li>How to create a database and database user. My web host uses the <a href="http://www.parallels.com/products/helm/">Helm</a> control panel which includes a database manager.</li>
<li>How to copy files to your web server. This is usually done through an FTP client such as <a href="http://wiki.filezilla-project.org/Using">FileZilla</a>.</li>
<li>Make sure PHP is running using a test.php file with <code>&lt;?php phpinfo() ?&gt;</code></li>
</ul>
<h3>Following the <a href="http://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install">Famous 5-Minute Installation Guide</a></h3>
<ol>
<li>Create a database and database user e.g. <code>wordpress1</code> and <code>wordpress1user</code></li>
<li>Download the <a href="http://wordpress.org/download/">latest version</a> of WordPress and unzip</li>
<li>Rename the <code>wp-config-sample.php</code> file to <code>wp-config.php</code>.</li>
<li>Edit the following lines in the newly renamed <code>wp-config.php</code>.
<pre>/** The name of the database for WordPress */
define('DB_NAME', 'wordpress1');

/** MySQL database username */
define('DB_USER', 'wordpress1user');

/** MySQL database password */
define('DB_PASSWORD', 'userpassword');

/** MySQL hostname */
define('DB_HOST', 'mysql5.webhost.com');</pre>
</li>
<li>Copy all the files to your web server</li>
<li>Visit the start page to complete the installation</li>
</ol>
<p><span id="more-142"></span></p>
<h2 id="section2">2. Setting user-friendly custom permalinks</h2>
<p><strong>Difficulty:</strong> <img class="two-star" src="/wp-content/themes/hugh/images/stars.png" alt="Two stars out of five" /></p>
<p>Windows 2003 and IIS 6 do not include URL rewriting and so cannot map a page such as www.bassett-jones.com/?page_id=9 to the more friendly www.bassett-jones.com/hugh/ in the same way that Apache does using mod_rewrite.</p>
<p>If your web host supports <a href="http://en.wikipedia.org/wiki/Custom_error_pages">custom error pages</a>, you can use this to create user-friendly custom permalinks.</p>
<p>Request -&gt; Status 404 Not Found -&gt;  wp-404-handler.php -&gt; Status 200 Success</p>
<ol>
<li>Create a new page called <code>wp-404-handler.php</code></li>
<li>Add the following code
<pre>&lt;?php
  $_SERVER['REQUEST_URI'] = substr($_SERVER['QUERY_STRING'], strpos($_SERVER['QUERY_STRING'],   ':80')+3);
  $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
  include('index.php');
?&gt;</pre>
</li>
<li>Upload <code>wp-404-handler.php</code> to your web server</li>
<li>Set your custom error page to point to <code>wp-404-handler.php</code>. <a href="http://www.serverintellect.com/support/helm4/helm4-custom-error.aspx">View instructions for Helm control panel</a>.</li>
<li> I like the web site addresses in the format www.bassett-jones.com/post-title/, so from the WordPress Dashboad go to Settings &gt; Permalinks &gt; Common Settings &gt; Custom Structure and set to <code>/%postname%/.</code></li>
</ol>
<p>Note that once this is done, the page at the custom permalink will not accept any forms with a method of <code>post</code>. This means that some of the plugins break and may need tweaking as detailed in <a href="#section7">7. Modifying and tweaking plugins</a>.</p>
<h2 id="section3">3. Designing the theme</h2>
<p><strong>Difficulty:</strong> <img class="three-star" src="/wp-content/themes/hugh/images/stars.png" alt="Three stars out of five" /></p>
<p>I already had an idea how I wanted the site to look based on the previous version. Sketching out the design in <a href="www.balsamiq.com/products/mockups">Balsamiq Mockups</a> showed the main areas of the two different types of pages — one for entries, and one for pages such as Search, About and Tags.</p>
<p><img class="alignnone size-full wp-image-233" src="http://www.bassett-jones.com/wp-content/uploads/2009/08/post-page-sketch.png" alt="Sketch of post page" width="622" height="666" /></p>
<p><img class="alignnone size-full wp-image-235" src="http://www.bassett-jones.com/wp-content/uploads/2009/08/page-sketch.png" alt="page sketch" width="608" height="523" /></p>
<p>The <a href="http://codex.wordpress.org/Template_Hierarchy">Template Hierarchy</a> and default theme give a breakdown and example of how to construct a custom theme. My post page design fitted into the standard <a href="http://codex.wordpress.org/Stepping_Into_Templates">Header → Content → Sidebar → Footer</a> theme design.</p>
<p>To manage the different styles between post-type pages and standard pages, I created two styles sheets <code>style.css</code> and <code>page.css</code>. The <code>header.php</code> then includes either one depending on the type of page:</p>
<pre>&lt;?php if (is_page() || is_404() || is_search() || is_archive() ) { ?&gt;
  &lt;link rel="stylesheet" href="&lt;?php bloginfo('template_directory') ?&gt;/page.css" type="text/css" media="screen" /&gt;
&lt;?php } else { ?&gt;
  &lt;link rel="stylesheet" href="&lt;?php bloginfo('stylesheet_url') ?&gt;" type="text/css" media="screen" /&gt;
&lt;?php } ?&gt;</pre>
<p>The sidebar blocks 3 &#8211; 7 are automatically handled through the administration interface and <code>sidebar.php</code> by using:</p>
<pre>&lt;?php dynamic_sidebar() ?&gt;</pre>
<h2 id="section4">4. Creating custom theme pages</h2>
<p><strong>Difficulty: <img class="three-star" src="/wp-content/themes/hugh/images/stars.png" alt="Three stars out of five" /></strong></p>
<p>My theme required separate pages for <a href="http://www.bassett-jones.com/about/">About</a>, <a href="http://www.bassett-jones.com/all/">All</a>, <a href="http://www.bassett-jones.com/contact/">Contact</a>, <a href="http://www.bassett-jones.com/hugh/">Hugh</a>, <a href="http://www.bassett-jones.com/random/">Random</a>, <a href="http://www.bassett-jones.com/search/">Search</a>, and <a href="http://www.bassett-jones.com/tags/">Tags</a>. About, Contact and Hugh could use the standard template, while the rest would need a custom theme page each. <a href="http://codex.wordpress.org/Creating_a_Search_Page">codex.wordpress.org/Creating_a_Search_Page</a> details the steps of how to create a search page using a custom template file. The other pages were created in a similar way.</p>
<ol>
<li>Create a new page template</li>
<li>On the edit page dashboard option, choose the template file to use</li>
</ol>
<h3>All pages and posts</h3>
<pre>&lt;?php
  /*
  Template Name: All
  */
?&gt;

...

&lt;?php query_posts('orderby=post_modified&amp;order=desc'); ?&gt;
&lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;
  &lt;div class="post"&gt;
    &lt;h2 id="post-&lt;?php the_ID(); ?&gt;"&gt;&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt;
    ...
  &lt;/div&gt;
&lt;?php endwhile; endif; ?&gt;

&lt;?php $pages = get_pages('orderby=post_modified&amp;order=desc'); ?&gt;
&lt;?php foreach ($pages as $page) { ?&gt;
  &lt;div class="page"&gt;
    &lt;h2&gt;&lt;a href="&lt;?php echo get_page_link($page-&gt;ID) ?&gt;"&gt;&lt;?php echo ucfirst($page-&gt;post_title) ?&gt;&lt;/a&gt;&lt;/h2&gt;
    ...
  &lt;/div&gt;
&lt;?php } ?&gt;</pre>
<h3>Go to a random page</h3>
<pre>&lt;?php
/*
Template Name: Random
*/
?&gt;
&lt;?php
  $rand = new WP_Query();
  $rand-&gt;query('showposts=1&amp;orderby=rand');

  while ($rand-&gt;have_posts()) : $rand-&gt;the_post();
    $location = "Location: " . get_permalink();
  endwhile; 

  header($location,true,302);
?&gt;</pre>
<h3>Search site</h3>
<pre>&lt;?php
/*
Template Name: Search
*/
?&gt;
&lt;?php get_header(); ?&gt;

&lt;div id="main"&gt;
  &lt;h1&gt;Search Bassett-Jones.com&lt;/h1&gt;
  &lt;?php get_search_form() ?&gt;
&lt;/div&gt;

&lt;?php get_footer(); ?&gt;</pre>
<h3>Tag cloud</h3>
<pre>&lt;?php
/*
Template Name: Tags
*/
?&gt;
&lt;?php get_header(); ?&gt;

&lt;div id="main"&gt;
  &lt;h1&gt;Tags o' plenty&lt;/h1&gt;
  &lt;?php wp_tag_cloud(); ?&gt;
&lt;/div&gt;

&lt;?php get_footer(); ?&gt;</pre>
<h2 id="section5">5. Getting hugh.bassett-jones.com subdomain to work as a Wordpress page</h2>
<p><strong>Difficulty: <img class="two-star" src="/wp-content/themes/hugh/images/stars.png" alt="Two stars out of five" /></strong></p>
<p>WordPress is installed on www.bassett-jones.com, but I like the style of hugh.bassett-jones.com instead of www.bassett-jones.com/hugh/. My web host sets up subdomains to map to a sub folder of the main domain. This means that hugh.bassett-jones.com needs to map to a file that exists at www.bassett-jones.com/hugh/index.php.</p>
<p>This page /hugh/index.php then retrieves the real page content.</p>
<pre>&lt;?php
if($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] == "www.bassett-jones.com/hugh/") {
  header("Location: http://hugh.bassett-jones.com",true,301);
  exit;
}
echo file_get_contents('http://www.bassett-jones.com/?page_id=9');
?&gt;</pre>
<p>The above code checks if www.bassett-jones.com/hugh/ is being requested, and if so permanently redirects to hugh.bassett-jones.com. It then retrieve the Hugh page using the hard-coded page_id, as /hugh/ would continually loop.</p>
<h2 id="section6">6. Installing standard plugins plugins</h2>
<p><strong>Difficulty:</strong> <img class="one-star" src="/wp-content/themes/hugh/images/stars.png" alt="One star out of five" /></p>
<p>These are the plugins that required no modification and extend the standard WordPress installation. They were installed using the Dashboard <a href="http://codex.wordpress.org/Managing_Plugins">Plugins Installation</a> and <a href="http://codex.wordpress.org/Appearance_Widgets_SubPanel">Widget Panel</a>.</p>
<p><strong><a href="http://akismet.com/">Akismet</a></strong> Checks comments against the Akismet web service to see if they look like spam or not and reduces the amount of unwanted comments.</p>
<p><strong><a href="http://eightface.com/wordpress/flickrrss/">flickrRSS</a></strong> Integrates photos from the flickr RSS and allows you to specify the template HTML.</p>
<p><strong><a href="http://www.arnebrachhold.de/redir/sitemap-home/">Google XML Sitemaps</a></strong> Automatically generate a sitemaps.org compatible site map for search engines to find content.</p>
<p><strong><a href="http://w-shadow.com/blog/2007/12/13/raw-html-in-wordpress/">Raw HTML capability</a> </strong>On a per-post basis, disable the automatic html conversion of the WordPress rich text editor. Useful for posts with with code in them.</p>
<p><strong><a href="http://wordpress.org/extend/plugins/stats/">Wordpress.com stats</a><span style="font-weight: normal;"> Simple visitor tracking and analysis.</span></strong></p>
<p><strong><a href="http://alexrabe.boelinger.com/">WP-Memory-Usage</a> </strong>Shows the current memory usage and limit on the Dashboard.</p>
<h2 id="section7">7. Modifying and tweaking plugins</h2>
<p><strong>Difficulty:</strong> <img class="four-star" src="/wp-content/themes/hugh/images/stars.png" alt="Four stars out of five" /></p>
<h3>Tiny Contact Form</h3>
<p>By default, <a href="http://www.tomsdimension.de/wp-plugins/tiny-contact-form">Tiny Contact Form</a> has an empty form action that <code>POST</code>s the contact data back to the page that it is currently on (around line 76 in <code>tiny-contact-form.php</code>).</p>
<pre>&lt;form action="" method="post"&gt;</pre>
<p>This does not work with <a href="#section2"> 2. Setting user-friendly custom permalinks</a>, as only <code>GET</code> actions are supported. I modified the action to post to the underlying page address instead:</p>
<pre>&lt;form action="' . get_bloginfo("url") . '/?page_id=' . get_the_ID() . '" method="post"&gt;</pre>
<p>Commenting on pages does not need a similar modification, as the comment form <code>POST</code>s to <code>wp-comments-post.php</code>.</p>
<h3>WPtouch iPhone Theme</h3>
<p><img class="alignright size-full" src="http://www.bassett-jones.com/wp-content/uploads/2009/08/p_480_320_407FF15A-247A-46EE-9F80-BBA947325869.jpeg" alt="" width="200" height="300" /><a href="http://bravenewcode.com/wptouch">WPtouch</a> is an excellent plugin that formats the content of the web site when accessing from an iphone or similar mobile device.</p>
<p>Version 1.9 <a href="http://www.bravenewcode.com/2009/08/05/wptouch-1-9-beta-9-pushed-out/">does not support skins</a>, so any modifications will be overwritten with updates, but it looks like 2.0 will support them.</p>
<p>I&#8217;ve edited the bottom of <code>header.php</code> to include a brief intro about me on every page.</p>
<pre>&lt;div id="hugh" style="position: relative; -webkit-border-radius: 8px;"&gt;
  &lt;img style="width: 100%; display: block;" src="&lt;?php bloginfo('wpurl'); ?&gt;/wp-content/themes/hugh/images/hughmini.jpg" alt="Hugh"/&gt;
  &lt;h2 style="position: absolute;"&gt;&lt;a href="http://hugh.bassett-jones.com"&gt;Hi, I'm Hugh.&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Cheerful husband and developer based in Hampshire, UK &lt;a href="http://hugh.bassett-jones.com"&gt;Read more …&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</pre>
<h2>8. Writing custom plugins</h2>
<p><strong>Difficulty:</strong> <img class="four-star" src="/wp-content/themes/hugh/images/stars.png" alt="Four stars out of five" /></p>
<p><img class="alignleft size-full" src="http://www.bassett-jones.com/wp-content/uploads/2009/08/outline.png" alt="document html outline" width="300" height="393" />I had a clear idea of how I wanted the theme to look and what the html produced needed to be.</p>
<p>Some plugins such as <a href="http://eightface.com/wordpress/flickrrss/">flickrRSS</a> allow template html to be used for each item, but others did not quite fit what I needed.</p>
<p>Recent Tweets, YouTube Videos, and Xbox Games all follow the basic pattern of retrieving an XML document from another location, parsing and extracting relevant data into html before storing and displaying on the page.</p>
<p>To reduce the number of times the page requests data from the external sites, I cache the html in the database and only request new data once every 24 hours.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bassett-jones.com/installing-wordpress-2-8-on-a-windows-server-an-anatomy-of-a-web-site/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
