<?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>Jon On Tech &#187; accessibility</title>
	<atom:link href="http://jonontech.com/tag/accessibility/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonontech.com</link>
	<description>Just a nerd trying to save the publishing industry. Again.</description>
	<lastBuildDate>Fri, 29 Jul 2011 17:07:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>My First 50 Days of WordPress &#8211; Part I</title>
		<link>http://jonontech.com/2009/05/17/my-first-50-days-of-wordpress-part-i/</link>
		<comments>http://jonontech.com/2009/05/17/my-first-50-days-of-wordpress-part-i/#comments</comments>
		<pubDate>Sun, 17 May 2009 21:45:03 +0000</pubDate>
		<dc:creator>Jon Marks</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[This Blog]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mofuse]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://jonontech.com/?p=681</guid>
		<description><![CDATA[It's been about 65 days since I started this blog, and about 50 days since I moved from hosted WordPress.com to a self-hosted version. Since gaining my freedom, I've learned a lot about blogging, WordPress and various tools of the trade. For some reason, I've struggled to find resources that list all of the nice tips and tricks out there. In this post, I'm only going to talk about how it is built - the on-site stuff. In Part II I'll talk about how the off-site pieces - things like Twitter, Directories and external checking tools.]]></description>
			<content:encoded><![CDATA[<blockquote class="dylan"><p>Lord, you shouldn&#8217;t mistreat me, baby, because I&#8217;m young and wild,<br />
Shouldn&#8217;t mistreat me, baby, because I&#8217;m young and wild.<br />
You must always remember, baby, you was once a child.<br />
- RAGGED &amp; DIRTY</p></blockquote>
<p>It&#8217;s been about 65 days since I started this blog, and about 50 days since I  moved from hosted WordPress.com to a self-hosted version. Since <a href="http://jonontech.com/2009/03/30/goodbye-wordpresscom-hello-freedom/">gaining my freedom</a>, I&#8217;ve learned a lot about blogging, WordPress and various tools of the trade. For some reason, I&#8217;ve struggled to find resources that list all of the nice tips and tricks out there. The sites I&#8217;ve found are generally full of crap. So I figured I might as well brain-dump what I&#8217;ve used and learned. I&#8217;m sure you all know all of this already, but if nothing else it will help me remember what I&#8217;ve done. As usual, I have to thank <a href="http://upload.wikimedia.org/wikipedia/en/2/26/Dilbert_PHB.JPG">James</a> as he is the brains behind the operation.</p>
<p>In this post, I&#8217;m only going to talk about how it is built &#8211; the on-site stuff. In <a href="http://jonontech.com/2009/07/13/my-second-50-days-of-wordpress-part-ii/">Part II</a> I&#8217;ll talk about the off-site pieces &#8211; things like Twitter, Directories, SEO and other external tools. And yes, I know I have a blog with hardly any visitors. But at least it is a compliant, SEO friendly blog so that all I can blame for the lack of visitors is my content.</p>
<h3>The Theme</h3>
<p>I didn&#8217;t put too much thought into this, and just looked for one that looked simple and flexible. I picked <a title="WP Themes" href="http://wordpress.bytesforall.com/">Atahualpa Theme</a> by <a title="Custom WordPress Themes &amp; Web Design" href="http://www.bytesforall.com/">BytesForAll</a> which has worked nicely. It has many options and has allowed me to change virtually everything I&#8217;ve wanted to without writing any PHP code or changing the .htaccess file.  The theme handles favicons properly, which is nice. I notice many many WordPress blogs still have the good old out of the box <a href="http://jonontech.com/wp-content/uploads/2009/05/wordpress.png">W</a> icon. It also lets you flip between excerpts and full posts on the listing pages, which I like. Finally, it is really easy to add custom HTML or CSS anywhere. Have done a fair bit of this.</p>
<p>Of course, I wouldn&#8217;t pick a theme without ensuring it produces valid XHTML. This one does, and the <a href="http://validator.w3.org/check?uri=referer">blog validates</a> using the W3C validator at the time of writing. However, I didn&#8217;t <a href="http://jigsaw.w3.org/css-validator/validator?uri=http://jonontech.com/">validate the CSS</a> when I chose it which was a pity as this is a bit of a disaster. Something to try to fix later.</p>
<h3>Key Plugins</h3>
<p>I&#8217;m not going to go into any detail here as I&#8217;ve gone with the mainstream ones. I&#8217;m also not going to mention the gimmicky plugins that appear in the sidebar. The ones that provide core functionality are:</p>
<ul>
<li><a title="Visit plugin homepage" href="http://akismet.com/">Akismet</a> &#8211; saved my ass. At the time of writing, I&#8217;ve had 229 real comments and Akismet has blocked 635 spam comments. It&#8217;s let 1 spam item through, and blocked 2 that weren&#8217;t actually spam.</li>
<li><a title="Visit plugin homepage" href="http://semperfiwebdesign.com/">All in One SEO Pack</a> &#8211; this works well and plays nicely with my theme. See the later section on Google Webmaster Tools.</li>
<li><a title="Visit plugin homepage" href="http://yoast.com/wordpress/analytics/">Google Analytics for WordPress</a> &#8211; of course. Much better than the other WordPress options</li>
<li> <a title="Visit plugin homepage" href="http://www.arnebrachhold.de/redir/sitemap-home/">Google XML Sitemaps</a> &#8211; you&#8217;d be mad not to. It works very well. My sitemap is here: <a href="http://jonontech.com/sitemap.xml">http://jonontech.com/sitemap.xml</a></li>
<li><a title="Visit plugin homepage" href="http://blogwaffe.com/2006/10/04/421/">No Self Pings</a> &#8211; great if you like cross-linking between your own posts like I do</li>
<li><a title="Visit plugin homepage" href="http://yoast.com/wordpress/sociable/">Sociable</a> &#8211; to allow all the community site features beneath each post. Sadly, no-one seems to click them. And we needed to change the CSS on the theme to make it pretty.</li>
</ul>
<h3>RSS Feeds</h3>
<p>Everyone is using <a href="http://www.feedburner.com/">FeedBurner</a>, so I joined the party. I have two feeds &#8211; one for the postings and one for the comments. The only person who has subscribed to the comments is me. It isn&#8217;t linked to on the site yet. The FeedBurner feeds look like this:</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/05/feedburnerfeeds.png"><img class="aligncenter size-full wp-image-685" title="feedburnerfeeds" src="http://jonontech.com/wp-content/uploads/2009/05/feedburnerfeeds.png" alt="feedburnerfeeds" width="488" height="115" /></a></p>
<p>First step was trying to decide what URLs to give the feeds. I asked James (he is, after all, on the <a href="http://www.rssboard.org/">RSS Advisory board</a>) but I can&#8217;t remember what he said, so screwed it up going with <a href="http://feed.jonontech.com/jonontech">/jonontech</a> for the main one and <a href="http://feed.jonontech.com/jonontech/comments">/jonontech/comments</a> for the comments one. Bit lame, really. James can&#8217;t remember what he recommended. Anyway, moving on, the feed details should look something like this:</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/05/feedburnerdetails.png"><img class="aligncenter size-full wp-image-689" title="feedburnerdetails" src="http://jonontech.com/wp-content/uploads/2009/05/feedburnerdetails.png" alt="feedburnerdetails" width="604" height="106" /></a></p>
<p>Last step was to kill the horrible <em>http://feeds2.feedburner.com/</em> FeedBurner domain and use mine. Off we go to the <a href="http://feedburner.google.com/fb/a/mybrand">MyBrand</a> page which lets you do just that. I decided to go with <em>feed.jonontech.com</em> as the domain, so I just need to head off to GoDaddy to enter a CNAME (<code style="background: #ffffc5 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 14px;">feed CNAME 181d3ce.feedproxy.ghs.google.com</code>) as instructed, and follow the simple instructions. Make sure you only promote your nice new feed URL- in my case, this is <a href="http://feed.jonontech.com/jonontech/">http://feed.jonontech.com/jonontech</a>.</p>
<p>We&#8217;re not quite done with the feeds yet. As usual, let&#8217;s make sure everything validates. Off we go to <a href="http://www.feedvalidator.org/">www.feedvalidator.org</a>. All good as you can see <a href="http://www.feedvalidator.org/check.cgi?url=http%3A%2F%2Ffeed.jonontech.com%2Fjonontech">here</a> and <a href="http://www.feedvalidator.org/check.cgi?url=http%3A%2F%2Ffeed.jonontech.com%2Fjonontech%2Fcomments">here</a>.</p>
<h3>OPML Feed</h3>
<p>I really like RSS. I read my feeds on the tube (i.e. subway) on the way home as I don&#8217;t have internet access there. It&#8217;s pretty tedious to add RSS feeds to my shitty iPhone RSS client, but it does do <a href="http://en.wikipedia.org/wiki/OPML">OPML</a>. I decided I&#8217;d like to add my entire blogroll in one go. Enter OPML. I found a plugin called <a href="http://wordpress.org/extend/plugins/get-opml/">Get_OPML</a> which sort of does this. Once you install it, there are two steps. Step 1 works well. You click a button, and it runs off to your blogroll and technorati (you need a technorati API key) to update the RSS field in your blogroll links. Admittedly, if your blogroll is short your could skip this and just enter the RSS feed URLs yourself when you add a blogroll link.</p>
<p>Step 2 sucked a bit. It generates the OPML file from the blogroll. Two problems. Firstly, the query gets ALL links, not just the ones in the blogroll. So all the &#8220;About Me&#8221; rubbish and more. To avoid this, I hacked the SQL query in the module to only get Blogroll entries. In case anyone wants to do the same, the new query looks like:</p>
<blockquote><p>SELECT link_id,link_url,link_name,link_rss<br />
FROM wp_links AS l<br />
JOIN wp_term_relationships AS r ON l.link_id = r.object_id<br />
JOIN wp_terms AS t ON t.term_id = r.term_taxonomy_id<br />
WHERE t.name = &#8216;Blogroll&#8217; ORDER BY link_id ASC</p></blockquote>
<p>Second problem &#8211; the dude that wrote the plugin hard-coded his own feed into the plugin. Lame. Comment it out. And Have a look at <a href="http://jonontech.com/opml.xml">my OPML file</a> if you want to add everyone to your RSS readers.</p>
<p>As usual, let&#8217;s validate it. At present, the only OPML validator I am aware of is dead, but maybe it&#8217;ll come back. I don&#8217;t know if my <a href="http://validator.opml.org/?url=http://jonontech.com/opml.xml">OPML file validates</a>.</p>
<h3>Mobile Version</h3>
<p>A colleague of mine told me I need to get myself a mobile version, and pointed me at <a href="http://www.mofuse.com/">Mofuse</a>. The setup was really painless. Go to their site, create an account and add a mobile site. You&#8217;ll need to pick a SiteID so your site becomes available on <em>&lt;SiteID&gt;.mofuse.mobi</em> initially. Enter the link to your RSS feed, and you&#8217;re done. You can upload upload a header image, pick some colours and even add pages to your mobile site if you want to. I just did the header and colours and left the rest as it is. That&#8217;s it &#8211; you&#8217;ve got a mobile version which looks something like this:</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/05/mofusepreviewphone.jpg"><img class="aligncenter size-full wp-image-682" title="mofusepreviewphone" src="http://jonontech.com/wp-content/uploads/2009/05/mofusepreviewphone.jpg" alt="mofusepreviewphone" width="231" height="409" /></a></p>
<p>There are a few other things worth doing. I like everything under one domain, so using their Custom Domain option on the dashboard, I added <a href="http://m.jonontech.com/">m.jonontech.com</a>. Then it is back to the Daddy to add a CNAME mapping m -&gt; jonontech.mofuse.mobi. After all this, my GoDaddy Total DNS looks like this (also see the feedburner entry):</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/05/totaldns.jpg"><img class="aligncenter size-full wp-image-683" title="totaldns" src="http://jonontech.com/wp-content/uploads/2009/05/totaldns.jpg" alt="totaldns" width="291" height="130" /></a>But wait, there is more. Fancy a dedicated iPhone version? Mofuse support this too. Just go to the iPhone Settings option on the dashboard and follow the simple instructions. You can see my iPhone version at <a href="http://m.jonontech.com/iphone">m.jonontech.com/iphone</a>. They&#8217;ll use your HTTP User Agent to make sure you see the right version. But how does WordPress know to send a visitor to the main site to the mobile site. That&#8217;s easy too! Mofuse supply a  <a href="http://www.mofuse.com/wordpress/">WordPress plugin</a> that does exactly that. Download it, install if (version 0.9o is the one I&#8217;m on), and configure it.  Screenshot of the configuration is shown:</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/05/mofuseplugin.jpg"><img class="aligncenter size-full wp-image-684" title="mofuseplugin" src="http://jonontech.com/wp-content/uploads/2009/05/mofuseplugin.jpg" alt="mofuseplugin" width="838" height="676" /></a><br />
All done. Cheap and cheerful mobile version.</p>
<h3>Google WebMaster Tools</h3>
<p>I&#8217;m presuming all you bloggers out there are using the <a href="https://www.google.com/webmasters/tools/dashboard">Google WebMaster Tools</a>. If not, you&#8217;re insane. Add your site, verify, and away you go. Make sure you register your Google sitemap that you created earlier. You can add the Gadgets to your Google Home Page if you use that. Look at all the errors and warnings you get, and try to fix them. I&#8217;ve managed to get rid of all of mine now, which the exception of some old Page Not Founds which a new crawl should fix.</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/05/googlewebmaster.png"><img class="aligncenter size-full wp-image-696" title="googlewebmaster" src="http://jonontech.com/wp-content/uploads/2009/05/googlewebmaster.png" alt="googlewebmaster" width="814" height="369" /></a>One thing I did discover &#8211; WordPress out of the box is configured so that it will cause duplicate content errors, which Google doesn&#8217;t like at all. This is due to pagination of comments. In order to correct this, siply don&#8217;t paginate them. So go to Settings &gt; Discussions, and uncheck this checkbox:</p>
<h3><a href="http://jonontech.com/wp-content/uploads/2009/05/pagingcomments.png"><img class="aligncenter size-full wp-image-698" title="pagingcomments" src="http://jonontech.com/wp-content/uploads/2009/05/pagingcomments.png" alt="pagingcomments" width="655" height="27" /></a>Final Thoughts</h3>
<p>That&#8217;s all for now, I think. In closing, a couple of questions for those that know what they&#8217;re doing. Firstly, I hate links that open in new windows. So all my links use the same window. However, I&#8217;ve had a few people complain about this as they say they keep leaving and having to come back to the site. What&#8217;s best practice these days? Secondly, I&#8217;ve gone with jonontech.com as the canonical URL instead of www.jonontech.com. Is there a good reason to pick one over the other?  Finally, I&#8217;m not going to put any badges (e.g. This site is valid XYZ) on the site. They&#8217;re not as bad as ads, but who needs &#8216;em. Right?</p>
<p>If anyone knows of some sweet plugins or tips out there, please let me know. You can read about the second 50 days in <a href="http://jonontech.com/2009/07/13/my-second-50-days-of-wordpress-part-ii/">My Second 50 Days of WordPress &#8211; Part II</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonontech.com/2009/05/17/my-first-50-days-of-wordpress-part-i/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Oh CMS, Deliver Me</title>
		<link>http://jonontech.com/2009/04/16/oh-cms-deliver-me/</link>
		<comments>http://jonontech.com/2009/04/16/oh-cms-deliver-me/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 23:36:22 +0000</pubDate>
		<dc:creator>Jon Marks</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[cmswatch]]></category>
		<category><![CDATA[delivery]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://jonontech.com/?p=506</guid>
		<description><![CDATA[In which I rant about what I want from the Delivery Capabilities of a CMS, plus an attempt to answer a question I promised I'd answer.]]></description>
			<content:encoded><![CDATA[<blockquote class="dylan"><p>Half of the people can be  part right all of the time,<br />
Some of the people can be all right part of the time.<br />
But all of the people can&#8217;t be right all of the time.<br />
I think Abraham Lincoln said that.<br />
&#8220;I&#8217;ll let you be in my dreams if I can be in yours,&#8221;<br />
I said that.<br />
- TALKIN&#8217; WORLD WAR III BLUES</p></blockquote>
<h3>Is the tail wagging the dog?</h3>
<p>A recent posting caused <a href="http://jonontech.com/2009/04/12/which-comes-first-the-crew-or-the-cms/#comments">a rather lively conversation</a>. One question I didn&#8217;t get around to answering came from <a href="http://www.cmswatch.com/Analyst/20-Bloem">Adriaan Bloem</a>, an analyst at CMS Watch:</p>
<blockquote><p>But just ask yourself this: 1. Do you design the visitor UX, then use a CMS as a tool to build it? Or 2. Do you consider the process of building and maintaining the lifecycle of a site (the actual *managing of the content*) to be as important as the visitor-facing facia of it? If 1., and not 2., the CMS is going to be thrown out together with the site it produces like a pair of badly hurting shoes as soon as the opportunity arises. And it’ll have caused plenty of hurt by then.<em><br />
</em></p></blockquote>
<p>Badly hurting shoes?!? Hey buddy, this is my baby you&#8217;re talking about. So, in order to answer this, I&#8217;m going to first talk a little about what I want from a content management system.</p>
<p>I want it to manage content, and give me a sensible way to get at that content. And I want this to be easy and logical. That&#8217;s all. Done. [<strong><em>UPDATE</em>:</strong> My attempt to be sarcastic may have failed. I know it isn't that simple and there are a hundred Content Management Features that influence the decision. But those aren't what this post is about. See <a href="http://jonontech.com/2009/04/16/oh-cms-deliver-me/comment-page-1/#comment-201">this comment</a>]</p>
<p>But content management systems these days do more than this. I&#8217;m still an old-school fan of decoupled delivery, although most products now also provide delivery capability and a whole boatload of extras. And the infamous RFP matrices I see focus far too much on delivery side issues that are nothing to do with the CMS. So what do I want from the delivery framework? Not much either, really. In some vague order of importance, these are the biggies.</p>
<h3>Every &lt;Tag&gt; is sacred</h3>
<p>I want full control over the markup generated by the product. Our interface developers (the front end guys) take their HTML/CSS/JavaScript very seriously, and I want to be able to emit their code byte for byte. I&#8217;ll accept some things. A &lt;FORM&gt; tag around a .NET page is expected, with a hidden VIEWSTATE input. Adding extra styles to the front end when <em>doing inline editing</em> is okay too. But when viewing the site as a normal user, I don&#8217;t want any of those either. I certainly don&#8217;t want their JavaScript and CSS stomping all over my JavaScript and CSS.</p>
<p style="text-align: left;">The &#8220;Egg Analogy&#8221; presentation below is a Microsoft one, which I first saw when our friends from Redmond popped into our office to demo their Expressions product suite. The first 9 slides really touch a nerve for me. Don&#8217;t bother with the propaganda from slide 1o onwards. The slides mirror our development process pretty well, as does the end result if the delivery framework places constraints on the markup. We don&#8217;t like breaking the egg.</p>
<p><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=the-egg-analogy-the-problem-with-deisgner-and-developer-workflow-in-software-and-interaction-design-1201971645676597-2&amp;stripped_title=the-egg-analogy-the-problem-with-deisgner-and-developer-workflow-in-software-and-interaction-design" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=the-egg-analogy-the-problem-with-deisgner-and-developer-workflow-in-software-and-interaction-design-1201971645676597-2&amp;stripped_title=the-egg-analogy-the-problem-with-deisgner-and-developer-workflow-in-software-and-interaction-design" /><param name="allowfullscreen" value="true" /></object></p>
<h3>If it ain&#8217;t broke, don&#8217;t break it</h3>
<p>So, we&#8217;ve got our perfect HTML. Let&#8217;s make sure the editors can&#8217;t break the egg either. This is more a Content Management than Content Delivery issue but, I beg you, don&#8217;t let the editorial team play with the HTML directly without ensuring the markup is valid. It isn&#8217;t that hard to do. Don&#8217;t publish something that isn&#8217;t valid, at the very least. Applying some accessibility guidelines doesn&#8217;t hurt either. I also need the editors to have full control over the URLs, including multiple &#8220;campaign URLs&#8221; for the same entry point. Don&#8217;t allow illegal characters in these URLs, please.  Oh yeah. Tell your Rich Text Editor not to convert relative URLs into absolute ones that point to my staging environment.</p>
<h3>Play properly with the interwebs</h3>
<p>HTTP status codes exist for a reason. Please can your &#8220;Page Not Found&#8221; page actually also return a 404, not a 200. Please use 301 and 302 redirects in the right places. Please use proper caching headers when serving static files. And dynamic files too. Did you know that SharePoint serves an <a href="http://blog.mediawhole.com/2008/05/moss-exires-header.html">&#8220;Exires&#8221; header</a> (without the &#8216;p&#8217;)? WTF! Form builders need a good excuse not to use XForms.</p>
<h3>Developers should dig it</h3>
<p>The product should feel natural to them. No proprietary languages. No stupid development tools. No complex installations. Less quirks than average. It needs a logical API and useful templated controls. It should feel like it is an extension of the dev tools they know and love. The in-memory caching and decaching should be invisible to them. And it should be fast.</p>
<p>I want my configuration in configuration files and template code on the file system so it plays with our release management and continuous integration software. I only want content in the content database, so I can back up and restore databases without screwing up code. I want language files in standard places.</p>
<p>I love the products that do less rather than more. Using .NET as an example, your API should <em>do less</em> with each .NET release. Chuck out propriety authentication methods for <a href="http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx">.NET Membership</a>.  Chuck out your clever workflow engine for <a href="http://msdn.microsoft.com/en-us/library/ms735967.aspx">Windows Workflow</a>. Stand on the shoulders of giants, and let my developers do the things they know already. Focus on the core use cases of a Content Management System.</p>
<h3>Don&#8217;t try to sell me snake oil</h3>
<p>I don&#8217;t want a non-techie sales guy telling me things like &#8220;Oh yes, our product does SEO really well&#8221;, &#8220;It also works as a Portal&#8221; or &#8220;It does an iPhone version&#8221; without knowing what it means. I don&#8217;t want the system to bloat itself with tightly coupled modules that need to be uninstalled with a scalpel and a bottle of gin. You can keep your Module X that has clearly been hacked together on a client project, produces crap markup, isn&#8217;t cross browser, doesn&#8217;t have an accessible fallback, and clearly isn&#8217;t ready for production. I don&#8217;t really want sub-standard features that have been implemented simply to tick a box on an ill-thought-out RFP. On most of my projects, the CMS isn&#8217;t the only third party application in the solution. It needs to talk to the others too. I already have products for my Analytics and <a href="http://en.wikipedia.org/wiki/Multivariate_testing">MVT</a>, thank you very much. If you also do e-Commerce, <a href="http://www.cmswatch.com/Social/Report/">SoCo </a>or something else, I might consider those as a loosely coupled optional extra. And I really really really don&#8217;t want fancy drag-and-drop site building demoware that is completely useless and downright dangerous on a real project.</p>
<p><a href="http://jonontech.com/wp-content/uploads/2009/04/snakeoil.jpg"><img class="aligncenter size-full wp-image-513" title="Snake Oil" src="http://jonontech.com/wp-content/uploads/2009/04/snakeoil.jpg" alt="Snake Oil" width="331" height="386" /></a></p>
<h3>Rant over. So, to answer Adriaan&#8217;s question at last</h3>
<p>I believe that any delivery framework that meets the above requirements can be used to create <em>any</em> user experience. In fact, I like the idea that our UX, Creative and even Interface Developers can do their thing without knowing which CMS we&#8217;re going to use. So, I&#8217;m going to say we do both 1. and 2. at the same time. The front end is designed entirely with the users in mind, without caring about the CMS details. The CMS implementation is completely the opposite. It&#8217;s all about modelling the content and making the editors&#8217; day job easier.</p>
<p>In a year or three, the customer may need a complete site refresh and the content and processes shouldn&#8217;t need to change unnecessarily. Or, alternatively, the Best CMS Product Ever might be released, and the customer might want to use it instead of the CMS we&#8217;ve implemented. They should be able to do this without losing the design, UX and HTML, which is a substantial investment. Or, to paraphrase Adriaan. I want to be able to throw out our CMS like a pair of badly fitting shoes, or throw out our website like a hat that is too tight. But I don&#8217;t need to throw them out together.</p>
<p>Finally, I reserve the right to violently disagree with any of the ill-thought-out things I&#8217;ve said in the above. Get out those hunting rifles &#8211; it is open season on Jon.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonontech.com/2009/04/16/oh-cms-deliver-me/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Dog Food, CMS Accessibility and a Nice Surprise</title>
		<link>http://jonontech.com/2009/03/18/dog-food-cms-accessibility-and-a-nice-surprise/</link>
		<comments>http://jonontech.com/2009/03/18/dog-food-cms-accessibility-and-a-nice-surprise/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 23:39:00 +0000</pubDate>
		<dc:creator>Jon Marks</dc:creator>
				<category><![CDATA[Agency]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[fatwire]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[percussion]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://jonontech.wordpress.com/?p=118</guid>
		<description><![CDATA[Now that we know most vendors use their own product for their site, we test the home pages for many major vendors. We need to ask why so few of them have markup that validates and discuss possible reasons.]]></description>
			<content:encoded><![CDATA[<blockquote class="dylan"><p>You&#8217;ve been avoiding the main streets for a long, long while<br />
The truth that I&#8217;m seeking is in your missing file<br />
What&#8217;s your position, baby, what&#8217;s going on?<br />
Why is the light in your eyes nearly gone?<br />
- SOMETHING&#8217;S BURNING, BABY</p></blockquote>
<p>Following on from the wonderfully entertaining &#8220;CMS Vendor Meme&#8221; (a.k.a. the &#8220;<a href="http://jonontech.wordpress.com/2009/03/17/celebrity-cms-deathmatch/">CMS Celebrity Deathmatch</a>&#8220;), I&#8217;d like to drill slightly deeper into Item #9 &#8211; Dog Food. For the uninitiated, &#8220;<a href="http://en.wikipedia.org/wiki/Eat_one&#39;s_own_dog_food">Eating your own dogfood</a>&#8221; means that the vendor uses their own software to run their own site. All of them do, according to the responses to the Vendor Meme so far, although not always on the very latest version.</p>
<p>So, do the vendors&#8217; sites, written on technology which is sold as fully accessible and built by experts (at least, one hopes the vendor has experts), actually produce markup that validates? I guess the first question one has to ask is does it matter if a site is accessible. And the answer: Oh yes. For many many reasons which I&#8217;m not going to go into here. I understand that<a href="http://validator.w3.org/"> W3C validation </a>≠ <a href="http://en.wikipedia.org/wiki/Web_accessibility">Accessibility</a>, but that is another discussion for another time too. Validation is still an important part.</p>
<div class="wp-caption aligncenter" style="width: 460px"><a href="http://www.cvwdesign.com/txp/article/242/web-standards-in-the-bedroom"><img title="XXXHTML by Rob Cottingham" src="http://www.cvwdesign.com/txp/images/116.gif" alt="XXXHTML by Rob Cottingham" width="450" height="399" /></a><p class="wp-caption-text">XXXHTML by Rob Cottingham</p></div>
<p>I know that it isn&#8217;t always easy to make complex site that validate. Where I work, sites should always validate when they&#8217;re launched &#8211; it is part of the User Acceptance Criteria. However, we are guilty of back-sliding when sites are in support /maintenance mode, and editors break things when abusing Rich Text Editors. Shock, horror &#8211; there are still a lot of CMS products that allow editors to enter broken markup.</p>
<p>WordPress do a pretty good job. <a href="http://validator.w3.org/check?uri=http://jonontech.com/">This blog validates</a> at the time of writing, no thanks to me. Admittedly, I did have to fix the <a href="http://www.feedburner.com/">FeedBurner </a>RSS link which left the closing slash from the img tag, but that wasn&#8217;t WordPress&#8217;s fault.</p>
<p>I digress. I thought I&#8217;d test the home pages of a few major commercial Web CMS vendors &#8211; those listed as Enterprise or Upper Tier in the latest <a href="http://www.cmswatch.com/CMS/Report/Vendors/">CMS Watch Web CMS Report</a>. I tested the vendor home page, which may not be CMS related at all, especially for the big boys. The results are tabulated below. The numbers below were generated on 18 March between 21:00 and 23:00 GMT using the W3C HTML Validator. I didn&#8217;t check the CSS or Feeds, just the markup. Both encoding and <a href="http://en.wikipedia.org/wiki/Document_Type_Declaration">doctype </a>were left on &#8220;Detect Automatically&#8221;. I didn&#8217;t look into the details of the errors. The ones with a large number of errors might actually only be a few errors that are repeated, or have knock-on effects.</p>
<table border="0">
<tbody>
<tr>
<th>Vendor</th>
<th>URL Checked</th>
<th>Detected DOCTYPE</th>
<th>Number of Errors (2009/03/18)</th>
</tr>
<tr>
<td>EMC Documentum</td>
<td><a href="http://validator.w3.org/check?uri=http://uk.emc.com">uk.emc.com</a></td>
<td>XHTML 1.0 Transitional</td>
<td>121</td>
</tr>
<tr>
<td><span style="color:#339966;"><strong><span style="color:#000000;">IBM</span></strong></span></td>
<td><a href="http://validator.w3.org/check?uri=http://www.ibm.com">www.ibm.com</a></td>
<td>XHTML 1.0 Strict</td>
<td><span style="color:#339966;"><span style="color:#000000;">0</span></span></td>
</tr>
<tr>
<td>Autonomy Interwoven</td>
<td><a href="http://validator.w3.org/check?uri=http://www.interwoven.com">www.interwoven.com</a></td>
<td>XHTML 1.0 Transitional</td>
<td>254</td>
</tr>
<tr>
<td>OpenText</td>
<td><a href="http://validator.w3.org/check?uri=http://www.opentext.com">www.opentext.com</a></td>
<td>XHTML 1.0 Transitional</td>
<td>205</td>
</tr>
<tr>
<td>Oracle</td>
<td><a href="http://validator.w3.org/check?uri=http://www.oracle.com">www.oracle.com</a></td>
<td>HTML 4.0 Transitional</td>
<td>39</td>
</tr>
<tr>
<td>Vignette</td>
<td><a href="http://validator.w3.org/check?uri=http://www.vignette.com">www.vignette.com</a></td>
<td>XHTML 1.0 Transitional</td>
<td>39</td>
</tr>
<tr>
<td>CoreMedia</td>
<td><a href="http://validator.w3.org/check?uri=http://www.coremedia.com">www.coremedia.com</a></td>
<td>HTML 4.01 Transitional</td>
<td>49</td>
</tr>
<tr>
<td><span style="color:#000000;"><strong>Day</strong></span></td>
<td><a href="http://validator.w3.org/check?uri=http://www.day.com">www.day.com</a></td>
<td>HTML 4.01 Strict</td>
<td>2</td>
</tr>
<tr>
<td><strong>Fatwire</strong></td>
<td><a href="http://validator.w3.org/check?uri=http://www.fatwire.com">www.fatwire.com</a></td>
<td>HTML 4.01 Transitional</td>
<td>1</td>
</tr>
<tr>
<td>Alterian Mediasurface</td>
<td><a href="http://validator.w3.org/check?uri=http://www.mediasurface.com">www.mediasurface.com</a></td>
<td>XHTML 1.0 Strict</td>
<td>41</td>
</tr>
<tr>
<td><strong>Percussion</strong></td>
<td><a href="http://validator.w3.org/check?uri=http://www.percussion.com">www.percussion.com</a></td>
<td>XHTML 1.0 Transitional</td>
<td>4</td>
</tr>
<tr>
<td>SDL Tridion</td>
<td><a href="http://validator.w3.org/check?uri=http://www.tridion.com">www.tridion.com</a></td>
<td> XHTML 1.0 Strict</td>
<td> 41</td>
</tr>
<tr>
<td>Microsoft</td>
<td><a href="http://validator.w3.org/check?uri=http://www.microsoft.com">www.microsoft.com</a></td>
<td> XHTML 1.0 Transitional</td>
<td>177</td>
</tr>
</tbody>
</table>
<p>The nice surprise mentioned in the title is IBM. Big Blue really does care about standards, and maybe Java is going to safe place should the SUN deal materialise. Hats off to Fatwire, Day and Percussion who get really close and clearly try to ensure the markup is good. The other 9 out of 13, however, don&#8217;t look so promising.</p>
<p>So, what am I saying? I am not for a second implying that the products that do badly in the above are &#8220;not accessible&#8221;. I just think the question we always see in an CMS Selection RFP is incorrect. Asking about an accessible editing interface (which comes out of the box) makes sense. Asking about an accessible front end (which is different for every implementation) makes no sense at all.</p>
<p>So, instead, the question on the RFP should be &#8220;<strong><em>Does your CMS allow the developer full control over the markup. If not, please specify where</em></strong>?&#8221;  Now, it is highly unlikely that any product can answer an unequivocal &#8220;yes&#8221; to this. For example, every .NET based product mandates that a FORM tag containing the VIEWSTATE exists. However, this does not cause a problem.</p>
<p>But as we add products into the solution, we hit more restrictions. Portals are notoriosuly bad at giving control. I promised myself I wouldn&#8217;t rant about Portals for Public Facing Sites here, so I won&#8217;t. Many AJAX libraries (e.g. some JavaServer Faces implementations and ASP.NET AJAX nee ATLAS) give you very little control at all. JavaScript libraries are normally pretty good.</p>
<p>I believe the problem in most of the examples in the table above could be rooted in one of:</p>
<ul>
<li><strong>The technology makes valid markup impossible</strong> &#8211; I think this could probably be worked around in many cases. But sometimes you simply can&#8217;t get around the bad markup you&#8217;re given.</li>
<li><strong>Nobody knew it mattered &#8211; </strong>Ignorance isn&#8217;t an excuse any more.</li>
<li><strong>Someone decided it wasn&#8217;t important</strong> &#8211; this doesn&#8217;t need further comment. Give them some concrete shoes and send them for a swim.</li>
<li><strong>There isn&#8217;t time and/or budget to ensure it validates</strong> &#8211; in some cases it is more expensive to create a validating, <a href="http://en.wikipedia.org/wiki/Progressive_Enhancement">progressively enhanced</a> site. However, in many cases I believe it is cheaper to do it properly.</li>
<li><strong>The front end team lacked the skill </strong>- This I can believe. Hopefully this improves with time. Many server side developers aren&#8217;t any good at client side work. I know I fall into this camp. When I was coding, CSS didn&#8217;t exist, HTML still had TABLES in it and the BLINK tag was cool. I&#8217;m not allowed anywhere near the front end code where I work. We have professionals for that.</li>
<li><strong>Showing off with fancy client side technologies </strong>- There are far too many sites that use Flash/AIR/Silverlight for no good reason, without providing an accessible fallback. Now this won&#8217;t affect the W3C validation, but it annoys the hell out of me. Use these technologies where they are needed, not for the sake of it.</li>
</ul>
<p>I&#8217;m sure there are other reasons I&#8217;ve missed out, and I&#8217;d love to hear about them. I believe the responsibility for convincing management of the importance of doing things properly lies with us, the technologists. And if they seem not to care too much about accessibility, play the Increased Revenue cards (SEO, multi-device target market, maintainable code, integration with as yet unknown services, working on <a href="http://www.microsoft.com/windows/Internet-explorer/beta/">IE8</a> and other future browsers, etc) instead.</p>
<p>And once again, nice one IBM for winning the Home Page test. I apologise for my behaviour in some meetings in the past about the markup from WebSphere Portal. But let&#8217;s not get complacent &#8211; it would be nice if you could make the deeper pages in the site validate too.</p>
<p><strong>UPDATE</strong>: Does anyone have the energy to publish a similar test for the mid-range and Open Source vendors? I might do it in a week or three if no-one else does it first.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonontech.com/2009/03/18/dog-food-cms-accessibility-and-a-nice-surprise/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

