<?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>I am Tony ZHOU</title>
	<atom:link href="http://www.iamtonyzhou.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iamtonyzhou.com</link>
	<description>Welcome, just another weblog!</description>
	<lastBuildDate>Thu, 04 Aug 2011 15:19:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>5 Whys Quickly Getting to the Root of a Problem</title>
		<link>http://www.iamtonyzhou.com/others/5-whys-quickly-getting-to-the-root-of-a-problem-2/</link>
		<comments>http://www.iamtonyzhou.com/others/5-whys-quickly-getting-to-the-root-of-a-problem-2/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 15:39:09 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[why]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/uncategorized/5-whys-quickly-getting-to-the-root-of-a-problem-2/</guid>
		<description><![CDATA[The 5 Whys is a simple problem-solving technique that helps users to get to the root of the problem quickly. Made popular in the 1970s by the Toyota Production System, the 5 Whys strategy involves looking at any problem and asking: &#8220;Why?&#8221; and &#8220;What caused this problem?&#8221; Following is an example of the 5 Whys [...]]]></description>
			<content:encoded><![CDATA[<div class="announcement_post"><p>The 5 Whys is a simple problem-solving technique that helps users to get to the root of the problem quickly. Made popular in the 1970s by the Toyota Production System, the 5 Whys strategy involves looking at any problem and asking: &#8220;Why?&#8221; and &#8220;What caused this problem?&#8221;</p>
<p>Following is an example of the 5 Whys analysis as an effective problem-solving technique:</p>
<p>Why is our client, Hinson Corp., unhappy? Because we did not deliver our services when we said we would.</p>
<p>Why were we unable to meet the agreed-upon timeline or schedule for delivery? The job took much longer than we thought it would.</p>
<p>Why did it take so much longer? Because we underestimated the complexity of the job.</p>
<p>Why did we underestimate the complexity of the job? Because we made a quick estimate of the time needed to complete it, and did not list the individual stages needed to complete the project.</p>
<p>Why didn&#8217;t we do this? Because we were running behind on other projects. We clearly need to review our time estimation and specification procedures.</p>
<p>Key Points:</p>
<p>The 5 Whys strategy is an easy and often-effective tool for uncovering the root of a problem. Because it is so elementary in nature, it can be adapted quickly and applied to most any problem. Bear in mind, however, that if it doesn&#8217;t prompt an intuitive answer, other problem-solving techniques may need to be applied.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/others/5-whys-quickly-getting-to-the-root-of-a-problem-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mirror drivers don&#8217;t support Aero effects</title>
		<link>http://www.iamtonyzhou.com/others/mirror-drivers-dont-support-aero-effects/</link>
		<comments>http://www.iamtonyzhou.com/others/mirror-drivers-dont-support-aero-effects/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 15:14:49 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[Aero]]></category>
		<category><![CDATA[don't]]></category>
		<category><![CDATA[drivers]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[Mirror]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/?p=275</guid>
		<description><![CDATA[I finally found it’s due to the remote desktop application “LogMeIn”. It installed another display adapter driver on my computer. Disable it, and everything will be OK.]]></description>
			<content:encoded><![CDATA[<p>I finally found it’s due to the remote desktop application “LogMeIn”. It installed another display adapter driver on my computer. Disable it, and everything will be OK.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/others/mirror-drivers-dont-support-aero-effects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable Annoying System Restart Notification after Windows Automatic Updates</title>
		<link>http://www.iamtonyzhou.com/others/disable-annoying-system-restart-notification-after-windows-automatic-updates/</link>
		<comments>http://www.iamtonyzhou.com/others/disable-annoying-system-restart-notification-after-windows-automatic-updates/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 06:51:48 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[system restart notification]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/others/disable-annoying-system-restart-notification-after-windows-automatic-updates/</guid>
		<description><![CDATA[Run command in command window: net stop wuauserv]]></description>
			<content:encoded><![CDATA[<p>Run command in command window: net stop wuauserv</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/others/disable-annoying-system-restart-notification-after-windows-automatic-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ILLEGAL ATTEMPT TO ASSOCIATE A COLLECTION WITH TWO OPEN SESSIONS</title>
		<link>http://www.iamtonyzhou.com/others/illegal-attempt-to-associate-a-collection-with-two-open-sessions/</link>
		<comments>http://www.iamtonyzhou.com/others/illegal-attempt-to-associate-a-collection-with-two-open-sessions/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 14:31:15 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[nHibernate]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/others/illegal-attempt-to-associate-a-collection-with-two-open-sessions/</guid>
		<description><![CDATA[ILLEGAL ATTEMPT TO ASSOCIATE A COLLECTION WITH TWO OPEN SESSIONS in nHibernate. Session.Evict(object o) can make the object detached, which can solve this problem.]]></description>
			<content:encoded><![CDATA[<p>ILLEGAL ATTEMPT TO ASSOCIATE A COLLECTION WITH TWO OPEN SESSIONS in nHibernate.</p>
<p>Session.Evict(object o) can make the object detached, which can solve this problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/others/illegal-attempt-to-associate-a-collection-with-two-open-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TooManyRowsAffectedException of nHibernate</title>
		<link>http://www.iamtonyzhou.com/others/toomanyrowsaffectedexception-of-nhibernate/</link>
		<comments>http://www.iamtonyzhou.com/others/toomanyrowsaffectedexception-of-nhibernate/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 14:08:26 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[nHibernate]]></category>
		<category><![CDATA[TooManyRowsAffectedException]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/others/toomanyrowsaffectedexception-of-nhibernate/</guid>
		<description><![CDATA[This problem will happen if you use trigger in one table. Set NOCOUNT ON in trigger will solve the problem,]]></description>
			<content:encoded><![CDATA[<p>This problem will happen if you use trigger in one table.</p>
<p>Set NOCOUNT ON in trigger will solve the problem,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/others/toomanyrowsaffectedexception-of-nhibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&quot;waitforcatalog&quot; error on live mesh installation</title>
		<link>http://www.iamtonyzhou.com/others/waitforcatalog-error-on-live-mesh-installation/</link>
		<comments>http://www.iamtonyzhou.com/others/waitforcatalog-error-on-live-mesh-installation/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 16:49:25 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[live mesh]]></category>
		<category><![CDATA[waitforcatalog]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/others/waitforcatalog-error-on-live-mesh-installation/</guid>
		<description><![CDATA[The way to solve this problem is to clear all proxy setting in your IE, sorry for the Chinese version, but I’m sure that you know how to arrive this window. Perhaps MS will solve it in the future. You can also refer to this link http://www.liveside.net/2010/06/25/essentials-installer-waitforcatalog-error-workaround/]]></description>
			<content:encoded><![CDATA[<p>The way to solve this problem is to clear all proxy setting in your IE, sorry for the Chinese version, but I’m sure that you know how to arrive this window.</p>
<p><a href="http://www.iamtonyzhou.com/uploadblogpics/waitforcatalog-error-on-live-mesh-instal_A3A/image.png" rel="lightbox" title="image"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.iamtonyzhou.com/uploadblogpics/waitforcatalog-error-on-live-mesh-instal_A3A/image_thumb.png" width="383" height="272" /></a></p>
<p>Perhaps MS will solve it in the future.</p>
<p>You can also refer to this link <a href="http://www.liveside.net/2010/06/25/essentials-installer-waitforcatalog-error-workaround/">http://www.liveside.net/2010/06/25/essentials-installer-waitforcatalog-error-workaround/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/others/waitforcatalog-error-on-live-mesh-installation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Four ways to Create Linq</title>
		<link>http://www.iamtonyzhou.com/asp-net/several-ways-to-create-linq/</link>
		<comments>http://www.iamtonyzhou.com/asp-net/several-ways-to-create-linq/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 16:14:24 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/asp-net/several-ways-to-create-linq/</guid>
		<description><![CDATA[1, The first way, most common one. You will not see any Func&#60;&#62; delegation. class Program &#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160; static void Main(string[] args) &#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] videoGames = { &#34;Halo3&#34;, &#34;StarCraft2&#34;, &#34;Kinect Sports&#34;, &#34;Tomb Raider&#34;, &#34;Final Fantasy&#34;, &#34;Devil May Cry&#34;, &#34;Call of Duty&#34; }; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var subset = from g in videoGames where g.Length [...]]]></description>
			<content:encoded><![CDATA[<p>1, The first way, most common one. You will not see any Func&lt;&gt; delegation.</p>
<p><strong>class Program     <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; static void Main(string[] args)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] videoGames = { &quot;Halo3&quot;, &quot;StarCraft2&quot;, &quot;Kinect Sports&quot;, &quot;Tomb Raider&quot;, &quot;Final Fantasy&quot;, &quot;Devil May Cry&quot;, &quot;Call of Duty&quot; };      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var subset = from g in videoGames where g.Length &gt; 10 select g;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (var i in subset)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(i);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; }</strong></p>
<p>2, The second one, using Lambada. This way we can know what combiner really do behind Linq.</p>
<p><strong>class Program     <br />&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160; static void Main(string[] args)      <br />&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] videoGames = { &quot;Halo3&quot;, &quot;StarCraft2&quot;, &quot;Kinect Sports&quot;, &quot;Tomb Raider&quot;, &quot;Final Fantasy&quot;, &quot;Devil May Cry&quot;, &quot;Call of Duty&quot; };      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var subset = videoGames.Where(i =&gt; i.Length &gt; 10).OrderBy(i =&gt; i).Select(i =&gt; i);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (var i in subset) { Console.WriteLine(i); }      <br />&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160; }</strong></p>
<p>The above is equal to the below, because the WHERE is an extension method of Enumerable.</p>
<p><strong>class Program {static void Main(string[] args)      <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] videoGames = { &quot;Halo3&quot;, &quot;StarCraft2&quot;, &quot;Kinect Sports&quot;, &quot;Tomb Raider&quot;, &quot;Final Fantasy&quot;, &quot;Devil May Cry&quot;, &quot;Call of Duty&quot; };       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var subset = Enumerable.Where(videoGames, i =&gt; i.Length &gt; 10).OrderBy(i =&gt; i).Select(i =&gt; i);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (var i in subset) { Console.WriteLine(i); } }       <br />&#160;&#160;&#160; }</strong></p>
<p>3, Use anonymous delegate instead of Lambada.</p>
<p><strong>class Program     <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; static void Main(string[] args)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] videoGames = { &quot;Halo3&quot;, &quot;StarCraft2&quot;, &quot;Kinect Sports&quot;, &quot;Tomb Raider&quot;, &quot;Final Fantasy&quot;, &quot;Devil May Cry&quot;, &quot;Call of Duty&quot; };      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Func&lt;string, bool&gt; searchFilter = delegate(string name) { return name.Length &gt; 10; };      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Func&lt;string, string&gt; toProcess = delegate(string name) { return name; };      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var subset = videoGames.Where(searchFilter).OrderBy(toProcess).Select(toProcess);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (var i in subset) { Console.WriteLine(i); }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; }</strong></p>
<p>4, Use named delegation</p>
<p><strong>class Program     <br />{      <br />&#160;&#160;&#160; static void Main(string[] args)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] videoGames = { &quot;Halo3&quot;, &quot;StarCraft2&quot;, &quot;Kinect Sports&quot;, &quot;Tomb Raider&quot;, &quot;Final Fantasy&quot;, &quot;Devil May Cry&quot;, &quot;Call of Duty&quot; };      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Func&lt;string, bool&gt; searchFilter = new Func&lt;string, bool&gt;(Filter);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Func&lt;string, string&gt; itemToProcess = new Func&lt;string, string&gt;(Process);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var subset = videoGames.Where(searchFilter).OrderBy(itemToProcess).Select(itemToProcess);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (var i in subset)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(i);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; public static bool Filter(string name)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return name.Length &gt; 10;      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; public static string Process(string name)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return name;      <br />&#160;&#160;&#160; }      <br />}</strong></p>
<p>All these four methods return the same results, but you may know from this that Microsoft do many things behind the simple Linq expression. Anonymous delegate, genetic delegate, Lambada, extension methods.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/asp-net/several-ways-to-create-linq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Refactoring Diary 1</title>
		<link>http://www.iamtonyzhou.com/asp-net/refactoring-diary-1/</link>
		<comments>http://www.iamtonyzhou.com/asp-net/refactoring-diary-1/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 14:16:11 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/asp-net/refactoring-diary-1/</guid>
		<description><![CDATA[There is no unanimous consensus yet on what constitutes a sound developing methodology. However, it is arguable that fine development has five common characteristics: SRP, COP LSP, DIP, ISP. But that’s far from enough, any book talking software design contains these five principles in the first chapter and seems explain it very well. In addition, [...]]]></description>
			<content:encoded><![CDATA[<p>There is no unanimous consensus yet on what constitutes a sound developing methodology. However, it is arguable that fine development has five common characteristics: SRP, COP LSP, DIP, ISP. But that’s far from enough, any book talking software design contains these five principles in the first chapter and seems explain it very well. In addition, I believe most of developers know the 5 points. The question is, why the project we are dealing with is still not charming. </p>
<p>I’m fully occupied with a project, which a ‘prefect’ N-tired architecture website built 3 or 4 years ago. I always want to improve its performance or architecture, but I have to say it’s horrible that I have to cope with bug trace or change requests every day. It’s really annoying.</p>
<p>Well, I made enough mean comments here already. And, like lots of developers do, I criticize their company’s project unkindly. But, what is more valuable is, could we make it better. In other words, what is a qualified developer need to do in this situation? My answer is a big refactoring. </p>
<p>There could be some possible drawbacks to us. First, if not well-managed, refactoring may be completely worthless or even misleading. It is manifest that not all managers are willing to give you enough time or resources.Secondly, how could I convince them that the refactoring is essential because most of time, the UI will not change at all.</p>
<p>OK, this is my first post about this topic, I will try to answer the question and fulfill my plan in later ones.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/asp-net/refactoring-diary-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery plugin, hint tools</title>
		<link>http://www.iamtonyzhou.com/javascript/jquery-plugin-hint-tools/</link>
		<comments>http://www.iamtonyzhou.com/javascript/jquery-plugin-hint-tools/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 08:25:45 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/javascript/jquery-plugin-hint-tools/</guid>
		<description><![CDATA[&#160; Implement a hint tools to show kind message. It has potential to be improved more powerful, but currently I believe it works well to deal with my requirements. Demo: http://www.iamtonyzhou.com/demos/jhint.sample/HTMLPage1.htm Download: http://www.iamtonyzhou.com/UploadFiles/JHint.Sample.zip The picture resources are from http://net.tutsplus.com/tutorials/javascript-ajax/build-a-better-tooltip-with-jquery-awesomeness/ I’m still finding my own background picture, tough job.:(]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.iamtonyzhou.com/wp-content/uploads/2010/09/image.png" rel="lightbox[264]" title="image"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.iamtonyzhou.com/wp-content/uploads/2010/09/image_thumb.png" width="447" height="238" /></a>&#160;</p>
<p>Implement a hint tools to show kind message.</p>
<p>It has potential to be improved more powerful, but currently I believe it works well to deal with my requirements. </p>
<p>Demo: <a href="http://www.iamtonyzhou.com/demos/jhint.sample/HTMLPage1.htm">http://www.iamtonyzhou.com/demos/jhint.sample/HTMLPage1.htm</a></p>
<p>Download: <a href="http://www.iamtonyzhou.com/UploadFiles/JHint.Sample.zip">http://www.iamtonyzhou.com/UploadFiles/JHint.Sample.zip</a></p>
<p>The picture resources are from <a href="http://net.tutsplus.com/tutorials/javascript-ajax/build-a-better-tooltip-with-jquery-awesomeness/">http://net.tutsplus.com/tutorials/javascript-ajax/build-a-better-tooltip-with-jquery-awesomeness/</a></p>
<p>I’m still finding my own background picture, tough job.:(</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/javascript/jquery-plugin-hint-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An excellent mockup tool &#8212; Balsamiq</title>
		<link>http://www.iamtonyzhou.com/others/an-excellent-mockup-tool-balsamiq/</link>
		<comments>http://www.iamtonyzhou.com/others/an-excellent-mockup-tool-balsamiq/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 08:24:03 +0000</pubDate>
		<dc:creator>Tony ZHOU</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[Balsamiq]]></category>
		<category><![CDATA[mockup]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[UI design]]></category>

		<guid isPermaLink="false">http://www.iamtonyzhou.com/others/an-excellent-mockup-tool-balsamiq/</guid>
		<description><![CDATA[Balsamiq is a mockup tool which can enable you Create software mockups in minutes. Today, I need to provide a UI prototype to my client. At the beginning, I preferred to use Visio, but suddently I realized, depends on my former experience, it may not be a quick and decent way to draw a web [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Balsamiq is a mockup tool which can enable you Create software mockups in minutes.</p>
</blockquote>
<p>Today, I need to provide a UI prototype to my client. At the beginning, I preferred to use Visio, but suddently I realized, depends on my former experience, it may not be a quick and decent way to draw a web page by using Visio.</p>
<p>Balsamiq stayed in my computer for quite a long time, but I never use it to drew the diagram and show it to my client. Why not try it today?:)</p>
<p>After 5 mintues, the Balsamiq proved my suppose. It only spends me 5 mintues to finish a prototype like this:</p>
<p><a href="http://www.iamtonyzhou.com/wp-content/uploads/2010/08/image4.png" rel="lightbox[261]" title="image"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.iamtonyzhou.com/wp-content/uploads/2010/08/image_thumb4.png" width="531" height="474" /></a> </p>
<p>I believe that Balsamiq is fairly suitable for those people who do not have a plenty of time to draw a precise picture. It can reduce your workload significantly, and help you focus on the production delivery.</p>
<p>Here is the link:<a href="http://www.balsamiq.com/">http://www.balsamiq.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamtonyzhou.com/others/an-excellent-mockup-tool-balsamiq/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

