<?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>mitcho.com &#187; interface</title>
	<atom:link href="http://mitcho.com/blog/tag/interface/feed/" rel="self" type="application/rss+xml" />
	<link>http://mitcho.com</link>
	<description></description>
	<lastBuildDate>Fri, 10 Feb 2012 23:24:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19719</generator>
		<item>
		<title>The Ubiquity Persistence Project: exploring a persistent Ubiquity in the toolbar</title>
		<link>http://mitcho.com/blog/projects/the-ubiquity-persistence-project/</link>
		<comments>http://mitcho.com/blog/projects/the-ubiquity-persistence-project/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 19:50:13 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[participate]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[ubiquity]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=2781</guid>
		<description><![CDATA[It&#8217;s often hard to remember Ubiquity&#8217;s presence and keystroke without a visual reminder—even I often forget that I could use Ubiquity and end up going to a search engine or using the search bar for some quick lookup task. What if the Ubiquity input were in the toolbar and always visible? How would that affect [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/' rel='bookmark' title='User-Aided Disambiguation: a demo'>User-Aided Disambiguation: a demo</a></li>
<li><a href='http://mitcho.com/blog/projects/count-command-for-ubiquity/' rel='bookmark' title='Count command for Ubiquity'>Count command for Ubiquity</a></li>
<li><a href='http://mitcho.com/blog/projects/exploring-command-chaining-in-ubiquity-part-1/' rel='bookmark' title='Exploring Command Chaining in Ubiquity: Part 1'>Exploring Command Chaining in Ubiquity: Part 1</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s often hard to remember Ubiquity&#8217;s presence and keystroke without a visual reminder—even I often forget that I could use Ubiquity and end up going to a search engine or using the search bar for some quick lookup task. <strong>What if the Ubiquity input were in the toolbar and always visible?</strong> How would that affect people&#8217;s use of Ubiquity? And what could we make that look like and how would it behave? Today we&#8217;re kicking off the Ubiquity Persistence Project, a new Ubiquity initiative to explore what a persistent Ubiquity might look like in the Firefox toolbar.</p>

<p><a rel='lightbox' href="http://mitcho.com/blog/wp-content/uploads/2009/08/Screen-shot-2009-08-20-at-12.48.43-PM.png" alt="The Persistence tool"><img src="http://mitcho.com/blog/wp-content/uploads/2009/08/persistence-small.png" alt="persistence-small.png" border="0" width="650" height="484" /></a></p>

<p>In order to facilitate this discussion, we created the Persistence tool. With the Persistence tool you can quickly try out new design and interaction ideas, mocking things up with some simple <a href="http://jquery.com">jQuery</a>-powered JavaScript and CSS and see your changes live. The Persistence tool is bundled with our <a href="http://ubiquity.mozilla.com/xpi/ubiquity-latest-beta.xpi">latest Ubiquity beta</a> (install link).</p>

<p><object width="649" height="365"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6197526&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6197526&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="649" height="365"></embed></object></p>

<p><a href="http://vimeo.com/6197526">The Ubiquity Persistence Project: exploring a persistent Ubiquity in the toolbar</a> from <a href="http://vimeo.com/mitchoyoshitaka">mitcho</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>I just put together a screencast introducing the initiative, demoing the Persistence tool, as well as talking about this project&#8217;s relation to the ongoing work on <a href="http://wiki.mozilla.org/Taskfox">Taskfox</a>. We&#8217;ll look forward to your comments and designs! <img src='http://mitcho.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/' rel='bookmark' title='User-Aided Disambiguation: a demo'>User-Aided Disambiguation: a demo</a></li>
<li><a href='http://mitcho.com/blog/projects/count-command-for-ubiquity/' rel='bookmark' title='Count command for Ubiquity'>Count command for Ubiquity</a></li>
<li><a href='http://mitcho.com/blog/projects/exploring-command-chaining-in-ubiquity-part-1/' rel='bookmark' title='Exploring Command Chaining in Ubiquity: Part 1'>Exploring Command Chaining in Ubiquity: Part 1</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/the-ubiquity-persistence-project/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>A Visual Guide to Community Command Localization</title>
		<link>http://mitcho.com/blog/projects/a-visual-guide-to-community-command-localization/</link>
		<comments>http://mitcho.com/blog/projects/a-visual-guide-to-community-command-localization/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 22:11:30 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[commands]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[internationalization]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[l10n]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[Matt Mullenweg]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[ubiquity]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=2475</guid>
		<description><![CDATA[A natural language interface is only &#8220;natural&#8221; if it&#8217;s in your natural language. With this mantra in mind, we&#8217;ve been making steady progress on the challenging problem of Ubiquity localization. The first fruit of this research is in the localization of the parser and bundled commands in Ubiquity 0.5. Here today is a visual guide [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/ubiquity-localization-update/' rel='bookmark' title='Ubiquity Localization Update'>Ubiquity Localization Update</a></li>
<li><a href='http://mitcho.com/blog/projects/localizing-commands-for-ubiquity-0-5/' rel='bookmark' title='Localizing Commands for Ubiquity 0.5'>Localizing Commands for Ubiquity 0.5</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-localization-whats-new-whats-next/' rel='bookmark' title='Ubiquity Localization: What&#8217;s New, What&#8217;s Next'>Ubiquity Localization: What&#8217;s New, What&#8217;s Next</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/">natural language interface</a> is only &#8220;natural&#8221; if it&#8217;s in your natural language. With this mantra in mind, we&#8217;ve been making steady progress on the challenging problem of <a href="http://ubiquity.mozilla.com">Ubiquity</a> localization. The first fruit of this research is in the localization of the parser and bundled commands <a href="http://mitcho.com/blog/projects/ubiquity-localization-whats-new-whats-next/">in Ubiquity 0.5</a>. Here today is a visual guide on command localization in Ubiquity and different options we can take in attacking the community command localization problem.<span id="more-2475"></span></p>

<h3>Command localization in Ubiquity 0.5</h3>

<p>A few important design decisions have already been made in implementing command localization in Ubiquity 0.5. The first was the choice of the <a href="http://en.wikipedia.org/wiki/gettext">gettext</a> po (portable object) file format. The po format is a de facto industry standard with many tools built for the format and this design choice hopefully lower the bar for prospective localizers.</p>

<p>Second, in order to simplify the matching of localizations and commands, we require that each command feed have one localization po file, rather than splitting the localizations of different commands across multiple po files.</p>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/07/dist.png" alt="dist.png" border="0" width="650" height="250" /></p>

<p>Finding the appropriate localization po file for a JavaScript command feed is very simple with bundled commands as the files are managed in our main repository so we know exactly where to find them. We just take the command feed&#8217;s filename sans extension—the <em>feed key</em>—and look for <code>localizations/</code><em>lang</em><code>/</code><em>feed key</em><code>.po</code>, where <em>lang</em> is the active language code. This gives us a simple one to one relationship between the JavaScript command feed source and the appropriate localization.</p>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/07/local.png" alt="local.png" border="0" width="650" height="218" /></p>

<h3>Background</h3>

<p>The ability of users to <a href="https://wiki.mozilla.org/Labs/Ubiquity/Ubiquity_0.5_Author_Tutorial">easily write their own Ubiquity commands</a> has always been a huge strength of the Ubiquity platform. Users can also &#8220;subscribe&#8221; to commands written by other users on other servers. In this case, local copies of those command sources are made.</p>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/07/distcmds.png" alt="distcmds.png" border="0" width="650" height="420" /></p>

<p>The <a href="http://ubiquity.mozilla.com/herd/">herd</a> was developed as a dynamic aggregator of community Ubiquity commands. The herd keeps its own copy of each command source. The herd groups mirrors of command feeds on multiple servers together as well, giving each unique command feed a unique ID.</p>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/07/herd.png" alt="herd.png" border="0" width="650" height="240" /></p>

<h3>Localizing distributed resources</h3>

<p>This distributed nature of the command feeds is exactly what complicates the localization of community commands. The original sources themselves are distributed, and we also want a community of localizers to be able to localize the commands—i.e., for the localizations to be (in some sense) distributed. Here I will present three options which I believe could be the basis for a winning solution, in order of more distributed to less distributed.</p>

<p>All three of these options have the property that localizations do not need to be &#8220;approved&#8221; or &#8220;managed&#8221; by the command author. For example, a possible standard where URL&#8217;s of localizations must be in the command feed is not considered. I believe this is a crucial property of any approach we decide on.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>

<h4>Option 1: a completely distributed option</h4>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/07/option1.png" alt="herd.png" border="0" width="650" height="300" /></p>

<p>In this option, localizers simply put the po files on their own servers (or some code snippet site such as github) and the user must then subscribe to those localizations much as they subscribe to commands now.</p>

<h4>Option 2: registration and discovery through the herd</h4>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/07/option2.png" alt="herd.png" border="0" width="650" height="400" /></p>

<p>In this option, localizers put po files up on their own servers and then register that po file&#8217;s URL with the herd. The herd keeps track of each command feed&#8217;s localizations in different languages.</p>

<h4>Option 3: localizations on the herd</h4>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/07/option3.png" alt="herd.png" border="0" width="650" height="340" /></p>

<p>In this option, po localizations are uploaded right onto the herd. The herd is the centralized repository of all localizations for each command feed.</p>

<h3>Users first</h3>

<p>In coming up with a criteria for judging different models of community command localization, I think it is helpful to think of the end-user experience. Right now to subscribe to a new command a user must find the command (perhaps via the herd) and click on the subscribe button, then in most cases confirm that they are aware of the possible dangers and confirm subscription.<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> What work is required for a user to subscribe to a new command <em>and get it in their language</em>?</p>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/07/subscribe.png" alt="herd.png" border="0" width="650" height="40" /></p>

<p>Under option one, the user would somehow have to find the localization scattered someplace on the internet of their own accord, and then install that localization by themself. In my mind, this is clearly a no go. With options two or three, however, when a user subscribes to a command feed Ubiquity can check with the herd to see whether there are any localizations available. The localizations could be offered to the user or the localization for the currently active language could be automatically installed. There are, on the other hand, disadvantages to requiring a centralized authority, exemplified by the fact that the current iteration of the herd itself has often been down.</p>

<h3>Summary and a call for comments</h3>

<p>As laid out in this visual guide, I personally have a couple main criteria which I believe we should follow:</p>

<ol>
<li><strong>localization independence</strong>: Command authors should not have to manage their commands&#8217; localizations. (See footnote 1.)</li>
<li><strong>friendly discovery and subscription</strong>: Users should not have to go out and find localizations by themselves. Localizations should be offered to the user.</li>
</ol>

<p>With these criteria, I&#8217;m pretty sure the only logical conclusion is that we need some level of centralization, pointing to options two and three. <strong>If you think of another option which satisfies these criteria, or disagree with the criteria above, I would love to know.</strong> In addition, <strong>have you encountered similar problems of localizing distributed resources elsewhere? What worked there?</strong></p>

<p>If this problem has been solved before, there is no need to reinvent the wheel. As far as I can tell, however, this could be a particularly hairy problem.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>This strong view is based on my own experience as a <a href="http://mitcho.com/code/yarpp/">WordPress plugin author</a> and a subsequent conversation with <a href="http://en.wikipedia.org/wiki/Matt Mullenweg">Matt Mullenweg</a>. The WordPress plugin ecosystem requires that plugin authors orchestrate localizations and bundle them into releases. In the case of my plugin, this requires regular contact with over a dozen localizers.<br/>The case of WordPress plugins is actually much like that of Ubiquity commands&#8230; the plugins can be served on any server, distributed, but there is also a central repository, <a href="http://wordpress.org/extend/">wordpress.org/extend</a>.<br/>Matt and I agreed that if localizers could somehow localize plugins without going through the command author, most of whom produce their plugins by volunteering their time, the localization of plugins could be much more popular. Indeed, some localizers go ahead and publish po files for popular plugins, but those localizations are hard to find as there is no repository for the localizations either.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>As I&#8217;ve <a href="http://mitcho.com/blog/projects/friendlier-command-feed-subscription/">written before about Ubiquity&#8217;s command subscription</a>, there is much we can improve in this area of Ubiquity&#8217;s user experience.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/ubiquity-localization-update/' rel='bookmark' title='Ubiquity Localization Update'>Ubiquity Localization Update</a></li>
<li><a href='http://mitcho.com/blog/projects/localizing-commands-for-ubiquity-0-5/' rel='bookmark' title='Localizing Commands for Ubiquity 0.5'>Localizing Commands for Ubiquity 0.5</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-localization-whats-new-whats-next/' rel='bookmark' title='Ubiquity Localization: What&#8217;s New, What&#8217;s Next'>Ubiquity Localization: What&#8217;s New, What&#8217;s Next</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/a-visual-guide-to-community-command-localization/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubiquity 0.5 日本語紹介ビデオ</title>
		<link>http://mitcho.com/blog/projects/ubiquity-0-5-%e6%97%a5%e6%9c%ac%e8%aa%9e%e7%b4%b9%e4%bb%8b%e3%83%93%e3%83%87%e3%82%aa/</link>
		<comments>http://mitcho.com/blog/projects/ubiquity-0-5-%e6%97%a5%e6%9c%ac%e8%aa%9e%e7%b4%b9%e4%bb%8b%e3%83%93%e3%83%87%e3%82%aa/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 09:08:03 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[Japanese language]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[ubiquity]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=2389</guid>
		<description><![CDATA[今夜リリースされる Ubiquity の最新版、0.5 に備えて日本語で Ubiquity のスクリーンキャストを作ってみました。 Ubiquity 0.5 は特に多言語化を重視したリリースで、 Ubiquity 内蔵のコマンドが日本語とデンマーク語で使えるようになっています。是非インストールしてみてください！ 追伸： ７月３日現在、 Ubiquity 0.5 のリリースを遅らせる方向になったので、残念ながら今日はリリースされません。是非リリース後インストールしてみてください。 Ubiquity 0.5 日本語紹介ビデオ from mitcho on Vimeo. As Ubiquity 0.5 will be released soon (Thursday morning in Mountain View), I decided it was a good time to put together a screencast in Japanese demoing the use of the new [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/changes-to-ubiquity-parser-2-and-the-playpen/' rel='bookmark' title='Changes to Ubiquity Parser 2 and the Playpen'>Changes to Ubiquity Parser 2 and the Playpen</a></li>
<li><a href='http://mitcho.com/blog/projects/foxkeh-demos-ubiquity-parser-the-next-generation/' rel='bookmark' title='Foxkeh demos Ubiquity Parser: The Next Generation'>Foxkeh demos Ubiquity Parser: The Next Generation</a></li>
<li><a href='http://mitcho.com/blog/projects/a-demonstration-of-ubiquity-parser-2/' rel='bookmark' title='A Demonstration of Ubiquity Parser 2'>A Demonstration of Ubiquity Parser 2</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>今夜リリースされる <a href="http://ubiquity.mozilla.com">Ubiquity</a> の最新版、0.5 に備えて日本語で Ubiquity のスクリーンキャストを作ってみました。 Ubiquity 0.5 は特に多言語化を重視したリリースで、 Ubiquity 内蔵のコマンドが日本語とデンマーク語で使えるようになっています。是非<a href="http://ubiquity.mozilla.com">インストール</a>してみてください！</p>

<p><b>追伸：</b> ７月３日現在、 Ubiquity 0.5 の<a href="http://groups.google.com/group/ubiquity-firefox/browse_thread/thread/9073295d0281f768">リリースを遅らせる方向</a>になったので、残念ながら今日はリリースされません。是非リリース後インストールしてみてください。</p>

<p><object width="649" height="365"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5420966&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5420966&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="649" height="365"></embed></object><br /><a href="http://vimeo.com/5420966">Ubiquity 0.5 日本語紹介ビデオ</a> from <a href="http://vimeo.com/mitchoyoshitaka">mitcho</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>As Ubiquity 0.5 will be released soon (Thursday morning in Mountain View), I decided it was a good time to put together a screencast in Japanese demoing the use of the new Japanese parser and commands.</p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/changes-to-ubiquity-parser-2-and-the-playpen/' rel='bookmark' title='Changes to Ubiquity Parser 2 and the Playpen'>Changes to Ubiquity Parser 2 and the Playpen</a></li>
<li><a href='http://mitcho.com/blog/projects/foxkeh-demos-ubiquity-parser-the-next-generation/' rel='bookmark' title='Foxkeh demos Ubiquity Parser: The Next Generation'>Foxkeh demos Ubiquity Parser: The Next Generation</a></li>
<li><a href='http://mitcho.com/blog/projects/a-demonstration-of-ubiquity-parser-2/' rel='bookmark' title='A Demonstration of Ubiquity Parser 2'>A Demonstration of Ubiquity Parser 2</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/ubiquity-0-5-%e6%97%a5%e6%9c%ac%e8%aa%9e%e7%b4%b9%e4%bb%8b%e3%83%93%e3%83%87%e3%82%aa/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Hit List: Better Software Through Less UI</title>
		<link>http://mitcho.com/blog/link/the-hit-list-better-software-through-less-ui/</link>
		<comments>http://mitcho.com/blog/link/the-hit-list-better-software-through-less-ui/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 12:48:32 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[link]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[natural syntax]]></category>
		<category><![CDATA[tasks]]></category>
		<category><![CDATA[thought process]]></category>
		<category><![CDATA[ubiquity]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=1658</guid>
		<description><![CDATA[The Hit List is a to-do list app for Mac OS X with a beautiful interface and some nice features. Creator Andy Kim&#8217;s latest blog post (Better Software Through Less UI) is excellent reading for the Ubiquity community. He describes the thought process behind the design of a new clean and &#8220;frictionless&#8221; interface for specifying [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/' rel='bookmark' title='How natural should a natural interface be?'>How natural should a natural interface be?</a></li>
<li><a href='http://mitcho.com/blog/projects/friendlier-command-feed-subscription/' rel='bookmark' title='Friendlier command feed subscription'>Friendlier command feed subscription</a></li>
<li><a href='http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/' rel='bookmark' title='User-Aided Disambiguation: a demo'>User-Aided Disambiguation: a demo</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.potionfactory.com/thehitlist/">The Hit List</a> is a to-do list app for Mac OS X with a beautiful interface and some nice features. Creator Andy Kim&#8217;s latest blog post (<a href="http://www.potionfactory.com/blog/2009/03/10/better-software-through-less-ui">Better Software Through Less UI</a>) is excellent reading for the Ubiquity community. He describes the thought process behind the design of a new clean and &#8220;frictionless&#8221; interface for specifying how tasks are repeated. After throwing out the regular combinations and templates of different input widgets, <em>his solution was to implement a partial natural language input interface:</em></p>

<p><img src="http://www.potionfactory.com/files/blog/2009/03/repeating_task_1.png"/></p>

<blockquote>
  <p>There is no myriad of buttons and fields to choose from. All the user has to do is directly type in what he wants.</p>
</blockquote>

<p>Here are a couple other choice quotes which will ring true for the Ubiquity users and internationalization folks in the audience:</p>

<blockquote>
  <p>For this to work without driving the user mad, the natural language parser has to be near perfect. The last thing I want is for this to come out smelling like AppleScript.</p>
</blockquote>

<p><span></span></p>

<blockquote>
  <p><strong>Problems</strong><br/>This design isn&#8217;t perfect as it has two glaring problems. One is that the user has no easy way of discovering how complex the recurrence rules can be. This isn&#8217;t such a huge problem, but a way to solve this is to include a help button to show example rules or to include an accompanying iCal style UI to let the user setup the recurrence rule in a more typical fashion. I didn&#8217;t include these in the initial implementation though because I wanted to see how users would react to this kind of UI.<br/>Another problem is localization. Even if I write parsers for a few more popular languages, it won&#8217;t accommodate the rest of the users in the world. Again, the solution is an accompanying traditional UI, but for now, I&#8217;m leaving it the way it is until I get some feedback.</p>
</blockquote>

<p>There&#8217;s a trend in the wind, my friends: the incorporation of near-natural language for more <a href="http://humanized.com/weblog/2006/06/01/why_humane_is_a_better_word_than_usable/">humane</a> interfaces.</p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/' rel='bookmark' title='How natural should a natural interface be?'>How natural should a natural interface be?</a></li>
<li><a href='http://mitcho.com/blog/projects/friendlier-command-feed-subscription/' rel='bookmark' title='Friendlier command feed subscription'>Friendlier command feed subscription</a></li>
<li><a href='http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/' rel='bookmark' title='User-Aided Disambiguation: a demo'>User-Aided Disambiguation: a demo</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/link/the-hit-list-better-software-through-less-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubiquity Parser: The Next Generation Demo</title>
		<link>http://mitcho.com/blog/projects/ubiquity-parser-the-next-generation-demo/</link>
		<comments>http://mitcho.com/blog/projects/ubiquity-parser-the-next-generation-demo/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 03:13:17 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[arguments]]></category>
		<category><![CDATA[California]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[overlord verbs]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[proposal]]></category>
		<category><![CDATA[semantic role]]></category>
		<category><![CDATA[ubiquity]]></category>
		<category><![CDATA[verb-final]]></category>
		<category><![CDATA[verbs]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=1590</guid>
		<description><![CDATA[A week or two ago while visiting California, Jono and I had a productive charrette, resulting in a new architecture proposal for the Ubiquity parser, as laid out in Ubiquity Parser: The Next Generation. The new architecture is designed to support (1) the use of overlord verbs, (2) writing verbs by semantic roles, and (3) [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/writing-commands-with-semantic-roles/' rel='bookmark' title='Writing commands with semantic roles'>Writing commands with semantic roles</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/' rel='bookmark' title='Ubiquity in Firefox: Focus on Japanese'>Ubiquity in Firefox: Focus on Japanese</a></li>
<li><a href='http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/' rel='bookmark' title='User-Aided Disambiguation: a demo'>User-Aided Disambiguation: a demo</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><a href='http://mitcho.com/blog/wp-content/uploads/2009/03/parserdesign.jpg' rel='lightbox[parser]'><img src="http://mitcho.com/blog/wp-content/uploads/2009/03/parserdesign.jpg" alt="parserdesign" title="parserdesign" width="600" height="450" class="limages" /></a></p>

<p>A week or two ago while visiting California, <a href="http://jonoscript.wordpress.com">Jono</a> and I had a productive charrette, resulting in a new architecture proposal for the Ubiquity parser, as laid out in <a href="https://wiki.mozilla.org/User:Mitcho/ParserTNG">Ubiquity Parser: The Next Generation</a>. The new architecture is designed to support (1) the use of <a href="http://jonoscript.wordpress.com/2009/01/24/overlord-verbs-a-proposal/">overlord verbs</a>, (2) <a href="http://mitcho.com/blog/projects/writing-commands-with-semantic-roles/">writing verbs by semantic roles</a>, and (3) better suggestions for <a href="http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/">verb-final languages</a> and other argument-first contexts. I&#8217;m happy to say that I&#8217;ve spent some time putting a proof-of-concept together.</p>

<p>I&#8217;ve implemented the basic algorithm of this parser for <a href="http://en.wikipedia.org/wiki/left-branching">left-branching</a> languages (like English) and also implemented some fake English verbs, noun types, and semantic roles. This demo should give you a basic sense of how this parser will attempt to identify different types of arguments and check their noun types even without clearly knowing the verb. This should make the suggestion ranking much smarter, particularly for verb-final contexts. (For a good example, try <code>from Tokyo to San Francisco</code>.)</p>

<h3><a href="http://mitcho.com/code/ubiquity/parser-demo/">➔ Check out the Ubiquity next-gen parser demo</a></h3>

<p><span id="more-1590"></span></p>

<p>Clicking on the <em>environment info</em> will give you some information on the specific verbs, noun types, and roles implemented. You can also scroll through the <em>current parse</em> section to see the step by step derivation of how the suggested parses were constructed.</p>

<p>I&#8217;ll be flying about 15 hours in the next hour as I make my way back to Japan&#8230; hopefully I&#8217;ll make some more progress on the plane! I&#8217;ll look forward to your comments! <em>For those of you interested in checking out the code yourself, you can find it on <a href="http://bitbucket.org/mitcho/ubiquity-playground/">BitBucket</a>.</em></p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/writing-commands-with-semantic-roles/' rel='bookmark' title='Writing commands with semantic roles'>Writing commands with semantic roles</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/' rel='bookmark' title='Ubiquity in Firefox: Focus on Japanese'>Ubiquity in Firefox: Focus on Japanese</a></li>
<li><a href='http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/' rel='bookmark' title='User-Aided Disambiguation: a demo'>User-Aided Disambiguation: a demo</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/ubiquity-parser-the-next-generation-demo/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>User-Aided Disambiguation: a demo</title>
		<link>http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/</link>
		<comments>http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 06:08:24 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[ambiguity]]></category>
		<category><![CDATA[arguments]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[Japanese language]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[natural syntax]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[ubiquity]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=1572</guid>
		<description><![CDATA[A few weeks ago I made some visual mockups of how Ubiquity could look and act in Japanese. Part of this proposal was what I called &#8220;particle identification&#8221;: that is, immediate in-line identification of delimiters of arguments, which can be overridden by the user: The inspiration for this idea came from Aza&#8217;s blog post &#8220;Solving [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/' rel='bookmark' title='How natural should a natural interface be?'>How natural should a natural interface be?</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/' rel='bookmark' title='Ubiquity in Firefox: Focus on Japanese'>Ubiquity in Firefox: Focus on Japanese</a></li>
<li><a href='http://mitcho.com/blog/projects/friendlier-command-feed-subscription/' rel='bookmark' title='Friendlier command feed subscription'>Friendlier command feed subscription</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I made some visual mockups of <a href="http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/">how Ubiquity could look and act in Japanese</a>. Part of this proposal was what I called &#8220;particle identification&#8221;: that is, immediate in-line identification of delimiters of arguments, which can be overridden by the user:</p>

<p><center><img src='http://mitcho.com/blog/wp-content/uploads/2009/02/particle-id.png'/></center></p>

<p>The inspiration for this idea came from Aza&#8217;s blog post <a href="http://www.azarask.in/blog/post/solving-the-it-problem/">&#8220;Solving the &#8216;it&#8217; problem&#8221;</a> which advocates for this type of quick feedback to the user in cases of ambiguity. Such a method would help both the user better understand what is being interpreted by the system, as well as offer an opportunity for the user to correct improper parses. I just tried mocking up such an input box using <a href="http://jquery.com">jQuery</a>.</p>

<h3>➔ <a href='http://mitcho.com/code/ubiquity/ambiguity-demo/'>Try the User-Aided Disambiguation Demo</a></h3>

<p>If you have any bugfixes to submit or want to play around with your own copy, the demo code is <a href="http://bitbucket.org/mitcho/ubiquity-parser-tng/">up on BitBucket</a>. ^^ Let me know what you think!</p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/' rel='bookmark' title='How natural should a natural interface be?'>How natural should a natural interface be?</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/' rel='bookmark' title='Ubiquity in Firefox: Focus on Japanese'>Ubiquity in Firefox: Focus on Japanese</a></li>
<li><a href='http://mitcho.com/blog/projects/friendlier-command-feed-subscription/' rel='bookmark' title='Friendlier command feed subscription'>Friendlier command feed subscription</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/user-aided-disambiguation-a-demo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Friendlier command feed subscription</title>
		<link>http://mitcho.com/blog/projects/friendlier-command-feed-subscription/</link>
		<comments>http://mitcho.com/blog/projects/friendlier-command-feed-subscription/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 07:43:11 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[discoverability]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[learnability]]></category>
		<category><![CDATA[mockup]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[trust]]></category>
		<category><![CDATA[ubiquity]]></category>
		<category><![CDATA[useability]]></category>
		<category><![CDATA[verbs]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=1488</guid>
		<description><![CDATA[If you&#8217;ve ever subscribed to a new Ubiquity command before, you know the red screen of doom. Ubiquity currently takes users to this page every time they wish to subscribe to a new command. The current design is meant to encourage users to be aware of the possible security implications of enabling and executing a [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/' rel='bookmark' title='How natural should a natural interface be?'>How natural should a natural interface be?</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/' rel='bookmark' title='Ubiquity in Firefox: Focus on Japanese'>Ubiquity in Firefox: Focus on Japanese</a></li>
<li><a href='http://mitcho.com/blog/projects/selecting-from-ubiquity/' rel='bookmark' title='selecting from Ubiquity'>selecting from Ubiquity</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/02/doom.png" alt="doom.png" border="0" /></p>

<p>If you&#8217;ve ever subscribed to a new Ubiquity command before, you know the red screen of doom. Ubiquity currently takes users to this page every time they wish to subscribe to a new command. The current design is meant to encourage users to be aware of the possible security implications of enabling and executing a command, to avoid getting a <a href="http://en.wikipedia.org/wiki/trojan horse">trojan horse</a>.</p>

<p>The current screen, however, does not make subscribing to commands foolproof. I personally know I&#8217;ve subscribed to a number of commands without reading through the code, defeating the purpose of the anti-trojan horse display. Moreover, the page doesn&#8217;t give you any information on how you can use this new command. Especially given the inherent limited discoverability of a <a href="http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/">natural language interface</a>, taking a moment to help the user actually <em>learn</em> the command becomes key.</p>

<p>Today I did a quick mockup of what a friendlier command feed subscription page might look like. Take a look at this screenshot with some of the features marked:</p>

<p><center><a rel='lightbox[friendlierfeed]' href='http://mitcho.com/blog/wp-content/uploads/2009/02/new-subscription-page.png'><img src="http://mitcho.com/blog/wp-content/uploads/2009/02/new-subscription-page-small.png" alt="new-subscription-page-small.png" class='limages' /></a></center></p>

<p>You can also check out <a href="http://mitcho.com/code/ubiquity/subscriptionmockup/">the page itself</a>. If you&#8217;d like to visualize it without the &#8220;trust&#8221; warning, you can also view <a href="http://mitcho.com/code/ubiquity/subscriptionmockup/?trust=1">the trusted version</a>.</p>

<p>This mockup here is but a first iteration. <strong>What do you think about this subscription page? What is missing? What should be changed?</strong></p>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/' rel='bookmark' title='How natural should a natural interface be?'>How natural should a natural interface be?</a></li>
<li><a href='http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/' rel='bookmark' title='Ubiquity in Firefox: Focus on Japanese'>Ubiquity in Firefox: Focus on Japanese</a></li>
<li><a href='http://mitcho.com/blog/projects/selecting-from-ubiquity/' rel='bookmark' title='selecting from Ubiquity'>selecting from Ubiquity</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/friendlier-command-feed-subscription/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Ubiquity in Firefox: Focus on Japanese</title>
		<link>http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/</link>
		<comments>http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 11:08:14 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[argument structure]]></category>
		<category><![CDATA[arguments]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[Japanese language]]></category>
		<category><![CDATA[linguistics]]></category>
		<category><![CDATA[mockup]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[ubiquity]]></category>
		<category><![CDATA[verbs]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=1466</guid>
		<description><![CDATA[One of the eventual goals of the Ubiquity project is to bring some of its functionality and ideas to Firefox proper. To this end, Aza has been exploring some possible options for what that would look like (round 1, round 2). All of his mockups, however, use English examples. I&#8217;m going to start exploring what [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/three-ways-to-argue-over-arguments/' rel='bookmark' title='Three ways to argue over arguments'>Three ways to argue over arguments</a></li>
<li><a href='http://mitcho.com/blog/projects/contribute-how-your-language-identifies-its-arguments/' rel='bookmark' title='Contribute: how your language identifies its arguments'>Contribute: how your language identifies its arguments</a></li>
<li><a href='http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/' rel='bookmark' title='How natural should a natural interface be?'>How natural should a natural interface be?</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>One of the eventual goals of the <a href="http://ubiquity.mozilla.com">Ubiquity project</a> is to bring some of its functionality and ideas to Firefox proper. To this end, <a href="http://azarask.in">Aza</a> has been exploring some possible options for what that would look like (<a href="http://www.azarask.in/blog/post/ubiquity-in-firefox-round-1/">round 1</a>, <a href="http://www.azarask.in/blog/post/ubiquity-in-the-firefox-round-2/">round 2</a>). All of his mockups, however, use English examples. I&#8217;m going to start exploring what Ubiquity in Firefox might look like in different kinds of languages. Let&#8217;s kick this off with my mother tongue, Japanese.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>

<p><em>今後多様な言語に対応したFirefox内のUbiquityを検討していきますが、その中でも今日は日本語をとりあげます。後日日本語で同じ内容を投稿するつもりです。^^</em> <strong>日本語でのコメントも大歓迎です！</strong></p>

<p><span id="more-1466"></span></p>

<h3>What commands look like in Japanese</h3>

<p>Japanese is not only just a verb-final language but it is strongly <a href="http://en.wikipedia.org/wiki/head-final">head-final</a>, meaning it has postpositions instead of prepositions, direct objects come before verbs, and adjectives precede nouns. In terms of <a href="http://mitcho.com/blog/projects/three-ways-to-argue-over-arguments/">how it identifies its arguments</a>, every argument has a postposition/case marker (called a <em>particle</em> in the Japanese literature) which marks its role in the sentence.</p>

<p>A couple common particles we&#8217;ll look at in this example include -を (<em>-o</em>) which marks the direct object (accusative case, you might say) and -に (<em>-ni</em>) which acts like English &#8220;to&#8221; (dative case). The example sentence we&#8217;ll look at today is:</p>

<table border='0'>
<tr><td>ケーキを</td><td>ブレアに</td><td>送って</td><td>(ください)</td></tr>
<tr><td><em>kēki-o</em></td><td><em>burea-ni</em></td><td><em>okuʔte</em></td><td><em>kudasai</em></td></tr>
<tr><td>cake.ACC</td><td>Blair.DAT</em></td><td>send.IMP</td><td>&#8220;please&#8221;</td></tr>
<tr><td colspan='4'>&#8220;Please send a cake to Blair.&#8221;</td></tr>
</table>

<p>(Note: ʔ is a <a href="http://en.wikipedia.org/wiki/glottal stop">glottal stop</a>. ACC=accusative, DAT=dative, and IMP=imperative form.)</p>

<p>That final ください is often dropped in very casual speech and, as it adds no new information, we&#8217;ll assume today that the user will not enter it. Finally, Japanese doesn&#8217;t use spaces in their orthography, so the actual input would be &#8220;ケーキをブレアに送って&#8221;.</p>

<h3>Mockup 1: Particle identification</h3>

<p>One of the major hurdles in working with Japanese is that there are no spaces between the words. The natural first step is to split the sentence up into words, but this is a very difficult problem in <a href="http://en.wikipedia.org/wiki/Natural Language Processing">NLP</a> which <a href="http://research.microsoft.com/en-us/projects/japanesenlp/default.aspx">big name research groups</a> actively work on.</p>

<p>Fortunately, however, in <a href="http://www.azarask.in/blog/post/solving-the-it-problem/">&#8220;Solving the &#8216;It&#8217; Problem&#8221;</a> Aza suggests that, when we encounter ambiguity in our input, we can <em>go ask the user</em>. Great minds think alike, and computer scientist <a href="http://en.wikipedia.org/wiki/Jean E. Sammet">Jean E. Sammet</a> suggested the same idea <a href="http://doi.acm.org/10.1145/365230.365274">way back in 1953</a>:</p>

<blockquote>
  <p>Using English [or any other natural language] definitely involves the requirement for the computer (or more accurately its programming system) to query the user about any possible ambiguity.</p>
</blockquote>

<p>Parsing a sentence into words, in the limited context of Ubiquity, is really about identifying the particles which mark the end of each argument. Here&#8217;s a mockup of an application of the Sammet-Raskin Method to this problem:</p>

<p><center><img src="http://mitcho.com/blog/wp-content/uploads/2009/02/particle-id.png" alt="particle-id.png" border="0" /></center></p>

<p><strong>Pros:</strong> This completely takes care of the word-breaking problem, with minimal arbitration from the user. The parser knows <em>exactly</em> what arguments it&#8217;s dealing with and the visual feedback means the user won&#8217;t be surprised by the parse.</p>

<p><strong>Cons:</strong> Most of the particles/postpositions we&#8217;d have to deal with are a single character, so they may show up pretty often within words, in which case it would be quite annoying to have to press escape after each one.</p>

<p>An even smarter system, when wanting to mark a character as a particle, would first check to see that the argument (before the particle) is a valid argument type for that particle. If the check fails, it doesn&#8217;t have to bother with suggesting that character as a particle. This may cut down on the false positives.</p>

<h3>Smart suggestions: what works, what doesn&#8217;t</h3>

<p>One of the key suggestions in Aza&#8217;s mockups include a way to choose the prepositions while entering your arguments, based on the current verb.</p>

<p>For example, here, the <code>translate</code> command accepts a direct object, a <em>to</em>-object, and a <em>from</em>-object, so little <code>to</code> and <code>from</code> markers magically show up on the right side, making the appropriate prepositions (and by extension the appropriate arguments) discoverable. I think this line of thinking is a really good one, at least for English.</p>

<p><center><a class='limages' rel='lightbox[verbfinal]' href='http://farm4.static.flickr.com/3359/3272673947_05b4a21881_o.jpg'><img src='http://farm4.static.flickr.com/3359/3272673947_14b59c2aa1.jpg'></a></center></p>

<p><strong>In a verb-final language, however, you enter the arguments first and then the verb, making this strategy of suggesting appropriate arguments impossible.</strong> Note that in the user-contributed spreadsheet of <a href="http://mitcho.com/blog/projects/contribute-how-your-language-identifies-its-arguments/">how languages identify their arguments</a> we see that about a quarter of the languages we looked at are verb-final—that is, with Subject-Object-Verb canonical word order.</p>

<p>Instead of seeing this as a disadvantage, however, let&#8217;s see what verb-final order <em>allows</em> us to do.</p>

<h3>Mockup 2: A different kind of suggestion</h3>

<p>Not all verbs allow for every different kind of particle. For example, it doesn&#8217;t make sense to have a -に (<em>-ni</em>, &#8220;to&#8221; or dative) argument for a verb like 検索して (<em>kensaku-shite</em>, &#8220;search for&#8221;). In English we used this to suggest different types of arguments given a specific verb. In a verb-final language, we could do this <em>backwards</em>.</p>

<p><center><img src="http://mitcho.com/blog/wp-content/uploads/2009/02/verb-suggestion.png" alt="verb-suggestion.png" border="0" /></center></p>

<p><strong>Pros:</strong> This makes verbs highly discoverable, given a certain argument structure. For example, if you enter a few arguments, like a direct object, a &#8220;to&#8221; argument, and a &#8220;from&#8221; argument, it&#8217;ll suggest verbs that will do something to an object from somewhere to somewhere else. This way, you can easily try out verbs you didn&#8217;t even know existed. It&#8217;ll only give you verbs appropriate for your arguments, reducing the chance of writing a an infelicitous command.</p>

<p><strong>Cons:</strong> Without knowing what kinds of actions are available, it may be difficult to know what kinds of arguments to enter in the first place. If you have a specific verb or service you want to use it may be counterintuitive or downright tricky to start by guessing the right set of arguments.</p>

<p>In addition, from a technical point of view, this requires much of the prediction algorithms in English Ubiquity to run backwards. Ideally, there would be a closed (predetermined) class of particles and a predefined set of noun types. Verbs would not be able to define their own modifiers and noun classes as easily or freely as they can now.</p>

<h3>Conclusion</h3>

<p>The properties and challenges of Japanese grammar require that we not try to outright copy the English behavior but to think about what really makes sense in that language and that may be an important lesson as we move toward designing a localizable Ubiquity. Please post your questions and criticisms of this design or post your own mockups!</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>Happy <a href="http://www.un.org/depts/dhl/language/index.html">International Mother Language Day</a>! ^^&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/three-ways-to-argue-over-arguments/' rel='bookmark' title='Three ways to argue over arguments'>Three ways to argue over arguments</a></li>
<li><a href='http://mitcho.com/blog/projects/contribute-how-your-language-identifies-its-arguments/' rel='bookmark' title='Contribute: how your language identifies its arguments'>Contribute: how your language identifies its arguments</a></li>
<li><a href='http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/' rel='bookmark' title='How natural should a natural interface be?'>How natural should a natural interface be?</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/ubiquity-in-firefox-japanese/feed/</wfw:commentRss>
		<slash:comments>86</slash:comments>
		</item>
		<item>
		<title>How natural should a natural interface be?</title>
		<link>http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/</link>
		<comments>http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 11:00:14 +0000</pubDate>
		<dc:creator>mitcho</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Mozilla Planet]]></category>
		<category><![CDATA[natural syntax]]></category>
		<category><![CDATA[tasks]]></category>
		<category><![CDATA[ubiquity]]></category>

		<guid isPermaLink="false">http://mitcho.com/blog/?p=1382</guid>
		<description><![CDATA[I&#8217;m very happy to announce that, starting today, I will be working full-time on Ubiquity, a Mozilla Labs experiment to connect the web with language. I&#8217;ll be heading up research on different linguistic issues of import to a linguistic user interface and blogging about these topics here. If you&#8217;re interested, please subscribe to my blog&#8217;s [...]
Related posts:<ol>
<li><a href='http://mitcho.com/blog/projects/yarpp-3-templates/' rel='bookmark' title='Using Templates with YARPP 3'>Using Templates with YARPP 3</a></li>
<li><a href='http://mitcho.com/blog/observation/testing-googles-language-detection/' rel='bookmark' title='Testing Google&#8217;s Language Detection'>Testing Google&#8217;s Language Detection</a></li>
<li><a href='http://mitcho.com/blog/observation/%e5%8f%8e%e9%9b%86-vs-%e5%9b%9e%e5%8f%8e-and-better-word-meanings-through-usage/' rel='bookmark' title='回収 vs. 収集 and Better Word Meanings Through Usage'>回収 vs. 収集 and Better Word Meanings Through Usage</a></li>
</ol>

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><em>I&#8217;m very happy to announce that, starting today, I will be working full-time on <a href="http://ubiquity.mozilla.com">Ubiquity</a>, a <a href="http://labs.mozilla.com">Mozilla Labs</a> experiment to connect the web with language. I&#8217;ll be heading up research on different linguistic issues of import to a linguistic user interface and blogging about these topics here. If you&#8217;re interested, please subscribe to <a href="http://mitcho.com/blog/feed/blog-only/">my blog&#8217;s RSS feed</a> or <a href="http://mitcho.com/blog/tag/ubiquity/feed/">the RSS feed for only Ubiquity-related items</a>. Commenting is encouraged! ^^</em></p>

<p>Every day, more users are trying out Ubiquity, the Mozilla Labs experiment that lets users accomplish common Internet tasks faster through a natural language interface. As we live more and more of our lives on the web, there is a huge appeal to—and need for—a faster way to access and mashup our information.</p>

<p>But what exactly do we mean by a &#8220;natural language interface&#8221;? Is it just another programming language with lots of English keywords? Should the final goal be a computer that understands everything we tell it?</p>

<p><img src="http://mitcho.com/blog/wp-content/uploads/2009/02/ubiqhal2.jpg" alt="Ubiquity is not HAL" title="I'm sorry Dave, I'm afraid I can't do that." width="650" height="220" /></p>

<p>As we think about the future directions and possibilities of Ubiquity, we need to go back to our roots and understand the project&#8217;s motivations. With that in mind, here are some initial thoughts on the advantages of a natural language interface. The ultimate goal here is to refine the notion of natural language interface and to come up with a set of principles that we can follow in pushing Ubiquity further, into other languages and beyond.</p>

<p><span id="more-1382"></span></p>

<h3>Why language?</h3>

<p>In his <a href="http://doi.acm.org/10.1145/1330526.1330535">2008 article in interactions</a>, <a href="http://azarask.in">Aza</a> describes a clear need for modern UI to move beyond monolithic do-everything apps into efficient, granular commands that can be connected to accomplish tasks. Hierarchical menus with an application&#8217;s every possible function are great for discoverability, but slow and inefficient as they grow. Aza advocates for the use of a familiar subset of natural language to this end. In his own words,</p>

<blockquote>
  <p>Words can capture abstractions that pictures cannot because language has an immense amount of descriptive and differentiating power. Abstract thoughts are exactly represented by the words that give them names. It is this power that comes to the rescue in specifying functionality.</p>
</blockquote>

<p>In other words, language gives us the descriptive power to succinctly and creatively express our will, far faster than a series of menus, and with more freedom than a series of shortcuts or gestures. In addition, by tapping into the lexicon of our every day language, we make a direct attack on the learnability problem.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>

<h3>The natural syntax test</h3>

<p>The ability to string different commands together is not a novel one—indeed, this is what more traditional command lines and programming languages offer. However, these technologies present a huge barrier to the layperson, even for languages with many keywords from English or English-like syntax.</p>

<p>Programming languages can be such teases in this way. Often the first bits of code in a language look remarkably similar to natural language (<a href="http://en.wikipedia.org/wiki/Python">Python</a>):</p>


<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hello World&quot;</span></pre></div></div>


<p>&#8230;but the young coder is quickly disappointed:</p>


<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #008000;">map</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> x: x<span style="color: #66cc66;">*</span><span style="color: #ff4500;">2</span>, <span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">2</span>,<span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></div></div>


<p><a href="http://en.wikipedia.org/wiki/AppleScript">AppleScript</a> is a language which tries to take this idea further and, indeed, sometimes AppleScript code constitutes readable English.</p>


<div class="wp_syntax"><div class="code"><pre class="applescript" style="font-family:monospace;"><span style="color: #0066ff;">print</span> pages <span style="color: #000000;">1</span> <span style="color: #ff0033;">thru</span> <span style="color: #000000;">5</span> <span style="color: #ff0033; font-weight: bold;">of</span> <span style="color: #0066ff;">document</span> <span style="color: #000000;">2</span></pre></div></div>


<p>Dig a little deeper, though, and AppleScript also fails the &#8220;natural syntax&#8221; test. In fact, it can be argued that a language that <em>looks</em> like a natural language but differs in some important details can be even more difficult to use than one that is completely novel. Bill Cook, one of the original developers of <a href="http://en.wikipedia.org/wiki/AppleScript">AppleScript</a>, makes this point in <a href="http://www.cs.utexas.edu/~wcook/Drafts/2006/ashopl.pdf">his history of AppleScript</a>: &#8220;in hindsight, it is not clear whether it is easier for novice users to work with a scripting language that resembles natural language, with all its special cases and idiosyncrasies.&#8221;</p>

<p><strong>If the interface&#8217;s syntax is too restrictive or, worse, conflicts with a user&#8217;s natural intuitions about their natural language, it immediately fails to be &#8220;natural&#8221;, no matter how similar the keywords or grammar is.</strong><sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup></p>

<h3>Towards a natural (and forgiving) syntax</h3>

<p>Aza similarly laments the relegation of text-based interfaces to the higher echelons of geekdom in his 2008 paper: &#8220;if commands were memorable, and their syntax <em>forgiving</em>, perhaps we wouldn&#8217;t be so scared to reconsider these interface paradigms.&#8221;</p>

<p>The key word &#8220;forgiving&#8221; above (emphasis mine) is two-ways ambiguous, both of which we want a natural language interface to be:</p>

<ol>
<li><em>Forgiving</em> as in &#8220;not difficult to learn and remember&#8221;: the syntax must be easy and natural for the user, encouraging experimentation and intuitive application;</li>
<li><em>Forgiving</em> as in &#8220;not correcting or prescriptive&#8221;: the system should try its darndest to accept the user&#8217;s input, even if it&#8217;s not the most &#8220;well-formed.&#8221;</li>
</ol>

<p>From an implementation point of view, (2) above can also be an advantage. There are many grammatical restrictions in natural language which, as long as the command is unambiguous, Ubiquity need not enforce on the user. Take, for example, the two statements:</p>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="ubiquity" style="font-family:monospace;">print two copy
print two copies</pre></td></tr></table></div>


<p>I feel that Ubiquity should execute both of these statements with equal ease. The numeral &#8220;two&#8221; makes the user&#8217;s intent very clear, even though the plural of &#8220;copy&#8221; should indeed be &#8220;copies.&#8221; It need not be the job of the interface to decide whether a sentence is &#8220;correct English.&#8221; By assuming that the user is trying to communicate a valid and possible task, rather than throwing up an error, the system will be more flexible and more forgiving in the inevitable case of human error. <strong>The ultimate goal should be to help the user accomplish their task.</strong></p>

<h3>Conclusion</h3>

<p>By developing a language interface which truly <em>feels</em> natural to the user, we can successfully bring the power of text-based interfaces to the masses. I feel the key to this &#8220;natural-ness&#8221; is a less restrictive and in fact <em>forgiving</em> syntax. While this goal akin to <a href="http://en.wikipedia.org/wiki/natural language programming">natural language programming</a> may be daunting from an implementation angle, and it may indeed prove impossible, as long as the goal is to execute simple imperative commands, the scope of the target syntactic structures is limited.</p>

<p>Ubiquity as it stands is many different things for many people. The natural language guidelines above may feel too restrictive to many current developers for whom Ubiquity is simply a convenient new way to extend Firefox.<sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup> This discussion also seems orthogonal to the <a href="http://www.azarask.in/blog/post/can-ubiquity-be-used-only-with-the-mouse/">mouse-based Ubiquity experiments</a>. <strong>As users and developers, how do you feel about the potential benefits and downsides of these natural syntax guidelines?</strong> In the coming days I&#8217;ll look at some concrete examples of what this &#8220;forgiving&#8221; syntax would demand of Ubiquity.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>The learnability problem of a linguistic interface, particularly in light of the usability vs. discoverability paradigm, is a topic for a future post. <img src='http://mitcho.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> &#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>It&#8217;s important to note that the &#8220;restrictions&#8221; I&#8217;m concerned with here are syntactic ones, not lexical ones. That is, if either of the Ubiquity commands below fail because we don&#8217;t have a &#8220;pass&#8221; verb, that&#8217;s fine. But if Ubiquity can only allow one string but not the other, that&#8217;s a syntactic restriction which goes against our English intuition.


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="ubiquity" style="font-family:monospace;">pass Jono the ball
pass the ball to Jono</pre></td></tr></table></div>




I&#8217;ll cover this in a future post.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:3">
<p>In fact, I myself am also guilty of this&#8230; my <a href="http://mitcho.com/code/select/">select command</a> for SQL queries clearly does not encourage a natural language-compatible syntax.&#160;<a href="#fnref:3" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
<p>Related posts:</p><ol>
<li><a href='http://mitcho.com/blog/projects/yarpp-3-templates/' rel='bookmark' title='Using Templates with YARPP 3'>Using Templates with YARPP 3</a></li>
<li><a href='http://mitcho.com/blog/observation/testing-googles-language-detection/' rel='bookmark' title='Testing Google&#8217;s Language Detection'>Testing Google&#8217;s Language Detection</a></li>
<li><a href='http://mitcho.com/blog/observation/%e5%8f%8e%e9%9b%86-vs-%e5%9b%9e%e5%8f%8e-and-better-word-meanings-through-usage/' rel='bookmark' title='回収 vs. 収集 and Better Word Meanings Through Usage'>回収 vs. 収集 and Better Word Meanings Through Usage</a></li>
</ol>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://mitcho.com/blog/projects/how-natural-should-a-natural-interface-be/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

