<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title>andrewingram full&#45;entry feed</title>
    <link>http://www.andrewingram.net</link>
    <description></description>
    <dc:language>en</dc:language>

    <dc:rights>Copyright 2009</dc:rights>
    <dc:date>2009-02-22T22:19:02+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.pmachine.com/" />
    


    <item>
      <title>Gridmaker For Photoshop CS4</title>
      <link>http://www.andrewingram.net/articles/gridmaker_for_photoshop_cs4/</link>
      <guid>http://www.andrewingram.net/articles/gridmaker_for_photoshop_cs4/#When:22:19:02Z</guid>
      <description><![CDATA[<h3>Abstract</h3>	<p>After a suggestion from <a href="http://blogs.adobe.com/jnack/">John Nack</a> I had a go at porting GridMaker 2 to the new Flash Panel framework in CS4</p>


 <h3>Body</h3>	<p>A while ago <a href="http://blogs.adobe.com/jnack/">John Nack</a> contacted me to ask if I was interested in porting my <a href="http://www.andrewingram.net/articles/gridmaker_reboot/">GridMaker</a> plugin to make use of the new Flash Panel capabilities of CS4. It&#8217;s taken me some time to get around to doing it (despite it not actually taking that long) but I have it working now. I haven&#8217;t implemented all the functionality i&#8217;d have liked (like loading/saving settings) and I had wanted to customise the Flex theme to make it look native to CS4 (I hate non-native UI, as a result I am very wary of any Flash-based user interfaces) but I kept putting it off. I figured I may as well release what I&#8217;ve got or risk forgetting about it completely.</p>

	<h4>Installation</h4>

	<p>Download <a href="http://www.andrewingram.net/files/gridmaker-cs4/GridMaker.jsx">GridMaker.jsx</a> and <a href="http://www.andrewingram.net/files/gridmaker-cs4/GridMaker.swf">GridMaker.swf</a> and put them in &#8216;Plug-ins/Panels&#8217; in the Adobe Photoshop CS4 folder. Load Photoshop and the panel should appear under &#8216;Window/Extensions/GridMaker&#8217;. Once activate the panel will appear in your command panels on the right.</p>

	<p>I&#8217;ve set the defaults to be equivalent (though not identical) to the 12 column layout found in <a href="960.gs">960.gs</a>, the only real differences are that the gutter isn&#8217;t split in half and the outer margins are 20px rather than 10px.</p>

	<p>It&#8217;s also missing the unit-selection functionality from the second version of GridMaker.</p>

	<ul>
	<li><a href="http://www.andrewingram.net/files/gridmaker-cs4/GridMaker.jsx">GridMaker.jsx</a></li>
	</ul>
	<ul>
	<li><a href="http://www.andrewingram.net/files/gridmaker-cs4/GridMaker.swf">GridMaker.swf</a></li>
	</ul>


 ]]></description>
      <dc:subject>Grid, Photoshop</dc:subject>
      <dc:date>2009-02-22T22:19:02+00:00</dc:date>
    </item>



    <item>
      <title>Quiet around here</title>
      <link>http://www.andrewingram.net/articles/quiet_around_here/</link>
      <guid>http://www.andrewingram.net/articles/quiet_around_here/#When:14:15:00Z</guid>
      <description><![CDATA[<h3>Abstract</h3>	<p>A short blurb on why I&#8217;ve not said much recently</p>


 <h3>Body</h3>	<p>It may or may not have gone unnoticed that nothing much is going on around here lately, there are two reasons for this. Firstly, a supreme amount of laziness &#8211; can&#8217;t be helped. Secondly, I&#8217;ve been thinking long and hard about how to redevelop this site. I&#8217;m not happy with the way content is represented on the site which makes me extremely reluctant to add anything new until I&#8217;ve reworked some things.</p>

	<p>I&#8217;ve had ideas for things to talk about but it would be impossible to display them how I feel they need to be displayed within the current framework of the site. I&#8217;ve come up with an appearance I like for the blog/articles pages, so now I just have to sort out the other areas of the site; ideally this will happen before I get bored of the new design and start over&#8230;</p>


 ]]></description>
      <dc:subject></dc:subject>
      <dc:date>2008-08-23T14:15:00+00:00</dc:date>
    </item>



    <item>
      <title>Do what you like to my CSS, but stay out of my HTML</title>
      <link>http://www.andrewingram.net/articles/do_what_you_like_to_my_css_but_stay_out_of_my_html/</link>
      <guid>http://www.andrewingram.net/articles/do_what_you_like_to_my_css_but_stay_out_of_my_html/#When:20:50:00Z</guid>
      <description><![CDATA[<h3>Abstract</h3>	<p>With all the noise over the revelations from Microsoft this week concerning standards rendering in IE8 I&#8217;ve found it hard to collect my thoughts on the subject, but I&#8217;ll give it a try anyway.</p>


 <h3>Body</h3>	<p>This week Microsoft revealed that to trigger standards rendering in IE8, web authors will need to use a new meta tag to specify which version of the IE rendering engine to use. Alternatively (and this wasn&#8217;t immediately apparant) authors can just use an unknown doctype such as the HTML5 one which would automatically trigger standards mode. I&#8217;ll say it outright that I&#8217;m not a fan of the idea but I can see why it&#8217;s been done, I find it arrogant of Microsoft to demand special treatment when we&#8217;ve already had to put up with quite a lot of IE&#8217;s rubbish over the years. This is coming from someone who is normally an apologist for Microsoft, normally I take the viewpoint that whilst making things work in IE is a pain it&#8217;s usually relatively straightforward once you reach a certain level of experience and become aware of the problem areas.</p>

	<p>But there is something that is bothering me alongside this, why the hell do we keep making changes to our structural/context layer (HTML) in order to control how the presentation layer (CSS) behaves? Why should my use of a valid doctype mean that my CSS magically works properly? A doctype is used to validate the structure of an xml document, it has nothing to do with how it&#8217;s displayed, and why are we still using doctypes anyway? XML Schema Definitions are much easier to develop, from what I gather they give you a lot more flexibility and they&#8217;re really easy to understand. This isn&#8217;t a rant about doctypes though, this is a rant about me having to change one area of my code to affect how a completely different part of my code performs.</p>

	<p>So we have to use proper doctypes to get IE6 and IE7 to use CSS more correctly than IE5, but that&#8217;s not enough &#8211; we also have to add conditional comments into our HTML so that we can deliver special CSS to them to clean up the things that IE still can&#8217;t do right. Now we have IE8 to look forward to, but now we have to add even more to the head of our documents to trigger the probably-still-not-right-but-getting-closer rendering mode in this new version.</p>

	<p>Why the hell aren&#8217;t we shoving all this information in our CSS instead? If this information is controlling how the CSS works surely it would make sense to configure it there? In a proper deployment environment it&#8217;s a piece of cake to update CSS because it&#8217;s generally served from a different web server to the web application, we can easily tweak the CSS for new browsers without so much as having to reload/redeploy anything. Quite frankly, whilst I prefer clean CSS due to being a bit of a perfectionist, if I have to stick all this nonsense somewhere it&#8217;d rather it be in the CSS than the HTML. I consider it much more important to have valid and streamlined HTML than CSS.</p>

	<p>Just a thought.</p>


 ]]></description>
      <dc:subject>CSS, HTML, Web Standards</dc:subject>
      <dc:date>2008-01-25T20:50:00+00:00</dc:date>
    </item>



    <item>
      <title>Time to play with new things</title>
      <link>http://www.andrewingram.net/articles/time_to_play_with_new_things/</link>
      <guid>http://www.andrewingram.net/articles/time_to_play_with_new_things/#When:23:56:00Z</guid>
      <description><![CDATA[<h3>Abstract</h3>	<p>A quick experiment to try out new features in Safari.</p>


 <h3>Body</h3>	<p>The latest builds of WebKit have added some pretty nice new CSS properties &#8211; namely rotations and embedded fonts, so I decided to have a quick play with them. I didn&#8217;t spend very long on this (rushing to get things done before Christmas) but I hope it inspires other people to start exploring these features. I know we can&#8217;t use this stuff in production sites yet, but I have a feeling that if we can come up with some truly kick-ass demonstrations we might be able to convince the other browser manufacturers that these properties are worth implementing.</p>

	<p>I would love for someone to come up with a really good graphic novel style design, I had a go but I had no reference materials and didn&#8217;t really put in the time it deserved.</p>

	<p><a href="http://etc.andrewingram.net/nextgen/">Here&#8217;s my example</a> (Obviously it requires the latest build of WebKit to run).</p>


 ]]></description>
      <dc:subject>CSS, Design</dc:subject>
      <dc:date>2007-12-20T23:56:00+00:00</dc:date>
    </item>



    <item>
      <title>Readable URL Slugs</title>
      <link>http://www.andrewingram.net/articles/readable_url_slugs/</link>
      <guid>http://www.andrewingram.net/articles/readable_url_slugs/#When:22:35:00Z</guid>
      <description><![CDATA[<h3>Abstract</h3>	<p>Just a quick few words about producing readable URL slugs</p>


 <h3>Body</h3>	<p>When I read around for methods of converting a piece of text (such as a blog entry title) to a URL-friendly slug, I generally just find one-line regular expression replace functions without any real explanation of what&#8217;s going on. So here&#8217;s a basic overview of what such an algorithm should be doing:</p>

	<ol>
	<li>You need to be aware of what characters are generally allowed in URL segments (<a href="http://www.blooberry.com/indexdot/html/topics/urlencoding.htm">here&#8217;s a good guide</a>), basically any letters or numbers are allowed. You can probably also allow a single quote (no double quotes) as the only piece of punctuation available to you, most other punctuation is reserved or considered dangerous to use.</li>
		<li>Choose a character for spaces, normal spaces aren&#8217;t allowed (they are actually but they have to be encoded so they end up being quite ugly). Realistically you can use underscores and hyphens. The preference is hyphens because they don&#8217;t get disguised if written as hyperlinks.</li>
		<li>Convert your text to lower-case. Your URLs should be consistently cased for usability and lower-case is the easiest and most attractive option. If an upper-case version of a URL (or part of a URL) is accessed it should redirect the user to the canonical lower-case version.</li>
		<li>Make sure you only don&#8217;t have two spacing characters in a row, this shouldn&#8217;t be an issue if you&#8217;re careful about the order of each step</li>
	</ol>
	<ol>
	<li>Depending on preference and URL length you might want to remove certain words such as prepositions to keep the slug as concise as possible whilst still being relatively meaningful

	<p>In Java, the following method call is probably a good starting point:</p>

<pre><code>replaceAll("[^a-z0-9']+", "-")</code></pre>

	<p>The Ruby equivalent would be</p>

<pre><code>gsub(/[^a-z0-9']+/, "-")</code></pre>

	<p>You&#8217;ll need to do some other things before and after the above methods but they represent the key part of the algorithm.</p>

	<p>Note: I&#8217;m uncertain on the best practice for using the vertical single quote in slugs. I couldn&#8217;t see anything that said they&#8217;re a bad idea, but I imagine most people would prefer to just remove them. This raises the issue of whether to collapse the single quotes or to replace them with hyphens.</p>


 ]]></description>
      <dc:subject>Java, Programming, Ruby, URL, Usability</dc:subject>
      <dc:date>2007-10-16T22:35:00+00:00</dc:date>
    </item>



    <item>
      <title>Readability, Uniqueness, Hackability and Meaning in URL Design</title>
      <link>http://www.andrewingram.net/articles/readability_uniqueness_hackability_and_meaning_in_url_design/</link>
      <guid>http://www.andrewingram.net/articles/readability_uniqueness_hackability_and_meaning_in_url_design/#When:00:48:00Z</guid>
      <description><![CDATA[<h3>Abstract</h3>	<p>In this article I discuss the development of usable URLs and outline some guidelines that will aid developing them. I also briefly touch on the importance of choosing development frameworks that enable decent URLs.</p>


 <h3>Body</h3>	<p><strong>Update on 13th October 2007:</strong> Mike Schinkel made me aware of some misused terminology, so I&#8217;ve updated the article to amend this.<br />
<strong>Update on 19th October 2007:</strong> A user at Reddit highlighted how bad my first sentence was, I&#8217;ve rewritten it a bit.</p>

	<h4>Introduction</h4>

	<p>URL design is arguably one of the most important areas of website developement. Not only do URLs generally have huge visual priority in web browsers but they&#8217;re also shown on search result listings and get used for matching search terms. Let&#8217;s not forget the usability factors, what does a bunch of seemingly meaningless query strings and numerical database keys tell your users about where they are in the site? This is just the tip of the iceberg when it comes to reasons for investing resources in developing decent URL schemas, yet it&#8217;s only in the last couple of years that we&#8217;ve seen the emergence of web development frameworks that truly put an emphasis on them. In the slower-to-upgrade enterprise world most sites are still running on frameworks that produce some truly ugly URLs.</p>

	<p>The next problem is the URLs people choose once they decide to switch away from query parameter infested schemas to ones that use readable URL segments to identify pages. Simply put, just converting your parameters to friendly pieces of text isn&#8217;t enough; you may get improved search rankings from your new found keywords but all you&#8217;ve really done is disguise the problem and search rankings should never be your primary aim in URL design.</p>

	<h4>4 Principles of URL design</h4>

	<p>Having read a number of articles on the subject as well as exploring my own views on the matter I&#8217;ve come up with what I believe to be the 4 most important aspects of URL design:</p>

	<h5>URLs must be Readable</h5>

	<p>Just by reading a URL a user should be able to make a fairly good guess as to what they will find if they visit it. Titles (converted to a readable slug format so that those nasty %20 things aren&#8217;t visible everywhere) should be used instead of numerical ids and the URL should make it clear whereabouts in the overall site structure the resource is.</p>

	<h5>Pages with unique content must have Unique URLs</h5>

	<p>A lot of factors come into play here, the first is that the same content shouldn&#8217;t have more than one URL, you should choose your preferred URL for each page on your site and if a second is required it should simply be done as a permanent redirect. A search engine will follow the redirect and only index the canonical URL. This applies to the www sub- domain which the majority of websites have set up as optional. Use Apache&#8217;s mod_rewrite (or equivalent) to add a permanent redirect that forwards the request to the non-www URL (or the other way round if you really want the www part). Localisation should also include the locale somewhere in the URL so that the preferred localised version can be bookmarked (not everybody has their browser configured to use their preferred locale). If a page has unique content it must not rely on sessions or cookies to load this information otherwise it will be invisible to search engines, Brad Fults discusses multilingual URL design in &#8220;<a href="http://h3h.net/2007/01/designing-urls-for-multilingual-web-sites/">Designing URLs for Multilingual Web Sites</a>&#8221;, his conclusions may not match your own but the article does an excellent job explaining some of your options.</p>

	<h5>URLs must be Hackable</h5>

	<p>This follows on from readability and the idea that a URL is not only a location but also a map &#8211; much akin to breadcrumb navigation (&#8220;<a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=breadcrumbs">Breadcrumb Pattern at Yahoo</a>&#8221;). One of the main features of successful breadcrumb navigation is that it doesn&#8217;t represent the route you took to get to the page but rather the route home or to other pages. Every URL is constructed from a number of segments separated by forward slashes, for a URL to be hackable the user must be able to repeatedly remove the last segment and also arrive at a valid page that makes sense within the context of the URL. The user must also be able to swap in alternative segment that make sense, like changing &#8220;2007&#8221; to &#8220;2006&#8221; or changing &#8220;reviews&#8221; to &#8220;news&#8221;. This sounds straightforward enough, but the biggest stumbling block is introducing new URL segments to resolve namespace conflicts (what if someone gives an article a title that causes conflict with an existing URL?), this is a bad thing because it means you now have a URL (everything up to and including your new segment) that doesn&#8217;t have a page behind it. The solutions range from refactoring your URL schema to simply preventing new content from using existing URLs programmatically.</p>

	<h5>URLs must be meaningful</h5>

	<p>Put simply, every single part of your URL should not only mean something to the user but also to your system. Let&#8217;s say that instead of just using your article title you&#8217;re using the numerical id as well, your system may not actually care what the text is as long as the id is right. This violates the idea of unique URLs because now every single article effectively has unlimited URL possibilities. Similarly, keywords shouldn&#8217;t be stuffed into the URL if they have no actual effect on what page is returned by the system. If a user gets any part of a URL wrong they should be served a 404 page which ideally would list the possible URLs the user may have been looking. By removing useless parts you also ensure that your URL is only as long as it needs to be, long URLs almost always become unclickable if put in emails because readers break the line before the running the algorithm that converts the URLs to clickable links.</p>

	<h4>Conclusion</h4>

	<p>The 4 principles outlined above represent my condensed findings on how ideal URL schemas should be constructed, in reality it&#8217;s not quite as simple as following 4 relatively straightforward guidelines (and there are probably a number of factors I&#8217;ve overlooked that may not fit within the 4 areas) but my opinion is that URL design is easily important to justify the work that may go into programming a system that allows good design. In my experience some web development frameworks make it unreasonably difficult to develop decent URLs whilst others can even make it enjoyable, this ease of URL development should be considered an important factor in framework choice.</p>

	<p>I have deliberately refrained from mentioning SEO directly until now, I have no objections to SEO but I feel that if any design decision is made purely for SEO purposes you risk adversely affecting the user experience. However, applied correctly these principles also go hand-in-hand with optimising your URLs for search engines. In fact, you can find the majority of what I&#8217;ve said in various SEO articles just with different motivations behind the decisions. My point was to emphasise the importance of proper URL design and highlight that even if your site is so successful that you don&#8217;t need to worry about SEO you still need to worry about the user experience and therefore URLs.</p>

	<p>Thanks to <a href="http://sonspring.com">Nathan Smith</a> for helping me out with some thoughts regarding this article. Andrew Ingram is aware that his site doesn&#8217;t remotely follow his guidelines but promises to try harder in the future.</p>


 ]]></description>
      <dc:subject>Accessibility, Programming, URL, Usability</dc:subject>
      <dc:date>2007-10-07T00:48:00+00:00</dc:date>
    </item>



    <item>
      <title>Question Concerning Django and Templates</title>
      <link>http://www.andrewingram.net/articles/question_concerning_django_and_templates/</link>
      <guid>http://www.andrewingram.net/articles/question_concerning_django_and_templates/#When:23:19:00Z</guid>
      <description><![CDATA[<h3>Abstract</h3>	<p>This is a request for help from all the Django users out there, it&#8217;s about using different templates for different types of article in a blog or CMS system</p>


 <h3>Body</h3>	<p>There&#8217;s a project I&#8217;m working on that I think could really benefit from switching to 