<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>The Sheep</title>
	
	<link>http://www.thesheep.co.uk</link>
	<description>Ovine Perspectives On The Digital Age</description>
	<lastBuildDate>Fri, 22 Jul 2011 10:33:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/thesheepblog" /><feedburner:info uri="thesheepblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>A bit of a rant about Which? magazine</title>
		<link>http://www.thesheep.co.uk/2011/07/22/a-bit-of-a-rant-about-which-magazine/</link>
		<comments>http://www.thesheep.co.uk/2011/07/22/a-bit-of-a-rant-about-which-magazine/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 10:30:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=288</guid>
		<description><![CDATA[<p>As we&#8217;re renovating our house and need to buy quite a few new household appliances, etc I decided to take up <a href="http://www.which.co.uk">Which? magazine</a>&#8217;s offer of trial membership so I could get access to their online reviews and test results.&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>As we&#8217;re renovating our house and need to buy quite a few new household appliances, etc I decided to take up <a href="http://www.which.co.uk">Which? magazine</a>&#8217;s offer of trial membership so I could get access to their online reviews and test results. As far as I remember, Which? always had a pretty good reputation and it seems like the smart thing to do, to research stuff before you buy. But I&#8217;ve been unimpressed, and a little bit surprised, by the service.</p>
<p>Here are the things I found within the first few hours of using the service:</p>
<ul>
<li><strong>The website itself is littered with usability problems</strong>. For example, after I successfully log in and go to look at a review, I still see a large box in the middle of the page asking me to sign up or log in! When I go to add a comment to a review, it asks me to create a new identity, then drops me somewhere else completely and I have to hunt for the comment thread again in order to write the review I wanted to write in the first place. Basic stuff.</li>
<li><strong>The website has security issues</strong>. I was dismayed to see that the password I entered was promptly emailed to me. Standard best-practice is to never email out passwords, but only to allow the user to reset them if required.</li>
<li><strong>The content on the website can be a bit patchy in places</strong>. When looking at the review for one item I noticed that the photo didn&#8217;t match what it said in the &#8217;specs&#8217; section. Got the impression it had been automatically pulled in from some database and no-one had checked it.</li>
<li>But far more serious than all that is that <strong>I don&#8217;t really believe they are giving a balanced judgement</strong> about what to buy. They highlight a series of scientific-type tests that give measurable results, and these are easy to communicate and look good. But they often seem to completely ignore other important considerations like quality of construction, how long things might last, and aesthetic appeal. So for instance a £700 range cooker might get a score of 66% based on tests like how long the oven takes to heat up, how easy it is to clean, and so on. This implies it is better overall than another, premium cooker costing £3000 that gets a score of 65%. Yes, oven performance and ease of use are important, but they don&#8217;t mention that the cheaper cooker might have cheap-looking plastic dials, for example, and be much less rugged in construction.</li>
</ul>
<p>It probably is useful to look at resources like Which? when researching expensive items, but I wouldn&#8217;t take their ratings as definitive, and definitely go and see stuff yourself before you buy. And don&#8217;t use a valuable password if you register for their website!</p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/cleFFznK3l4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2011/07/22/a-bit-of-a-rant-about-which-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Illustrator ’save for web’ anti-aliasing problems</title>
		<link>http://www.thesheep.co.uk/2011/06/24/illustrator-save-for-web-anti-aliasing-problems/</link>
		<comments>http://www.thesheep.co.uk/2011/06/24/illustrator-save-for-web-anti-aliasing-problems/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 11:57:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[illustrator]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=278</guid>
		<description><![CDATA[<p><strong>Update</strong>:<em> it seems I was completely wrong about this and Illustrator does have a special anti-aliasing option for type optimisation. The option is buried in a slightly strange place in the &#8216;Save for web&#8217; dialogue, under &#8216;Image size&#8217;. Select &#8216;Type</em>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><strong>Update</strong>:<em> it seems I was completely wrong about this and Illustrator does have a special anti-aliasing option for type optimisation. The option is buried in a slightly strange place in the &#8216;Save for web&#8217; dialogue, under &#8216;Image size&#8217;. Select &#8216;Type optimized&#8217; instead of &#8216;Art optimized&#8217;. Thanks to <a href="http://forums.adobe.com/thread/870605">Monika Gause</a> for telling me about this! Incidentally, another way to achieve this would be to use Effects &gt; Rasterize and again set the option for &#8216;Type Optimized (Hinting)&#8217;.</em></p>
<p>Adobe Illustrator is a great tool, but it seems to have some real problems rendering anti-aliased text when using the &#8216;Save for web&#8217; function. Text from very thin fonts is a particular problem. In these cases, the text looks fine while you are working on the file &#8211; I usually have the anti-aliasing set to &#8216;Sharp&#8217; and it does look crisp and clear. However, as soon as you go to &#8217;save for web&#8217; the results are awful.</p>
<p>So here is what I see while working on some text (this is set in Museo 100). This image comes directly from a screenshot in Mac OSX:</p>
<p><img class="alignnone size-full wp-image-279" title="illustrator-screenshot" src="http://www.thesheep.co.uk/wp-content/uploads/illustrator-screenshot.png" alt="" width="200" height="51" /></p>
<p>And here is what Illustrator gives me when I select &#8220;Save for web &amp; devices&#8221;:</p>
<p><img class="alignnone size-full wp-image-280" title="illustrator-sharp" src="http://www.thesheep.co.uk/wp-content/uploads/illustrator-sharp.png" alt="" width="200" height="50" /></p>
<p>The text is rendered very poorly.</p>
<p>As an experiment I created the same text in Photoshop and did &#8220;Save for web &amp; devices&#8221; and it has no problems at all:</p>
<p><img class="alignnone size-full wp-image-281" title="photoshop-sharp" src="http://www.thesheep.co.uk/wp-content/uploads/photoshop-sharp.png" alt="" width="200" height="50" /></p>
<p>It&#8217;s a really annoying bug, and it&#8217;s been around since at least version CS4, as we can see from <a href="http://forums.adobe.com/message/3759878" target="_blank">this post on the Adobe help forums</a>.</p>
<p>I use Illustrator for nearly all my web work &#8211; it&#8217;s a great tool and very quick to work in, and &#8216;pixel preview&#8217; mode and &#8217;snap to pixel&#8217; mean you can produce precise graphics for the web. However, it looks I might have to start using Photoshop more. Disappointing.</p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/1xb38_NCq90" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2011/06/24/illustrator-save-for-web-anti-aliasing-problems/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>A really simple font resizer using JQuery</title>
		<link>http://www.thesheep.co.uk/2010/02/02/a-really-simple-font-resizer-using-jquery/</link>
		<comments>http://www.thesheep.co.uk/2010/02/02/a-really-simple-font-resizer-using-jquery/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 22:55:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=270</guid>
		<description><![CDATA[<p>Sometimes it&#8217;s useful to have links or buttons to increase the font size on a website. Even though browsers have built-in functions to resize content, not all users are aware of this, or can easily remember how to increase the&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Sometimes it&#8217;s useful to have links or buttons to increase the font size on a website. Even though browsers have built-in functions to resize content, not all users are aware of this, or can easily remember how to increase the text size.</p>
<p>The general mechanism for resizing text is to have one link to increase the font size and one to reduce it. However, it can get tricky for the user to keep track of what the original size was, so sometimes people include a &#8216;reset font size&#8217; button.</p>
<p>At this point the UI is starting to get a tiny bit complicated, so I was looking for a way to create a dead-simple widget with just 2 options – small font or big font. Keep it simple.</p>
<p>I&#8217;m sure someone has done this before, but I couldn&#8217;t find a script on Google that did everything I wanted, including changing the styling of the currently selected font size to make it obvious, as well as a cookie to make the size selection persistent across pages in the site. So I hacked around with a couple of other scripts I found and created a solution using JQuery.</p>
<ul>
<li><a href="http://www.thesheep.co.uk/examples/font-resizer/"><strong>View the demo »</strong></a>.</li>
<li><a href="http://www.thesheep.co.uk/examples/font-resizer/font-resizer.zip">Download the source files</a></li>
</ul>
<p>The advantages of this solution are:</p>
<ul>
<li>The UI is really clear and simple (you could make buttons instead of links if you like)</li>
<li>A separate class is toggled for the currently selected size</li>
<li>The resize links are only displayed if the user has javascript enabled</li>
<li>The font size selection is persistent across pages</li>
<li>The resize affects the font-size as set on the HTML body element. So all text that you want to be resized needs to be sized in percentages or ems. If there are some elements you don&#8217;t want to be affected by the resizing, you can specify their size separately in pixels.</li>
<li>Unobtrusive Javascript</li>
</ul>
<p>A few notes:</p>
<ul>
<li>By loading the JQuery library from Google&#8217;s servers, it&#8217;s likely that the code will already be cached, thus saving download time</li>
<li>You need to include the <a href="http://plugins.jquery.com/project/cookie">JQuery Cookie plugin</a> separately</li>
<li>Font sizes for LARGE and SMALL need to be set in the JS file</li>
<li>The links need to be set to display: none within your stylesheet so they are hidden by default. They are then revealed for JS-capable browsers only</li>
</ul>
<p>I got the basic idea for how to approach this using JQuery from <a href="http://www.shopdev.co.uk/blog/text-resizing-with-jquery/">a post on ShopDev</a>.</p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/WQEyZJpwUt8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2010/02/02/a-really-simple-font-resizer-using-jquery/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Using metaphors in web design</title>
		<link>http://www.thesheep.co.uk/2009/09/23/using-metaphors-in-web-design/</link>
		<comments>http://www.thesheep.co.uk/2009/09/23/using-metaphors-in-web-design/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 16:44:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[metaphor]]></category>
		<category><![CDATA[non-literal]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=221</guid>
		<description><![CDATA[<p>Graphic design is all about communication, and on a website we usually want to communicate something about a service or product or organisation. We probably want to tell people about its benefits and strengths. Of course one way to do&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Graphic design is all about communication, and on a website we usually want to communicate something about a service or product or organisation. We probably want to tell people about its benefits and strengths. Of course one way to do this is to tell people directly &#8211; to write down various facts about your service or product. Another way is to help shape a viewer&#8217;s emotional response to a web page by the way it is styled &#8211; particular uses of colour, contrast and typography are used to create a particular &#8216;look and feel&#8217;. This is communication working on a more subtle and &#8216;emotional&#8217; level. A third method we can use is to sort of combine the two and create a metaphor that communicates the essence of your message in a non-literal way. It&#8217;s something that we see around us in advertising all the time.</p>
<p>To give an example, at ILRT we were recently working on a new website for the Worldwide Universities Network, an alliance of 18 universities across the globe that join together to encourage interdisciplinary research. The main audience for the site are academic researchers who may be interested in starting a new collaborative research relationship with another group in another WUN university. In this case it was useful to distill out a key message for that audience &#8211; one that summarised the benefits offered by WUN &#8211; and marry that to an image that illustrates that message metaphorically:</p>
<p><img class="alignnone size-full wp-image-87" src="http://intdev.blogs.ilrt.org/files/2009/05/wun-homepage.jpg" alt="wun-homepage" width="600" height="153" /></p>
<p>The benefit of this type of design is that it allows you to communicate your message in a visual way. Images are more instantly accessible than words and require less effort to process. In this case the distant expanse of horizon ties in with the idea of looking at the future and meshes with the tag line. Tag lines can often be used to clarify the metaphor you are making and anchor a non-literal image to the actual subject of the design.</p>
<p>Here&#8217;s a homepage for a software company:</p>
<p><img class="alignnone size-full wp-image-261" title="stand-out" src="http://www.thesheep.co.uk/wp-content/uploads/stand-out.jpg" alt="stand-out" width="600" height="160" /></p>
<p>In this case we determined that the immediate appeal of the company&#8217;s software products was to help it&#8217;s clients stand out in the market place. So I set about trying to capture that concept in a non-literal way. In a literal sense, of course, fruit has very little to do with software. But the image implies the concept of &#8217;standing out from the crowd&#8217; or &#8216;being special&#8217; which is what we wanted to communicate in this case. The fruit also has a secondary connotation &#8211; that of being tasty. Images of delicious food work on our senses in a more immediate way than software usually does.</p>
<p>As a web designer, using conceptual or non-literal design solutions can be liberating. You know what it&#8217;s like, you&#8217;ve just landed a new job to design a website for a firm of accountants. The obvious choice is to use images of people in suits reading documents, perhaps a close-up of a spreadsheet or a calculator. Not the most inspiring stuff to work with. But perhaps we can look at it from another angle &#8211; what kind of function does a good accountant really perform in the life of a business? He is a necessary part of helping a company grow and flourish, helps to keep things in order. Something like a gardener perhaps? You could then shoot off to your favourite stock photo site and start looking at images of tended gardens or beautiful trees growing.</p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/mmT8P40DOOM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2009/09/23/using-metaphors-in-web-design/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Setting up a local server on OS X Leopard</title>
		<link>http://www.thesheep.co.uk/2009/06/24/setting-up-a-local-server-on-os-x-leopard/</link>
		<comments>http://www.thesheep.co.uk/2009/06/24/setting-up-a-local-server-on-os-x-leopard/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 14:39:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[servers]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=196</guid>
		<description><![CDATA[<p>This week I&#8217;ve spent quite a few hours trying to set up a local development environment on my new Mac. Although I&#8217;ve used the built in version of Apache 2, much of the other software that comes pre-installed with OS&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>This week I&#8217;ve spent quite a few hours trying to set up a local development environment on my new Mac. Although I&#8217;ve used the built in version of Apache 2, much of the other software that comes pre-installed with OS X is not ideal and needs to be replaced or tweaked. It is also not a bad idea to <a href="http://hivelogic.com/articles/view/using_usr_local">have your server software in /usr/local</a> to avoid it being potentially broken by system updates. This is a brief record of the steps necessary to create a solid server setup that suits me, mainly for running WordPress sites (PHP and MySQL) and Ruby on Rails. It&#8217;s really more of a record for myself if I ever have to do it again &#8211; although no doubt next time it will be on Snow Leopard and everything will be slightly different!</p>
<ol>
<li>We&#8217;ve going to use the built-in version of the Apache web server. To start/stop the web server, go to System Preferences in OS X and select Sharing > Web Sharing.</li>
<li>Move the Apache document root to a more convenient location (my personal &#8216;Sites&#8217; directory): open /etc/apache2/httpd.conf and change the &#8216;DocumentRoot&#8217; variable in 2 places (note: the PHP module should be left commented out, as it is by default). Next enable .htaccess by editing /etc/apache2/users/&lt;username&gt;/&lt;username&gt;.conf and specifying <code>Options All</code> and <code>AllowOverride All</code>. Restart Apache.</li>
<li>Download and install <a href="http://www.entropy.ch/phpbb2/viewtopic.php?t=3937" target="_blank">a more recent version of PHP</a> with more capability than the standard Apple one (GD library, Mcrypt, etc). This installs PHP into the directory /usr/local/php5.</li>
<li>Download and install <a href="http://downloads.mysql.com/archives.php?p=mysql-5.0&amp;v=5.0.77">a version of MySQL</a> server that correlates with that version of PHP (so the PHP MySQL library matches). MySQL is installed into /usr/local/mysql-5.0.77-osx10.5-x86 with a symbolic link from /usr/local/mysql.</li>
<li>Create or edit ~/.bash_login and add this line to the end: <code>export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"</code>. This makes it more convenient to interact with MySQL from the command line, as well as pointing our system to our custom software installations in /usr/local.</li>
<li>To start MySQL from the command line type <code>sudo mysqld_safe</code> (To stop MySQL type <code>mysqladmin -u root -p shutdown</code>)</li>
<li>Set password for MySQL root user: <code>mysqladmin  -u root -p 'mypassword'</code> (Note that the MySQL user is different from the Unix user that the MySQL is running under &#8211; usually _mysql).</li>
<li>To check current users in MySQL, use: <code>SELECT Host, User, Password FROM mysql.user;</code>. Set passwords for all as necessary. Alternatively, to limit access to your personal machine only, create the file /etc/my.cnf as detailed on <a href="http://hivelogic.com/articles/view/installing-mysql-on-mac-os-x">this page</a> (&#8216;A Note About Security&#8217;).</li>
<li>Set passwords for other users/hosts as required &#8211; see instructions half way down <a href="http://pages.cs.wisc.edu/~bolo/notes/mysql.html" target="_blank">this page</a>. Create an &#8216;admin&#8217; user for MySQL so we&#8217;re not using root in the various config files etc. Will need to <a href="http://dev.mysql.com/doc/refman/5.1/en/adding-users.html">grant privileges</a>.</li>
<li>Download and install <a href="http://www.phpmyadmin.net/">PHPMyAdmin</a>. Unzip and rename directory, then place in web document root. Make a file called config.inc.php to put in your blowfish password (any random phrase will do). You can copy libraries/config.default.php if you like.</li>
<li>Make sure you&#8217;ve installed Xcode from the OSX install disk.</li>
<li>Add in MySQL C bindings for Ruby, to make Rails faster &#8211; instructions near the bottom of <a href="http://hivelogic.com/articles/view/installing-mysql-on-mac-os-x">this page</a> (you will need to have Xcode Tools installed in OS X to do this &#8211; use your OS X installation disk if needed)</li>
<li>Follow the <a href="http://hivelogic.com/articles/view/ruby-rails-leopard/">instructions on HiveLogic</a> for installing Ruby and Ruby on Rails into /usr/local.</li>
</ol>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/xSgC3V2W8kw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2009/06/24/setting-up-a-local-server-on-os-x-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Correct use of HTML headings on a homepage</title>
		<link>http://www.thesheep.co.uk/2009/06/11/correct-use-of-html-headings-on-a-homepage/</link>
		<comments>http://www.thesheep.co.uk/2009/06/11/correct-use-of-html-headings-on-a-homepage/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 16:20:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[wcag]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=148</guid>
		<description><![CDATA[<p>There&#8217;s been quite a lot of debate about the correct use of HTML headings (H1, H2, H3, etc) to define a document structure. <a href="http://www.w3.org/TR/WCAG20-TECHS/G141.html">WCAG 2.0 says</a> that we should create a correctly nested structure of headings, not least to&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been quite a lot of debate about the correct use of HTML headings (H1, H2, H3, etc) to define a document structure. <a href="http://www.w3.org/TR/WCAG20-TECHS/G141.html">WCAG 2.0 says</a> that we should create a correctly nested structure of headings, not least to help users with screen readers browse through content on a page. Conventional standards-aware wisdom says that each page should have a single H1, followed by H2s, H3s, etc. This is fine for a web page that is structured like a Word document &#8211; we have an overall heading, and then sub-headings. But what about a homepage that consists of some branding, navigation, and then a grid of &#8216;teasers&#8217; for deeper content on the site? This is a different kind of page structure, and arguably not one that HTML was designed for, so there&#8217;s going to be some compromise.</p>
<ol>
<li>There&#8217;s a good case for saying that on the hompage (only) the logo or name of the site should be marked up as H1. I don&#8217;t think this should be applied as a general rule on other &#8216;content pages&#8217; because this is a waste of the H1 function both for screen readers and for search engine ranking. But we could make an exception for the homepage. It sort of makes sense. But then you have a slightly fussy situation where the HTML and CSS for your logo is different for the homepage than for all other pages.</li>
<li>Another alternative would be to allow multiple H1s on the page and markup all the teaser headings as H1. This feels instinctively wrong to me, because I think an H1 should define the overall, main content for a page. It probably also dilutes the effectiveness of the headings in search engines, and isn&#8217;t going to help screen readers if they&#8217;re expecting a single H1.</li>
<li>Alternatively, we could choose to miss out the H1 tag for the homepage. This makes sense from the perspective of the information architecture for the site. Afterall, those teaser headings are H1s on the content pages they link to, but shouldn&#8217;t be H1s on the index page. In terms of screen readers: if an H1 is not found, presumably a decent screen reader will try jumping to H2. It may not be totally &#8216;correct&#8217; but I doubt this is going to trip someone up in practice? On the other hand, you are wasting the power of that H1 for search engine ranking.</li>
<li>I suppose a further option is to put in a &#8216;phantom H1&#8242; and then hide it with CSS. But that also feels a bit messy.</li>
</ol>
<p>So anyway, I&#8217;m leaning towards options 3 at the moment in cases where an H1 tag doesn&#8217;t really &#8216;make sense&#8217;.</p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/PiSwAZnPFy0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2009/06/11/correct-use-of-html-headings-on-a-homepage/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Designing Web Apps Workshop with Ryan Singer</title>
		<link>http://www.thesheep.co.uk/2009/05/01/designing-web-apps-workshop-with-ryan-singer/</link>
		<comments>http://www.thesheep.co.uk/2009/05/01/designing-web-apps-workshop-with-ryan-singer/#comments</comments>
		<pubDate>Fri, 01 May 2009 16:57:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[37 signals]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[ryan singer]]></category>
		<category><![CDATA[user research]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=166</guid>
		<description><![CDATA[<p>Earlier this week I went to Ryan Singer&#8217;s workshop on <a href="http://carsonworkshops.com/2009/ryansinger/">Designing Web Application User Interfaces</a>. Ryan is a designer at <a href="http://www.37signals.com/">37 Signals</a>, the company behind the massively popular <a href="http://www.basecamphq.com/">Basecamp</a> project management software (which I use myself all&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Earlier this week I went to Ryan Singer&#8217;s workshop on <a href="http://carsonworkshops.com/2009/ryansinger/">Designing Web Application User Interfaces</a>. Ryan is a designer at <a href="http://www.37signals.com/">37 Signals</a>, the company behind the massively popular <a href="http://www.basecamphq.com/">Basecamp</a> project management software (which I use myself all the time) and several other useful web apps. Here are some thoughts on the workshop.</p>
<h2>Clean UI Design</h2>
<p>Ryan has a real ability to simplify and re-structure a UI so that it communicates as clearly and effectively as possible. The basics of his approach are available in a paper on <a href="http://www.37signals.com/papers/introtopatterns/">UI Design Patterns</a> he wrote a few years ago. He argues that most of the important work in UI design actually consists of writing copy, rather than creating graphics or layouts. Cleanly written labels and headings are the key to improving &#8217;scanability&#8217; and therefore a clear UI. Sort of reminds me of Oliver Reichenstein&#8217;s <cite></cite>observation that<a href="http://informationarchitects.jp/the-web-is-all-about-typography-period/"> 95% of web design is typography</a>. And seeing Ryan in action working on a UI was definitely useful for me, even though I already know much of the &#8216;theory&#8217; and have done it many times myself. It gave me a bit of a fresh perspective.</p>
<h2>Designing for Yourself</h2>
<p>37 Signals seem to follow a sort &#8216;expert-led&#8217; design philosophy. They don&#8217;t really do user research. And I suspect they can get away with this partly because they are designing for themselves and for people just like them &#8211; other web geeks. It&#8217;s a pretty liberating way to work and it&#8217;s clear that they&#8217;re good at what they do, but I wonder if they would be quite so successful if they were designing web apps a completely different demographic. Basecamp is great but I wonder sometimes if non-geeks really &#8216;get it&#8217;. For example, at work when we ask non-techy clients to use it, they often seem to prefer email and telephone calls.</p>
<p>I was also a little bit shocked by Ryan&#8217;s admission that he &#8216;doesn&#8217;t really think about accessibility&#8217;. Perhaps that also says something about the target audience for their apps. But it wasn&#8217;t an entirely helpful stance to take in a workshop teaching a general audience in the UK about web app design.</p>
<h2>Workflow</h2>
<p>Ryan told us quite a lot about how the team works at 37 Signals. One clear advantage of using an <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> framework like Rails is that, because of the strict separation of markup from program logic, the designer can continue to &#8216;own&#8217; the front-end CSS <strong><em>and</em></strong> HTML right through the life-cycle of the product. This sounds really ideal and I&#8217;m sure it makes a huge difference to the final quality of the interface. It can be really frustrating as a designer to hand over a carefully constructed HTML template, only to see it gradually erroded and degraded as it is integrated into the back-end and new functionality added.</p>
<p>Another key aspect of the 37 Signals workflow is the practice of designing directly in HTML. I think this kind of an interesting idea and has some upsides. Clearly it can work well and it results in designs that work with, rather than fight against, the medium of implementation. But it occurs to me that all of 37 Signals&#8217; applications are very much purely functional &#8216;tools&#8217;. For some web apps imagery and &#8216;visual design&#8217; are more important and in those cases where you need &#8216;more graphic design&#8217;, working directly in HTML is going to be very inefficient.</p>
<h2>Conclusion</h2>
<p>Overall it was valuable to see Ryan in action and to get first-hand exposure to the way he thinks about and analyses UI problems. I&#8217;ve already found myself thinking in a slightly different way when designing a complex page. It has also led to some useful discussions about how to allow designers to keep &#8216;ownership&#8217; of HTML markup right through the life-cycle of a web application. I think that is something 37 Signals have got exactly right. I think Ryan could make his workshops even better by doing a bit of extra research about the general environments people have to work in today, and considering some of the issues we face. For example, accessibility is quite an important issue and can&#8217;t just be brushed aside, and designing directly in HTML is not going to work for every kind of web application.</p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/dxYTRSpv3do" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2009/05/01/designing-web-apps-workshop-with-ryan-singer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Customised search scope in WordPress</title>
		<link>http://www.thesheep.co.uk/2009/05/01/customised-search-scope-in-wordpress/</link>
		<comments>http://www.thesheep.co.uk/2009/05/01/customised-search-scope-in-wordpress/#comments</comments>
		<pubDate>Fri, 01 May 2009 16:09:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=169</guid>
		<description><![CDATA[<p>Sometimes in a WordPress site you might want to have the option to search within different types of content. For example, if one category contains blog posts and another one contains white papers, you might want to allow people to&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Sometimes in a WordPress site you might want to have the option to search within different types of content. For example, if one category contains blog posts and another one contains white papers, you might want to allow people to restrict their search query to blog posts only. Here is a slightly hacky way to achieve this.</p>
<p>Create a specific template for displaying search results &#8211; <strong>search.php</strong>. Then, by placing an extra field in your search forms, you can check for this value within search.php and display or hide certain categories depending on what you detect.</p>
<p>So for example on your homepage you might have a search form with a field like this:<br />
<code><br />
&lt;label&gt;Restrict search to blog: &lt;input name="scope" type="radio" value="blog" /&gt;&lt;/label&gt;<br />
</code></p>
<p>Then within <strong>search.php</strong> you would pick up that value like this:<br />
<code><br />
&lt;?php $scope = $_GET['scope']; ?&gt;<br />
</code></p>
<p>And then use that to skip certain categories within the loop:<br />
<code><br />
&lt;?php while (have_posts()) : the_post(); ?&gt;<br />
//Skip this result if it's out of scope:<br />
&lt;?php if($scope == 'blog' &amp;&amp; !in_category(1)) continue; ?&gt;<br />
....<br />
</code></p>
<p>Of course you can make this more complex by setting up multiple scopes and including more categories in each.</p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/BIzkVDUbPJA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2009/05/01/customised-search-scope-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Adding a YouTube feed to a WordPress template</title>
		<link>http://www.thesheep.co.uk/2009/03/17/adding-a-youtube-feed-to-a-wordpress-template/</link>
		<comments>http://www.thesheep.co.uk/2009/03/17/adding-a-youtube-feed-to-a-wordpress-template/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 16:19:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=151</guid>
		<description><![CDATA[<p>The built in WordPress function <a title="WordPress function reference for fetch_rss()" href="http://codex.wordpress.org/Function_Reference/fetch_rss" target="_blank">fetch_rss()</a> makes it easy to pull in an RSS feed from any other site and display it on your own blog.  The function gives you convenient access to&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>The built in WordPress function <a title="WordPress function reference for fetch_rss()" href="http://codex.wordpress.org/Function_Reference/fetch_rss" target="_blank">fetch_rss()</a> makes it easy to pull in an RSS feed from any other site and display it on your own blog.  The function gives you convenient access to the raw data from the feed, so you can parse it in any way you like. For example, you might want to pull in the feed from a particular YouTube user and display their most recent 3 videos in your sidebar.</p>
<p>The first thing we want to do is visit the user&#8217;s page on YouTube to grab the feed URL for that person. It might be your own account, of course, but there&#8217;s no need to log in, and feeds are publically available from anyone&#8217;s account. Once on a user&#8217;s page, your browser should display an RSS icon: click on it and copy the URL of the feed. It will look something like this:</p>
<p><code>http://gdata.youtube.com/feeds/base/users/MontyPython/uploads?alt=rss&amp;v=2&amp;orderby=published&amp;client=ytapi-youtube-profile<br />
</code><br />
In this case I&#8217;ve grabbed the feed from a channel.</p>
<p>Next open up the WordPress template file for the page you want to display the content on. It might be &#8217;sidebar.php&#8217;, for example. Wherever you want the videos to appear, you need to call the fetch_rss() function as described in the <a href="http://codex.wordpress.org/Function_Reference/fetch_rss" target="_blank">WordPress documentation</a>.</p>
<p><code class="prettyprint">&lt;?php<br />
// Get RSS Feed(s)<br />
include_once(ABSPATH . WPINC . '/rss.php');<br />
$rss = fetch_rss('http://gdata.youtube.com/feeds/base/users/MontyPython/uploads?alt=rss&amp;v=2&amp;orderby=published&amp;client=ytapi-youtube-profile');<br />
$maxitems = 3; //set number of items to display<br />
$items = array_slice($rss-&gt;items, 0, $maxitems);<br />
?&gt;<br />
</code></p>
<p>In order to embed a YouTube Flash movie we could use the <a href="http://www.alistapart.com/articles/flashembedcagematch/">nested objects method</a>, so we have valid HTML, and include some appropriate alternative content (in case the Flash fails to load for some reason). To set this up for each item, all we need from the feed is the ID of the video.</p>
<p>If we examine the RSS feed itself, we find that the video ID is contained in the final part of the &#8216;link&#8217; element. To extract it, we&#8217;ll need to use a tiny bit of PHP to break up the URL string.</p>
<p>Of course we need to repeat this for each item in the feed, so we set up a loop like this:</p>
<p><code class="prettyprint"><br />
&lt;ul&gt;<br />
&lt;?php if (empty($items)) echo '&lt;li&gt;No items&lt;/li&gt;';<br />
else foreach ( $items as $item ) : ?&gt;<br />
&lt;div&gt;<br />
&lt;?php<br />
      $youtubeid = strchr($item['link'],'='); //split off the final bit of the URL beginning with '='<br />
      $youtubeid = substr($youtubeid,1); //remove that equals sign to get the video ID<br />
      //Now embed the flash:<br />
      ?&gt;<br />
      &lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="320" height="265"&gt;<br />
      &lt;param name="movie" value="http://www.youtube.com/v/&lt;?php echo $youtubeid ?&gt;&amp;hl=en&amp;fs=1" /&gt;<br />
      &lt;!--[if !IE]&gt;--&gt;<br />
      &lt;object type="application/x-shockwave-flash" data="http://www.youtube.com/v/&lt;?php echo $youtubeid  ?&gt;&amp;hl=en&amp;fs=1" width="320" height="265"&gt;<br />
      &lt;!--&lt;![endif]--&gt;<br />
      &lt;p&gt;&lt;a href="http://www.youtube.com/v/&lt;?php echo $youtubeid ?&gt;"&gt;View movie&amp;raquo;&lt;/a&gt;&lt;/p&gt;<br />
      &lt;!--[if !IE]&gt;--&gt;<br />
      &lt;/object&gt;<br />
      &lt;!--&lt;![endif]--&gt;<br />
      &lt;/object&gt;<br />
      &lt;/li&gt;<br />
&lt;?php endforeach; ?&gt;<br />
&lt;/ul&gt;</code></p>
<p>This method is pretty easy to adapt for any type of RSS feed you might want to use: Vimeo, Slideshare, Twitter, etc. Of course there are loads of WordPress plugins that can help you embed this stuff, but sometimes a plugin doesn&#8217;t give you exactly the output you need, and it&#8217;s helpful to be able to parse the feed yourself. </p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/ndhrBG9Mlug" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2009/03/17/adding-a-youtube-feed-to-a-wordpress-template/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Using Adobe Illustrator for web design</title>
		<link>http://www.thesheep.co.uk/2009/02/20/using-adobe-illustrator-for-web-design/</link>
		<comments>http://www.thesheep.co.uk/2009/02/20/using-adobe-illustrator-for-web-design/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 15:44:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.thesheep.co.uk/?p=102</guid>
		<description><![CDATA[<p>The majority of web designers seem to use Photoshop, but Illustrator has some real strengths when it comes to designing web layouts. Moving and resizing elements on the canvas is much faster and more intuitive, and this helps make the&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>The majority of web designers seem to use Photoshop, but Illustrator has some real strengths when it comes to designing web layouts. Moving and resizing elements on the canvas is much faster and more intuitive, and this helps make the process more fluid. Illustrator does have some shortcomings &#8211; mainly its lack of strict adherence to pixel-based measurements. But these can be worked around. In this article I&#8217;m going to discuss some tips and techniques for using Illustrator to design web pages. Personally, I&#8217;ve used both Photoshop and Illustrator to design many web layouts, and Illustrator remains my tool of choice. Fireworks is also worth looking at.</p>
<h3>Snap to pixel</h3>
<p>In Illustrator CS1 and older, getting objects to ‘snap to pixel’ properly was difficult. Even when you set your units to &#8220;pixels&#8221;, positions on the canvas are very sensitive and tend to end up as fractions of a pixel. This introduces anti-aliasing artifacts when exporting the image so that your web graphics don&#8217;t look very &#8216;crisp&#8217;.</p>
<p>To get a ‘snap to pixel’ effect in these older versions of Illustrator, first set up your grid so that you have a grid line every 128px with 128 subdivisions. That in effect gives you a pixel grid, but with a usable number of lines visible. Then turn on &#8220;snap to grid&#8221; under the &#8220;View&#8221; menu. This keeps all your movements and transformations locked in to the nearest pixel, and keeps your graphics nice and crisp. (Thanks to <a href="http://www.corebasis.com" target="_blank">Hennning</a> for first showing me this technique).</p>
<p><img class="alignnone size-full wp-image-141" title="Snap to pixel option" src="http://www.thesheep.co.uk/wp-content/uploads/snap-to-pixel.png" alt="Snap to pixel option" width="240" height="177" /></p>
<p>As of CS2, Adobe introduced a specific ‘snap to pixel’ option, which you can see under the <em>View</em> menu after you select &#8220;Pixel preview&#8221;. This will keep all your objects snapped to the nearest pixel.</p>
<h3>Clean outlines</h3>
<p>By default, a stroke line around an object will follow the centre of the outline. This means that a stroke line of 1 pixel will have 0.5 pixels either side of that line, and we&#8217;ll end up with anti-aliasing artifacts. To solve this, always select &#8220;Align stroke to outside&#8221; or &#8220;Align stroke to inside&#8221; from the Stroke options window.</p>
<p><img class="alignnone size-full wp-image-124" title="Adding a 1px stroke" src="http://www.thesheep.co.uk/wp-content/uploads/pixel-stroke-example1.png" alt="Adding a 1px stroke" width="354" height="135" /></p>
<p>Unfortunately, even when you do this, and have &#8220;snap to pixel&#8221; turned on, Illustrator will randomly introduce an extra 1px anti-alias shade below the top edge of a rectangle. This is one of those annoying Illustrator bugs that (almost) makes you wish you&#8217;d just stuck with using Photoshop. This bug seems to occur in both CS3 an CS4 versions. The only way around this that I know of, if it is absolutely critical, is to draw the stroke separately as very thin rectangles &#8211; see below.<em><strong> [Update: setting the stroke weight to 0.999px solves this problem. Thanks to <a href="#comments">Benjamin McDowell</a> for posting this in the comments.]</strong></em></p>
<h3>Drawing lines</h3>
<p>In theory, the centre of a line lies between two pixels, and hence we get anti-aliasing problems when drawing lines with &#8220;snap to pixel&#8221; selected. Rather than nudging the centre measurement of a line by 0.5 pixels (which will give you a clean line), I prefer to draw lines as very thin rectangles. For example, a 1px horizontal line can be made up of a 1px high rectangle. In a similar way, controllable shading can be achieved by creating thin rectangles filled with a black to white gradient, setting the blending mode to &#8220;multiply&#8221;, and then reducing the opacity as required.</p>
<p><img class="alignnone size-full wp-image-139" title="Shading example" src="http://www.thesheep.co.uk/wp-content/uploads/shading-example1.png" alt="Shading example" width="406" height="173" /></p>
<h3>Use layers</h3>
<p>Unlike Photoshop, by default Illustrator allows any element on the canvas to be selected and moved/modified with a single click. This makes designing more fluid and quicker &#8211; resizing an object requires less clicks. It also makes it important to set up a few different layers, so that you can lock some layers while you work on others. I tend to place some example browser chrome on a top layer (to help get an &#8216;in-context&#8217; preview of the design), a layout grid on a second layer, main content on a third layer, and structural elements like boxes or columns on a &#8216;ground&#8217; layer. But depending on the complexity of the design, you may want to set up more layers &#8211; don&#8217;t forget to name them to help you keep track.</p>
<h3>Use character and paragraph styles</h3>
<p>Another area where Illustrator scores is its ability to define character and paragraph styles. Say you have a full web page design with a fair amount of content: text may appear in different columns, break-out boxes and sidebars. Now say you want to try tweaking the link colour, or changing the font of the headings. Instead of selecting each instance of link text in turn and making the colour adjustment, you can just make a global change to your &#8220;link&#8221; character style. It takes a little longer to set up, but you can end up saving time, especially if you&#8217;re the kind of perfectionist designer who likes to keep fiddling with things.</p>
<h3>Working with bitmaps</h3>
<p>For some things, like editing photos, you&#8217;re going to have to use Photoshop. It&#8217;s often worth &#8216;placing&#8217; PSD files into Illustrator so that transparency works properly. Placing an image (as opposed to just copying and pasting via the clipboard) also means that Illustrator can automatically update the image when you make changes to the file within Photoshop, which can be handy. Note that you can do some quick &#8216;cropping&#8217; work in Illustrator by making a &#8216;Clipping Mask&#8217;.</p>
<h3>Getting help</h3>
<p>There are lots of decent books and online tutorials around, although few of them focus on using Illustrator for web work. I&#8217;ve always preferred to teach myself, using the Adobe help files. A good place to go if you get really stuck is the official <a href="http://www.adobe.com/support/forums/">Adobe support forum</a>. There are some knowledgeable power users there, although don&#8217;t expect an answer right away. Illustrator does also have the odd strange bug every now and again, so if you really can&#8217;t work out what&#8217;s going on, it might not be your fault! 99% of the time though, the answer is there somewhere in the help files.</p>
<img src="http://feeds.feedburner.com/~r/thesheepblog/~4/cGBK0SCJ1Mo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thesheep.co.uk/2009/02/20/using-adobe-illustrator-for-web-design/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.221 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-01-31 15:22:20 -->

