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

<channel>
	<title>An Unfinished Symphony</title>
	<atom:link href="http://www.ap4a.co.uk/feed/" rel="self" type="application/rss+xml"/>
	<link>http://www.ap4a.co.uk/</link>
	<description>It's about the internet and stuff.</description>
	<lastBuildDate>Thu, 09 Feb 2017 07:30:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item>
		<title>Protected: Thomas Videos #1</title>
		<link>http://www.ap4a.co.uk/archives/2011/thomas-videos-1/</link>
					<comments>http://www.ap4a.co.uk/archives/2011/thomas-videos-1/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Tue, 10 May 2011 23:27:25 +0000</pubDate>
				<category><![CDATA[Thomas]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[YouTube]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/?p=190</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>There is no excerpt because this is a protected post.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<form action="http://www.ap4a.co.uk/wp-login.php?action=postpass" class="post-password-form" method="post"><input type="hidden" name="redirect_to" value="http://www.ap4a.co.uk/archives/2011/thomas-videos-1/" /></p>
<p>This content is password-protected. To view it, please enter the password below.</p>
<p><label for="pwbox-190">Password: <input name="post_password" id="pwbox-190" type="password" spellcheck="false" required size="20" /></label> <input type="submit" name="Submit" value="Enter" /></p>
</form>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2011/thomas-videos-1/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Photography</title>
		<link>http://www.ap4a.co.uk/archives/2009/photography/</link>
					<comments>http://www.ap4a.co.uk/archives/2009/photography/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Fri, 14 Aug 2009 00:20:51 +0000</pubDate>
				<category><![CDATA[Photography]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/?p=175</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>If I&#8217;d have been a regular poster over the last 2 years I would likely have told how I&#8217;d taken up photography seriously after buying my first SLR (a second-hand Canon EOS 10D). I&#8217;d maybe also have mentioned about some of the other cameras, lenses and accessories that I&#8217;ve bought since then, and how I&#8217;ve [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>If I&#8217;d have been a regular poster over the last 2 years I would likely have told how I&#8217;d taken up photography seriously after buying my first SLR (a second-hand Canon <acronym title="Electro-Optical System">EOS</acronym> 10<abbr title="digital">D</abbr>). I&#8217;d maybe also have mentioned about some of the other cameras, lenses and accessories that I&#8217;ve bought since then, and how I&#8217;ve been getting on with using them. Being the lazy bugger that I am, I didn&#8217;t do that, though, so this post feels a little like a misplaced ramble at the moment, but I am going ahead with it. And I can perhaps come back at a later date to fill the gaps in with subsequent posts. Anyhow, to continue&hellip;</p>
<p>Over the course of the last couple of years I&#8217;ve shot around 60,000 photos. With each new image stimulating my interested, and developing my skill, more than the last. And as my interest and skills have developed so has my confidence, which has led me to display my photos in more and more places, attempting to reach an increasingly wider audience. This includes regular uploads to <a href="http://www.flickr.com/photos/ap4a/" rel="external">my Flickr account</a>, which previously was home to just a few cameraphone snapshots, as well as accounts on a number of other image sharing sites; these include <a href="http://jpgmag.com/people/ap4a" title="my JPG profile" rel="external me">JPG</a>, <a href="http://www.lomography.com/homes/ap4a" rel="external me" title="my Lomo home">Lomography</a>, and <a href="http://www.phoob.co.uk/" rel="external me">my photoblog</a>. I still post the occasional cameraphone snap to Flickr, but they now tend to mostly go to <a href="http://twitpic.com/photos/ap4a" rel="external me" title="my twitpic profile">TwitPic</a>, which makes it quick and easy to show them on <a href="http://twitter.com/" rel="external">Twitter</a>. If you&#8217;re interested, take a look and let me know what you think. I&#8217;d love to receive constructive feedback on my photos, the biggest drawback about Flickr is that comments tend to be too much on the nice side with everyone being afraid to say what they really think. I&#8217;d much prefer to be told what I perhaps could have done better, and how, it could help make me a better artist (bearing in mind that the appreciation of a photograph, as with all art, is subjective and personal).</p>
<p>As well as displaying my photos on the Internet I&#8217;ve also plucked up the courage to enter a few in competitions to try and expose them to a wider audience, and to see how they fare against other people&#8217;s photos. The first one that I entered was the <a href="http://www.met2tate.com/" rel="external">Met2tate</a> contest held in Liverpool, and I did quite well with 2 of the 3 photos I entered being <a href="http://www.met2tate.com/photos/thumbnails/1/null/commended" rel="external">commended</a>. Next was <a href="http://ta.canon-europe.com/?pg=about&#038;cc=gb&#038;lc=en" rel="external">Canon&#8217;s &#8220;The Assignment&#8221;</a>, in which I made <a href="http://ta.canon-europe.com/?pg=gallery&#038;cc=gb&#038;lc=en" rel="external">the final short-list in the UK Landscape category</a>. So, I&#8217;ve had some small success with my photos; however my confidence still has some way to go as so far this year I&#8217;ve bottled out of entering 2 or 3 competitions, and I intend to work on that.</p>
<p>If you know of any photography competitions that may be worthwhile entering let me know in a comment here, it&#8217;s not easy finding ones that are pitched at the right level and don&#8217;t have rights-grabbing terms and conditions.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2009/photography/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Time for something new</title>
		<link>http://www.ap4a.co.uk/archives/2009/time-for-something-new/</link>
					<comments>http://www.ap4a.co.uk/archives/2009/time-for-something-new/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Thu, 13 Aug 2009 20:22:34 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/?p=174</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Once again it&#8217;s been a ridiculous amount of time since my last post and I think that needs to change, along with a number of other changes that I hope will breathe a bit of life into this blog and kick-start my enthusiasm for writing. First up for change is the subject matter, which will [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Once again it&#8217;s been a ridiculous amount of time since my last post and I think that needs to change, along with a number of other changes that I hope will breathe a bit of life into this blog and kick-start my enthusiasm for writing. First up for change is the subject matter, which will be made a little broader. I&#8217;ll continue to write the occasional  web development post but rather than limiting myself to that subject I also intend to write about my interest in photography, reviews on products and services that I own or use, and a bit of personal stuff thrown in for good measure every so often.</p>
<p>The second change that I have planned is to the design, once again. I still like the look of this theme but it&#8217;s been here a long time and so needs to go. As there have been a fair few people in the past who have expressed an interest in using the theme themselves, along with <a href="/archives/2007/a-feeling-of-deja-vu/">some who didn&#8217;t ask first</a>, I&#8217;ve decided to make it available for download via <a href="http://www.blogthemesclub.com/">Blog Themes Club</a> where you&#8217;ll find it listed as the Artemis theme. Blog Themes Club is operated by Kevin from <a href="http://www.bloggingtips.com/">Blogging Tips</a> and Sarah from <a href="http://www.stuffbysarah.net/">Stuff by Sarah</a>. Themes are available after purchasing one of the selection of membership packages that are available, or by purchasing a single use license if you don&#8217;t require any support, updates or access to other themes. The service hasn&#8217;t been running for long but they&#8217;ve already got a good selection of great looking themes available so go take a look if you&#8217;re in need of a decent WordPress theme.</p>
<p>Change number three is more of a personal change and involves me making sure that I post to this site on a more regular basis, so keep an eye out for updates and hopefully there&#8217;ll be something of interest for everyone.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2009/time-for-something-new/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Tables in the CSS Age</title>
		<link>http://www.ap4a.co.uk/archives/2008/tables-in-the-css-age/</link>
					<comments>http://www.ap4a.co.uk/archives/2008/tables-in-the-css-age/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Sun, 21 Sep 2008 13:46:15 +0000</pubDate>
				<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/?p=87</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>As CSS began to gain popularity the use of tables for layouts, quite rightly, began to lessen. However one of the side effects of this was that less developers were learning how to use and markup a table, for any purpose. Subsequently we&#8217;d often see examples of developers using nested &#60;div&#62;s, painstakingly positioned with CSS, [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>As CSS began to gain popularity the use of tables for layouts, quite rightly, began to lessen. However one of the side effects of this was that less developers were learning how to use and markup a table, for any purpose. Subsequently we&#8217;d often see examples of developers using nested &lt;div&gt;s, painstakingly positioned with CSS, being used to layout data tables which as a result fails to provide any semantic information about what is being presented. Or in some cases actual table markup used with no idea or consideration about the semantics of the elements used, which is something that I saw again only today. Given the prevalence of those scenarios I think a simple guide to laying out a data table might be helpful to some.</p>
<p>Before starting with the code to use we need to consider the components of a data table and why they&#8217;re used:</p>
<ol>
<li>
<h3>Table Summary</h3>
<p>This component is used to provide a summary of the structure and organisation of a data table.</p>
</li>
<li>
<h3>Caption</h3>
<p>The caption sits outside of the main table when viewed in the browser and provides a contextual heading describing what follows.</p>
</li>
<li>
<h3>Column Groups and Columns</h3>
<p>Data tables often have structurally related columns which can be defined within colgroup elements. The colgroup element can be used to define the width of the columns in the group and also, via the span attribute, the number of adjacent columns that is being defined within the group. If all columns in the table are structurally related then you can use the span to state this. If none are related you would just omit the colgroup element from your markup. The col element is used to define the properties of non-structurally related groups of columns (when used outside of the colgroup element), or to define changes in the properties of a subset of columns within a colgroup.</p>
</li>
<li>
<h3>The Table Header</h3>
<p>The table header can contain the headings for simple tables where the top row(s) of cells contain the column headings for the cells that follow. For more complex tables, the table header can still be used to define headings for the entire table, but as you can only have one table header section you can&#8217;t define separate ones for subsection headings. The table header must contain at least one row, and the row must contain at least one cell, however the table header is optional rather than compulsory.</p>
</li>
<li>
<h3>The Table Footer</h3>
<p>The table footer can contain the footer data for simple tables, such as footnotes used to define or describe essential information. As with the table header, you can only have one footer section and so you can&#8217;t define separate footers for subsections, only a single overall footer for the entire table. As with the table header, the footer is optional but if used it must contain at least one row, with the row containing at least one cell.</p>
</li>
<li>
<h3>The Table Body</h3>
<p>The title for this section shouldn&#8217;t really read &#8220;the&#8221; table body as, unlike the table header and table footer, there can be more than one table body. This is useful for separating sections of a complex table into distinct groups of data rows. Each table body that is defined must, as with the table header and table footer, contain at least one row with at least one cell inside it. The table header, table footer and all table bodies must contain the same number of columns, however columns can be merged by using the colspan attribute should you need a different number of cells in a given row.</p>
</li>
<li>
<h3>Table Rows</h3>
<p>Table rows are used as structural containers for rows of data cells.</p>
</li>
<li>
<h3>Table Cells</h3>
<p>These are defined by &lt;th&gt; and &lt;td&gt; tags, where they create heading cells and data cells respectively. Headings are used to contain heading data that defines or describes the data that follows, while the data cells contain that data.</p>
</li>
</ol>
<p>Now that we know and understand the components of a data table we can begin to structure one in a meaningful and accessible way:</p>
<dl class="code">
<dt>The opening code for a simple data table:</dt>
<dd>
<ol>
<li><code>&lt;table summary="This table contains information about people with the rows containing the information relating to individual people and the types of information contained in the columns."&gt;</code></li>
<li><code>&lt;caption&gt;A dummy data table containing information about pretend people&lt;/caption&gt;</code></li>
<li><code>&lt;colgroup span="4" width="100"&gt;&lt;/colgroup&gt;</code></li>
</ol>
</dd>
</dl>
<p>The code above demonstrates an example of the opening code for a table and includes the sections that define the table, including aspects of its structure, but none of the data containing aspects. Line 1 contains the opening table tag and the summary attribute which has an explanation of how the table data is organised. Line 2 contains the caption which describes what the data is about. Line 3 contains a single colgroup element which defines the width (of the 4 columns that are a part of that group.</p>
<p>If you wanted to set a column to have a different width you could do so simply by including a couple of col elements nested within the opening and closing tags:</p>
<ol class="code">
<li><code>&lt;colgroup width="100"&gt;</code></li>
<li><code>&lt;col span="3" /&gt;</code></li>
<li><code>&lt;col span="1" width="250" /&gt;</code></li>
<li><code>&lt;/colgroup&gt;</code></li>
</ol>
<p>On line 1 of the above code we have the opening colgroup tag again, however now it only contains a width attribute that defines the width of the columns in the group. Line 2 then defines the number of columns within the group that have that width setting, and line 3 defines a 4th member of the group that has a different width to the others, with line 4 closing the colgroup. Also permissable is to just use the colgroup elements as containers for col elements which are then used to define the numbers of rows, and their widths, within the colgroup, for simplicity this is the method that I most often use. For example:</p>
<ol class="code">
<li><code>&lt;colgroup&gt;</code></li>
<li><code>&lt;col span="3" width="100" /&gt;</code></li>
<li><code>&lt;col span="1" width="250" /&gt;</code></li>
<li><code>&lt;/colgroup&gt;</code></li>
</ol>
<p>Now that we&#8217;ve opened our table and defined a number of its properties we can begin to create the data containing sections:</p>
<dl class="code">
<dt>The table header &amp; table footer sections for a simple data table:</dt>
<dd>
<ol>
<li><code>&lt;thead&gt;</code></li>
<li class="cl2"><code>&lt;tr&gt;</code></li>
<li class="cl3"><code>&lt;th scope="col"&gt;Name&lt;sup&gt;1&lt;/sup&gt;&lt;/th&gt;</code></li>
<li class="cl3"><code>&lt;th scope="col"&gt;Age&lt;/th&gt;</code></li>
<li class="cl3"><code>&lt;th scope="col"&gt;Place of Birth&lt;/th&gt;</code></li>
<li class="cl3"><code>&lt;th scope="col"&gt;Height&lt;/th&gt;</code></li>
<li class="cl2"><code>&lt;/tr&gt;</code></li>
<li><code>&lt;/thead&gt;</code></li>
<li><code>&lt;tfoot&gt;</code></li>
<li class="cl2"><code>&lt;tr&gt;</code></li>
<li class="cl3"><code>&lt;td colspan="4"&gt;&lt;sup&gt;1&lt;/sup&gt; Pretend names for pretend people&lt;/td&gt;</code></li>
<li class="cl2"><code>&lt;/tr&gt;</code></li>
<li><code>&lt;/tfoot&gt;</code></li>
</ol>
</dd>
</dl>
<p>The above block of code contains the table header (&lt;thead&gt; on line 1, ending on line 8 with the &lt;/thead&gt;) and table footer (&lt;tfoot&gt; on line 9, ending on line 13 with the &lt;/tfoot&gt;) sections. Lines 2 &amp; 10 and 7 &amp; 12 define the opening and closing table row tags respectively, with lines 3-6 containing heading cells and line 11 a single data cell in the footer. Each of the heading cells contains a scope attribute, this can be set to either col or row depending on which direction it needs to be read in, here the value of col is set to define the data cells in the column below as belonging to it. I&#8217;ll discuss using scope=&#8221;row&#8221; in the section on the tbody later on.</p>
<p>For more complex tables the id and headers attributes can be used to define heading relationships between th and td cells. For information on that check the W3C section on the <a href="http://www.w3.org/TR/html4/struct/tables.html#adef-headers">headers attribute</a>, and also the <a href="http://www.w3.org/TR/html4/struct/tables.html#adef-axis">axis attribute</a>. Also, if our headings had needed to be longer and/or more complex we could have used abbreviations in conjunction with the <a href="http://www.w3.org/TR/html4/struct/tables.html#adef-abbr">abbr attribute</a>.</p>
<p>In the table footer a single cell has been created by merging all the columns into one using the colspan attribute with a value of 1. Here a footnote, denoted by the use of a superscript #1 has been used to describe an aspect of the data in one of the heading cells.</p>
<p>Finally we come to the tbody (of which there may be more than one) where the data is presented:</p>
<dl class="code">
<dt>The table body section</dt>
<dd>
<ol>
<li><code>&lt;tbody&gt;</code></li>
<li class="cl2"><code>&lt;tr&gt;</code></li>
<li class="cl3"><code>&lt;th scope="row"&gt;Joe Blogs&lt;/th&gt;</code></li>
<li class="cl3"><code>&lt;td&gt;32&lt;/td&gt;</code></li>
<li class="cl3"><code>&lt;td&gt;Liverpool&lt;/td&gt;</code></li>
<li class="cl3"><code>&lt;td&gt;6' 1"&lt;/td&gt;</code></li>
<li class="cl2"><code>&lt;/tr&gt;</code></li>
<li><code>&lt;/tbody&gt;</code></li>
<li><code>&lt;/table&gt;</code></li>
</ol>
</dd>
</dl>
<p>On line 1, above, we open the first tbody section (and the only one for this example table). On line 2 we define the opening of the first table row, closing it on line 7, while on lines 3-6 we define the data cells within that row. On line 3 we have our opening data cell, which falls under the heading of Name (see the header section above) and contains the name of our example person. I&#8217;ve also set that data cell to be a heading cell by marking it up with &lt;th&gt; instead of &lt;td&gt;, and as this is a heading that sets a relationship with the other cells in its row it has a scope attribute with the value of row to establish this. Lines 4, 5 and 6 are simple data cells containing data that is headed by the main column headings defined in the header section earlier, but also by the row heading defined here. Finally, on line 8 we close the table body and on line 9 we close the entire table. If we put all of the component parts together we&#8217;ll have the full markup for a simple data table:</p>
<dl class="code">
<dt>The full markup for a simple data table:</dt>
<dd>
<ol>
<li><code>&lt;table summary="This table contains information about people with the rows containing the information relating to individual people and the types of information contained in the columns."&gt;</code></li>
<li><code>&lt;caption&gt;A dummy data table containing information about pretend people&lt;/caption&gt;</code></li>
<li><code>&lt;colgroup span="4" width="100"&gt;&lt;/colgroup&gt;</code></li>
<li><code>&lt;thead&gt;</code></li>
<li class="cl2"><code>&lt;tr&gt;</code></li>
<li class="cl3"><code>&lt;th scope="col"&gt;Name&lt;sup&gt;1&lt;/sup&gt;&lt;/th&gt;</code></li>
<li class="cl3"><code>&lt;th scope="col"&gt;Age&lt;/th&gt;</code></li>
<li class="cl3"><code>&lt;th scope="col"&gt;Place of Birth&lt;/th&gt;</code></li>
<li class="cl3"><code>&lt;th scope="col"&gt;Height&lt;/th&gt;</code></li>
<li class="cl2"><code>&lt;/tr&gt;</code></li>
<li><code>&lt;/thead&gt;</code></li>
<li><code>&lt;tfoot&gt;</code></li>
<li class="cl2"><code>&lt;tr&gt;</code></li>
<li class="cl3"><code>&lt;td colspan="4"&gt;&lt;sup&gt;1&lt;/sup&gt; Pretend names for pretend people&lt;/td&gt;</code></li>
<li class="cl2"><code>&lt;/tr&gt;</code></li>
<li><code>&lt;/tfoot&gt;</code></li>
<li><code>&lt;tbody&gt;</code></li>
<li class="cl2"><code>&lt;tr&gt;</code></li>
<li class="cl3"><code>&lt;th scope="row"&gt;Joe Blogs&lt;/th&gt;</code></li>
<li class="cl3"><code>&lt;td&gt;32&lt;/td&gt;</code></li>
<li class="cl3"><code>&lt;td&gt;Liverpool&lt;/td&gt;</code></li>
<li class="cl3"><code>&lt;td&gt;6' 1"&lt;/td&gt;</code></li>
<li class="cl2"><code>&lt;/tr&gt;</code></li>
<li><code>&lt;/tbody&gt;</code></li>
<li><code>&lt;/table&gt;</code></li>
</ol>
</dd>
</dl>
<p>This will then be presented in the browser like this:</p>
<table summary="This table contains information about people with the rows containing the information relating to individual people and the types of information contained in the columns." id="extab">
<caption>A dummy data table containing information about pretend people</caption>
<colgroup span="4" width="100"></colgroup>
<thead>
<tr>
<th scope="col">Name<sup>1</sup></th>
<th scope="col">Age</th>
<th scope="col">Place of Birth</th>
<th scope="col">Height</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="4"><sup>1</sup> Pretend names for pretend people</td>
</tr>
</tfoot>
<tbody>
<tr>
<th scope="row">Joe Blogs</th>
<td>32</td>
<td>Liverpool</td>
<td>6&#8242; 1&#8243;</td>
</tr>
</tbody>
</table>
<p><strong>Note:</strong> that table is using the table styling set in my CSS. If you were to use that example elsewhere you would need to create your own CSS to style it otherwise it would use the browser default styling. If anyone needs tips on how to do that then let me know and I can create a follow up tutorial for that. Similarly, if there&#8217;s anything that needs clarification please leave a comment and ask, I&#8217;ll be happy to help.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2008/tables-in-the-css-age/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Naked Day x2</title>
		<link>http://www.ap4a.co.uk/archives/2008/naked-day-x2/</link>
					<comments>http://www.ap4a.co.uk/archives/2008/naked-day-x2/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Tue, 08 Apr 2008 00:11:38 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/?p=77</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Well, CSS naked day has been and gone again this year &#8211; well, at least for me it has. The last couple of years it&#8217;s been on April 5th, and I&#8217;ve participated each year. This year was no exception &#8211; however I may have celebrated by myself as it seems they changed the day and [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Well, CSS naked day has been and gone again this year &#8211; well, at least for me it has. The last couple of years it&#8217;s been on April 5th, and I&#8217;ve participated each year. This year was no exception &#8211; however I may have celebrated by myself as it seems they  changed the day and forgot to tell me <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>I have a little PHP set up to automagically strip my CSS links out of my pages whenever it&#8217;s April 5th anywhere in the World, and that worked perfectly again this year. The problem is, CSS Naked Day is now on the 9th, so I&#8217;m going to have to do it all again. So, here goes &#8230;</p>
<p><strong>It&#8217;s CSS Naked Day &#8211; <a href="http://naked.dustindiaz.com/">Go here for more information about why I have no styles on this site</a></strong>, and maybe consider joining in <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>For those of you wondering why some sites are doing it on the 8th &#8211; the script used checks to see whether it&#8217;s the 9th &#8216;somewhere&#8217; in the world, and if so it then turns off the CSS. It&#8217;s automagic!</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2008/naked-day-x2/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>A feeling of deja vu</title>
		<link>http://www.ap4a.co.uk/archives/2007/a-feeling-of-deja-vu/</link>
					<comments>http://www.ap4a.co.uk/archives/2007/a-feeling-of-deja-vu/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Thu, 02 Aug 2007 19:39:46 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2007/a-feeling-of-deja-vu/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>It&#8217;s amazing what you can find from reading through your web stats. Things like who links to you, who visits you, where they come from, how often the search engines visit &#8211; and even who is stealing your design. Yes, it seems someone likes this design enough to pirate it. A few weeks ago I [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>It&#8217;s amazing what you can find from reading through your web stats. Things like who links to you, who visits you, where they come from, how often the search engines visit &#8211; and even who is stealing your design. Yes, it seems someone likes this design enough to pirate it.</p>
<p>A few weeks ago I noticed an odd referrer in my stats, http://localhost/mazochova. Anyone that knows much about computers will know that localhost refers to the local computer &#8211; ie. the one that you are using is your localhost. So, someone had a web page on their computer that was being run on a local server and was directly accessing something on this site. My suspicion was that this person was stealing my design, or some component of it, and was hotlinking my images in the process. This isn&#8217;t something I wanted to happen so I blocked their IP number as a referrer. Today I found that my suspicion was right, and found that they had put up their (part done?) version at http://evisions.cz/mazochova (it has now been removed). In case you&#8217;re wondering how I knew that they had put it online, they are stupidly still hotlinking some of my images &#8211; and are even still linking through to <a href="http://www.last.fm/user/ap4a/">my lastFM account</a>, <a href="http://www.spreadfirefox.com/?q=affiliates&#038;id=121153&#038;t=82">my SpreadFireFox affiliate account</a> and even <a href="http://geourl.org/near?p=http://www.ap4a.co.uk/">my GeoURL details</a>; they didn&#8217;t bother linking to my <a href="http://www.text-link-ads.com/?ref=26434">TextLinkAds account</a> though.</p>
<p>They say that mimicry is the highest for of flattery, however I&#8217;m not particularly flattered that eVisions, a supposedly professional web design company, are intending to profit from my design. While I intend to contact them (and their hosts) and ask them to remove it, I&#8217;m not sure what else I can do about this &#8211; at some stage this is going to be passed on to someone else to use, and so I doubt they&#8217;ll care too much if I post it on piratedsites.com (which I still intend to do). I&#8217;ll probably have to hope that they do the decent thing and remove it, but my experience of Eastern Europeans on the internet leaves a lot to be desired, and doesn&#8217;t fill me with too much confidence.</p>
<p>I can only hope that at some point in the future Anna Mazochov&aacute;, the woman who is going to be ripped off by these thieves, gets to see this at some point and takes some action for herself.  Unless someone has any ideas on effective ways to stop these people, If so, I&#8217;d be grateful for the heads up. In the meantime, here&#8217;s a couple of screen shots:</p>
<ul class="nobul" id="sslist">
<li><a href='http://www.ap4a.co.uk/wp-content/uploads/stolen2.gif' title='The top half of one of the inner pages of the pirate site'><img src='http://www.ap4a.co.uk/wp-content/uploads/stolen2.thumbnail.gif' alt='The top half of one of the inner pages of the pirate site' /></a></li>
<li><a href='http://www.ap4a.co.uk/wp-content/uploads/stolen3.gif' title='Screenshot showing the stolen design linking to my LastFM account'><img src='http://www.ap4a.co.uk/wp-content/uploads/stolen3.thumbnail.gif' alt='Screenshot showing the stolen design linking to my LastFM account' /></a></li>
<li><a href='http://www.ap4a.co.uk/wp-content/uploads/stolen1.gif' title='Full page view of stolen design used at evisions.cz/mazochova'><img src='http://www.ap4a.co.uk/wp-content/uploads/stolen1.thumbnail.gif' alt='Full page view of stolen design used at evisions.cz/mazochova' /></a></li>
</ul>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2007/a-feeling-of-deja-vu/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>Advanced spam control with mod_rewrite</title>
		<link>http://www.ap4a.co.uk/archives/2007/advanced-spam-control-with-mod_rewrite/</link>
					<comments>http://www.ap4a.co.uk/archives/2007/advanced-spam-control-with-mod_rewrite/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Wed, 11 Jul 2007 20:52:57 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2007/advanced-spam-control-with-mod_rewrite/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>I can&#8217;t remember where I first got the idea from, but for some time now I&#8217;ve been using mod_rewrite to protect against spam and hack attempts, and this has worked quite well for some time. Essentially, I have a number of rules contained in my .htaccess file which are designed to block attacks from &#8220;users&#8221; [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>I can&#8217;t remember where I first got the idea from, but for some time now I&#8217;ve been using <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">mod_rewrite</a> to protect against spam and hack attempts, and this has worked quite well for some time. Essentially, I have a number of rules contained in my <a href="http://httpd.apache.org/docs/trunk/howto/htaccess.html">.htaccess</a> file which are designed to block attacks from &#8220;users&#8221; displaying common traits &#8211; with one of those common traits being the absence of a <a href="http://en.wikipedia.org/wiki/User_agent_string">user-agent string</a> from the request headers.</p>
<p>As was pointed out to me yesterday, there&#8217;s no obligation for any user-agent (UA) to send a user-agent string as a part of its request headers. I have no quarrel with that statement at all &#8211; <em>except, on this site there is</em>. Considering the vast number (several thousand per month) of attempts to directly access comment and contact forms, or to access non-existent files with random character file names by bots, spammers or hackers whose request headers lack a user-agent string, and the fact that it is very rare in my experience for a legitimate visitor to not include one, I decided that it was a requirement for visiting here and used the following code to block them:</p>
<dl class="code">
<dt>The mod_rewrite code used to block visitors without a user-agent string</dt>
<dd>
<ol>
<li><code>RewriteEngine On</code></li>
<li><code>RewriteCond %{HTTP_USER_AGENT} =""</code></li>
<li><code>RewriteRule .* - [F,L]</code></li>
</ol>
</dd>
</dl>
<p>Line 1 turns the rewrite engine on. Line 2 sets the condition to be checked for, in this case an empty user-agent string (denoted by the absence of content between the double quote marks), and line 3 says what should happen when the condition is met &#8211; with the F stating that the request should fail. In which case it returns a 403, forbidden, error.</p>
<p>As I said above, that has worked quite well for some time and I&#8217;ve been happy with the effect that it&#8217;s had on the amount of spam I&#8217;ve experienced. However, when checking my access logs on a couple of occasions recently I noticed that something had been trying to access a file relating to the <a href="http://www.text-link-ads.com/?ref=26434" >Text Link Ads</a> service; in order to check that their adverts are working properly their server periodically checks publishers&#8217; sites to make sure that the adverts are displayed. Whilst this is a reasonable, and sensible, thing to do it appears that their server fails to include a user-agent string in its request headers &#8211; meaning that every attempt to check my site was being rejected by the server, which isn&#8217;t so good. Consequently, this meant that either I had to stop blocking them, or they had to include a user-agent string in their headers</p>
<p>As my attempts to explain the situation to their support people seemed to be met with misunderstanding it turned out that I had to stop blocking them. Though this wasn&#8217;t as simple as just removing the code from my .htaccess as this would only result in my being bombarded with spam and hack attempts yet again. Instead I had to check for two conditions instead of one, with the extra condition being that the visitor wasn&#8217;t them. To do that I also checked to see if the visitor&#8217;s IP belonged to their server or not, like so:</p>
<ol class="code">
<li><code>RewriteCond %{REMOTE_ADDR} !^12\.34\.567\.89$</code></li>
</ol>
<p>That line of code checks to make sure that the visitor&#8217;s IP is <strong>not</strong> the one listed (nb. that is just a dummy IP address rather than their actual one). If both conditions are met (not the listed IP and no user-agent string) then the visitor gets blocked. When added to the previous code we get the following:</p>
<dl class="code">
<dt>The amended mod_rewrite code</dt>
<dd>
<ol>
<li><code>RewriteEngine On</code></li>
<li><code>RewriteCond %{HTTP_USER_AGENT} =""</code></li>
<li><code>RewriteCond %{REMOTE_ADDR} !^12\.34\.567\.89$</code></li>
<li><code>RewriteRule .* - [F,L]</code></li>
</ol>
</dd>
</dl>
<p>While that snippet of code will allow them to access my site even when they have no user-agent string in their request headers, and while there&#8217;s no obligation for one to be included (as mentioned previously), I personally feel that it would be wiser for them to fix their software to ensure that it identifies itself when accessing remote servers. Not doing so means that it&#8217;s quite easy to confuse them with spammers and hackers who do their best to disguise their actions and methods, and so leaves them to potentially be blocked by many other users who might take similar measures. Hopefully the support person that responded to my queries will pass the matter on to someone who will understand the issue and be able to do something about it.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2007/advanced-spam-control-with-mod_rewrite/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>Z-index Oddities: Menu dropdowns overlapped by positioned elements</title>
		<link>http://www.ap4a.co.uk/archives/2007/z-index-oddities-menu-dropdowns-overlapped-by-positioned-elements/</link>
					<comments>http://www.ap4a.co.uk/archives/2007/z-index-oddities-menu-dropdowns-overlapped-by-positioned-elements/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Thu, 24 May 2007 00:53:07 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2007/z-index-oddities-menu-dropdowns-overlapped-by-positioned-elements/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>I use the Suckerfish Dropdowns menu quite often when building large sites and rarely have too many problems with it. However, on one of the sites I&#8217;m currently working on there have been quite a few odd bugs &#8211; though I should stress that I don&#8217;t think it&#8217;s specifically an issue with Suckerfish, rather with [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>I use the <a href="http://www.htmldog.com/articles/suckerfish/dropdowns/">Suckerfish Dropdowns</a> menu quite often when building large sites and rarely have too many problems with it. However, on one of the sites I&#8217;m currently working on there have been quite a few odd bugs &#8211; though I should stress that I don&#8217;t think it&#8217;s specifically an issue with Suckerfish, rather with nested dropdown menus (that use absolute positioned elements within floated ones) in general.</p>
<p>The most common issue found with this kind of menu is that, in Internet Explorer, relative positioned elements located below the menu on a page will overlap the dropdowns, obscuring them and preventing access to the links as a result. The normal solution for this, and the one most commonly suggested, would be to use a higher <dfn title="z-index is a CSS property that sets the stacking order of elements on a web page, allowing control of how elements overlap each other">z-index</dfn> on the dropdown <abbr title="Unordered Lists">ULs</abbr>. On this occasion, though, increasing the z-index of nested lists within the dropdown menu didn&#8217;t have any effect &#8211; not even when setting ridiculously high z-indexes, nor when also specifically setting a lower one on the positioned element. In the end I was compelled to remove positioning from all elements where I could without it affecting anything else.</p>
<p>That appeared to do the trick, until it was noticed that the issue was still present on some pages of the site despite relative positioning not being involved. After further investigation I discovered that the bug was limited to data tables containing links. Though, as mentioned above, there was no positioning involved. Despite that I kept my efforts to fix the issue focused on positioning and decided to test how various positioning properties affected things. I began, and ended, with static positioning (the default) by targeting all links within tables with the following CSS:</p>
<ol class="code">
<li><code>table a { position : static; }</code></li>
</ol>
<p>Adding that to the bottom of my <abbr title="Internet Explorer">IE</abbr> only style sheets fixed the issue. Thankfully! Unfortunately, things are never quite that simple where IE is concerned and I found that my fix broke an image rollover system used on 2 pages, preventing the images from displaying when the links where moused-over. To try to fix this I set all links in those 2 tables to use absolute positioning which, initially, seemed to work in this case. However, more thorough testing showed that while it fixed it for links above the page fold; all those below the fold would either vanish on mouseover or reposition themselves at the top of the table. Testing with all variations of positioning and link state proved fruitless. In the end the only answer was to fix the menu issue, and consequently the disappearing link issue, leaving IE 6 users without the thumbnail view (the use of zoom: 1; haslayout fix had no effect). Sometimes sacrifices have to be made to ensure a website remains usable for its visitors, no matter how much the site owner wants a given feature to be added.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2007/z-index-oddities-menu-dropdowns-overlapped-by-positioned-elements/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Redesign</title>
		<link>http://www.ap4a.co.uk/archives/2007/redesign/</link>
					<comments>http://www.ap4a.co.uk/archives/2007/redesign/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Tue, 22 May 2007 00:44:37 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2007/redesign/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Regular visitors to the site should notice quite a radical change of design here which I&#8217;m hoping will make it a bit more visually pleasing. When I first started the site it was, almost literally, just thrown together in a hurry and without a finalised design. This was basically because there were a number of [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Regular visitors to the site should notice quite a radical change of design here which I&#8217;m hoping will make it a bit more visually pleasing. When I first started the site it was, almost literally, just thrown together in a hurry and without a finalised design. This was basically because there were a number of people that wanted the blog up and running and, I think, for me to start posting on it. Some of you may still remember the original look of the site, which was far from complete and so a little bit broken to say the least. After a little <a href="http://www.kevinleitch.co.uk/wp/?p=301">feedback</a>  I decided not to continue working with that design and came up with a working temporary one instead. Even though it provided everything I wanted from it (functionality, flexibility and simplicity) it was a little uninspiring and I was never really happy with it, despite that it managed to survive for a couple of years.</p>
<h3>Simplifying the Interface</h3>
<p>What I&#8217;ve tried to do with the new design is keep the important concepts intact &#8211; it&#8217;s still, I believe, functional; it&#8217;s still flexible, though now within a set limit; and, importantly, it&#8217;s still simple. In fact I&#8217;ve made an effort to simplify it further. I found certain aspects of the old design were slightly cluttered, notably the links sidebar. In order to de-clutter the link heavy sidebar I separated the archives and external links section into their own pages, with them linked via a new primary menu. I&#8217;ve also used a little <abbr title="PHP Hypertext Preprocessor">PHP</abbr> and hidden the <a href="http://www.mybloglog.com">MyBlogLog</a> widget from everyone but myself.</p>
<p>All in all I think the sidebar is cleaner and more useful while still sharing things that I want to share. Also, perhaps the most noticeable change is the dropping of the third column from the front page. My original idea for that was to allow the front page of the site to show the latest post in full whilst also showing the next 5 or 6 most recent posts, but rather than overloading the page with too much content these recent posts would just have excerpts showing on the front. The old design did achieve that fairly well, however the extra column meant that the front page would always seem a little cramped. It&#8217;s also not necessary to have a third column in order to provide direct access to that content from the front page, so it got dropped.</p>
<h3>New Sections</h3>
<p>I&#8217;ve added a few extra sections to the site where I can provide supplementary information, such as an accessibility statement and privacy policy, including an about page. At the moment the about page is a bit bare; I do intend to put something in there at some point, hence its inclusion, however I haven&#8217;t decided on what exactly I want to say. I&#8217;ve also extended the subscription page to include information about my feeds, feed readers and feed aggregators along with the original email subscription option that I&#8217;ve carried over from the previous version. There&#8217;s also a contact form, just in case.</p>
<h3>Ironing out the Issues</h3>
<p>As with any project, there have been issues to resolve (I&#8217;m talking specifically about coding issues at this point).</p>
<h4>PHP Issues</h4>
<p>One of the things I wanted was for the archives page to show each category with all the posts for that category, to be able to reorder the categories, to be able to show the date of each post adjacent to the link to the post and to be able to structure markup how I wanted. One of the great things about <a href="http://www.wordpress.org">WordPress</a> is its ease of templating, and to that end the <a href="http://codex.wordpress.org">codex</a> provides details of the variety of template tags available for this, however those available for templating category listings didn&#8217;t quite meet all of my requirements. This is where <a href="http://www.stuffbysarah.net"  title="Sarah's blog" rel="external">Sarah</a> came in with a bit of help, well a lot of help, providing me with the PHP needed to pull the required information from the database in the way that I wanted. She also helped me write the PHP for my contact form, in the process helping me to add in fields checking for spammers, and also code to check that those fields had been completed appropriately.</p>
<p>The site used to use an old version of the <a href="http://subscribe2.wordpress.com/">Subscribe2</a> plugin which I held off from upgrading to the amount of work it would have taken to get a newer version to work with the existing theme. A new theme has meant that was no longer a consideration, and so I upgraded to the latest version of Subscribe2. It was only when I uploaded, and set live, the completed theme and upgraded plugins at the weekend that a few issues came to light. Basically the plugin only partially worked on the live site, with new subscribers receiving an email containing a link to confirm the subscription, but the link going to a blank page and the subscription not being confirmed. After a lot of reading through the plugin code, and with Sarah doing a number of tests, we found that there were three functions responsible for the confirmation process &#8211; commenting out the call to one of these functions allowed the confirmation to go through and the appropriate confirmation page to display &#8211; just in a very broken state as a number of scripted components failed to work on the page. It had, by that time, occurred to us that it was an issue with using customised permalinks on the site along with the way the plugin takes over an existing page that it rewrites with the confirmation &#8211; instead of doing this successfully the page was being redirected to the real permalinked page, causing the confirmation to fail. Once we had tested that this was the case, by resetting permalinks to the default method, it didn&#8217;t take much to discover the real cause &#8211; a conflict between Subscribe2 and the <a href="http://fucoder.com/code/permalink-redirect/">Permalink Redirect</a> plugin. This issue hadn&#8217;t existed with the previous version of Subscribe2 that I&#8217;d been using, so something that has changed caused the conflict &#8211; the process of taking over an existing page from the database, rather than using its own dedicated one like the old version did. It&#8217;s probable that the new method makes it easier for the plugin to be integrated with a theme and so it&#8217;s an acceptable change in the grand scheme of things, but unfortunate that it results in a conflict. To fix it I dropped the other plugin.</p>
<h4>CSS Issues</h4>
<p>While differences in browser rendering continue to exist there are always going to be display issues when switching between those browsers. The star browser was Firefox, getting things right first time and according to standards. Internet Explorer 7 had a few minor issues, and IE 6 a few more, however these were relatively simple to fix with a few changes in margin, width and position settings in their own respective style sheets linked via conditional comments. In Internet Explorer 5.5 it looked like a bomb had hit it; that browser couldn&#8217;t handle a fair bit of the CSS and rather than spend too much time on an obsolete browser I changed a number of things and fixed the width. I basically just wanted to make sure the site would be usable rather than trying to precisely reproduce the design.</p>
<p>Quite surprisingly I had a few strange problems in Opera 9.20, surprisingly because Opera is at least as standards compliant as Firefox if not more so. However there were several oddities that didn&#8217;t seem to have an easy fix, or at least not a fix that could be achieved simply by tweaking the CSS without those tweaks affecting other browsers. Those issues included:</p>
<ul>
<li>displaying the sponsor links at the correct size until the page finished loading, then the text mysteriously shrinking. As these used the same markup and CSS as the other links in the sidebar there was no easy or logical way to fix the problem without affecting the other links.</li>
<li>text marked up as paragraphs within the content area would magically jump to the right once the page loaded, leaving a small fragment of text behind (a few characters from the last line of each paragraph, chopped off at the top). Again, there was no simple fix without it affecting the positioning in other browsers.</li>
<li>text link styles were overridden with the browser default ones, again without any logic that I could see. It&#8217;s possible that one of the settings in my browser profile caused this issue, but I&#8217;m not familiar enough with the browser to track it down &#8211; so I needed to find another fix.</li>
</ul>
<p>It&#8217;s likely that the first two issues were caused by the combination of scripts used on the page, for example the sponsor links are generated by scripts. However as it wasn&#8217;t feasible to remove those scripts anyway I decided not to test the theory by disabling them on a live site (the issues weren&#8217;t apparent in my local testing copy). Due to the prospect of a CSS fix affecting other browsers I had to find a hack or filter for Opera, much as it pains me to use them now that it&#8217;s clear we can control the real problem browser (Internet Explorer 6 and under) using conditional comments. However these issues needed an Opera specific fix and, after a bit of searching on <a href="http://www.google.co.uk">Google</a>, I found a way using an @media declaration to target Opera:</p>
<ol class="code">
<li><code>@media all and (min-width:0px) {</code></li>
<li><code>head~body p {</code></li>
<li><code>	margin-left : 0;</code></li>
<li><code>}</code></li>
<li><code>#content a, #content a:link, #content a:visited, #skipper a:link, #skipper a:visited {</code></li>
<li><code>	color : #00303e !important;</code></li>
<li><code>}</code></li>
<li><code>#content a:hover, #content a:active, #content a:focus, #skipper a:hover, #skipper a:active, #skipper a:focus {</code></li>
<li><code>	color : #870000 !important;</code></li>
<li><code>}</code></li>
<li><code>#sidebar #links55315 a {</code></li>
<li><code>	font-size : 11px;</code></li>
<li><code>}</code></li>
<li><code>}</code></li>
</ol>
<p>The combination of the &#8220;@media all&#8221; and the &#8220;and (min-width:0px)&#8221; in line 1 of the code above targets Opera fairly specifically &#8211; apparently it has also been shown to target Pre-release versions of Safari too. I had no way of testing this, however I felt it was safe to use the method as I was just emphasising already existing styles rather than trying to impose different ones. Line 2 very specifically targets all paragraphs, overriding any other rules that may be conflicting. Line 3 sets the left margin for all paragraphs to zero (even though this had already been done in the main style sheets), while Line 4 closes the rule set opened in line 2. A quick test in Opera showed that the method worked successfully. Lines 5, 6 and 7, and lines 8, 9 and 10 were used to fix the link colour change, while 11, 12 and 13 were used to fix the resizing of the sponsor link text &#8211; using a pixel unit instead of ems was what was needed there. The final line closes the whole thing. That discovery came courtesy of the <a href="http://tanreisoftware.com/blog/">Tanrei Software blog</a> where there&#8217;s a useful article on using <a href="http://tanreisoftware.com/blog/?p=41">media selectors for browser targetting</a>.</p>
<h4>Other Issues</h4>
<p>Rather than use a mass of extra markup and images I chose to use Alessandro Fulciniti&#8217;s <a href="http://www.html.it/articoli/niftycube/index.html">NiftyCorners Cube</a> script for the curved corners, so users without javascript enabled will see the site with square corners. Users with javascript may also have some issues, there&#8217;s a slight lag in the page load time as the script runs through the targeted elements in order to set the curved corners. It&#8217;s also possible that the script contributes to the paragraph jumping in Opera, though I&#8217;ve never seen this happen in other sites that I&#8217;ve used the script on.</p>
<p>I use a plugin that dynamically adds classes to various links in order to add an icon to identify the target type (such as an arrow pointing away from a box to indicate external links). One of the icons used was for links to <a href="http://en.wikipedia.org/wiki/Main_Page">Wikipedia</a> which consisted of a small icon of the Wikipedia logo. However it was hard to distinguish that icon from the surrounding text, so it was removed.</p>
<p>I wanted to use an image of an upwards pointing arrow for my back to top links, but without all of the images being background images (otherwise there would have been no actual content for the links). I achieved it using a combination of foreground and background images with the following markup and CSS:</p>
<dl class="code">
<dt>The HTML</dt>
<dd>
<ol>
<li><code>&lt;div class="up"&gt;</code></li>
<li><code>&lt;a href="#skipper" title="Back to top"&gt;<br />&lt;img src="http://www.ap4a.co.uk/wp-content/themes/mannequin/images/up.png" width="16" height="16" alt="Up arrow" /&gt;&lt;/a&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
</ol>
</dd>
</dl>
<p>The markup simply creates a div as a container element for the image used as the default-state up arrow and the actual link back to the top of the page.</p>
<dl class="code">
<dt>The CSS &#8211; part 1</dt>
<dd>
<ol>
<li><code>div.up {</code></li>
<li><code>	float : right;</code></li>
<li><code>	margin : 5px 10px 0 0;</code></li>
<li><code>	padding : 0;</code></li>
<li><code>	width : 16px;</code></li>
<li><code>	height : 16px;</code></li>
<li><code>}</code></li>
</ol>
</dd>
</dl>
<p>The first part of the associated CSS sets the dimensions of the container div to match the size of the image it contains and positions it where I want it on the page (relative to its own container).</p>
<dl class="code">
<dt>The CSS &#8211; part 2</dt>
<dd>
<ol>
<li><code>div.up a, div.up a img {</code></li>
<li><code>	display : block;</code></li>
<li><code>	padding : 0;</code></li>
<li><code>	margin : 0;</code></li>
<li><code>}</code></li>
</ol>
</dd>
</dl>
<p>Part 2 of the CSS sets both the image and the anchor around it to be block level. This corrects Internet Explorer 6&#8217;s behaviour of adding a 3px space beneath inline images (which is the space preserved for text descenders). It also allows the full area taken up by the image to be a clickable part of the link.</p>
<dl class="code">
<dt>The CSS &#8211; part 3</dt>
<dd>
<ol>
<li><code>div.up a {</code></li>
<li><code>	background : url(images/up2.png) no-repeat center bottom;</code></li>
<li><code>	position : relative;</code></li>
<li><code>	width : 100%;</code></li>
<li><code>	height : 100%;</code></li>
<li><code>	text-decoration : none;</code></li>
<li><code>	cursor : pointer;</code></li>
<li><code>}</code></li>
</ol>
</dd>
</dl>
<p>This code sets the link to 100% width and height of the container div to complete the process started in the previous rule set, which allows the full area of the image to be clickable. It also sets the positioning to relative to allow the contained image to be absolutely position within it, and the first line sets the background to be the hover state version of the image. The final 2 lines turn off the underline added to links and ensure that the proper cursor style is used.</p>
<dl class="code">
<dt>The CSS &#8211; part 4</dt>
<dd>
<ol>
<li><code>div.up a img {</code></li>
<li><code>	position : absolute;</code></li>
<li><code>	top : -5px;</code></li>
<li><code>	left : -5px;</code></li>
<li><code>	border : none !important;</code></li>
<li><code>}</code></li>
</ol>
</dd>
</dl>
<p>Part four positions the foreground image within its containers so that it precisely and completely covers up the background image. It also makes sure that no border is added.</p>
<dl class="code">
<dt>The CSS &#8211; part 5</dt>
<dd>
<ol>
<li><code>div.up a:hover img, div.up a:active img, div.up a:focus img {</code></li>
<li><code>	visibility : hidden;</code></li>
<li><code>}</code></li>
</ol>
</dd>
</dl>
<p>The final rule set is responsible for removing the foreground image when the link is hovered over, revealing the hover state background image. It works as intended in Firefox, <abbr title="Internet Explorer">IE</abbr> 7 and Opera 9. In IE 5 and 6 the change in state doesn&#8217;t work, and IE 5 also needs a slight change in the positioning to cover the hover state image.</p>
<p>No doubt there&#8217;ll be other issues to find, and they&#8217;ll be fixed when they are. I&#8217;m expecting there to be one or two in Mac browsers, but as I haven&#8217;t been able to test in them (the Mac testing services I normally use have been broken when I&#8217;ve visited recently) I haven&#8217;t been able to find them. If you&#8217;re a Mac user and do find issues, please let me know and I&#8217;ll do my best to resolve them, thanks.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2007/redesign/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Five things that you may not know</title>
		<link>http://www.ap4a.co.uk/archives/2006/five-things-that-you-may-not-know/</link>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Thu, 14 Dec 2006 23:52:23 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2006/five-things-that-you-may-not-know/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>&#8230;about me. Although Sarah should, even though she&#8217;s meme tagged me. I have a degree in biochemistry from the University of Liverpool. I like weird films that no-one else ever wants to watch, like Rawhead Rex and Brain Damage. I like other films too. Despite my youthful appearance, I&#8217;m 40 years old. I&#8217;m still a [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>&#8230;about me. Although <a href="http://www.stuffbysarah.net"  title="Sarah's blog" rel="external">Sarah</a> should, even though <a href="http://www.stuffbysarah.net/ais/2006/12/14/5-things-you-may-not-know/" rel="external">she&#8217;s meme tagged me</a>.</p>
<ol>
<li>I have a degree in biochemistry from <a href="http://www.liverpool.ac.uk/" rel="external">the University of Liverpool</a>.</li>
<li>I like weird films that no-one else ever wants to watch, like <a href="http://www.imdb.com/title/tt0091829/" rel="external" title="IMDb's 'Rawhead Rex' Listing">Rawhead Rex</a> and <a href="http://www.imdb.com/title/tt0094793/" rel="external" title="IMDb's 'Brain Damage' Listing">Brain Damage</a>. I like other films too.</li>
<li>Despite my youthful appearance, I&#8217;m 40 years old. I&#8217;m still a handsome devil though.</li>
<li>I left school at 16 without any qualifications and went back 10 years later to start again, and was 28 when I started at university.</li>
<li>I found it very difficult to think of five things that people who read this blog wouldn&#8217;t know about me, <b>and</b> I&#8217;d like to share. I tend to be a bit reticent about sharing information with strangers on the interweb &#8211; who knows what those crazy people might do with the knowledge?</li>
</ol>
<p>Five people who I&#8217;m going to tag with this: no one, as I think it&#8217;d be as hard thinking up 5 people who&#8217;d thank me for it as it was thinking up my own answers.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>It’s been a while …</title>
		<link>http://www.ap4a.co.uk/archives/2006/its-been-a-while/</link>
					<comments>http://www.ap4a.co.uk/archives/2006/its-been-a-while/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Wed, 18 Oct 2006 19:23:43 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2006/its-been-a-while/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>It&#8217;s been a very long while since I posted on here, but it hasn&#8217;t all been due to my procrastination (although that&#8217;s responsible too). The last few months have been very busy with work, both Sarah and I have been rushed off our feet with various projects some of which have gone live, others are [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>It&#8217;s been a very long while since I posted on here, but it hasn&#8217;t all been due to my procrastination (although that&#8217;s responsible too). The last few months have been very busy with work, both <a href="http://www.stuffbysarah.net"  title="Sarah's blog" rel="external">Sarah</a> and I have been rushed off our feet with various projects some of which have gone live, others are having tweaks here and there before going live, with the rest at various stages of development.</p>
<p>It hasn&#8217;t been all work though, we managed to fit a short trip to Paris in a couple of weeks ago, which gave us a much needed break from the daily grind. I have to say, there&#8217;s some spectacular scenery over there and it was fascinating to visit places that I&#8217;ve heard about before but never considered visiting. There are a few carbunkles in with the jewels, though, chief among them being the Pompidou Centre which looked like a scruffy mass of scaffolding to me. Maybe if we&#8217;d stopped off there before visiting Notre Dame Cathedral I might have been more appreciative of it&#8217;s industrial  appearance, but I doubt it.</p>
<p>Speaking of Notre Dame Cathedral, it was while straining to see if I could spot it after crossing the Pont Neuf that caused me to not see a couple of steps, resulting in me spraining my ankle. At that point the best thing to do was to carry on moving, rather than stopping and letting it swell up like a water melon and cripple me. So we carried on, took a few pictures of the cathedral and then went looking for a pharmacy to get some tubigrip. Instead of tubigrip we came away with my ankle in a splint that cost about 35 euros, but considering the support it provided it was money very well spent. After getting my ankle strapped up we went for a rest in a little Cuban bar about a quarter of a mile from the Cathedral, where we shared a plate of meat tapas and, more importantly, I had a few medicinal <dfn title="beers" xml:lang="Es" lang="Es">cervezas</dfn>. We did about another four miles worth of working after lunch, and at least another ten the following day, visiting the Bastille, the Moulin Rouge and Sacre Coeur amongst other places, so that splint more than paid for itself.</p>
<p><img decoding="async" id="image47" src="http://www.ap4a.co.uk/wp-content/uploads/foot.jpg" alt="My foot in plaster" /> A couple of days after returning home (to Sarah&#8217;s parents&#8217;, which is our stopping off point on the way to our own house) we went to the local hospital to get my ankle checked out. We left with my leg in plaster after an X-ray showed that the pulled tendon had ripped a chunk of bone away from my ankle. So now I&#8217;m trying to get around with a plaster on my leg that is giving me less support than the splint I was using did, not to mention getting in the way of everything. I have to go back to the hospital in a couple of days to get the plaster off and have the ankle X-rayed again. Hopefully that&#8217;ll be the end of it, or at least the end of having to wear the stupid cast.</p>
<p>Despite that, Paris was great and I had no intention of letting a sprain stop us from enjoying the city. I&#8217;d recommend it to anyone who wanted a short break away.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2006/its-been-a-while/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Great Ormond Street Hospital’s charity Dr Who auction.</title>
		<link>http://www.ap4a.co.uk/archives/2006/great-ormond-street-hospitals-charity-dr-who-auction/</link>
					<comments>http://www.ap4a.co.uk/archives/2006/great-ormond-street-hospitals-charity-dr-who-auction/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Thu, 15 Jun 2006 14:03:05 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2006/great-ormond-street-hospitals-charity-dr-who-auction/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>I received this from a friend a few days ago, and with my usual sense of urgency have decided to post it up here. For those of you who don&#8217;t know, Great Ormond Street is a major children&#8217;s hospital located in London, and the GOSH Children&#8217;s Charity aims to supplement the funding provided by the [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>I received this from a friend a few days ago, and with my usual sense of urgency have decided to post it up here. For those of you who don&#8217;t know, <a href="http://www.gosh.org/" title="Great Ormond Street Hospital and Childeren's Charity">Great Ormond Street</a> is a major children&#8217;s hospital located in London, and the <acronym title="Great Ormond Street Hospital">GOSH</acronym> Children&#8217;s Charity aims to supplement the funding provided by the <abbr title="National Health Service">NHS</abbr>. Anyway, here&#8217;s <a href="http://www.hoscik.com/" title="Martin Hoscik's blog">Marty</a>&#8216;s notice:</p>
<blockquote>
<p>Over the past few months I&#8217;ve played a very tiny part in a VERY special auction which is now live. Some facts that might bore a few of you but:-</p>
<p>&#8220;In 2005 Lancasters armourie were contracted by the <abbr title="British Broadcasting Corporation">BBC</abbr> to build a number of prop swords for the Christmas special episode of the hit revival of Doctor Who.</p>
<p>Used by Doctor Who actor David Tennant and the leader of the Sycorax race the swords were seen by 10 million viewers.</p>
<p>Now Lancasters are auctioning the prototype of the sword (above) in aid of London&#8217;s Great Ormond Street Hospital.</p>
<p>And, as if owning this unique piece of television history wasn&#8217;t enough Lancasters have been aided in their fundraising effort by the generosity BBC Wales and actors David Tennant and Sean Gilder who have provided their signatures for engraving on the blade.</p>
<p>The sword will be auctioned via ebay. Clive Lankford of Lancasters tell us they &#8220;are not shy about the fact that we want this to make as much money for <abbr title="Great Ormond Street Hospital Children's Charity">GOSHCC</abbr> as possible&#8221;.</p>
</blockquote>
<p>More information is available at <a href="http://www.mayorwatch.org.uk/news.php?article_id=300">Martin&#8217;s &#8220;MayorWatch&#8221; website</a>,  and <a href="http://cgi.ebay.co.uk/Original-Doctor-Who-certified-signed-Sycorax-sword_W0QQitemZ6636630107QQcategoryZ1450QQssPageNameZWDVWQQrdZ1QQcmdZViewItem" title="Charity auction in aid of Great Ormond Street Hospital">the charity auction can be found on Ebay</a>. The auction is set to end on June 19, so if you want to get a bid in you still have a few days to do so.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2006/great-ormond-street-hospitals-charity-dr-who-auction/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Firefox window resize bug and other annoyances.</title>
		<link>http://www.ap4a.co.uk/archives/2006/firefox-window-resize-bug-and-other-annoyances/</link>
					<comments>http://www.ap4a.co.uk/archives/2006/firefox-window-resize-bug-and-other-annoyances/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Sun, 04 Jun 2006 14:33:25 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2006/firefox-window-resize-bug-and-other-annoyances/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>A few months ago I asked if anyone had noticed a bug in Firefox that caused the vertical scrollbar to vanish when resizing the browser window to 800 pixels wide. I never received any answers to the question &#8211; and I never thought much more about it as it didn&#8217;t affect my browsing and I [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>A few months ago I asked if anyone had noticed a bug in <a href="http://www.mozilla.com/firefox/" title="firefox web browser">Firefox</a> that caused the vertical scrollbar to vanish when resizing the browser window to 800 pixels wide. I never received any answers to the question &#8211; and I never thought much more about it as it didn&#8217;t affect my browsing and I could still test sites at that width, just without a scrollbar. However, after updating to Firefox 1.5.0.4 on Friday the bug mysteriously reappeared, and this time it seemed more severe. This time <em>it was affecting my ability to test sites</em>, and so this time I did a little more than just ask about it on here.</p>
<dl class="imgdl">
<dt>A screenshot of Firefox&#8217;s window resize bug in action</dt>
<dd class="imgdd"><a rel="attachment" class="imagelink" href="http://www.ap4a.co.uk/archives/2006/firefox-window-resize-bug-and-other-annoyances/screenshot-of-firefoxs-window-resize-bug-in-action/" title="Screenshot of Firefox's window resize bug in action."><img decoding="async" src="http://www.ap4a.co.uk/wp-content/uploads/firefoxwindowresizebug.thumbnail.gif" alt="Thumbnail view of Firefox's window resize bug in action." /></a></dd>
<dd class="caption">
Rather than just losing the vertical scrollbar I now lost the horizontal one too, when one should be there &#8211; which would be every time for content that wasn&#8217;t fixed to fit in under 800 pixels wide as liquid layouts, such as the one on this blog, failed to resize too.</dd>
</dl>
<p>I did a search on <a href="https://bugzilla.mozilla.org/" title="Bugzilla, Mozilla's bug tracking and reporting service">bugzilla</a> to see if there were any previously filed reports and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=204743" title="Bugzilla bug ID 203743">found one dating back to 2003</a> which has identical symptoms to this one (as in it&#8217;s the same bug, 3 years and several browser versions later). It turns out that the problem is a result of the browser incorrectly tying viewport width in with the status bar width, so if your status bar contains a large number of icons, or a series of longer ones, you are likely to encounter this issue. In order to temporarily fix it I&#8217;ve had to disable the status bar icons for a number of my browser extensions so that they all fit at an 800 pixel wide resolution. This is far from ideal and diminishes the usefulness of my browser as a development tool, not to mention affecting the single biggest factor (in my opinion) in Firefox&#8217;s commercial success &#8211; it&#8217;s extensibility.</p>
<p>How a bug with such severe outcomes as this can survive for three years and across multiple updates and upgrades I don&#8217;t know &#8211; perhaps it&#8217;s down to its severity being stupidly marked as minor?</p>
<p>On a different note, I also think that the absence of an installation rollback feature for Firefox is a major omission that should be rectified <acronym title="As soon as possible">ASAP</acronym>. At this moment in time the only viable (yet risky) option for repairing a failed install/update, including automatic updates, is to overwrite the existing installation.  For example if the install fails due to a corrupt installer package you need to overwrite it with a different copy, or less desirably, a previous version. How come? As mentioned, there&#8217;s no rollback feature and system restore often fails to correct the problem &#8211; I know, I tried it myself on Friday when the first update attempt left me with nothing more than an empty title bar:</p>
<dl class="imgdl">
<dt>Firefox 1.5.0.4 following automatic update using a corrupt installer package.</dt>
<dd class="imgdd"><img decoding="async" id="image36" src="http://www.ap4a.co.uk/wp-content/uploads/firefox1504.thumbnail.gif" alt="Firefox 1.5.0.4 after automatic update used a corrupt installer package." /></dd>
<dd class="caption">
My less than functional copy of Firefox, consisting of an empty title bar and a non-working close window button.</dd>
</dl>
<p>Fortunately overwriting with a different installer worked, if it didn&#8217;t I&#8217;d have needed some way of getting hold of an earlier version &#8211; not too easy when <a href="http://www.mozilla.com/firefox/all.html" title="The Firefox download page for all locations/languages">the Firefox download page only contains links to the latest version</a> and <a href="http://browsers.evolt.org/?mozilla/firefox" title="The Firefox repository at Evolt's browser archive">Evolt&#8217;s latest archive version is 0.7.1</a> &#8211; the average user wouldn&#8217;t think to change the version number in the download <acronym title="Uniform resource locator">URL</acronym> at Mozilla. Also, I think the idea is for Firefox to not only be a first choice browser, but eventually to become the only choice for the average user? Like Internet Explorer is currently for millions of people &#8211; so what would have happened if that was the case? I&#8217;d have been left completely browserless and unable to find a way back to Mozilla to download a different copy of the installer package.</p>
<p>These are the kind of issues that Mozilla need to urgently address if they want to see their market share continue to rise, failure to do so could well lead to them losing it. The world is a fickle place and in my opinion the main factor keeping Firefox ahead of Opera at the moment is its extensibility, but even that has lingering flaws as is mentioned above.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2006/firefox-window-resize-bug-and-other-annoyances/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>More meme madness</title>
		<link>http://www.ap4a.co.uk/archives/2006/more-meme-madness/</link>
					<comments>http://www.ap4a.co.uk/archives/2006/more-meme-madness/#comments</comments>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Tue, 30 May 2006 14:30:38 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2006/more-meme-madness/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Feel free to skip this if you&#8217;re not interested in this kind of thing, but Toxie has meme tagged me. For revenge it seems. Anyway &#8230; I AM: a bit lax at posting here. I WANT: to get better at this web development malarky. I HATE: the stupid petty things that I should be able [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Feel free to skip this if you&#8217;re not interested in this kind of thing, but <a href="http://www.toxic-web.co.uk/blog/2006/05/30/tagged-by/" title="Meme tagged by Toxie">Toxie</a> has meme tagged me. For revenge it seems. Anyway &#8230;</p>
<ul class="nobul meme">
<li>I AM: a bit lax at posting here.</li>
<li>I WANT: to get better at this web development malarky.</li>
<li>I HATE: the stupid petty things that I should be able to ignore.</li>
<li>I MISS: my parents.</li>
<li>I FEAR: being eaten alive.</li>
<li>I HEAR: a lot more than appearances indicate.</li>
<li>I WONDER: for a while, then I examine.</li>
<li>I REGRET: pretty much everything I did from 1978 to 1984.</li>
<li>I AM NOT: able to change those things.</li>
<li>I DANCE: almost as well as I sing.</li>
<li>I SING: incredibly well when incredibly drunk.</li>
<li>I SEE: amazing things.</li>
<li>I CRY: when no one appreciates my drunken singing.</li>
<li>I AM NOT ALWAYS: impatient.</li>
<li>I MAKE WITH MY HANDS: clicking noises.</li>
<li>I WRITE: occasionally.</li>
<li>I CONFUSE: now and then.</li>
<li>I NEED: motivation.</li>
<li>I SHOULD: learn javascript.</li>
<li>I START: with good intentions.</li>
<li>I FINISH: and want to redo it.</li>
</ul>
<p>The other poor unfortunates that I&#8217;m inflicting this upon are:</p>
<ul class="nobul meme">
<li>Granty (link removed as his blog no longer exists)</li>
<li><a href="http://invisioncube.blogspot.com/" title="The Grumpy Old Man">Maz</a></li>
<li><a href="http://www.seaton-online.co.uk/" title="Paul Pleavin">Paul</a></li>
</ul>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ap4a.co.uk/archives/2006/more-meme-madness/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>The First Annual CSS Naked Day</title>
		<link>http://www.ap4a.co.uk/archives/2006/annual-css-naked-day/</link>
		
		<dc:creator><![CDATA[David Anderson]]></dc:creator>
		<pubDate>Tue, 04 Apr 2006 13:15:11 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">http://www.ap4a.co.uk/archives/2006/annual-css-naked-day/</guid>

					<description><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p>Dustin Diaz has announced the first annual CSS naked day to take place on the 5th of April. I had wanted to announce my participation in the event prior to my CSS turning off, but I didn&#8217;t get the chance to and now it&#8217;s gone. Some of you may be wondering why I started early [&#8230;]</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ap4a.co.uk">An Unfinished Symphony</a></p>
<p><a href="http://www.dustindiaz.com/" rel="external">Dustin Diaz</a> has announced the <a href="http://www.dustindiaz.com/naked-day/">first annual <abbr title="Cascading style sheets">CSS</abbr> naked day</a> to take place on the 5th of April. I had wanted to announce my participation in the event prior to my CSS turning off, but I didn&#8217;t get the chance to and now it&#8217;s gone.</p>
<p>Some of you may be wondering why I started early &#8211; well I haven&#8217;t really. You see I used the <abbr title="PHP hypertext preprocessor">PHP</abbr> function provided by Luke Wertz to disable my CSS automatically and, as mentioned by Dustin, this will turn the CSS off as soon as it is the 5th of April anywhere in the World, and keep it turned off until it&#8217;s no longer the 5th anywhere. In other words it&#8217;s an annual CSS 2 naked days.</p>
<p>To find out what it&#8217;s all about have a read of the <a href="http://www.dustindiaz.com/naked-day/" rel="external" title="annual CSS naked day">announcement</a>, however it&#8217;s summed up quite well here by <a href="http://people.opera.com/howcome/" rel="external">H&aring;kon Wium Lie</a>, the creator of CSS:</p>
<blockquote cite="http://www.dustindiaz.com/naked-day/#comment-2934">
<p>This is a fun idea, fully in line with the reasons for creating CSS in the first place. While most designers are attracted by the extra presentational capabilities, saving <abbr title="HyperText Markup Language">HTML</abbr> from becoming a presentational language was probably a more important motivation for most people who participated in the beginning.</p></blockquote>
<p>H&aring;kon has pledged to take part, along with <a href="http://naked.dustindiaz.com/" rel="external" title="CSS Naked Day home page and participant list">several hundred other mental people</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>In a little under 48 hours my CSS will return in a blaze of glory, in the meantime you get to see a more attractive ap4a.</p>
<p>Post from http://www.ap4a.co.uk - &copy; David Anderson, all rights reserved.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>