<?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>nascentguruism &#187; development</title>
	<atom:link href="http://nascentguruism.com/journal/category/development/feed" rel="self" type="application/rss+xml" />
	<link>http://nascentguruism.com</link>
	<description></description>
	<lastBuildDate>Tue, 13 Apr 2010 22:45:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Search, and ye shall&#160;fail</title>
		<link>http://nascentguruism.com/journal/search-and-ye-shall-fail</link>
		<comments>http://nascentguruism.com/journal/search-and-ye-shall-fail#comments</comments>
		<pubDate>Fri, 11 May 2007 10:46:21 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Alex Lee]]></category>
		<category><![CDATA[Ann McMeekin]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[graceful degredation]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mark Norman Francis]]></category>
		<category><![CDATA[Mike Davies]]></category>
		<category><![CDATA[Norm!]]></category>
		<category><![CDATA[progressive enhancement]]></category>
		<category><![CDATA[Tim Huegdon]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Yahoo!]]></category>
		<category><![CDATA[Yahoo! TV]]></category>

		<guid isPermaLink="false">http://nascentguruism.com/journal/search-and-ye-shall-fail</guid>
		<description><![CDATA[in which our illustrious leader solves the problems with current web search interfaces]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s an accepted solution for channelled searching: offer a textbox input and a submit button, supported by a series of links to each channel of the search. The links will typically have JavaScript layered onto them (in theory, at least) to rewrite the form&#8217;s target, so that the user may refine their search before submitting it. This behaviour can be seen on <a href="http://yahoo.com/">Yahoo! <abbr title="United States" class="caps">US</abbr></a>, <a href="http://uk.yahoo.com/">Yahoo! <abbr title="United Kingdom" class="caps">UK</abbr> and Ireland</a>, <a href="http://msn.com/"><abbr title="Microsoft Network" class="caps">MSN</abbr></a>, and yes, even <a href="http://google.com/">Google</a>.</p>

<p>It <em>must</em> be the best solution, mustn&#8217;t it, if all these sites use similar techniques?</p>

<h2>The objective of my affection</h2>

<p>If we step back for a moment, to examine the user&#8217;s needs, we can see two objectives for the average searcher: <strong>find something</strong> and [<ins>perhaps</ins>] make it <em>of this type</em>.</p>

<p>The &#8216;something&#8217; for which the user is searching is, in their mind, the foremost concern. <em>Everything else</em> is secondary. When searching, a user&#8217;s first instinct will almost always be to enter their search terms (and why should it be otherwise?). Everything about a search interface is geared toward this: the keyword input has the most visual weight on the screen &#8212; on a typical search index page &#8212; and the most prominent position &#8212; either near dead-centre or in the head of the page, depending on the type of page.</p>

<p>The accepted solution, happily, cedes to this under all circumstances.</p>

<p>The second objective, then, is the type of results that will satisfy the search. The introduction of this second objective is where user behaviour will begin to deviate: depending on their priorities and personal inclinations, users&#8217; execution of this may take place before, after, or even <em>during</em> the steps to meet the primary objective. Unlike the emphasis placed on the keyword input, the type of results to return should be &#8212; and, typically, are &#8212; de-emphasised where possible, but be present &#8212; and have their presence known &#8212; should the user require them (either to confirm their beliefs or to make a change).</p>

<h2>Humbled</h2>

<p>But the accepted solution only pays lip-service to this more complex interaction: for any user without JavaScript, the only acknowledged paths for them to change the channel in which they are searching is to select it before they begin their search or, assuming that the search engine alters the links based on the latest query, directly after (and before they attempt to manipulate their search further). </p>

<p>By using JavaScript to bludgeon links into selecting from a choice of mutually exclusive channels, the user experience of what <em>should</em> be a simple search form is broken for many users when they attempt to interact with it in a way that seems natural to them. To compound this issue further, the use of links means that screen reader users may <em>never</em> be able to use this functionality, as links within the form will never be announced when they are entering their search terms.</p>

<p>The problem is that whomever has implemented these solutions (or their forebears) had the mindset of &#8216;HTML is static, JavaScript is dynamic&#8217; &#8212; or simply didn&#8217;t care enough to question the accepted norm &#8212; and so overlooked what was staring them right in the face: HTML already has a perfectly good input device for selecting one and only one item from a collection:</p>

<p>The humble radio-button.</p>

<p>Given a little semantic markup and CSS (with a smattering of JavaScript to add extra styling hooks), it&#8217;s entirely possible to style a group of radio-buttons in a more visually apt way to indicate that it is filtering the search input, whilst offering a far more interactive experience to <em>all</em> users of the site, not just those with JavaScript.</p>

<p>So I did.</p>

<p>That&#8217;s what you can see in action on the new <a href="http://uk.tv.yahoo.com/">Yahoo! <abrr title="United Kingdom" class="caps">UK</abrr> and Ireland <abbr title="Television" class="caps">TV</abbr></a> (along with <a href="http://fr.tv.yahoo.com/" title="Yahoo! France Télé">France</a>, <a href="http://de.tv.yahoo.com/" title="Yahoo! Deutschland TV">Germany</a>, <a href="http://it.tv.yahoo.com/" title="YahoO! Italia TV">Italy</a>, and <a href="http://es.tv.yahoo.com/" title="Yahoo! España TV">Spain</a>).</p>

<h2>Implementation notes</h2>

<p>As noted above, the main components of the form are a list of radio-buttons, a textbox, and a submit button. Of particular note is the way the radio-buttons are scripted and styled, and the structure of the radio-button labels relative to the form&#8217;s <code>&lt;legend&gt;</code>. Further, implementing the search this way requires that the server-side script be able to handle the new field being passed its way appropriately.</p>

<h3>Scripted style</h3>

<p>For all users, the core functionality of the radio-buttons is available, with these styled as an inline list for users with CSS enabled. The JavaScript, when enabled, will simply add a class to the root of the list, along with an extra <code>&lt;span&gt;</code> to allow styling of the labels in accordance with the design. When the radio-buttons receive focus the &#8216;selected&#8217; class is moved to the new selection. This activity takes place on focus, mark you, and not click: click events fire on the <em>originating</em> control which, when navigating with the keyboard, will mean the <em>previously selected</em> radio-button.</p>

<h3>A <code>&lt;legend&gt;</code> in its own life-time</h3>

<p>It was brought to my attention that a form&#8217;s <code>&lt;legend&gt;</code> will, by default, be announced before each and every form field by screen readers. To make this as unobtrusive as possible, each radio-button&#8217;s <code>&lt;label&gt;</code> is worded such that it makes the most possible sense when preceded by the legend text. In English, for example, the radio-buttons will be announced as &#8216;Search… the web&#8217;, &#8216;Search… for images&#8217;, and so forth (where &#8216;Search&#8217; is the form&#8217;s  <code>&lt;legend&gt;</code>).</p>

<p>The radio-buttons&#8217; full text, though, would not make sense in a visual context: they should be presented as tabs titled &#8216;Web&#8217;, &#8216;Images&#8217;, and so on. To achieve this, the visually inappropriate portions of the <code>&lt;label&gt;</code> are wrapped in <code>&lt;span&gt;</code>s and positioned outside the browser&#8217;s viewport &#8212; along with the form&#8217;s legend and the radio-buttons themselves &#8212; such that they may still be accessed by screen readers and the like.</p>

<p>Furthermore, because the radio-buttons are still present in the content of the page, keyboard users may navigate the form fully through the keyboard (using arrow keys to move between items radio-buttons in a collection).</p>

<p><ins>Once again, this can all be seen in action on the new <a href="http://uk.tv.yahoo.com/">Yahoo! <abrr title="United Kingdom" class="caps">UK</abrr> and Ireland <abbr title="Television" class="caps">TV</abbr></a> (along with <a href="http://fr.tv.yahoo.com/" title="Yahoo! France Télé">France</a>, <a href="http://de.tv.yahoo.com/" title="Yahoo! Deutschland TV">Germany</a>, <a href="http://it.tv.yahoo.com/" title="YahoO! Italia TV">Italy</a>, and <a href="http://es.tv.yahoo.com/" title="Yahoo! España TV">Spain</a>). [Links added at Mike's suggestion]</ins></p>

<h2>Thanks</h2>

<p>I can by no means take full responsibility for the successful implementation of this concept, though: I&#8217;d particularly like to thank <a href="http://cackhanded.net/" title="Mark Norman Francis's Cackhanded.net" rel="friend met co-worker">Norm!</a>, <a href="http://www.isolani.co.uk/" title="Mike Davies's isolani" rel="friend met co-worker">Mike Davies</a>, <a href="http://www.csensedesign.co.uk/" title="Alex Lee: in the arms of strangers" rel="friend met co-worker">Alex Lee</a> (our designer), <a href="http://nefariousdesigns.co.uk/" title="Tim Huegdon's Nefarious Designs" rel="friend met co-worker">Tim Huegdon</a>, and <a href="http://www.pixeldiva.co.uk/" title="Ann McMeekin: pixeldiva" rel="friend met co-worker">Ann McMeekin</a> (of the <a href="http://www.rnib.org.uk/"><abbr title="Royal National Institute of the Blind" class="caps">RNIB</abbr></a>) for all their help, advice, and patience (particularly when I got things working and made lots of excited noises at them), and this wouldn&#8217;t have ever been a reality on Yahoo! TV for Europe if it hadn&#8217;t been for the receptive, responsive attitude of the engineers working on Yahoo! Search for&nbsp;Europe.</p>]]></content:encoded>
			<wfw:commentRss>http://nascentguruism.com/journal/search-and-ye-shall-fail/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Grace</title>
		<link>http://nascentguruism.com/journal/grace</link>
		<comments>http://nascentguruism.com/journal/grace#comments</comments>
		<pubDate>Wed, 04 Apr 2007 21:11:26 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[graceful degredation]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[progressive enhancement]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://nascentguruism.com/journal/grace</guid>
		<description><![CDATA[in which our hero explains the problem with so-called 'graceful degradation'.]]></description>
			<content:encoded><![CDATA[<p>Graceful degradation.</p>

<p>Innocuous little phrase, isn&#8217;t it?</p>

<p>If one takes a moment to consider it, however, the idea can be taken to it&#8217;s logical conclusion: &#8216;You (or your browser) are incapable of handling the full experience we want to present, so here&#8217;s a cut-down version.&#8217;</p>

<p>At its core, the mere concept of &#8216;graceful degradation&#8217; belies a lack of respect for one&#8217;s users and, more critically, a fundamental misunderstanding of the medium in which we work.</p>

<p>The fundamental building block of the web is not JavaScript. Nor is it <abbr title="Cascading Style Sheets" class="caps">CSS</abbr>. If your user experience relies on either of these, rather than features native to <abbr title="HyperText Markup Language" class="caps">HTML</abbr>, then that user experience is fundamentally flawed for use on the web.</p>

<p>The key is to design user interactions with naught but <abbr title="HyperText Markup Language" class="caps">HTML</abbr>&#8216;s base features in mind, later using <abbr title="Cascading Style Sheets" class="caps">CSS</abbr> and JavaScript to enhance that experience (most likely streamlining it or making it more efficient). Done right, this enhancement can even be done in progressive levels, based on the availability of given features in the browser.</p>

<p>As a community, we coin phrases with nary a thought to deeper connotations these might have. Under scrutiny, the idea of &#8216;graceful degradation&#8217; simply doesn&#8217;t align with user-centric design and development.</p>

<p>Progressive enhancement it is,&nbsp;then.</p>]]></content:encoded>
			<wfw:commentRss>http://nascentguruism.com/journal/grace/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>XAML: An insider&#8217;s look&#160;out</title>
		<link>http://nascentguruism.com/journal/xaml-an-insiders-look-out</link>
		<comments>http://nascentguruism.com/journal/xaml-an-insiders-look-out#comments</comments>
		<pubDate>Thu, 24 Nov 2005 12:33:24 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[.Net Framework]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Zach Inglis]]></category>

		<guid isPermaLink="false">http://nascentguruism.com/?p=18</guid>
		<description><![CDATA[Zach recently posted his thoughts on Microsoft&#8217;s XAML. As my main development environment is Microsoft&#8217;s .Net Framework, I&#8217;ve had a chance to have a more in-depth look at what XAML is and does, and feel that I should clear some points up. Disclaimer: I have no knowledge of Microsoft&#8217;s true plans for XAML. These are [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zachinglis.com/" title="Zach Inglis">Zach</a> recently <a href="http://www.zachinglis.com/web-accessibility/xaml-who/" title="XAML: An Outsiders Look In">posted his thoughts</a> on 
Microsoft&rsquo;s <acronym title="eXtensible Application Markup Language">XAML</acronym>. As my main development environment is Microsoft&rsquo;s .Net Framework, I&rsquo;ve had a chance to have a more in-depth look at what <acronym title="eXtensible Application Markup Language">XAML</acronym> is and does, and feel that I should clear some points up.</p>

<p><strong>Disclaimer</strong>: I have no knowledge of Microsoft&rsquo;s true plans for <acronym title="eXtensible Application Markup Language">XAML</acronym>. These are simply <em>my observations</em> based on what I&rsquo;ve read and seen on the Internet, and cursory fiddlings with <acronym title="eXtensible Application Markup Language">XAML</acronym> as part of the <a href="http://www.microsoft.com/downloads/info.aspx?u=http%3A%2F%2Fgo.microsoft.com%2Ffwlink%2F%3FLinkId%3D50707&amp;na=44&amp;p=0&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=CE888B4C-CCBD-452F-9D90-F4B7190CCA24">WinFX pre-release <acronym title="Software Development Kit">SDK</acronym></a></p>

<h2>What is this <acronym title="eXtensible Application Markup Language">XAML</acronym> you speak of?</h2>

<p><acronym title="eXtensible Application Markup Language">XAML</acronym> is Microsoft&rsquo;s new <em>application</em> markup language (as noted in the name &lsquo;eXtensible Application Markup Language&rsquo;). </p>

<p>This, then, automatically implies that its primary focus is applications or, more specifically, <em>client-side</em> applications. These could be the likes of Microsoft Word, or they could be something that runs on the client, but is hosted in a browser environment (read: Flash applications).</p>

<p>The <span xml:lang="fr">raison d&rsquo;&ecirc;tre</span> of <acronym title="eXtensible Application Markup Language">XAML</acronym>, rather than being to replace <acronym title="Hypertext Markup Language">HTML</acronym>, is (or rather, would appear to be) to allow <em>client-side</em> application developers to seperate their user interface &lsquo;code&rsquo; from their functional code.  </p>

<h2>Why all the hubbub?</h2>

<p>Web developers know that having a hulking great piece of <del>JavaScript</del><ins><acronym title="European Computer Manufacturers Association">ECMA</acronym>Script</ins> to build their entire user interface isn&rsquo;t good for code maintenance. Why should the same not be true for client-side applications? After all, you don&rsquo;t hear anyone crying <q>think of the children!</q> when people talk about <a href="http://en.wikipedia.org/wiki/XUL" title="Wikipedia entry on XUL"><acronym title="XML User Interface Language">XUL</acronym></a> which is, ultimately, a different implementation of the same concept.</p>

<p>Personally, I think most of the noise is because Microsoft is making (and, in fact, <em>has to</em> make) noise about the benefits of <acronym title="eXtensible Application Markup Language">XAML</acronym> over the old-school way of doing things. Your average in-house developer, closed off from the outside world, that only uses computers for their day job will probably only care about what comes from <a href="http://msdn.microsoft.com/" title="Microsoft Developer Network">the hand of God</a>. Add to that the fact that Microsoft has to get the message out to what probably amounts to millions of developers, and they need to make a lot of noise.</p>

<p>Compare this again to <acronym title="XML User Interface Language">XUL</acronym>: it&rsquo;s <em>not</em> the default framework for the most used operating system in the world; it has a handful of &lsquo;big&rsquo; adopters (who are, in terms of user base, significantly smaller than that of Windows) and a (relatively) small, vocal developer-base. </p>

<p>The point, however, is that <acronym title="XML User Interface Language">XUL</acronym> and <acronym title="eXtensible Application Markup Language">XAML</acronym> have very similar goals in mind: seperation of interface structure and presentation from &lsquo;logic&lsquo;.</p>

<h2>Implementation</h2>

<p>As a very strong advocate of semantic, accessible web development, the implementation details of <acronym title="eXtensible Application Markup Language">XAML</acronym> grate against my nerves slightly, but not as much as you might think. </p>

<h3>Usability</h3>

<blockquote>
  <p>Look at the CD Catalogue, that’s less usable friendly than what Amazon is. That makes me wonder if the web is turning too looks specific. <em>Soon the content will be forgotten and it’ll only be about looks</em>. With that, it looks as though its taking the focus of what the web’s built for (&lsquo;To house globally accessible documents&rsquo;).</p>
</blockquote>

<p>I&rsquo;m not sure Zach&rsquo;s comparison of the <acronym title="Compact Disc">CD</acronym> Catalogue tech demo with <a href="http://www.amazon.com/">Amazon</a> is a fair one; a better one would be to something like <a href="http://www.steelskies.com/coverflow/HomePage.html">CoverFlow</a> with Amazon integration. It&rsquo;s also worth bearing in mind that this is a tech demo we&rsquo;re talking about, <em>not a final product</em>. </p>

<p>Further, I would reiterate the point that <acronym title="eXtensible Application Markup Language">XAML</acronym> is for <em>applications</em>, not documents.</p>

<h3>Semantics</h3>

<p>Zach also laments the lack of semantics within <acronym title="eXtensible Application Markup Language">XAML</acronym>, referencing setting an attribute value (<code>Value="verticalgradient LimeGreen Green"</code>), rather than some seperate, more semantic notation (he seperates the three values into their own attributes). </p>

<p>This is one point I&rsquo;d tend to agree with Zach on and, in fact, take one step further: if Microsoft <em>really</em> want to seperate things, allow seperation of structure from presentation, too. As I noted earlier, I&rsquo;ve a strong feeling that this is already possible, to some degree but, if it is, it&rsquo;s almost certainly not enforced in any way (like, say, a completely different markup tailored for each, with some form of referencing).</p>

<h3>Platform specificity</h3>

<blockquote>
  <p>Every year more people are switching to a Mac for various reasons(I’m not going to get into a debate here), what about them? Will Mac retaliate and do their own version thus leaving Windows users in the dark on some of the web pages. Will their [sic] be a port? Will it get taken back by Microsoft in the hope to fish some Mac users over?</p>
</blockquote>

<p>Looking at the direction Microsoft appear to be taking with their <a href="http://www.microsoft.com/products/expression/en/interactive_designer/default.aspx">Sparkle Interactive Designer</a> (as a tool to create rich applications on Windows and the web), you can almost taste the &lsquo;we want a piece of Flash&rsquo; sentiment. Add to that the fact that Microsoft explicitly state that the output from Sparkle will work cross platform and device (in their <a href="http://www.microsoft.com/products/expression/en/demos.aspx" title="Microsoft Expression Tours &amp; Demos">Expression family tour</a>). I wouldn&rsquo;t be in the least surprised if we see:</p>

<ul>
<li>A gradual uptake (mostly by <a href="http://www.fujitsu-siemens.com/" title="Fujitsu Siemens Computers, the company I work for">Microsoft shops</a> and geeks, initially) of Sparkle in addition to Flash (or, perhaps, instead of, for some geeks).</li>
<li>A cross-platform .Net runtime environment that is, in some way, endorsed by Microsoft. This might be in the form of support for <a href="http://www.mono-project.com/">Mono</a> or the like, some extension of the current <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=3A1C93FA-7462-47D0-8E56-8DD34C6292F0&amp;displaylang=en">shared source initiative</a>, a fully-fledged, Microsoft-built .Net runtime for the Mac and <abbr title="Unix-style operating systems">*nix</abbr>, or something in between.</li>
</ul>

<h2>Final thoughts</h2>

<p>This is something I&rsquo;ve actually been mulling over for quite a while and, much as I don&rsquo;t like the approach Microsoft are taking in terms of the actual markup, I can see <acronym title="eXtensible Application Markup Language">XAML</acronym> making my life (and the lives of those I work with) far, far easier when we have to manage future application interfaces.</p>

<p>It <em>is</em> far from the panacea Microsoft are suggesting that it is, but it is still <em>far</em> superior to the current code-soup approach in most Windows&nbsp;applications.</p>]]></content:encoded>
			<wfw:commentRss>http://nascentguruism.com/journal/xaml-an-insiders-look-out/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

