<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Product Scale</title>
	
	<link>http://www.productscale.com</link>
	<description>Ofir Shahar's blog on products that make the world a better place</description>
	<lastBuildDate>Mon, 24 Aug 2009 07:58:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ProductScale" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="productscale" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">ProductScale</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Creating Gmail-like anchor-based navigation</title>
		<link>http://www.productscale.com/2009/08/creating-gmail-like-anchor-based-navigation/</link>
		<comments>http://www.productscale.com/2009/08/creating-gmail-like-anchor-based-navigation/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 07:58:56 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Product Development]]></category>
		<category><![CDATA[anchor navigation]]></category>
		<category><![CDATA[browser history]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[single page navigation]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=232</guid>
		<description><![CDATA[A while back I discussed JavaScript-rich web applications, with the entire client side working completely out of the browser.  Applications like Remember The Milk utilize this type of user interface to create a better experience, which is in my opinion the way web applications really should be like.
One of the issues that troubled me back [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I discussed <a href="http://www.productscale.com/2009/01/remember-the-milk-%E2%80%93-pushing-the-ajax-envelope/">JavaScript-rich web applications</a>, with the entire client side working completely out of the browser.  Applications like <a href="http://www.rememberthemilk.com">Remember The Milk</a> utilize this type of user interface to create a better experience, which is in my opinion the way web applications really should be like.</p>
<p>One of the issues that troubled me back then was how to overcome JavaScript single-page navigation while having to cope with traditional browser navigation.  After looking into it, I found what I was looking for; but first, I&#8217;ll elaborate on the subject:</p>
<h3>All-in-one-page web applications</h3>
<p>It&#8217;s really cool having a web application that does not require a refresh each time you touch something.  Most websites work in the old fashioned way &#8211; you click a link and navigate to another page.  What really happens is your action sends a request to the server to fetch another page, sometimes with specific parameters passed to it.  The server then creates that page for you, send it back, and the browser displays it.  What you as a user see  after clicking the link is a blank page, you wait for the page to load, and then you can move forward.  Even though this type of behavior is common among websites, it could be very uncomfortable for the user.  Come to think of it &#8211; none of us are used to this type of behavior with our desktop apps, are we?</p>
<p>Some web applications, like the <a href="http://www.google.com/apps/">Google app</a> suite, Remember The Milk, and others utilize a different technique: when you click a link, like navigating to the Sent mailbox on Gmail, the page does not disappear and then reloads again.  What you do see is a &#8220;Loading&#8221; message at the top, and then the new mailbox just appears at its right place.  This type of user experience is what we should all hope for in heavy-duty web applications.</p>
<h3>How does it work?</h3>
<p>Anyone who knows JavaScript can figure out a way of doing this, but here&#8217;s the basic plot:</p>
<p>The page that you initially get from the server actually contains <strong>more than one page</strong> &#8211; it contains several, while only the one that is currently in focus is shown, while the other ones are hidden.  When clicking a link that should lead you to a new page, like the Sent Items box on your Gmail, the browser simply hides the current page (say, your inbox), and shows the sent items page instead.  This is done instantly, so you get the feeling that there were no reloads.</p>
<p>Furthermore, when the sent items page is displayed, it fetches all of the sent items data from the server, and simply dumps them into the empty page it already has.  This way, you enjoy the best of both worlds &#8211; you get a smooth user experience, while the actual data is always updated (since it reached you directly from the server in real time).</p>
<h3>So what&#8217;s the problem?</h3>
<p>The problem, as in many subjects, lies in history.  We are so used to this &#8220;page-mode&#8221; way of using websites and webapps, that we&#8217;ve learned some pretty nasty habits.  One of those is using Back and Forward buttons for navigation.</p>
<p>In a world where all of the websites use full page loads, back and forward makes sense.  When you navigate to a new page, the browser remembers the location of the previous one and will do what it&#8217;s supposed to do when the Back button is pressed &#8211; go back to the previous page.  However, when new applications are utilizing the &#8220;all-in-one-page&#8221; approach &#8211; then we have a problem: the back and forward buttons become useless.</p>
<p>Imagine this: I&#8217;m using a simple all-in-one-page web application to manage my emails.  I have an inbox and sent items box.  I navigate back and forth between them using my on-screen menu links.  What happens under the hood is simple &#8211; I never actually leave the page I got in the first place.  All the browser does is hide and show different parts of it, while fetching data from the server and updating it to the respective page section.</p>
<p>Oh no &#8211; I clicked the Back button!  I was in my sent items page, and hoped to get back to the inbox (where I was before) but no!  I&#8217;m out of the app altogether!</p>
<p>The browser&#8217;s history, that should contain all of my navigation track record, never actually recorded my inner-page navigation, since I never really left the page&#8230;  This is why classical browser navigation can sometimes cause huge usability problems when using an all-in-one-page web application.</p>
<h3>Using anchors</h3>
<p>Many apps have found a clever way to resolve this, by using <strong>anchors</strong>.  You remember anchors &#8211; these inner-page links that are used in tables-of-content, like in Wikipedia or a FAQ page.  These links that, once you click them, send you down to different location on the same page.  Well &#8211; instead of doing that, anchors might just be the way to solve all of our problems.</p>
<p>If we utilize anchors as part of our app&#8217;s navigation, we get exactly what we need: we change the browser&#8217;s location, which in turn records that location into its history, without actually leaving the same page&#8230;  This allows us to do what we always did &#8211; use the Back and Forward buttons, while still remaining in the same page!</p>
<h3>Under the hood</h3>
<p>After researching it a bit, a few ideas came into light.  The major issue that one should face here is the fact that browsers do not really notify you when you click the back-forward buttons.  You can use the &#8220;unload&#8221; event, but that doesn&#8217;t really cut it &#8211; you want to know where you are, not where you&#8217;re leaving.</p>
<p>So, basically, the way that this can be accomplished, at least according to what I&#8217;ve seen, is by creating a polling mechanism &#8211; something that periodically checks the current anchor that you&#8217;re in.  All you need to do is set up some sort of a timed interval, check the anchor, and act accordingly.</p>
<p>What you need to do is extremely simple:</p>
<p>All of the links that are used to navigate inside the same page should be anchored, like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#inbox&quot;</span>&gt;</span>Inbox<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#sent&quot;</span>&gt;</span>Sent items<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span></pre></div></div>

<p>Then, there should be a JavaScript checker &#8211; something that periodically checks to see where the current page anchor is at, and then call a function that shows the page section shat should be shown:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
     setInterval<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;check_anchor()&quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> current_anchor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> check_anchor<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
     <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>current_anchor <span style="color: #339933;">!=</span> document.<span style="color: #660066;">location</span>.<span style="color: #660066;">hash</span><span style="color: #009900;">&#41;</span>
     <span style="color: #009900;">&#123;</span>
          current_anchor <span style="color: #339933;">=</span> document.<span style="color: #660066;">location</span>.<span style="color: #660066;">hash</span><span style="color: #339933;">;</span>
&nbsp;
          <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>current_anchor <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;#inbox&quot;</span><span style="color: #009900;">&#41;</span>
          <span style="color: #009900;">&#123;</span>
               <span style="color: #006600; font-style: italic;">// Show your inbox section.</span>
          <span style="color: #009900;">&#125;</span>
&nbsp;
          <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>current_anchor <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;#sent&quot;</span><span style="color: #009900;">&#41;</span>
          <span style="color: #009900;">&#123;</span>
               <span style="color: #006600; font-style: italic;">// Show your sent items section.</span>
          <span style="color: #009900;">&#125;</span>
     <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>And that&#8217;s all there is to it.  The interval calls a function that checks the anchor, and according to that anchor&#8217;s value it directs it to the relevant piece of code.</p>
<p>This is obviously very basic; it does not take care of additional parameter (like &#8220;#inbox&amp;q=33526&#8243;) and so forth &#8211; but you get the general idea.</p>
<h3>Really Simple History</h3>
<p>One of the better solutions that I&#8217;ve found out there is an elegant, lightweight, and free JavaScript library called <a href="http://code.google.com/p/reallysimplehistory/"><strong>Really Simple History</strong></a>.  You can add it to your code, initialize it, and direct the history event to a callback function of your choosing.</p>
<p>It really is a magnificent library &#8211; try it out!</p>
<p>This, for me, closes the loop for this issue.  Hope this helps &#8211; I&#8217;m going to use it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2009/08/creating-gmail-like-anchor-based-navigation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>10 Rules for MRDs and Focal Points</title>
		<link>http://www.productscale.com/2009/08/10-rules-for-mrds-and-focal-points/</link>
		<comments>http://www.productscale.com/2009/08/10-rules-for-mrds-and-focal-points/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 21:10:19 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Product Development]]></category>
		<category><![CDATA[Product Marketing]]></category>
		<category><![CDATA[brainstorm]]></category>
		<category><![CDATA[Focus]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[Marketing Requirements Document]]></category>
		<category><![CDATA[MRD]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=213</guid>
		<description><![CDATA[Lately, I find myself writing MRDs for companies I work with.  It&#8217;s always a great challenge to construct a good MRDs, but these recent experiences have really been wonderful: I&#8217;ve had the rare opportunity to create the company&#8217;s very first MRD.
This, naturally, has its pros and cons.  On the up side, you get your hands [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_216" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-216" title="3241019376_01a85dd80b" src="http://www.productscale.com/wp-content/uploads/2009/08/3241019376_01a85dd80b-300x225.jpg" alt="&lt;div xmlns:cc=&quot;http://creativecommons.org/ns#&quot; about=&quot;http://www.flickr.com/photos/lorena-david/3241019376/&quot;&gt;&lt;a rel=&quot;cc:attributionURL&quot; href=" width="300" height="225" /><p class="wp-caption-text">http://www.flickr.com/photos/lorena-david/ / CC BY-NC-SA 2.0</p></div>
<p>Lately, I find myself writing MRDs for companies I work with.  It&#8217;s always a great challenge to construct a good MRDs, but these recent experiences have really been wonderful: I&#8217;ve had the rare opportunity to create the company&#8217;s very first MRD.</p>
<p>This, naturally, has its pros and cons.  On the up side, you get your hands into something which is pure, raw, and full of vision, instead of delving into a well-formed (or a not-so-well-formed) product with a well-thought-of (or not-so-well-thought-of) business model and a well-constructed (you get the idea) marketing strategy, and trying to make your way through all the constraints and legacy issues that involve a mature product process.</p>
<p>However, the risk in handling an MRD in such an immature stage usually involves the company having a clear enough vision but not a clear enough focus, which tends to make the requirement gathering process rather shaky.  There&#8217;s often a great deal of uncertainty, lack of confidence and no real clear-cut objectives.</p>
<p>This is not necessarily something that should receive a reprimand &#8211; it&#8217;s quite natural.  However, while the rest of the management, often the business and marketing ends, can throw ideas around the room and stare far into the horizon, there should be at least one designated driver among the lot with her feet planted deep in the ground.  This is usually the job of the product marketing person.</p>
<p>Obviously, there are many &#8220;how-to&#8221;s out there on how to write the best MRD &#8211; this is not a post like that; I do, however, wish to convey a few techniques for getting the other people committed and focused on the task at hand.  This, later, can be translated to a document using a template of your choosing.</p>
<ol>
<li><strong>Get the CEO involved</strong>.  Make sure the CEO is part of the process.  This is important for two reasons: first, there are certain answers you will only get from the CEO that are crucial for laying the groundwork for the MRD; second &#8211; with the CEO in the room, the rest of the group will feel more committed to the task.</li>
<li><strong>Just the facts</strong>.  It is our job to get the facts straight, at any cost.  Ideas and visions are perfect for brainstorming sessions, and I&#8217;m sure each and every one of us can daydream with the rest and the best of them, but this is a luxury we can&#8217;t afford right now.  You need to put your foot down and demand straight answers, backed up by logical explanations and as many facts as you can.</li>
<li><strong>Start from the top</strong>.  The best place to start when constructing a good MRD, which is basically the company&#8217;s upcoming product strategy plan, is to begin with the most highly strategic aspect &#8211; business goals.  Ask questions like: when&#8217;s the next fund raising round?  How much will it be?  How long do we have with the current funding?  When would it be best to present the product?  To whom would it be best to present it to?  What kind of a business goal would that milestone aim to accomplish?  These questions and others like them will help you position your future plans in the overall business roadmap of the company.</li>
<li><strong>Work your way down</strong>.  After you understand the major milestones that are expected from the company, start drilling down and do your best to make the product roll-out serve these goals.  Start by creating major product milestones that will go along with the business milestones, allowing yourself an ample margin of error.  Then, map out the major features for each milestone, making sure that only the most important ones are addressed, and that they all aim to serve the business end.</li>
<li><strong>Don&#8217;t go too low</strong>.  Try to avoid the implementation pitfalls.  Do not start developing actual features, or try to see how different use cases affect certain aspects of the system &#8211; if you do that, you&#8217;ll never go out of the conference room.  That&#8217;s what PRDs are for.</li>
<li><strong>Lay out an architectural plan</strong>.  Try to get engineering to draw out the product&#8217;s architecture in the most abstract way possible, yet taking into account elements such as deployment, distribution, scale, privacy, security, databases, etc.  I find this process to be extremely helpful in discovering new directions, coming up with exciting capabilities and mega features, and finding out major issues that should be addressed at this stage.  There&#8217;s something very evocative in seeing a diagram in a vision-driven meeting.  But remember rule no. 5 &#8211; don&#8217;t delve too deep!</li>
<li><strong>Resources, resources, resources</strong>.  Always keep resources in mind.  Make the CEO commit to providing you and engineering with the resources you&#8217;d need.  The MRD should point out this information, sure, but the meeting should make everyone aware of how much the project would cost, in general terms, of course.  In other words &#8211; when the document comes out, the bottom line should not come as a surprise, or you&#8217;d find yourself going through the same meeting all over again, even more than once.</li>
<li><strong>Be constructive</strong>.  Try too look at things from different angles &#8211; try to extrapolate a single element in the system to any actor or use case you can think of.  It&#8217;s amazing how many cool ideas come out of that.</li>
<li><strong>Discourage destructiveness</strong>.  It is clear that MRD meetings are not easy to manage, since this is where vision and practicality meet.  Such encounters are hard on everyone, and sometimes people tend to get discouraged, especially when they&#8217;re told to stop dreaming and get real.  Try to notice defensiveness and entrenchment in people and do your best to open them up again, yet always making sure that their focus is well grounded.  Oh &#8211; and that goes for you too.</li>
<li><strong>Set a time limit</strong>.  Make sure that both the meeting and the creation of the MRD are set to a limited time.  This further assists in maintaining focus, driving people to action and decision, and making sure everyone is on the same page.  Remember &#8211; an MRD is a map, and a very rough one at that; but it sets the tone for everyone during the upcoming product development period.  The better limits you have &#8211; the more focused your MRD will be.  And that is a blessing, no matter what they say.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2009/08/10-rules-for-mrds-and-focal-points/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gmail and GTD</title>
		<link>http://www.productscale.com/2009/08/gmail-and-gtd/</link>
		<comments>http://www.productscale.com/2009/08/gmail-and-gtd/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 05:46:22 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Products]]></category>
		<category><![CDATA[BizDevBlog]]></category>
		<category><![CDATA[Eran Lagon]]></category>
		<category><![CDATA[Getting Things Done]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[product review]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=204</guid>
		<description><![CDATA[
First &#8211; sorry for the long dry spell.  A first child is quite a handful product to take care of&#8230;  Too bad there isn&#8217;t a manual that comes along with it.
Second, here&#8217;s a very helpful post by my good friend Eran Lagon regading the usage of Gmail&#8217;s advanced options in order to become more organized. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-206" title="200px-Getting_Things_Done" src="http://www.productscale.com/wp-content/uploads/2009/08/200px-Getting_Things_Done.jpg" alt="200px-Getting_Things_Done" width="200" height="297" /></p>
<p>First &#8211; sorry for the long dry spell.  A first child is quite a handful product to take care of&#8230;  Too bad there isn&#8217;t a manual that comes along with it.</p>
<p>Second, here&#8217;s a very helpful post by my good friend <a href="http://www.bizdevblog.com/">Eran Lagon</a> regading the usage of <a href="http://mail.google.com">Gmail&#8217;s</a> advanced options in order to become more organized.  <a href="http://www.davidco.com/">Getting Things Done</a> is a method that is rapidly becoming a lifesaver for me and many people I know.  Eran&#8217;s post on &#8220;<a href="http://www.bizdevblog.com/bizdevblog/2009/07/how-to-be-a-gtd-ninja-in-gmail-in-5-simple-steps.html">How to be a Gmail GTD ninja in 5 steps</a>&#8221;  makes use of GTD methodologies en route to increasing your productivity.</p>
<p>I personally have implemented everything to the letter from this post; slowly but surely, my inbox is becoming as empty as outer space.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2009/08/gmail-and-gtd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>reCAPTCHA Recycles Human Effort</title>
		<link>http://www.productscale.com/2009/01/recaptcha-recycles-human-effort/</link>
		<comments>http://www.productscale.com/2009/01/recaptcha-recycles-human-effort/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 13:27:20 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Captchas]]></category>
		<category><![CDATA[Product Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[advanced forms]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[form design]]></category>
		<category><![CDATA[Product design]]></category>
		<category><![CDATA[product review]]></category>
		<category><![CDATA[reCAPTCHA]]></category>
		<category><![CDATA[recycling]]></category>
		<category><![CDATA[text digitizing]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=176</guid>
		<description><![CDATA[The American astronauts were rumored to be using a special Space Pen, which was developed specifically to work in zero-gravity conditions.  It used a pressurized ink cartridge, enabling it to write upside down (Seinfeld fans should smile by now) and, of course, be used in space.  It is believed that NASA spent a [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The American astronauts</strong> were rumored to be using a special Space Pen, which was developed specifically to work in zero-gravity conditions.  It used a pressurized ink cartridge, enabling it to write upside down (<a href="http://www.imdb.com/title/tt0697749/">Seinfeld fans should smile by now</a>) and, of course, be used in space.  It is believed that NASA spent a total amount of $11 million dollars to develop that pen.</p>
<p>The Russians gave their Cosmonauts a pencil.</p>
<p>Whether this story is accurate or not, it brings out a common product development truth – <em>all things being equal, the simplest solution tends to be the right one</em>.  Hence the abbreviation K.I.S.S. – <em>Keep It Simple, Stupid!</em> And <a href="http://recaptcha.net/">reCAPTCHA</a> certainly did achieve a simple solution to several problems at once.</p>
<p><strong>reCAPTCHA </strong>is a special captcha form component for identifying humans and rejecting spam and bots.  It is done through the traditional means of displaying distorted words for the users to type and verify.  However, instead of generating a random word, reCAPTCHA displays words that were scanned from real text books, thus helping in the global effort of digitizing old texts.</p>
<p>I ran into reCAPTCHA a few months ago and was impressed by the concept of “recycling” human actions – taking something we do so commonly, almost without thinking, like verifying our humanity with forms through captchas, and harnessing it to both combat evil (spam and bots) and do good (digitize texts).</p>
<table style="border-top: 1px solid #E0D1BF; border-bottom: 1px solid #E0D1BF; background-color: #fff" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top">
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="80">Name:</td>
<td><strong>reCAPTCHA</strong></td>
</tr>
<tr>
<td>Website:</td>
<td><a href="http://recaptcha.net"><strong>recaptcha.net</strong></a></td>
</tr>
<tr>
<td>Type:</td>
<td><strong>Captcha component</strong></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="padding-top: 5px;">reCAPTCHA is a system that uses captcha to help digitize the text of books while protecting websites from bots attempting to access restricted areas.</td>
</tr>
</tbody>
</table>
</td>
<td style="text-align: right"><a href="http://recaptcha.net"><img class="alignright size-full wp-image-177" title="reCAPTCHA" src="http://www.productscale.com/wp-content/uploads/2009/01/recaptcha.png" alt="reCAPTCHA" width="200" height="134" /></a></td>
</tr>
</tbody>
</table>
<h3>Value</h3>
<p>Let’s take a second to ponder over a very disturbing fact: if we didn’t have spam or bots that were driving our websites off the wall – we wouldn’t have had reCAPTCHA, and as a result, many textbooks wouldn’t have been digitized as part of a universal effort.</p>
<p>When thinking of it that way, reCAPTCHA’s value starts to get a whole new meaning.  It becomes very much like modern medicine – it wouldn’t have been discovered had we not gotten ill; I suppose we owe plenty of our discoveries to urgent needs or even accidents, such as the genome project, antibiotics, Champagne, and so forth.  It’s strange to vocalize it, but many people around the world will be exposed to important texts digitally thanks to the plague called spam and bots.</p>
<p>That being said, lets examine reCAPTCHA’s value in two aspects: intrinsic value and global contribution.</p>
<h4>Intrinsic value</h4>
<p>reCAPTCHA has a very granular offering – it provides your product with a solution to something you’ll probably need as part of your registration form, or any other form that requires user authentication.  You need to sort out the humans from the bots that attack your site.</p>
<p>Your R&amp;D will most likely tell you that developing such a component is very simple, and there are plenty of open-source solutions out there that you can use.  And they’ll be right to say so.  Basically, all you need is a tiny utility that generates a random word, and displays it in a funny way.  You can add colored squiggly lines if you’re overly creative.  And that’s about that.</p>
<p>But reCAPTCHA’s solution has two main advantages:</p>
<ol>
<li><strong>It’s off the shelf</strong>.  You just cut and paste a little piece of code, and you get all of the intrinsic functionality already contained within it; also, the processing is done on the reCAPTCHA servers, which might free your own servers slightly, but on the other hand relies on a server-farm that is out of your control latency-wise.  However, if Twitter and Facebook use it, then I guess it’s all right.</li>
<li><strong>It’s fully loaded</strong>.  Two paragraphs ago, it sounded quite simple to make a workable captcha.  However, to make it right, you need to consider people who might not be able to read your distorted image.  Sometimes, the text is illegible, and needs to be changed.  Again – implementing something like this is not like inventing the space pen, but why bother when this elegant component already exists?</li>
</ol>
<p style="padding-left: 60px;"><img class="alignnone size-full wp-image-195" title="Unreadable" src="http://www.productscale.com/wp-content/uploads/2009/01/recap_unreadable1.gif" alt="Unreadable" width="296" height="56" /></p>
<p style="padding-left: 60px;">(I&#8217;m not sure my dad would be able to read this one&#8230;)</p>
<h4>Global contribution</h4>
<p>I love recycling; not only in my trash habits at home, but also as a goal to live a greener life.  Don’t worry – I don’t spend my spare time hugging trees, but I definitely believe that there’s a practical approach to recycling, which can ultimately be applied to business.</p>
<p><em>“I think there is a world market for maybe five computers,”</em> according to <a href="http://en.wikipedia.org/wiki/Thomas_J._Watson">Thomas J. Watson Sr.</a>, formerly the president of <a href="http://www.ibm.com">IBM</a>.  I’m afraid Mr. Watson may have missed the mark slightly.  Our collective processing power today is gargantuan, and some applications make use of it very effectively.</p>
<p>File sharing, legal or not, is a perfect example for recycling processing power, as well as the wonderful <a href="http://setiathome.berkeley.edu/">SETI@Home project at Berkeley</a>, which is currently the largest distributed computing effort around the world, utilizing over 3 million computers worldwide in order to analyze data from radio telescopes in search for extra-terrestrial intelligence.  reCAPTCHA goes along those lines, but instead of recycling wasted processing time, they’re recycling wasted human effort.</p>
<p>Call me an idealist, but as a product junkie I think that part of making the world a better place revolves around reducing waste and channeling effort.  Most of us share their hosing with others, use platforms developed by the online community, incorporate maps drawn by other companies, and make it an effort to make sure we reduce our costs and increase the productivity of our company.</p>
<p>With reCAPTCHA we have a double benefit – we get a ready-to-use component, and join a world effort to bring knowledge to the masses.  That alone is a value in itself.</p>
<p><strong>Value summary: Provides an off-the-shelf component that answers a specific requirement, while helping in a global effort to digitize texts.</strong></p>
<h3>Usability</h3>
<p><img class="size-full wp-image-196 alignright" title="reCAPTCHA" src="http://www.productscale.com/wp-content/uploads/2009/01/recap_layout.gif" alt="reCAPTCHA" width="327" height="134" /></p>
<p>One thing to consider when creating such a generic and simple component is <em>not to overdo it</em>.  I’m sure product development people would have loved to sink their teeth into this product and design their heart out with plenty of cool features, like changing the image size, making it full-screen, creating a hovering magnify-glass to make the letters bigger, etc.  But that would have turned this component into a monster.</p>
<p>When dealing with a component so basic in its functionality, the product developer needs to constantly take a step back and look at the big picture.  It’s terribly easy to look at your product under the microscope and be so caught up with its tiny world – I’m sure many of us have been there and realized our overzealousness.</p>
<p>One has to remember that this type of granular component lives inside the context of a foreign web page, which contains a form in it.  It’s mostly the last, and least favorite, field the user needs to fill in.  So it’s better to keep it as simple and as non-intrusive as possible.  We’ve already agreed that forms are a pain – let’s not make them any worse.</p>
<p>reCAPTCHA managed to keep it simple.  That’s their first great achievement.</p>
<p>Other than that – the usability is quite basic; after all, this is merely a form field.  You can change the text with a new set of words, in case the image that’s presented to you is too hard to read, or you can change the text into an audio challenge taken from an old time radio show (therefore also transcribing old recorded shows).</p>
<p>That’s it; in terms of usability, the product fits the requirements.</p>
<p><strong>Usability summary: Simple and complete.</strong></p>
<h3>Layout and design</h3>
<p>Once again – such a simple widget doesn’t have much room for an elaborate layout and design schemes.  However, one thing that I would like to see is customizable display: my website and forms are usually of a specific design, and I would have liked to make this field look and feel as a native field to my site.  I have no problem with sharing credit or double branding, but reCAPTCHA’s choice of Bordeaux colors does not necessarily fit my overall website design.</p>
<p><strong>Layout and design summary: Simple, though cannot be customized.</strong></p>
<h3>Under the hood</h3>
<p>When I initially heard of reCAPTCHA, the first question that popped into my mind was “how does it work?”  If the words that are shown to me are the ones that are used to digitize book, then how does the captcha verify my input as correct?  Or else – if the captcha engine already knows the meaning of the word, then what part am I playing here exactly?</p>
<p>And here is where reCAPTCHA came up with the pencil solution.</p>
<p>After the texts are scanned, they go through an <a href="http://en.wikipedia.org/wiki/Optical_character_recognition">OCR</a> process to interpret it.  However, OCR is never perfect, and many words remain unresolved. Yet the OCR mechanism is clever enough to at least indicate which words were not interpreted correctly.</p>
<p>So reCAPTCHA came up with a very simple, yet ingenious solution: each user is presented with two words, not one.  One word is a word that was successfully acquired by the OCR, while the other one was not.  After typing these words, reCAPTCHA verifies the known word with your input; if the match is correct, it assumes that the second, unknown word is also correct.</p>
<p>This user-interpreted word is then given to a few other users for recapturing, and then, after cross verification, the word is declared as properly interpreted.</p>
<p>Why was I so impressed?  Because, as a former engineer, I would definitely have overcomplicated something this simple.  Can’t help but to doff your cap – well done!</p>
<h3>Bottom line</h3>
<p>When creating your online forms, it is great to be able to take part in a worldwide effort, and harness the power of the masses to a global endeavor.  When your website joins the ranks of websites like <a href="http://www.facebook.com">Facebook</a>, <a href="http://www.ticketmaster.com/">TicketMaster</a>, <a href="http://www.twitter.com">Twitter</a>, <a href="http://www.stumbleupon.com/">StumbleUpon</a> and <a href="http://www.craigslist.org/about/sites">Craigslist</a>, who already use reCAPTCHA, you know that you’re with good company.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2009/01/recaptcha-recycles-human-effort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Formalizers and Search Engines</title>
		<link>http://www.productscale.com/2009/01/formalizers-and-search-engines/</link>
		<comments>http://www.productscale.com/2009/01/formalizers-and-search-engines/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 10:35:54 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Product Development]]></category>
		<category><![CDATA[Search engines]]></category>
		<category><![CDATA[advanced forms]]></category>
		<category><![CDATA[form design]]></category>
		<category><![CDATA[formalizer field]]></category>
		<category><![CDATA[Formalizers]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[rich web application]]></category>
		<category><![CDATA[Search engine]]></category>
		<category><![CDATA[Watch-over forms]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=168</guid>
		<description><![CDATA[
Search engines are possibly the most commonly used, and perhaps the oldest type of formalizers out there, which many of us take for granted.
A search form has one major formalizer field, which requires a search query.  The user can be quite expressive when filling in this field, while the formalizer field takes care of [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img class="alignnone size-full wp-image-169" title="Google search" src="http://www.productscale.com/wp-content/uploads/2009/01/google_work_with_me.gif" alt="Google search" width="606" height="213" /></strong></p>
<p><strong>Search engines</strong> are possibly the most commonly used, and perhaps the oldest type of <a href="http://www.productscale.com/2008/12/the-formalizer-revolution/">formalizers</a> out there, which many of us take for granted.</p>
<p>A search form has one major formalizer field, which requires a search query.  The user can be quite expressive when filling in this field, while the formalizer field takes care of certain types of input which is expected. <a href="http://www.google.com"> </a><a href="http://www.google.com">Google</a> have been true pioneers in this sense of formalizer usage.</p>
<p>Surely, we all know that there is a specific format for search – we use quotation marks (&#8220;&#8221;) to group words together, we use logical operators such as OR and AND, or sometimes even use the plus (+) and minus signs (-), especially if you’re an advanced user.  However, there are a few things popular search engines have taken care of:</p>
<ul>
<li><strong>Stop words</strong>.  Also known as <em>noise words</em> in some circles, they are words that are filtered out of search queries, usually since they’re too common and appear far too many times in searchable documents.  These words, like “is”, “are”, “the”, “you”, “me”, and many others, are omitted from search queries automatically by the search engine, in order to provide a more relevant search result list.</li>
<li><strong>Spelling</strong>.  Google really made a difference here, both by finding spelling mistakes in your search query and suggesting a correction for you in the search results, and providing the means for other applications to utilize their spelling mechanism with their <a href="http://code.google.com/apis/soapsearch/reference.html">SOAP search API</a>.</li>
<li><strong>Contextual search</strong>.  When typing a specific search phrase that requires a specific type of data, Google makes sure they provide you with this data as quickly as they can, with the <a href="http://www.google.com/intl/en/help/features.html">tools</a> that they have. You can get stock quotes, airline schedules and word definitions simply by asking for them.  This saves a lot of time and hassle by simply thinking like people do, so a simple phrase like “kilometer in mile” typed into the Google search box will make the simple conversion for us, and display it at the top of the page.</li>
</ul>
<h3>What can we learn from Google?</h3>
<p>Many applications, especially web applications, provide search capabilities to their users.  With search being such a common use-case, not to mention a perfect way to learn of your users’ habits, product development managers need to make their search engines as usable and formalizer-friendly as they possibly can.</p>
<p>Here’s a short checklist:</p>
<ol>
<li><strong>Auto-suggest</strong>.  When users start typing search queries, try to assist them with suggestions based on common search queries.</li>
<li><strong>Spelling</strong>.  As mentioned before, there are services for checking the spelling of search queries out there, like <a href="http://code.google.com/apis/soapsearch/reference.html">the one Google offers us</a>.  Therefore, there’s no need to develop it in-house, and you can literally use the best tool out there.  This way, users won’t get frustrated when a misspelled query gets sent back with no results.</li>
<li><strong>Natural language</strong>.  This is probably the most specific, and therefore most complicated aspect of formalizer-friendly search engine.  It requires you to define a way for the user to communicate with your application’s search engine in a natural language.  Try to find common search phrases and to identify patterns that occur the most, and you’ll be able to see how you can go towards your users and help them by understanding their queries better.</li>
</ol>
<p>Combining these three elements together creates a powerful search user experience, and positions you immediately above your competitors in terms of usability and barrier of entry.</p>
<p>For example: say you have a dating website, and your search box allows users to look for possible people to meet.  You could provide a boring form that would require an “advanced search” option to be clicked (possibly the worst use-case a search engine could have, but more on that in a later post).</p>
<p>On the other hand, you can define a few search patterns that upgrades your search field into a formalizer.  Such fields are not search-boxes in their classical sense, and are usually preceded with a question, such as “what kind of date are you looking for?” to which the user can answer “middle-aged men in the greater LA area.”</p>
<p>And now, the hard work begins: your language processor should be able to <em>understand</em> this sentence and <em>extract</em> meaningful information out of it.  It should understand that &#8220;middle-aged&#8221; means a certain age group, and that &#8220;the greater LA area&#8221; is a geographic region. Again &#8211; not the easiest of tasks, but once implemented, it goes a very long way in terms of usability.</p>
<p>This, combined with a spelling service and an auto-suggest utility, makes sure the user types the words correctly, or at least minimizes the number of mistakes the user makes.  This allows your formalizer mechanism to be right more times than wrong and ultimately makes your users happier.  And happy users will return again tomorrow, no doubt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2009/01/formalizers-and-search-engines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remember The Milk – Pushing the AJAX Envelope</title>
		<link>http://www.productscale.com/2009/01/remember-the-milk-%e2%80%93-pushing-the-ajax-envelope/</link>
		<comments>http://www.productscale.com/2009/01/remember-the-milk-%e2%80%93-pushing-the-ajax-envelope/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 19:49:30 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Product design]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Task managers]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[product layout]]></category>
		<category><![CDATA[product review]]></category>
		<category><![CDATA[Remember The Milk]]></category>
		<category><![CDATA[rich web application]]></category>
		<category><![CDATA[RTM]]></category>
		<category><![CDATA[task manager]]></category>
		<category><![CDATA[To do list]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=90</guid>
		<description><![CDATA[Anyone who has read Getting Things Done by David Allen knows that a to-do list, or rather several different to-do lists, is an essential part in proper time management.  However, even people who haven’t adopted GTD’s methods, use lists as an intuitive way to remember day-to-day tasks.
Remember The Milk (RTM) is a web-based task [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who has read <strong><a href="http://www.amazon.com/gp/product/0142000280?ie=UTF8&amp;tag=thosmojo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0142000280">Getting Things Done</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=thosmojo-20&amp;l=as2&amp;o=1&amp;a=0142000280" border="0" alt="" width="1" height="1" /></strong> by <a href="http://en.wikipedia.org/wiki/David_Allen_(author)">David Allen</a> knows that a to-do list, or rather several different to-do lists, is an essential part in proper time management.  However, even people who haven’t adopted GTD’s methods, use lists as an intuitive way to remember day-to-day tasks.</p>
<p><a href="http://www.rememberthemilk.com"><strong>Remember The Milk (RTM)</strong></a> is a web-based task manager that allows us to manage our to-do list from any computer, using many types of appliances, do it either online or offline, and also sends us reminders to our email box, IM or mobile phone.</p>
<p>I signed up to RTM and started using it immediately.  I was impressed with the clarity of the product’s implementation and by its ease of use.  I was also very delighted to see a state-of-the-art web application that takes advantage of the full scope of the browser’s capabilities, coupled with an asynchronous client-server communication via AJAX.</p>
<p>Following are my thoughts and impressions on RTM as a product.</p>
<table style="border-top: 1px solid #E0D1BF; border-bottom: 1px solid #E0D1BF; background-color: #fff" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top">
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="80">Name:</td>
<td><strong>Remember The Milk</strong></td>
</tr>
<tr>
<td>Website:</td>
<td><a href="http://www.rememberthemilk.com"><strong>www.rememberthemilk.com</strong></a></td>
</tr>
<tr>
<td>Type:</td>
<td><strong>Task manager, to-do list</strong></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="padding-top: 5px;">Remember The Milk is a task- and time-management web application. It allows users to manage tasks from any computer as well as offline.</td>
</tr>
</tbody>
</table>
</td>
<td style="text-align: right"><a href="http://www.rememberthemilk.com"><img class="alignright size-full wp-image-104" title="Remember The Milk" src="http://www.productscale.com/wp-content/uploads/2009/01/rtm_logo.png" alt="Remember The Milk" width="150" height="66" /></a></td>
</tr>
</tbody>
</table>
<h3>Value</h3>
<p><strong>We all make lists</strong> – grocery lists, task lists, guest lists, play lists…  It’s how we’re used to converting what needs to be done from our head to a recorded media.  All it usually takes is a pen and a sheet of paper, and that’s how the vast majority of people manage their lists nowadays.</p>
<p>Taking a commonly practiced task such as managing a to-do list and creating a product out of it requires something very important: it requires a basic understanding of how people usually perform that task, and trying to create the right usability <em>so that it would fit that same thought process</em>.</p>
<p>RTM recognizes this basic need to make to-do lists, and enhances the widely practiced paper-age technology in two major respects: <em>quality </em>and <em>accessibility</em>.</p>
<h4>Quality</h4>
<p><img class="alignright size-full wp-image-128" title="Task details" src="http://www.productscale.com/wp-content/uploads/2009/01/rtm_task_info.gif" alt="Task details" width="306" height="264" />Paper and pen have a very limited feature reach – it only goes as far as writing down what’s in your head.  Digitizing to-do lists allows us to improve the quality of our to-do lists in two ways:</p>
<ol>
<li><strong>Structure</strong>.  A digital companion for our tasks suggests and even asks for data items on our to-do list items that we normally wouldn’t think of, or otherwise wouldn’t take the time to write ourselves.  Things like due date and location are probably more common in our task-listing thought process, but recurring, time estimation, and number of times postponed is usually not.  This kind of structure helps us create better quality tasks, with more pertinent information that actually helps us perform them.</li>
<li><strong>Assistance</strong>.  RTM, as a data-based application, takes our task information and uses it by actually helping us perform that task.  It does that by organizing these tasks according to categories (personal, study, work), sorting according to due date (or overdue date), and sending us reminders (through many channels – IM, mobile phone, or email)</li>
</ol>
<h4>Accessibility</h4>
<p>You can take your paper list with you, but it’s no match to the availability of the web or your cellular network.  Pairing the higher quality of information that RTM has created for us with the ability to access it from <em>anywhere</em>, using many types of devices in our arsenal (mobile phone, BlackBerry).</p>
<h4>What else?</h4>
<p>RTM does a very good job in answering our need for higher quality tasks with better availability in managing them.  This is something that another task management system – Outlook – doesn’t do to the full extent.  These advantages would definitely drive me to abandon my old paper and pen, and maybe even my Outlook Tasks and adopt a more valuable solution.</p>
<p><strong>The one thing that’s missing here is <em>the ability to assign tasks to people</em></strong>.  RTM went a long way when defining different categories for tasks, such as personal and work, but didn’t provide any means to collaborate on tasks properly.  Sure – I can share my tasks with other people, but that particular feature’s value is much smaller than actually collaborating on a specific task.</p>
<p>Other applications, such as <a href="http://www.toodledo.com/">Toodledo</a> or <a href="http://www.konolive.com/">KonoLive</a>, allow me not only to manage my tasks, but also takes task management to the corporate level, allowing me to manage tasks with other people.  Some of these tools are quite complex in terms of task and even project management, but one does not need to go that far when concerning a popular application like RTM.</p>
<p>Providing a simple assignment of a task to one or more of my contacts would be great.  Of course, this opens up a can of worms – deciding when the task is done, task administration and so on, but I think that if you make tasks of higher quality and easily accessible, they should also be social in a sense where the basic functionality extends to my contact network.</p>
<p>Needless to say that this will also improve the application’s viral nature.</p>
<h4>Pro account</h4>
<p>RTM offers a pro account to those who pay $25 a year (a sort of “golden price” – an amount we accept to pay annually for services).  The pro account provides me with more connectivity options – to my mobile, BlackBerry, etc.</p>
<p>One could argue for and against it – the basic functionality is good enough for me to use the product, while the advanced features are more suited for a more mobile, and most likely more professional (big assumption here) user.</p>
<p>However, creating a pro version by adding new functionality could be dangerous, simply because a competitor might come along and start a feature-battle with you.  This means that if a competitor comes along and provides the same functionality for free – people may move to the other side.</p>
<p><img class="alignright size-full wp-image-144" title="PTP" src="http://www.productscale.com/wp-content/uploads/2009/01/rtm_pro_tester.gif" alt="PTP" width="329" height="151" />One curious element of the pro account is the <a href="http://www.rememberthemilk.com/services/tester/">Pro Tester Program</a>, giving access to pre-release versions.  It seems curious to me that I am expected to pay an annual fee to become a beta tester…  Beta testers should be encouraged, if not paid to.</p>
<p><strong>Value summary: Improves the quality and accessibility to my tasks, allowing for better task management.  Does not allow me to assign tasks to other people.</strong></p>
<h3>Usability</h3>
<p>This is perhaps RTM’s forte.  The application’s usability is definitely on the right track of becoming a highly valuable product.  Here are a few highlights:</p>
<h4>The web on your desktop – AJAX at its best</h4>
<p>The guys at RTM have done something amazing – they’ve created a web application that feels like a desktop application.  Only a few other applications have achieved what RTM have – applications like GMail and Netvibes immediately come to mind.  And it makes perfect sense – all of these apps are tools where I manage my own content and use daily.</p>
<p>Reading about RTM at <a href="http://www.lifehacker.com.au/tips/2008/10/01/remember_the_milks_cofounder_on_the_future_of_task_management-2.html">LifeHacker</a>, I’ve learned that co-founder Emily Boyd and her colleagues were impressed by GMail as an AJAX application, and went on to create their own.  And I say well chosen and well executed!  I believe that all web applications that position themselves as a tool should follow their lead.</p>
<p>When navigating through the app, the things you notice immediately is that there are no page reloads; however, the application data stays updated at all times.  It’s as if the browser and the RTM servers are communicating without refreshing the display – exactly how an AJAX enabled application should work.</p>
<h4>Usability flow</h4>
<p>In terms of actually working with the application, RTM went ahead and considered the user, by making things easier for us.  When adding a new task, no dialog box is necessary – a new line is created in the task list, and you simply need to fill in the task name.  Then, to fill in the details, you simply click a field on the task details box, and type away.</p>
<p>This is great.  Dialog boxes and popups are annoying, and in most cases unnecessary.  RTM did a great job not only avoiding them, but mainly making us feel as if we’re really operating a dashboard rather than a window-happy application.</p>
<h4>Formalizers</h4>
<p>Another huge advantage is the use of formalizer fields.  I’ve discussed formalizers <a href="http://www.productscale.com/2008/12/the-formalizer-revolution/">before</a> <a href="http://www.productscale.com/2008/12/the-7-basic-rules-for-creating-advanced-forms/">a couple of times</a>, and RTM appears to know their stuff when it comes to text recognition.  When filling in the due date, for example, there’s no need to fill in a form or play with complex calendar controls – you simply type the date and the text recognition engine accepts it.  You can also type relative dates, like “tomorrow” or “in a week” – and RTM will understand.  It even accepted “every fortnight” in the repeat field and converted it accordingly.  That’s awesome!</p>
<p><img class="alignnone size-full wp-image-162" title="Date formalizer" src="http://www.productscale.com/wp-content/uploads/2009/01/formalizer_remember_the_milk.gif" alt="Date formalizer" width="606" height="257" /></p>
<h4>Keyboard shortcuts</h4>
<p>Another leap forward RTM has made, which is not hugely difficult technically but very useful, is the use of keyboard shortcuts.  Certainly this is something that by its nature is aimed for more advanced users than novices, but it certainly shows that RTM are serious about making their product resemble a desktop application even more.</p>
<h4>Undo</h4>
<p>A proverbial cherry: undo.  There’s nothing that says desktop application more than undo.  RTM allows you to undo many of the actions you took, like editing fields, for example.  This is simply wonderful!  And that’s all I have to say about that.</p>
<h4>Mashup</h4>
<p>RTM allows you to add a GMail widget as part of GMail Labs.  This is a very clever idea, since many people already use GMail as their main mail client.  With Google Calendar and the RTM widget placed on the same page as your mailbox, you have an ample substitute-Outlook experience, online, accessible from everywhere, and – most importantly – free of charge.</p>
<h4>Offline</h4>
<p>Nice one!  You don’t have to be online in order to work on your task-list.  Probably one of the biggest problems with web applications is that they require you to be online, so for the traveling breed of us it is basically unusable as a tool that we depend upon.</p>
<p><img class="alignright size-full wp-image-151" title="Go offline" src="http://www.productscale.com/wp-content/uploads/2009/01/rtm_offline.gif" alt="Go offline" width="374" height="84" />With RTM, you can simply go offline and keep on working, and once you go online the data will be automatically updated with your online RTM service.  So, if you’re on a plane and work on your to-do list, you can still use RTM as your main tasks application.</p>
<h4>Notes and suggestions</h4>
<p><strong>Note</strong>: The whole concept of formalizers is not to force people to think like computers but to make computers think like people.  So if you’ve already summed up the courage and went for such an advanced feature, you better go all the way.</p>
<p><strong>Suggestion</strong>:</p>
<ol>
<li>Not all date-time-related natural language terms were accepted; the “time estimate” field didn’t approve of “a day” or “four hours”, which is only part of the terms that were left out.  Those needed to be addressed as well.</li>
<li>I would also add holidays: “next Christmas” should be popular, or “Memorial Day.”</li>
</ol>
<p><strong>Note</strong>: Also, understanding the human thinking process, as said before, is most important in an application such as this.  Tasks sometimes pop into your head in chunks rather than one by one.  If your kid has a birthday, for instance, you might need to do several things in order to arrange it – find a venue, buy a cake, select a present, and look for a clown.  So a flow of tasks start pouring out of you.</p>
<p>RTM’s way of adding a task is by clicking the Add Task link; however, when the task chunks start flowing, this might be one click too many.</p>
<p><strong>Suggestion</strong>: I would place a Quick-add textbox right above the tasklist, so that I can immediately fill in a task name and it’ll be added to the list once I hit Enter; the cursor will then focus on the text box again, ready to receive the next task.</p>
<p><strong>Note</strong>: Some features, like delete task and set priority, are placed under a dropdown menu, very similar to GMail.  GMail’s choice of placing the Delete function in a relatively hidden place was to state a point – with GMail you don’t really need to delete emails, since you have such a huge mailbox.  Here, this feature is absolutely necessary and should not be hidden.</p>
<p><strong>Suggestion</strong>: common functions, such as Delete and Set Priority should be located at a prominent place.  I would add a rollover toolbar, that shows itself once you hover on a specific task, with a Delete button next and a Priority gauge.</p>
<p><strong>Usability</strong><strong> summary</strong><strong>: Very advanced desktop-like behavior, which serves the purpose entirely.</strong></p>
<h3>Layout</h3>
<p>RTM’s layout is great – it’s simple, usable, easy to navigate through and generally makes perfect sense.</p>
<p><img class="alignnone size-full wp-image-131" title="Layout" src="http://www.productscale.com/wp-content/uploads/2009/01/rtm_layout.gif" alt="Layout" width="606" height="444" /></p>
<p>The screen is generally divided into a main panel, located at the left, and a details panel at the right.  The main panel shows the “meat” of the application’s content – in this case the task list (with other information on different screens), and the details side-panel displays contextual information on the items we’re now watching.</p>
<p>A main menu at the top-right, a sub-menu as tabs located in the screen’s main area is a simple and effective way to manage navigation.</p>
<p>One thing that should be noted is the contextual info box; it’s located on the details side-panel, and provides helpful information in relations with the action you’re currently taking.  This is extremely helpful to us users by providing both useful assistance, and sometimes displays a call-for-action.</p>
<p><strong>Layout</strong><strong> summary</strong><strong>: Simple and elegant.  The contextual info box helps with tips and calls-for-action.</strong></p>
<h3>Design</h3>
<p>Here, we hit a bump on the road.</p>
<p>I’m not talking about the brand; the logo, with the product’s name written in blue script located next to a comics-style cow’s head could be either liked or disliked, for many reasons on both ends.  Think as you may about it – at least it’s iconic to the point where it’s memorable.  This, according to many, is what makes a brand work.  It’s instantly recognizable and associative to the product’s name.  At the end of the day – it’s a matter of taste.</p>
<p>However, the actual user interface element makes a grand statement:</p>
<p><em>It’s white</em>.  There’s white as far as the eye can see, with only the text to keep it company.  As white as milk.</p>
<p>So what?  Well, white in itself is not a problem at all in product design, as long as the functionality aspect is not impaired by this decision.</p>
<p>I see two main issues here with the decision to make the site’s design as plain as it is:</p>
<p><strong>1. No focal points</strong></p>
<p>This is not just a website – it’s an application people use on a day-to-day basis.  Normally, saying something like that about a product is a great thing – it means it brings value to people and therefore succeeds in it first task as a product.  But an application needs focal points – visual markers that help the user use the application better and more easily.</p>
<p>This is a particular problem with the selected design, especially since the chosen media – <em>tasks </em>– is so <em>text based</em>.  There are no images or videos to serve as contrast.  If we compare it to another successful, yet white, application – <a href="http://www.flickr.com">Flickr</a>, we realize that the decision to make the surrounding layout as plain as possible was to counterpoint the (hopefully) vivid nature of the displayed images.</p>
<p><img class="alignnone size-full wp-image-142" title="White..." src="http://www.productscale.com/wp-content/uploads/2009/01/rtm_whites.gif" alt="White..." width="606" height="238" /></p>
<p>Each task has specific fields – due date, repeat, time estimate, location, etc.  However, when looking at the main tasks manager, and even when focusing on a specific task, these fields are not easily discernable.  They don’t stand out of the blank exterior, which makes them very hard to locate and even harder to read.</p>
<p>By selecting a clear design, RTM broke an important rule in product development – <em>never allow the design or the technical implementation to damage a product’s usability</em>.  Important data fields, such as due date and location, should be easier to find, and not intermixed with less important fields, such as URL or tags.  They definitely should not be listed so plainly one after the other with no distinction.</p>
<p><strong>2. No personal touch</strong></p>
<p>Once again – RTM is an application, not a website, and should therefore be customizable.  It should conform to something we’ve gotten quite used to by now – personalized look and layout.  We’re already personalizing themes on our Windows desktop for who knows how long, and many web applications have followed suit.</p>
<p>RTM’s product layout works, with different page sections representing different roles the user takes when navigating and manipulating the product.  On the other hand, it is expected, in a tool such as this, to allow the user to customize their own layout (place different screen elements on different locations), and to select color schemes that are more appealing to them.</p>
<p><strong>Design</strong><strong> summary</strong><strong>: Too plain to the point where it causes important information to disappear, with no personal customization.</strong></p>
<h3>Under the hood</h3>
<p>Who doesn’t like AJAX?  For a web application product developer, it has ultimately changed the way we see user experience.  Also, it allowed RTM to create an application that has a desktop feel to it.</p>
<p>One annoying aspect of such applications is that they live inside a web browser.  Like it or not, we have already gotten used to navigating inside websites using the “Back” and “Next” buttons.  However, an application like RTM has a separate navigation mechanism, since the entire application is downloaded as part of the page, and clicking on the menu-bar simply toggles a view rather than requesting a page from the server.</p>
<p>Therefore, once you navigate through RTM, say you go from the Tasks page to the Settings page it doesn’t go to a different page entirely.  Therefore, if you click the Back button, then the browser would go to the previously loaded page, which is not the Tasks page.  That creates a serious problem concerning site navigation.</p>
<p>RTM attempted to tackle this with changing the address line: once you move to a new page, the page adds a suffix to the address line preceded by the pound sign (#).</p>
<blockquote><p>http://www.rememberthemilk.com/home/username/#section.tasks</p></blockquote>
<p>Though I’ve read somewhere that this should solve the issue of creating parmalinks (allowing you to copy the address line and using it as a direct URL to get to that same page), it doesn’t fully solve the problem of Back and Next buttons.  GMail managed to solve this issue, and I would love to try my hand in this.</p>
<p><strong>Anyone has an idea how to solve this issue?</strong></p>
<h3>Bottom line</h3>
<p>Remember The Milk is a superb desktop-like application.  Apart from a few issues that I believe should be solved, it actually presents a better alternative to the commonly used practice of writing down task-lists – either on paper, or using Outlook.</p>
<p>The direction that RTM took – making this web application acting like a desktop application – actually makes it possible for us users to abandon client-side, expensive solutions and use RTM as our primary to-do list.</p>
<p>In one word – <em>brilliant</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2009/01/remember-the-milk-%e2%80%93-pushing-the-ajax-envelope/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Formalizer Revolution</title>
		<link>http://www.productscale.com/2008/12/the-formalizer-revolution/</link>
		<comments>http://www.productscale.com/2008/12/the-formalizer-revolution/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 00:12:06 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Product design]]></category>
		<category><![CDATA[advanced forms]]></category>
		<category><![CDATA[form design]]></category>
		<category><![CDATA[formalizer field]]></category>
		<category><![CDATA[Formalizers]]></category>
		<category><![CDATA[Remember The Milk]]></category>
		<category><![CDATA[Watch-over forms]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=54</guid>
		<description><![CDATA[I’ve already discussed formalizers briefly a couple of days ago, and I’ll go on exploring them in future posts as well; but in order to be thorough, I’ll paraphrase:
Formalizers are form fields that accept text input of a specific kind, and allow the users some flexibility to input text in a more natural way.  The [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve already discussed formalizers briefly <a href="http://www.productscale.com/2008/12/watch-over-forms-definition/">a couple of days ago</a>, and I’ll go on exploring them in future posts as well; but in order to be thorough, I’ll paraphrase:</p>
<p><strong>Formalizers </strong>are form fields that accept text input of a specific kind, and allow the users some flexibility to input text in a more natural way.  The formalizer mechanism then takes the input, interprets it, and converts it into formal input that the application can understand.</p>
<p>For example, take a look at <a href="http://www.rememberthemilk.com">Remember The Milk</a>; an amazing web application, hands down.  One of its nicest features is the ability to make task creation a little easier for the user. Most of their fields require some sort of format &#8211; like the Due date field shown below.  Editing this field is not done traditionally through drop down lists, or even a calendar popup, but simply by typing in your preference in natural language.  The screencapture below shows how I simply typed the word &#8220;tomorrow&#8221;, and the formalizer engine understood it and returned the correct date:</p>
<p><img class="alignnone size-full wp-image-84" title="Remember The Milk due-date formalizer" src="http://www.productscale.com/wp-content/uploads/2008/12/formalizer_remember_the_milk.gif" alt="Remember The Milk due-date formalizer" width="606" height="257" /></p>
<h4>The Phenomenon</h4>
<p>Science fiction movies have always shown computers that you can actually talk to like human beings; but alongside that fantasy lies a disappointing reality of a long history of people talking down to computers, asking them to do their bidding in the most unintelligent way imaginable.  We’ve actually developed a new way of communicating with computers – mainly through forms – since we understood very early on that using our natural language around computers was like asking a banana to peal itself.</p>
<p>However, in recent years we’ve seen applications start to make an effort in order to actually <em>understand </em>us users and how we express ourselves <em>naturally</em>.  <a href="http://en.wikipedia.org/wiki/Natural_language_processing">Natural Language Processing (NLP)</a> is a fascinating field of computer science that strives to help applications both express themselves to humans in a natural form, and to understand what they’re saying.  The science fiction fantasy of HAL actually speaking and understanding people is slowly becoming a reality.</p>
<h4>So what’s the big deal?</h4>
<p>I realize that many product marketing and product development people out there ask themselves “why should we care?  This is all technical stuff – let the lab-rats deal with it!”  That couldn’t be farther from the truth.  When you’ll understand formalizers and NLP, you’ll realize that a true revolution is taking place in user experience.</p>
<p>We are experiencing a surge of applications that allow people to share content for free with anyone they like.  I believe mass content is not a passing trend, but is the truest form the internet has taken so far.  It’s here to stay, at least for a while.</p>
<p>Some of these applications work with rich media, like <a href="http://www.youtube.com">YouTube </a>and <a href="http://www.flickr.com">Flickr</a>, and some with simple text, like <a href="http://en.wikipedia.com">Wikipedia </a>and <a href="http://www.rememberthemilk.com">Remember The Milk</a>.  Sharing rich media content is easy – you simply upload a file and you’re done, and provide some metadata to it, such as a title, description and tags.  However, when uploading simple text-based content, we usually get stuck with the most tedious yet annoyingly common way of text-based content acquisition – <em>forms</em>.</p>
<p>With the constant evolution of formalizer fields, and the incorporation of NLP into traditional forms, things are starting to look slightly brighter for us poor users.  We can begin to actually think and act as human beings around these applications, and rely on them to understand us a little better than their predecessors.  It’s amazing how gratifying it is to use your own words with an application when telling it that the due date for a specific task is “tomorrow” rather than filling in a date form packed with drop-down lists.</p>
<p>Formalizer fields, I believe, will only evolve to be more sophisticated and capable of accepting text in a natural language.  At the very least, they should evolve to a point where more computer illiterate people can start communicating properly with applications.</p>
<p>Any product department that is involved with a text-based, content related product should focus their efforts on providing more formalized fields to users – not only to make their application more usable, but to lower the bar for more people so that they can generate more content.  Needless to say, the more content we have as a company, and the more users we have, the more interesting and useful our product is.  And as content, especially online content, becomes an increasingly common thing in our lives, we’re bound to encounter more and more NLP formalizers as time goes by.</p>
<p>So play it again, Sam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2008/12/the-formalizer-revolution/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Support Wikipedia</title>
		<link>http://www.productscale.com/2008/12/support-wikipedia/</link>
		<comments>http://www.productscale.com/2008/12/support-wikipedia/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 12:16:51 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Products]]></category>
		<category><![CDATA[Support]]></category>
		<category><![CDATA[Wikipedia]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=32</guid>
		<description><![CDATA[
Wikipedia is probably one of the single products that have significantly changed the world.  This website, which accumulates knowledge and provides it to everyone for free, joins a long line of revolutionary products that had made us who we are, and shaped civilization in a way that changed human life forever.
Let&#8217;s put them in context [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-81" title="Wikipedia Timeline" src="http://www.productscale.com/wp-content/uploads/2008/12/wikipedia_timeline.gif" alt="Wikipedia Timeline" width="606" height="154" /></p>
<p><a title="Wikipedia" href="http://en.wikipedia.com">Wikipedia</a> is probably one of the single products that have significantly changed the world.  This website, which accumulates knowledge and provides it to everyone for free, joins a long line of revolutionary products that had made us who we are, and shaped civilization in a way that changed human life forever.</p>
<p>Let&#8217;s put them in context for a second:</p>
<ul>
<li><strong>The Alphabet</strong>. The first <a href="http://en.wikipedia.org/wiki/Egyptian_uniliteral_signs">Egyptians</a> and <a href="http://en.wikipedia.org/wiki/Phoenician_alphabet">Phoenicians</a>, who revolutionized writing from <a href="http://en.wikipedia.org/wiki/Hieroglyph">hieroglyph</a>-based to phonemic script, and ultimately given us the <a href="http://en.wikipedia.org/wiki/Alphabet">alphabet</a>.  This made reading and writing a significantly easier skill to master, and instead of learning thousands of images and hieroglyphs, reading and writing were reduced to identifying a couple of dozen symbols.  Knowledge became more accessible to people all around the ancient world, and knowledge started to become the realm of humanity.</li>
<li><strong>Numerals</strong>. The ancient <a href="http://en.wikipedia.org/wiki/Babylonia">Babylonians</a> gave us <a href="http://en.wikipedia.org/wiki/Algebra">algebra</a>, and opened up a new way for us to view the world with an advanced arithmetic system.  And with the <a href="http://en.wikipedia.org/wiki/History_of_the_Hindu-Arabic_numeral_system">numeral system</a>, which was first developed in ancient India, humanity was exposed to the wonders of mathematics, and the infinite possibilities it created.</li>
<li><strong>Law</strong>. Lawmakers and lawgivers, like <a href="http://en.wikipedia.org/wiki/Dracon">Dracon</a> and <a href="http://en.wikipedia.org/wiki/Solon">Solon</a> of <a href="http://en.wikipedia.org/wiki/Ancient_greece">ancient Greece</a>, had given us access to the law of the land.  Law, which was a private practice known only to selected elite, was made public, readable, and accessible by all.  Our lives as citizens were revolutionized with this basic freedom of knowledge</li>
<li><strong>Print</strong>. <a href="http://en.wikipedia.org/wiki/Johannes_Gutenberg">Johannes Gutenberg</a> found an efficient way to spread the written word throughout the world with his <a href="http://en.wikipedia.org/wiki/Printing_press">printing press</a>.  By utilizing printing, books were no longer the sole property of monasteries and royalty, but spread across nations and continents.  Literacy levels sprung almost immediately, allowing us to learn, improve and achieve.</li>
<li><strong>Public knowledge</strong>. Wikipedia’s achievement is no lesser than any of the above.  This website has managed to turn human wisdom, learning and education into an organized, categorized and free enterprise.  Knowledge is no longer the province of the few, but the realm of all humanity.  It is available from any place on the planet, in numerous languages, and can be enriched by any one of us.  Wikipedia has given us the freedom to learn, to grow, and to become better people by acquainting ourselves with our world and the civilizations within it.</li>
</ul>
<p>Imagine a world without any of the above discoveries and developments – a world without literacy, science, knowledge, learning, law, and civilization. Denying the world of Wikipedia is no different.</p>
<p>We owe much of our children’s future to Wikipedia.  So <a href="http://wikimediafoundation.org/wiki/Donate/en">let’s help them help us</a>, and let’s all take part in this effort to make knowledge a public domain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2008/12/support-wikipedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The 7 basic rules for creating advanced forms</title>
		<link>http://www.productscale.com/2008/12/the-7-basic-rules-for-creating-advanced-forms/</link>
		<comments>http://www.productscale.com/2008/12/the-7-basic-rules-for-creating-advanced-forms/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 08:40:42 +0000</pubDate>
		<dc:creator>ofir</dc:creator>
				<category><![CDATA[Product design]]></category>
		<category><![CDATA[form design]]></category>
		<category><![CDATA[Watch-over forms]]></category>

		<guid isPermaLink="false">http://www.productscale.com/?p=7</guid>
		<description><![CDATA[Forms are a pain. They’re boring, tedious, unattractive, and downright annoying. But unfortunately, they’re also quite necessary; they’re sometimes the only way for us to communicate with an application. Many product development people realize this, which is why we see forms that are becoming smarter and more helpful. Here are a few ways to improve forms that could work with the user, and not vice versa.]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><strong><img class="alignright size-full wp-image-60" title="Form" src="http://www.productscale.com/wp-content/uploads/2008/12/istock_000001070308xsmall.jpg" alt="Form" width="255" height="169" />Forms are a pain</strong>.<span> </span>They’re boring, tedious, unattractive, and downright annoying.<span> </span>Filling out a form is like bending your mind in order to tell a slow person how to get somewhere fast.<span> </span>But unfortunately, they’re also quite necessary; they’re sometimes the only way for us to communicate with an application.</p>
<p class="MsoNormal">Once, we used to fill out a form, submit it, and wait for its-majesty-the-server to come back with a favorable response.<span> </span>The less benevolent answer would be a series of fields that were filled in incorrectly.<span> </span>This whole process feels quite bureaucratic, with us sitting at the edge of our seats while our form is being reviewed.<span> </span>Also, when it comes back with multiple errors, we need to go one by one and correct them, usually by looking for flaming red indicators telling us how silly we are for not selecting a username with 6-12 characters in it, or a password that contains uppercase and lowercase letters, or an about field that is formatted like a proper Haiku.<span> </span>And to add insult to injury, security related fields, such as passwords, and authorizing fields, or “I accept the terms” checkboxes, would have to be filled in again.<span> </span>So, basically, the user would sometimes go through numerous submits before moving forward.</p>
<p class="MsoNormal">Many product development people realize this, which is why we see forms that are becoming smarter and more helpful.<span> </span>It’s basically an “if you can’t get rid of them, improve them” approach.<span> </span>So new methods were created to make forms more user-friendly, and to make them appear as if they’re watching over you and correcting you while you fill in the form.</p>
<p class="MsoNormal">Here are a few ways to improve forms that could work with the user, and not vice versa:</p>
<ol style="margin-top: 0in;" type="1">
<li class="MsoNormal"> <strong>Tips</strong>.<span> </span>Very simple to implement, and quite      helpful.<span> </span>When the user gets to fill      in a specific field (focuses on it, in browser terms), the field shows a      tip, usually on what the field is about and how best to fill it out.</li>
<li class="MsoNormal"><strong>Real-time      validity checks</strong>.<span> </span>Takes care of      approving or disapproving your input as you type it, providing useful tips      and suggestions in the process.</li>
<li class="MsoNormal"><strong>Availability      checks</strong>.<span> </span>This has mostly to do with      username fields, where you select a username and are allowed to check its      availability without actually submitting the form.<span> </span>When combined with real-time validity      check, you don’t need to take your fingers off the keyboard to get an      approval for your username selection.</li>
<li class="MsoNormal"><strong>Password      strength</strong>.<span> </span>With the rise of online      security awareness, this simple indicator might do wonders to      the user’s peace of mind.<span> </span>A      bar-layout-color-coded feedback is displayed next to the field, telling      the user how weak or strong the password is.<span> </span>This very responsive gadget encourages      the user to do well, to get to the green, and to select a harder-to-break      password.</li>
<li class="MsoNormal"><strong>Auto-suggest</strong>.<span> </span>This goes the whole nine yards in terms      of helping the user accomplish the task of filling in a field.<span> </span>While typing, the form actually suggests      a possible value for the field based on the input typed so far.<span> </span>The user can then accept it, and dodge the most annoying task there is – typing.<span> </span>It’s not an easy thing to implement, but quite worth it.</li>
<li class="MsoNormal"><strong>“Formalizers”</strong>.<span> </span>Many fields require a specific format,      like a date field or a location field.<span> </span>Most forms use drop-down lists to provide the user with options,      but mainly to make sure they fill in the field correctly.<span> </span>“Formalizers” are field mechanisms that      accept input written in natural language, and automatically convert them      to a properly filled-in field.<span> </span>For      example, a date formalizer could accept dates written in natural language, rather than selected from dropdown lists, and also accept relative terms, such as “tomorrow” or      “next Monday”.<span> </span>Again, quite an      advanced feature, which is becoming ever more popular.</li>
<li class="MsoNormal"><strong>One-time      humanity check</strong>.<span> </span>We all know the      terror of spam, and how forms are an easy target for such attacks.<span> </span>Many have adopted anti-spam checks, or      humanity tests, to combat this phenomenon.<span> </span>As users, we accept this, though it makes a dull task even more      wearisome.<span> </span>But there’s no reason      why we should go through this more than once at a given form.<span> </span>If a form has returned with a response,      for some reason (when all of the above failed), and the user has already      passed the humanity test, it assumes that no sudden transformation has      occurred, and that the human is still there; so the anti-spam field does      not appear for the second time.</li>
</ol>
<p class="MsoNormal"><strong>Under the hood<br />
</strong></p>
<p class="MsoNormal">Apart from making the form-filling process less of a burden, it actually saves resources for the application itself by utilizing the processing power of the user’s computer to do some of these checks (validity checks and password strength). This means that instead of using the server to make these validity checks, the browser itself performs these operations, relieving the server of a substantial amount of processing (when multiplied by many-many users).</p>
<p class="MsoNormal">Even when the server is needed to verify a field (for availability checks, for example), the data posted and received is smaller in comparison to a whole page being sent to the user’s browser.  So instead of asking the server to verify a whole form, and to send an entire page, formatted and all, back to the browser, it is only used to verify a single field, and usually responds very succinctly.  This ultimately removes quite a lot of load from the server, and has a significant impact on the site as an operation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.productscale.com/2008/12/the-7-basic-rules-for-creating-advanced-forms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

