<?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>strangerpixel &#187; Web</title>
	<atom:link href="http://www.strangerpixel.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.strangerpixel.com</link>
	<description>I make websites.</description>
	<lastBuildDate>Sat, 10 Mar 2012 18:43:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Building the Tour of the North microsite</title>
		<link>http://www.strangerpixel.com/2011/09/building-the-tour-of-the-north-microsite/</link>
		<comments>http://www.strangerpixel.com/2011/09/building-the-tour-of-the-north-microsite/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 12:15:35 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Bike]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[cycling]]></category>
		<category><![CDATA[Flickr API]]></category>
		<category><![CDATA[Google Maps API]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=763</guid>
		<description><![CDATA[In April this year I went on a mountain-bike trip with a few mates. It was an epic, tough ride that involved digging very deep into limited early-season fitness reserves. On returning to London I decided that the journey should &#8230; <a href="http://www.strangerpixel.com/2011/09/building-the-tour-of-the-north-microsite/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In April this year I went on a mountain-bike trip with a few mates. It was an epic, tough ride that involved digging very deep into limited early-season fitness reserves. On returning to London I decided that the journey should be appropriately documented and data-mined &#8211; for my grandchildren, at the very least.</p>
<div id="attachment_764" class="wp-caption alignnone" style="width: 560px"><img class="size-medium wp-image-764" title="totn-grab" src="http://www.strangerpixel.com/blog/wp-content/uploads/2011/09/totn-grab-550x376.jpg" alt="" width="550" height="376" /><p class="wp-caption-text">The Tour of the North website.</p></div>
<p><strong>Prep</strong></p>
<p>The planned route was a 5-day zig-zag from Lancaster to Scarborough, taking in the finest riding available.</p>
<p>Before heading north I encouraged all but the least tech member of our 4-man team to get on Twitter and get their heads around hashtags and geo-located tweets. Three of us, thankfully, had iPhones, which made this pretty easy.</p>
<p><strong>Navigation</strong></p>
<p>Tom was in charge of navigation: in addition to route maps, he brought with him the <a href="http://gps.motionx.com/iphone/overview/">GPS Motion-X app</a> for iPhone, which records detailed route data including distance, time, speed, and 3-dimensional coordinates (with elevation).</p>
<p>After each day&#8217;s leg was completed, Tom emailed the KML route data to all of us to ensure everything was backed up.</p>
<p><strong>Website</strong></p>
<p>The Tour of the North microsite has two components:</p>
<ul>
<li>a page built out from my existing blog at <a href="http://www.legsfeelingnopressure.com/the-tour-of-the-north/">http://www.legsfeelingnopressure.com/the-tour-of-the-north/</a></li>
<li>a dedicated map page with geolocated photos and tweets at <a href="http://www.legsfeelingnopressure.com/totn-map/index.html">http://www.legsfeelingnopressure.com/totn-map</a></li>
</ul>
<p>The blog page features some neat CSS3 transitions, scrolling elevation charts and a lightbox to display the Flickr images. The trickiest element by far was processing the KML data to display accurately on the maps, and then using the Flickr and Twitter APIs to add photos and tweets to the dedicated map page.</p>
<div id="attachment_771" class="wp-caption alignnone" style="width: 560px"><img class="size-medium wp-image-771" title="totn-map-grab" src="http://www.strangerpixel.com/blog/wp-content/uploads/2011/09/totn-map-grab-550x398.jpg" alt="" width="550" height="398" /><p class="wp-caption-text">Mapping the ride: a Google Map with plotted KML routes, Flickr photos and tweets.</p></div>
<p><strong>Mapping</strong></p>
<p>Creating the maps involved various stages:</p>
<ul>
<li>Cleaning up the Motion-X KML data &#8211; Motion-X adds quite a lot of extraneous cruft to its exported KML route files, including Motion-X logos and route data that is loaded into Google Maps info windows by default.</li>
<li>Repairing KML files where necessary &#8211; we suffered a technical malfunction on day 2, which resulted in a gap in the coordinates (it loos like we teleported). I had to populate the KML with dummy coordinates.</li>
<li>Hosting KML files on Amazon S3 &#8211; so they load super-fast.</li>
<li>Programming the Google Maps API to <a href="http://code.google.com/apis/maps/documentation/javascript/overlays.html#KMLLayers">plot the KML overlays</a> onto the maps.</li>
</ul>
<p><strong>Twitter &amp; Flickr APIs</strong></p>
<p>I downloaded each tweeter&#8217;s JSON for the 5 days of riding and combined them into a single .json file to reduce file size and speed up the rendering of the markers onto the map.</p>
<pre class="brush: php; gutter: false; title: ; wrap-lines: true; notranslate">
// get a combined stream of tweets, downloaded from Twitter immediately after the trip
	$.getJSON('js/combined.json', function(data) {
		for (index in data) addTweetMarker(data[index]);
	});
</pre>
<p>Because the main map needs to access more than 20 tagged photos from Flickr, I had to use the Flickr API with a key (check the source code). Also, of course, any photos uploaded to Flickr from a standard camera without geodata had to be manually added to Flickr&#8217;s (not very detailed) maps &#8211; harder than it sounds when you&#8217;re talking about a hillside in the Dales.</p>
<p><strong>Elevation charts</strong></p>
<p>I stumbled across a really awesome online tool called <a href="http://www.gpsvisualizer.com/">GPS Visualiser</a> which converts .gps and .kml files into all kinds of things, including profile graphics.</p>
<p><strong>Future developments</strong></p>
<ul>
<li>Swap out the Daytum iframes for some javascript graphs using <a href="http://code.google.com/p/flot/">Flot</a> or <a href="http://omnipotent.net/jquery.sparkline/">Sparklines</a>.</li>
<li>Fix the map so that the Flickr info windows display the photo author and link to the original on Flickr.</li>
<li>Go on another, similar trip and set all this up <em>in advance</em> with live tweets and route-plotting.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2011/09/building-the-tour-of-the-north-microsite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple content workflow for WordPress</title>
		<link>http://www.strangerpixel.com/2011/09/simple-content-workflow-for-wordpress/</link>
		<comments>http://www.strangerpixel.com/2011/09/simple-content-workflow-for-wordpress/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 09:09:15 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=756</guid>
		<description><![CDATA[Create a simple and convenient workflow process for multiple WordPress bloggers using two plugins. Posting content on WordPress is almost too easy. You paste text into a box and click publish, and your post is instantly pushed to your thousands &#8230; <a href="http://www.strangerpixel.com/2011/09/simple-content-workflow-for-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Create a simple and convenient workflow process for multiple WordPress bloggers using two plugins.</p>
<p>Posting content on WordPress is almost too easy. You paste text into a box and click publish, and your post is instantly pushed to your thousands of Twitter followers. Then you check the published post and find a grammatical war-zone&#8230;</p>
<p>Being an unashamed stickler for textual accuracy, I&#8217;ve put in place a system to catch occasional lapses by my team of WordPress content editors at LCF. Here&#8217;s how it works.</p>
<p><strong>Step 1: Status notifications</strong></p>
<p>Download and install the <a href="http://wordpress.org/extend/plugins/wp-status-notifier/">WP Status Notifier plugin</a>. This plugin is in charge of sending emails to and from contributors and a specified approver when the status of a piece of content changes. The settings screen (Settings &gt; Status Notifications) should look like this (fill in your admin email address of course):</p>
<div id="attachment_757" class="wp-caption alignnone" style="width: 560px"><img class="size-medium wp-image-757" title="status-notifier" src="http://www.strangerpixel.com/blog/wp-content/uploads/2011/09/status-notifier-550x259.jpg" alt="" width="550" height="259" /><p class="wp-caption-text">WP Status Notifier settings panel.</p></div>
<p><strong>Step 2: Roles and Capabilities</strong></p>
<p>First of all, read up on the <a href="http://codex.wordpress.org/Roles_and_Capabilities">Roles and Capabilities documentation</a> in the WordPress Codex. Next, install the <a href="http://wordpress.org/extend/plugins/capsman/">Capability Manager plugin</a>. You now have to configure the plugin to ensure that all those users whose posts you want to moderate are prevented from doing so automatically. <em>Go to Users &gt; Capabilities.</em></p>
<p>Most of my contributors are in fact WordPress &#8216;editors&#8217; &#8211; and by default they can publish posts and pages. Therefore we need to uncheck these capabilities from the editor capabilities table.</p>
<div id="attachment_759" class="wp-caption alignnone" style="width: 560px"><img class="size-medium wp-image-759" title="roles-caps" src="http://www.strangerpixel.com/blog/wp-content/uploads/2011/09/roles-caps-550x372.jpg" alt="" width="550" height="372" /><p class="wp-caption-text">Managing roles and capabilities in WordPress.</p></div>
<p>I would recommend installing the Roles and Capabilities plugin in any case &#8211; it&#8217;s often useful to strip out options and menus where they&#8217;re not needed, or to give certain capabilities to a user you don&#8217;t necessarily want to make an admin.</p>
<p><strong>Step 3: Moderate and go</strong></p>
<p>Provided you&#8217;ve configured your users&#8217; capabilities correctly, you should now receive an email whenever a post is ready for approval. This will happen the first time a user clicks &#8216;Save&#8217; (be wary here about jumping in to approve instantly &#8211; the user might still be editing the content). Once you&#8217;ve had a chance to check the content and click Publish, the author will receive a confirmation email.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2011/09/simple-content-workflow-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a geoRSS feed from WordPress</title>
		<link>http://www.strangerpixel.com/2011/03/creating-a-georss-feed-from-wordpress/</link>
		<comments>http://www.strangerpixel.com/2011/03/creating-a-georss-feed-from-wordpress/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 15:54:32 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[geoRSS]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[templates]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=737</guid>
		<description><![CDATA[A back-to-basics tutorial for generating a geoRSS feed from WordPress, correctly formatted for use in Google Maps KML layers. There are a profusion of (often very full-featured and cool) WordPress plugins out there providing geolocation or geotagging functionality. However, none &#8230; <a href="http://www.strangerpixel.com/2011/03/creating-a-georss-feed-from-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A back-to-basics tutorial for generating a geoRSS feed from WordPress, correctly formatted for use in Google Maps KML layers.</p>
<p>There are a profusion of (often very full-featured and cool) WordPress plugins out there providing <a href="http://wordpress.org/extend/plugins/search.php?q=geolocation&amp;sort=">geolocation</a> or <a href="http://wordpress.org/extend/plugins/search.php?q=geotagging&amp;sort=">geotagging</a> functionality. However, none of them really fit my purposes for any or all of the following reasons:</p>
<ul>
<li>they use geolocation data from the blogger who is writing the post, as opposed to manually-entered coordinates.</li>
<li>they are focussed on providing mapping within WordPress, as opposed to generating a feed for use externally.</li>
<li>they added unnecessary calls to Google or Yahoo scripts in <code>wp_head().</code></li>
<li>they used out-of-date versions of the Google Maps API.</li>
</ul>
<p><a href="http://gpress.my/">gPress</a> is currently the most promising-looking complete package for mapping in WordPress, and it apparently offers geoRSS functionality, although I haven&#8217;t checked it out yet. However, I simply wanted to provide a geoRSS feed without any additional baggage, besides wanting to build the nuts and bolts myself.</p>
<p><strong>Generating a new feed</strong></p>
<p>In <code>functions.php</code>, add the following:</p>
<pre class="brush: php; title: ; notranslate">
add_action('init', 'my_maps_init');

function my_maps_init() {
    add_feed('georss','my_georss_feed');
}

function my_georss_feed() {
    load_template( TEMPLATEPATH . '/feed-georss.php' );
}
</pre>
<p>Now you can create your new <code>feed-georss.php</code> template. I based my code on the output from <a href="http://api.flickr.com/services/feeds/geo/?g=322338@N20&amp;lang=en-us&amp;format=feed-georss">Flickr&#8217;s geoRSS feed</a>, as used in <a href="http://code.google.com/apis/maps/documentation/javascript/examples/layer-georss.html">this example</a>. It contains latitude and longitude coordinates from two new custom fields set up in the post itself. Note the special RSS template tags e.g. <code>the_title_rss()</code> that strip out tags and convert characters to present the raw data via RSS.</p>
<p><script src="https://gist.github.com/852944.js?file=feed-georss.php"></script></p>
<p>Assuming you have some posts ready with geo-coordinates in custom fields, you can test the feed output at:</p>
<pre class="brush: xml; gutter: false; title: ; notranslate">http://www.yourblog.com/?feed=georss</pre>
<p>If you are only adding coordinates to posts in certain categories you can also use e.g.:</p>
<pre class="brush: xml; gutter: false; title: ; notranslate">http://www.yourblog.com/category/maps/?feed=georss</pre>
<p><strong>Google Maps</strong></p>
<p>Assuming your feed is working correctly, you can now get your geotagged posts to show up on a Google map using a KML Layer. You&#8217;ll need to <a href="http://code.google.com/apis/maps/documentation/javascript/overlays.html#KMLLayers">read up on the documentation</a> first, but for reference here&#8217;s the relevant snippet of my code:</p>
<pre class="brush: jscript; title: ; notranslate">
var kmlLayerOptions = {
	map: map,
	preserveViewport: true,
	suppressInfoWindows: true
}

var georssLayer = new google.maps.KmlLayer('http://blogs.fashion.arts.ac.uk/snapshot/category/international/?feed=georss', kmlLayerOptions);

google.maps.event.addListener(georssLayer, 'click', function(kmlEvent) {
	showKmlWindow(kmlEvent, georssLayer);
});

function showKmlWindow(e, layer) {
	infoWindow.close();
	infoWindow.setPosition(e.latLng);
	infoWindow.open(map);
	infoWindow.setContent('&lt;h3&gt;' + e.featureData.name + '&lt;/h3&gt;' + e.featureData.description);
}
</pre>
<p>Note that, in order to manipulate the infoWindow content when each marker is clicked, you have to suppress the infoWindows that open automatically. You then catch the <code>kmlEvent</code> generated on click, and then do what you will with the <code>KmlFeatureData</code> object.</p>
<ul>
<li><a href="http://www.fashion.arts.ac.uk/lcf-in-the-world.php">View London College of Fashion activity map</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2011/03/creating-a-georss-feed-from-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to create a tablet startup screen for iPad in Sencha Touch</title>
		<link>http://www.strangerpixel.com/2011/01/how-to-create-a-tablet-startup-screen-for-ipad-in-sencha-touch/</link>
		<comments>http://www.strangerpixel.com/2011/01/how-to-create-a-tablet-startup-screen-for-ipad-in-sencha-touch/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 11:01:47 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Sencha Touch]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=657</guid>
		<description><![CDATA[When creating a web app using Sencha Touch, the icing on the cake is a nice sexy startup screen that displays as soon as your app loads after pressing the home screen button. To show a tablet startup screen for &#8230; <a href="http://www.strangerpixel.com/2011/01/how-to-create-a-tablet-startup-screen-for-ipad-in-sencha-touch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When creating a web app using Sencha Touch, the icing on the cake is a nice sexy startup screen that displays as soon as your app loads after pressing the home screen button.</p>
<pre class="brush: jscript; title: ; notranslate">
Ext.setup({
    tabletStartupScreen: 'tablet_startup.png',
    phoneStartupScreen: 'phone_startup.png',
    icon: 'icon.png',
    glossOnIcon: true,
    onReady: function() {
		Showtime.MasterPanel = new Showtime.MasterPanel();
    }
});
</pre>
<p>To show a tablet startup screen for the first few seconds after clicking the button on your home screen, you need to do 2 things:</p>
<ol>
<li>Create a portrait-orientation .png with dimensions 768px x 1004px. <a href="http://dev.sencha.com/deploy/touch/docs/source/Ext1.html#method-Ext-setup">It only works in portrait</a> &#8211; so far.</li>
<li>Put it in your web root folder (putting it in any other folder doesn&#8217;t seem to work).</li>
</ol>
<p>You can use absolute URLs, but for some reason I had problems trying to use relative URLs like &#8216;../img/touch/tablet_startup.png&#8217;. You can also name the file whatever you like, and it still works.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2011/01/how-to-create-a-tablet-startup-screen-for-ipad-in-sencha-touch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Streamlining CSS on www.fashion.arts.ac.uk</title>
		<link>http://www.strangerpixel.com/2011/01/streamlining-css-on-www-fashion-arts-ac-uk/</link>
		<comments>http://www.strangerpixel.com/2011/01/streamlining-css-on-www-fashion-arts-ac-uk/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 18:20:18 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[LCF]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=563</guid>
		<description><![CDATA[I recently began a mini-project to streamline and upgrade the London College of Fashion CSS stylesheets. The overall aim was good housekeeping &#8211; and the wish to put new skills to use in polishing up the site&#8217;s front end. This &#8230; <a href="http://www.strangerpixel.com/2011/01/streamlining-css-on-www-fashion-arts-ac-uk/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I recently began a mini-project to streamline and upgrade the London College of Fashion CSS stylesheets. The overall aim was good housekeeping &#8211; and the wish to put new skills to use in polishing up the site&#8217;s front end. This post is a work in progress, I&#8217;ll be updating it as I go.</p>
<p><strong>Why upgrade the CSS?</strong></p>
<p>Some background: the <a href="http://www.fashion.arts.ac.uk/">LCF website</a> was redesigned in 2007 as part of the <a href="http://www.arts.ac.uk">University of the Arts London</a> family of websites. The original designers implemented some generic styles used by all College sites, as well as styles particular to each College (including colour-coding). Since 2007 the stylesheets have been copied, tweaked, added to and duplicated without any version control or system of documenting changes (beyond occasional comments in the files themselves).</p>
<p>The system that I&#8217;ve inherited has quite a few flaws:</p>
<ul>
<li>Too many CSS files &#8211; I counted nine &#8211; meaning unnecessary HTTP requests</li>
<li>Bloated files with unnecessary rules &#8211; about 3,000 lines of code in total, including a blog stylesheet</li>
<li>Verbose, inefficient CSS selectors (I&#8217;ve learned some new tricks to do with <a href="http://css-tricks.com/efficiently-rendering-css/">efficiently rendering CSS</a> recently)</li>
<li>No style rules for basic semantic elements like <code>&lt;blockquote&gt;</code> and <code>&lt;small&gt;</code></li>
</ul>
<p>Speed and inefficiency weren&#8217;t the only reasons for improving our CSS; the site &#8211; with the exception of our WordPress blog &#8211; has a static front end anyway, so it&#8217;s already pretty fast. Making these changes were also motivated by wanting to put new skills into practice, taking ownership of the CSS, and generally setting the LCF house in order in time for the new CMS implementation.</p>
<p>As anyone skilled in CSS knows, writing good CSS is all about refinement and cleanness. It&#8217;s about writing one line instead of two. If you care about CSS, you shouldn&#8217;t be able live with shoddy, inaccurate code.</p>
<p><strong>Step 1: HTML5 Reset</strong></p>
<p>It made sense to start with the basics, and to implement a future-proof reset stylesheet that not only addressed gaps in the current CSS but also catered for all the new HTML elements we&#8217;re sure to be using sooner or later.</p>
<p>Lots of work has been done <a href="http://html5reset.org/">in this area</a> but <a href="http://html5doctor.com/author/richc/">Rich Clark</a>&#8216;s <a href="http://html5doctor.com/html-5-reset-stylesheet/">HTML5 Doctor reset stylesheet</a> appeared to be the industry standard.</p>
<p>Resetting base styles in this way meant I could do an initial pass of the existing CSS, removing all those instances of <code>border: 0;</code> and <code>margin: 0;</code> etc.</p>
<p><strong>Step 2: Reduce and refine</strong></p>
<p>The existing CSS had a file called <code>type.css</code>. It had about 60 lines, but incorporated a dozen rules for selectors that were not used at all, anywhere on our website. So anything useful in <code>type.css</code> was rolled into my core stylesheet, <code>html.css</code>.</p>
<p>I found lots of dead wood in the biggest stylesheet, <code>custom.css</code>. This kind of <em>selector mayhem</em>:</p>
<pre class="brush: css; gutter: false; title: ; notranslate">#main-content #content-col #inner-right h3.wide span</pre>
<p>was everywhere. To focus on this example alone, I discovered that nowhere on our site is there an occurence of <code>#content-col</code> outside of a containing <code>#main-content</code> block &#8211; so there was no need for a parent selector. Similarly, there&#8217;s no need for this:</p>
<pre class="brush: css; gutter: false; title: ; notranslate">#main-content #content-col h1</pre>
<p>if there&#8217;s only ever one instance of <code>&lt;h1&gt;</code> on the page. Again:</p>
<pre class="brush: css; gutter: false; title: ; notranslate">div#breadcrumb-trail</pre>
<p>- the <code>div</code> here is an over-qualification, since the &#8216;breadcrumb-trail&#8217; id is only ever applied to a <code>div</code>, and only makes the rule less efficient (thanks again <a href="http://css-tricks.com/efficiently-rendering-css/">Chris Coyier</a>).</p>
<p>There were all kinds of elements in the old HTML files that have become part of the furniture over the last 3 years, but which probably should never have been there in the first place. For example, the designers must at some point have decided to add a colour-coded class to the <code>&lt;body&gt;</code> element, but they never made it college-specific. So each of the hundreds of HTML pages on the University website has:</p>
<pre class="brush: css; gutter: false; title: ; notranslate">&lt;body class=&quot;blue&quot;&gt;</pre>
<p>The class &#8216;blue&#8217; has no style rules, so it&#8217;s just useless cruft.</p>
<p><strong>Step 3: styling for Internet Explorer</strong></p>
<p>Following <a href="http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/">Paul Irish&#8217;s guidelines</a> for feeding modified style rules to different versions of IE, I set up a basic conditional statement to detect for everybody&#8217;s favourite browser, adding a class to the element:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!--[if IE ]&gt;&lt;html class=&quot;ie&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;&lt;![endif]--&gt;
&lt;!--[if !IE]&gt;&lt;!--&gt;&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;&lt;!--&lt;![endif]--&gt;
</pre>
<p>I didn&#8217;t expect there to be too many special rules, but at least this gave me a valid method of specifying rules without fetching a separate file from the server.</p>
<p><strong>Step 4: rediscovering the lost grid</strong></p>
<p>The LCF site is built around a grid. Not one of today&#8217;s <a href="http://960.gs/">nice modern 960 grids</a>, but a custom-built one with the following spec:</p>
<ul>
<li>16 columns</li>
<li>982px wide</li>
<li>51px grid squares</li>
<li>9px gutters on the right-hand side of each column (as opposed to 4.5px on each side like most grids. This means that the far-right column has to have its margin removed so as not to overspill)</li>
<li>a 30px left-hand margin on the main container element, to prevent the content resting flush against the left-hand edge of the viewport</li>
</ul>
<p>The original grid existed only as a PSD file buried deep in a shared drive. However, using it and the column widths in the existing CSS, I was able to modify Nathan Smith&#8217;s 16-column grid stylesheet to fit the UAL grid. It&#8217;s not pretty, I realise. I actually had to make the left margin 31px, to remove the 1px wide gap on the right hand edge of the main content block, which was there because 16 x 60 &#8211; 9 equals 951, not 952, the original width of the container. Phew.</p>
<p>With my new <code>ualgrid.css</code>, I was able to apply predefined CSS selectors to HTML elements, and ensure consistent widths and spacing site-wide. Using a grid also meant that I could remove dozens of instances of <code>&lt;float: left;&gt;</code>, and <code>&lt;clear: both;&gt;</code> from the CSS.</p>
<div id="attachment_568" class="wp-caption alignnone" style="width: 560px"><img class="size-full wp-image-568" title="lcf-about-grid" src="http://www.strangerpixel.com/blog/wp-content/uploads/2010/11/lcf-about-grid.png" alt="" width="550" height="547" /><p class="wp-caption-text">Illustration of the website&#39;s original design grid.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2011/01/streamlining-css-on-www-fashion-arts-ac-uk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LCF: back to black</title>
		<link>http://www.strangerpixel.com/2010/12/lcf-back-to-black/</link>
		<comments>http://www.strangerpixel.com/2010/12/lcf-back-to-black/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 10:02:27 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=611</guid>
		<description><![CDATA[Last night I took the radical step of transforming the London College of Fashion&#8217;s web colour scheme from pink to black. I&#8217;m awaiting either a storm of protest, or a standing ovation &#8211; or probably a bit of both. This &#8230; <a href="http://www.strangerpixel.com/2010/12/lcf-back-to-black/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Last night I took the radical step of transforming the London College of Fashion&#8217;s web colour scheme from pink to black. I&#8217;m awaiting either a storm of protest, or a standing ovation &#8211; or probably a bit of both. This is what happened.</p>
<p><strong>Pink</strong></p>
<p>LCF&#8217;s online colour was pink since before I arrived in 2006. It had its place in the 6-way <a href="http://www.arts.ac.uk/index.htm">University of the Arts London</a> colour spectrum &#8211; alongside blue, red, gold, green, orange, and the base colour, a slate blue-grey.</p>
<div id="attachment_612" class="wp-caption alignnone" style="width: 638px"><img class="size-large wp-image-612" title="Screen shot 2010-12-01 at 08.48.51" src="http://www.strangerpixel.com/blog/wp-content/uploads/2010/12/Screen-shot-2010-12-01-at-08.48.51-628x577.png" alt="" width="628" height="577" /><p class="wp-caption-text">Pink version</p></div>
<p>Truth be told, I never personally disliked the pink &#8211; it worked better than some other College colours in providing contrast against the base colour. However, it seemed that many people here didn&#8217;t like the pink. They felt it was dated (since we had long ago abandoned pink in our offline publications), and no longer represented the LCF brand. Occasional grumbles found focus at an afternoon meeting in early November &#8211; so I did a quick on-the-spot mock-up in Firebug, and hey presto, people loved it.</p>
<p>More detailed samples followed. We experimented &#8211; in fact we&#8217;re still experimenting &#8211; with which tints to use as highlight and rollover colours. But the &#8216;key stakeholders&#8217; were on board with party streamers and paper hats, so <a href="http://www.fashion.arts.ac.uk/">we went for it</a>.</p>
<p><strong>Black</strong></p>
<div id="attachment_616" class="wp-caption alignnone" style="width: 638px"><img class="size-large wp-image-616" title="Screen shot 2010-12-01 at 08.48.57" src="http://www.strangerpixel.com/blog/wp-content/uploads/2010/12/Screen-shot-2010-12-01-at-08.48.57-628x577.png" alt="" width="628" height="577" /><p class="wp-caption-text">Black version</p></div>
<p>So far the response on Twitter is 3:2 against the switch. Clearly we need more data &#8211; please <a href="http://www.twitter.com/LCFLondon">@LCFLondon</a> your thoughts.</p>
<p><strong>Update @ 22 Dec 2010</strong></p>
<p>So&#8230; as you can see the LCF website is no longer black. Despite a lot of support within the College, the black scheme was thought by certain members of the central University communications team to be too out of keeping with the existing brand identity. Our response was that, if we couldn&#8217;t develop our design any further, we were better off reverting to the original.</p>
<p>Hopefully at some point in the future we will be able to assert our own College brand identity independently of the University&#8217;s federal structure. However, this will require a culture shift throughout the organisation and probably a reappraisal of the entire website architecture.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2010/12/lcf-back-to-black/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extending the WordPress Campaign Monitor Addon plugin</title>
		<link>http://www.strangerpixel.com/2010/10/extending-the-wordpress-campaign-monitor-addon-plugin/</link>
		<comments>http://www.strangerpixel.com/2010/10/extending-the-wordpress-campaign-monitor-addon-plugin/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 16:59:07 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Campaign Monitor]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=519</guid>
		<description><![CDATA[A starting point for customising the WordPress Campaign Monitor Addon plugin, for using WordPress forms to maintain detailed contact lists in Campaign Monitor. By extending the Contact Form 7 plugin with the Campaign Monitor Addon, and with a little help &#8230; <a href="http://www.strangerpixel.com/2010/10/extending-the-wordpress-campaign-monitor-addon-plugin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A starting point for customising the WordPress <a href="http://www.campaignmonitor.com/downloads/wordpress-contact-form-7-plugin/">Campaign Monitor Addon plugin</a>, for using WordPress forms to maintain detailed contact lists in Campaign Monitor.</p>
<p>By extending the <a href="http://wordpress.org/extend/plugins/contact-form-7/">Contact Form 7 plugin</a> with the Campaign Monitor Addon, and with a little help from my colleague <a href="http://twitter.com/djkofi">Mouhannad Al-Sayegh</a>, I was able to unlock a pretty powerful combination that enables all kinds of list management functions using the <a href="http://www.campaignmonitor.com/api/">Campaign Monitor API</a>.</p>
<p><strong>Campaign Monitor</strong></p>
<p>To start you&#8217;ll need an account with Campaign Monitor, and a demo list for testing purposes.</p>
<p><strong>Contact Form 7</strong></p>
<p>This plugin is super-flexible and easy to use if you know a little HTML and the rudiments of building forms. If you haven&#8217;t already you&#8217;ll need to install the plugin and create a demo form.</p>
<p><strong>Campaign Monitor Addon</strong></p>
<p>When installed and activated, this plugin appends a module to your form. No need for me to go into detail here &#8211; read <a href="http://www.bettigole.us/published-work/wordpress-contributions/campaign-monitor-addon-for-contact-form-7/">Joshua Bettigole&#8217;s instructions</a> and download his excellent manual on the steps required.</p>
<p><strong>Connecting to Campaign Monitor</strong></p>
<p>By default the Campaign Monitor Addon provides two fields for subscriber data:</p>
<ul>
<li>Subscriber Email</li>
<li>Subscriber Name</li>
</ul>
<p>It takes these fields and feeds them to the <em>subscriberAdd</em> method:</p>
<pre class="brush: php; gutter: false; title: ; notranslate">$result = $cm-&amp;gt;subscriberAdd($email, $name);</pre>
<p><strong>Custom fields</strong></p>
<p>So far so good &#8211; but I wanted to process additional fields from the form. Campaign Monitor allows you to <a href="http://help.campaignmonitor.com/topic.aspx?t=33">add custom fields to lists</a> (e.g. business name, country, gender, website URL, etc.) so I wanted to harvest this data directly from my contact form.</p>
<p>First of all I needed to modify cf7-campaignmonitor.php. I added new form fields to the existing list:</p>
<pre class="brush: php; title: ; notranslate">
&lt;div class=&quot;mail-field&quot;&gt;
        &lt;label for=&quot;wpcf7-campaignmonitor-email&quot;&gt;&lt;/label&gt;
&lt;input id=&quot;wpcf7-campaignmonitor-email&quot; class=&quot;wide&quot; name=&quot;wpcf7-campaignmonitor[email]&quot; size=&quot;70&quot; type=&quot;text&quot; value=&quot;&amp;lt;?php echo esc_attr( $cf7_cm['email'] ); ?&amp;gt;&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;mail-field&quot;&gt;
        &lt;label for=&quot;wpcf7-campaignmonitor-name&quot;&gt;&lt;/label&gt;
&lt;input id=&quot;wpcf7-campaignmonitor-name&quot; class=&quot;wide&quot; name=&quot;wpcf7-campaignmonitor[name]&quot; size=&quot;70&quot; type=&quot;text&quot; value=&quot;&amp;lt;?php echo esc_attr( $cf7_cm['name'] ); ?&amp;gt;&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;mail-field&quot;&gt;
        &lt;label for=&quot;wpcf7-campaignmonitor-accept&quot;&gt;&lt;/label&gt;
&lt;input id=&quot;wpcf7-campaignmonitor-accept&quot; class=&quot;wide&quot; name=&quot;wpcf7-campaignmonitor[accept]&quot; size=&quot;70&quot; type=&quot;text&quot; value=&quot;&amp;lt;?php echo esc_attr( $cf7_cm['accept'] ); ?&amp;gt;&quot; /&gt;&lt;/div&gt;
&lt;!-- Additional form fields --&gt;
&lt;div class=&quot;mail-field&quot;&gt;
        &lt;label for=&quot;wpcf7-campaignmonitor-business&quot;&gt;&lt;/label&gt;
&lt;input id=&quot;wpcf7-campaignmonitor-business&quot; class=&quot;wide&quot; name=&quot;wpcf7-campaignmonitor[business]&quot; size=&quot;70&quot; type=&quot;text&quot; value=&quot;&amp;lt;?php echo esc_attr( $cf7_cm['business'] ); ?&amp;gt;&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;mail-field&quot;&gt;
        &lt;label for=&quot;wpcf7-campaignmonitor-website&quot;&gt;&lt;/label&gt;
&lt;input id=&quot;wpcf7-campaignmonitor-website&quot; class=&quot;wide&quot; name=&quot;wpcf7-campaignmonitor[website]&quot; size=&quot;70&quot; type=&quot;text&quot; value=&quot;&amp;lt;?php echo esc_attr( $cf7_cm['website'] ); ?&amp;gt;&quot; /&gt;&lt;/div&gt;
</pre>
<p>These can obviously be re-ordered to suit. Next you need to modify the main wpcf7_cm_subscribe() function below:</p>
<pre class="brush: php; title: ; notranslate">$email = preg_replace_callback( $regex, $callback, $cf7_cm['email'] );
$name = preg_replace_callback( $regex, $callback, $cf7_cm['name'] );
// initialise new field variables
$business = preg_replace_callback( $regex, $callback, $cf7_cm['business'] );
$website = preg_replace_callback( $regex, $callback, $cf7_cm['website'] );
// create array for additional fields
$extraFields = array('Business Name' =&amp;gt; $business, 'Business Website' =&amp;gt; $website);
</pre>
<p>Note that &#8216;Business Name&#8217; and &#8216;Business Website&#8217; should match the custom field names you have created in Campaign Monitor.</p>
<p>Finally, we need to modify the method call. In campaignmonitor.php are listed a number of PHP wrapper functions for Campaign Monitor API methods. It&#8217;s possible to use different method calls in place of <em>subscriberAdd</em> &#8211; for example we needed to use <em>subscriberAddWithCustomFields</em>. Our previously defined $extraFields variable follows the standard $email and $name:</p>
<pre class="brush: php; gutter: false; title: ; notranslate">$result = $cm-&amp;gt;subscriberAddWithCustomFields($email, $name, $extraFields);</pre>
<p>Campaign Monitor will check the email address against a given list. If it already exists, any new data will replace what is already in the record. Note that you need to re-supply any existing data, or it will be wiped. You may need to run a few tests to make sure your form submissions are putting the additional data in the right places.</p>
<p><strong>Checkboxes etc.</strong></p>
<p>The above example demonstrates form submission using custom fields with single values. But what happens when you want to process a set of checkboxes into a &#8216;Multi-option&#8217; custom field in Campaign Monitor?</p>
<pre class="brush: php; gutter: false; title: ; notranslate">
$checkboxes = preg_replace_callback( $regex, $callback, $cf7_cm['checkboxes'] );
</pre>
<p>The above line extracts the cleaned-up data from the form submission, but stores it as a string e.g. &#8216;category 1, category 2, category 3&#8242; etc. What I wanted was to put each comma-separated value into its own option inside of a multi-option custom field &#8211; so an additional step was required:</p>
<pre class="brush: php; title: ; notranslate">
$checkboxes = preg_replace_callback( $regex, $callback, $cf7_cm['checkboxes'] );
// explode the string into an array
$checkboxArray = explode(&quot;, &quot;, $checkboxes);
// create array for additional fields
$extraFields = array('Business Name' =&amp;gt; $business, 'Business Website' =&amp;gt; $website, 'Categories' =&amp;gt; $checkboxArray);
</pre>
<p>This is really just scratching the surface of what could be developed using these tools &#8211; but hopefully it helps people trying to move beyond the standard tutorials and installation instructions already out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2010/10/extending-the-wordpress-campaign-monitor-addon-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bike blog &#8211; anatomy of a logo design</title>
		<link>http://www.strangerpixel.com/2010/04/bike-blog-anatomy-of-a-logo-design/</link>
		<comments>http://www.strangerpixel.com/2010/04/bike-blog-anatomy-of-a-logo-design/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 13:04:55 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Bike]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[project]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/blog/?p=208</guid>
		<description><![CDATA[About a year ago I decided my cycling blog Legs Feeling No Pressure needed a spruce-up. Since I started writing it I had always planned to design it properly, and was inspired by some nice-looking US-based bike sites, Velodramatic and &#8230; <a href="http://www.strangerpixel.com/2010/04/bike-blog-anatomy-of-a-logo-design/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>About a year ago I decided my cycling blog <a href="http://bike.strangerpixel.com/">Legs Feeling No Pressure</a> needed a spruce-up. Since I started writing it I had always planned to design it properly, and was inspired by some nice-looking US-based bike sites, <a href="http://www.velodramatic.com/">Velodramatic</a> and <a href="http://halfacrecycling.org/">Half Acre Cycling</a>. Somehow UK-based cycling-related websites tend towards the less visually dynamic end of the spectrum, and I wanted to buck that trend.</p>
<p>The starting point was a visual identity for the blog. Legs Feeling No Pressure isn&#8217;t a brand as such &#8211; it&#8217;s just a <a href="http://bike.strangerpixel.com/about/">slightly cryptic statement</a> about what I get out of cycling &#8211; but as a name it needed a design that somehow communicated more than the name itself could do.</p>
<p><a href="http://www.behance.net/DavidHardy/frame">David Hardy</a>, who is our LCF graphic designer and similarly a bike-nut (<a href="http://www.teamsequipe.com/">he&#8217;s into scooters</a>), agreed to help me out, and we started knocking around some ideas. In a nutshell, here was my brief:</p>
<ul>
<li>bold, sans-serif typeface (although I do like some serifs used in the bike world&#8217;s, notably <a href="http://www.rapha.cc/">Rapha&#8217;s</a>)</li>
<li>no need to include cycling-related imagery like wheels (old hat)</li>
<li>maybe a colour</li>
<li>I like fancy Italian bikes but I also ride around town on a filthy hack (style vs grittiness?)</li>
</ul>
<p>David got his head down, and a few thousand furious mouse-clicks later he supplied a suite of 18 draft logos.</p>
<div id="attachment_362" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v1-1.jpg"><img class="size-medium wp-image-362" title="LFNP-DRAFTS v1-1" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v1-1-470x669.jpg" alt="LFNP-DRAFTS v1-1" width="470" height="669" /></a><p class="wp-caption-text">Logo design drafts #1 sheet 1</p></div>
<div id="attachment_364" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v1-2.jpg"><img class="size-medium wp-image-364" title="LFNP-DRAFTS v1-2" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v1-2-470x669.jpg" alt="Logo design drafts #1 sheet 2" width="470" height="669" /></a><p class="wp-caption-text">Logo design drafts #1 sheet 2</p></div>
<div id="attachment_211" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/2009/06/lfnpsheet3.jpg"><img class="size-medium wp-image-211" title="lfnpsheet3" src="http://www.strangerpixel.com/blog/wp-content/uploads/2009/06/lfnpsheet3-470x439.jpg" alt="Logo design draft batch #1 sheet 3" width="470" height="439" /></a><p class="wp-caption-text">Logo design drafts #1 sheet 3</p></div>
<p>I emailed the designs around a few friends to see what they thought. Perhaps predictably, this wasn&#8217;t a very useful step in deciding on an initial direction; some preferred N (the C-shaped design on sheet 2), but equally, others liked the tag styles, and quite a few actually liked the distressed font (B on sheet 1, which I instantly dismissed).</p>
<p>At this point we rejected a few, and moved forward with some others, exploring further the tag style as well as adding in a cheeky wrench-head / Pacman design (N, below):</p>
<div id="attachment_365" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v2-2.jpg"><img class="size-medium wp-image-365" title="LFNP-DRAFTS v2-2" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v2-2-470x669.jpg" alt="Logo design drafts #2" width="470" height="669" /></a><p class="wp-caption-text">Logo design drafts #2</p></div>
<p>Personally, I was leaning more towards version I &#8211; a rounded, surfy, retro tag with a mixture of bold sans-serif and &#8216;classic&#8217; serif that I thought echoed the masterful pairing of typefaces in the <a href="http://www.raphacondor.cc/">Rapha Condor</a> logo. However, as so often happens with logo design, hours of close examination had made the words &#8216;Legs Feeling No Pressure&#8217;  themselves practically incomprehensible as a phrase. We needed some distance.</p>
<p>A couple of days later we arrived at a final three:</p>
<div id="attachment_366" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-1.jpg"><img class="size-medium wp-image-366" title="LFNP-1" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-1-470x129.jpg" alt="Draft #3 option 1" width="470" height="129" /></a><p class="wp-caption-text">Draft #3 option 1</p></div>
<div id="attachment_367" class="wp-caption alignnone" style="width: 416px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-2.jpg"><img class="size-full wp-image-367" title="LFNP-2" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-2.jpg" alt="Draft # option 2" width="406" height="406" /></a><p class="wp-caption-text">Draft #3 option 2</p></div>
<div id="attachment_368" class="wp-caption alignnone" style="width: 479px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-4.jpg"><img class="size-medium wp-image-368" title="LFNP-4" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-4-469x189.jpg" alt="Draft # option 3" width="469" height="189" /></a><p class="wp-caption-text">Draft #3 option 3</p></div>
<p>It was David who swayed me towards option 1: he reasoned that a) I took cycling quite seriously, so I ought to have a solid, bold logo, instead of a tag more at home on a pair of board shorts; and b) that the crisp edges of option 1 would look better in a blog header anyway.</p>
<p>The next question was that of colour. David prepared a fourth suite of options, which introduced a red element, and also offered some variations on the solid serif, just to make absolutely sure we had the right one:</p>
<div id="attachment_371" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v3-1.jpg"><img class="size-medium wp-image-371" title="LFNP-DRAFTS v3-1" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v3-1-470x652.jpg" alt="Draft #4 sheet 1" width="470" height="652" /></a><p class="wp-caption-text">Draft #4 sheet 1</p></div>
<div id="attachment_372" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v3-2-copy.jpg"><img class="size-medium wp-image-372" title="LFNP-DRAFTS v3-2 copy" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP-DRAFTS-v3-2-copy-470x652.jpg" alt="Draft #4 sheet 2" width="470" height="652" /></a><p class="wp-caption-text">Draft #4 sheet 2</p></div>
<p>One final touch was the addition of the tagline &#8216;What I think about when I think about cycling&#8217;, which I borrowed from Haruki Murakami&#8217;s book <em><a href="http://www.amazon.co.uk/What-Talk-About-When-Running/dp/1846552206">What I Talk About When I Talk About Running</a></em>. Now I could see that our original bold serif was still working really well, and that it was now perfectly finished by the red &#8216;No&#8217;, with the patterned gradient within it suggesting all kinds of training-related things like hills, heart rate, and precision.</p>
<p>We had it &#8211; the finished logo:</p>
<div id="attachment_359" class="wp-caption alignnone" style="width: 480px"><img class="size-full wp-image-359 " title="LFNP+tag" src="http://www.strangerpixel.com/blog/wp-content/uploads/LFNP+tag.jpg" alt="LFNP+tag" width="470" height="180" /><p class="wp-caption-text">The finished logo, including tagline.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2010/04/bike-blog-anatomy-of-a-logo-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GQ redesign</title>
		<link>http://www.strangerpixel.com/2010/02/gq-redesign/</link>
		<comments>http://www.strangerpixel.com/2010/02/gq-redesign/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 14:13:27 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[GQ]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=342</guid>
		<description><![CDATA[There are a lot of things to like about the new GQ web design. great black, white and gold colour scheme (with yellow highlights) a well-ordered grid elegant, uncluttered navigation chunky footer plenty of whitespace and breathing room around the &#8230; <a href="http://www.strangerpixel.com/2010/02/gq-redesign/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are a lot of things to like about the new GQ web design.</p>
<ul>
<li>great black, white and gold colour scheme (with yellow highlights)</li>
<li>a well-ordered grid</li>
<li>elegant, uncluttered navigation</li>
<li>chunky footer</li>
<li>plenty of whitespace and breathing room around the text</li>
</ul>
<div id="attachment_343" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/2010/02/gq-main.jpg"><img class="size-medium wp-image-343" title="gq-main" src="http://www.strangerpixel.com/blog/wp-content/uploads/2010/02/gq-main-470x345.jpg" alt="GQ.com gets a makeover." width="470" height="345" /></a><p class="wp-caption-text">GQ.com gets a makeover.</p></div>
<div id="attachment_344" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/2010/02/gq-gallery.jpg"><img class="size-medium wp-image-344" title="gq-gallery" src="http://www.strangerpixel.com/blog/wp-content/uploads/2010/02/gq-gallery-470x345.jpg" alt="Girls gallery page." width="470" height="345" /></a><p class="wp-caption-text">Girls gallery page.</p></div>
<p>One thing &#8211; and leaving aside the xbox ad currently turning the home page background into a sea of green bubbles:</p>
<p>I&#8217;d be interested to know the rationale behind <em>not</em> using a similar <a href="http://jquery.com/">jQuery</a> <a href="http://flowplayer.org/tools/scrollable.html">carousel</a> on the <a href="http://www.gq-magazine.co.uk/girls/gq-girls/cheryl-cole/girl">individual feature pages</a> as implemented on the <a href="http://www.gq-magazine.co.uk/style">section pages</a>. A fresh page-load for every image just feels so clunky these days, and there are surely AJAX solutions to allow a more fluid browsing experience whilst maintaining reasonable loading times.</p>
<p>So what&#8217;s the reason? Extra pages for serving extra ads? Image bookmarking? Concern about presenting high-quality images without a performance hit, especially on slower connections?</p>
<p>Finally &#8211; the typographical double act of Georgia and Arial is undoubtedly a classic combo (used by the <a href="http://www.guardian.co.uk/">Guardian</a> and <a href="http://www.arts.ac.uk/">many</a>, many others). But my guess is that with the <a href="http://arstechnica.com/web/news/2009/07/font-face-typekit-and-font-licensing-the-state-of-web-type.ars">gradual evolution of web typography</a>, embracing the <a href="http://craigmod.com/journal/font-face/">potential</a> of the @font-face CSS rule and of <a href="http://wiki.github.com/sorccu/cufon/">Cufón</a>, sites that use this staple set of <a href="http://safalra.com/web-design/typography/web-safe-fonts-myth/">traditional web-safe fonts</a> will begin to look dated over the next few years.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2010/02/gq-redesign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wanted &#8211; Gumtree&#8217;s map view</title>
		<link>http://www.strangerpixel.com/2010/01/flatmate-wanted-gumtrees-map-view/</link>
		<comments>http://www.strangerpixel.com/2010/01/flatmate-wanted-gumtrees-map-view/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 14:11:26 +0000</pubDate>
		<dc:creator>Alastair</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[flat]]></category>
		<category><![CDATA[globrix]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gumtree]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.strangerpixel.com/?p=330</guid>
		<description><![CDATA[Having flat-hunted previously, lately I&#8217;ve been flatmate-hunting: searching for a replacement tenant for my room in Highgate, north London. As a rule, during the 5 years I&#8217;ve lived in the city, I&#8217;ve found finding new flatmates fairly easy; but, since I&#8217;ve &#8230; <a href="http://www.strangerpixel.com/2010/01/flatmate-wanted-gumtrees-map-view/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Having <a href="http://www.strangerpixel.com/2007/08/flat-hunting-with-flash/">flat-hunted previously</a>, lately I&#8217;ve been flatmate-hunting: searching for a replacement tenant for my room in Highgate, north London. As a rule, during the 5 years I&#8217;ve lived in the city, I&#8217;ve found finding new flatmates fairly easy; but, since I&#8217;ve ended up moving out in the quiet month of January, I&#8217;ve been encouraged to get the most out of a few key websites.</p>
<p><strong>Gumtree</strong></p>
<p><a href="http://en.wikipedia.org/wiki/Gumtree">Gumtree</a>, &#8216;the UK&#8217;s biggest website for local community classifieds&#8217;, has changed a fair bit since I first started using it. I really admired the major redesign that happened (I guess) at some point in 2008: the familiar colour scheme and branding were incorporated into a much smoother experience, preserving the community feel whilst making everything a whole lot easier for the individual &#8211; whether posting, buying or selling. As I write it looks like the &#8216;classic&#8217; Gumtree is again being superseded by <a href="http://blog.gumtree.com/redesign/">a sexier incarnation</a>.</p>
<div id="attachment_331" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/2010/01/gumtree.jpg"><img class="size-medium wp-image-331" title="gumtree" src="http://www.strangerpixel.com/blog/wp-content/uploads/2010/01/gumtree-470x365.jpg" alt="gumtree" width="470" height="365" /></a><p class="wp-caption-text">The clean and effective Gumtree UI.</p></div>
<p>Is Gumtree the last word in classifieds? Sure: you post, the customers/tenants come running. But this time my response rate has been quite low &#8211; 2 physical viewings from 300+ hits on the website. Aside from the fact that this is January and the coldest winter for 30 years, and my room doesn&#8217;t have a radiator, what could it be?</p>
<p><strong>Map view</strong></p>
<p>I blame the gradual demise of the <strong>map view</strong> for property searches. Formerly on Gumtree, you could view a Google map displaying as many properties as your search terms allowed, with a little red tree marking each house, flat or garage. You could type in &#8216;London&#8217; and get literally everything on offer. Admittedly, it used to make Safari go wonky, but it was more useable than not.</p>
<p>[Gumtree should correct me if I'm wrong here, but this is my hunch.] In the redesign, with the advent of monetised customer interactions (like paying £4 to have your ad &#8216;bumped&#8217; up the listings), the universal map view was replaced by a map that only showed 30 properties per page (by default the top ones in whichever list), leaving the user to click to the next set. Clearly, this privileged the newer posts and incentivised posters to pay that £4 in order to get more hits.</p>
<div id="attachment_336" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/2010/01/gumtree-map.jpg"><img class="size-medium wp-image-336" title="gumtree-map" src="http://www.strangerpixel.com/blog/wp-content/uploads/2010/01/gumtree-map-470x407.jpg" alt="The new Gumtree map view." width="470" height="407" /></a><p class="wp-caption-text">The new Gumtree map view - now with green blobs.</p></div>
<p>I would like to see Gumtree reinstate the global, un-paged map &#8211; because I think it allows greater flexibility of search. Let&#8217;s say I wanted to view all properties, however recently posted, in a small area near Hampstead Heath. Instead of being able to zoom the map in and see every property, I would now need to page through 10 or more pages of results before a green blob popped up where I wanted it to. Not only that, but every time I load a new result set, the map zooms right out to accommodate all blobs &#8211; from Walthamstow to White City.</p>
<p>Sure, I could make my search terms more precise, but the beauty of the global catch-all map is that you don&#8217;t have to refine anything and thus risk missing somewhere that falls just outside of your terms &#8211; you just browse.</p>
<p><strong>Globrix</strong></p>
<p>If <a href="http://www.globrix.com/">Globrix</a> did flatshare, they would be my first choice. Theirs is the best property search interface bar none:</p>
<ul>
<li>awesomely granular search filters</li>
<li>global map search (properties pop up as you drag the map)</li>
<li>draggable price slider</li>
</ul>
<p>Not to mention an abundance of stats and graphs on individual property pages, which display everything from median house prices in the area to typical crime rates.</p>
<div id="attachment_334" class="wp-caption alignnone" style="width: 480px"><a href="http://www.strangerpixel.com/blog/wp-content/uploads/2010/01/globrix.jpg"><img class="size-medium wp-image-334" title="globrix" src="http://www.strangerpixel.com/blog/wp-content/uploads/2010/01/globrix-470x365.jpg" alt="globrix" width="470" height="365" /></a><p class="wp-caption-text">Globrix&#39;s property map interface - with sliders!</p></div>
<p>The only problem with Globrix is the trade&#8217;s apparent lack of confidence in it. Being a search aggregator, it inevitably takes longer to update than estate agents&#8217; own websites.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangerpixel.com/2010/01/flatmate-wanted-gumtrees-map-view/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

