<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Nuo Yan</title><link>http://msmvps.com/blogs/nuoyan/default.aspx</link><description>Problem Solved</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Modify bind address for couchdb 0.9.0</title><link>http://msmvps.com/blogs/nuoyan/archive/2009/05/28/modify-bind-address-for-couchdb-0-9-0.aspx</link><pubDate>Thu, 28 May 2009 23:21:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1693353</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1693353</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2009/05/28/modify-bind-address-for-couchdb-0-9-0.aspx#comments</comments><description>&lt;p&gt;By default couchdb only binds to 127.0.0.1 so it&amp;#39;s not accepting requests from other IP addresses. The bind address setting can be modified in the configuration file. For 0.9.0, by default, the default configuration file is located at /usr/local/etc/couchdb/default.ini, and the local configuration file is located at /usr/local/etc/couchdb/local.ini. Settings in the local configuration file will override those in the default one.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bind address is in the [httpd] section&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;[httpd]&lt;/p&gt;
&lt;p&gt;port = 5984&lt;/p&gt;
&lt;p&gt;bind_address = 127.0.0.1&lt;/p&gt;
&lt;p&gt;Note that in the local configuration file, this may be commented out with a leading &amp;quot;;&amp;quot;, if you want to set it in the local configuration file, you need to uncomment the bind_address line and modify 127.0.0.1 to some other IP address.&lt;/p&gt;
&lt;p&gt;If you modify the bind address to 0.0.0.0, it will bind all interfaces.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1693353" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/8.+Other+_2800_Technical_2900_/default.aspx">8. Other (Technical)</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/5.+Programming/default.aspx">5. Programming</category></item><item><title>Making an executable standalone Merb Slice gem</title><link>http://msmvps.com/blogs/nuoyan/archive/2009/05/21/making-a-executable-standalone-merb-slice-gem.aspx</link><pubDate>Thu, 21 May 2009 07:31:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1692836</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1692836</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2009/05/21/making-a-executable-standalone-merb-slice-gem.aspx#comments</comments><description>&lt;p&gt;I have a standalone Merb Slice which can be started by running the &amp;quot;slice&amp;quot; command in its top directory. Today I needed to make a gem file for this Slice so that people can install the gem and start it directly by running the Slice&amp;#39;s name, for example, &amp;quot;foo&amp;quot;. &lt;/p&gt;
&lt;p&gt;So I created the Rakefile, in which I specified the executable file in the following way:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;--- Code: Rakefile ---&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;spec = Gem::Specification.new do |s|&lt;br /&gt;&amp;nbsp; s.rubyforge_project = &amp;#39;merb&amp;#39;&lt;br /&gt;&amp;nbsp; s.name = GEM_NAME&lt;br /&gt;&amp;nbsp; s.version = GEM_VERSION&lt;br /&gt;&amp;nbsp; s.platform = Gem::Platform::RUBY&lt;br /&gt;&amp;nbsp; s.has_rdoc = false&lt;br /&gt;&amp;nbsp; s.summary = SUMMARY&lt;br /&gt;&amp;nbsp; s.description = s.summary&lt;br /&gt;&amp;nbsp; s.author = AUTHOR&lt;br /&gt;&amp;nbsp; s.email = EMAIL&lt;br /&gt;&amp;nbsp; s.homepage = HOMEPAGE&lt;br /&gt;&lt;b&gt;&amp;nbsp; s.executables = &amp;quot;foo&amp;quot;&lt;/b&gt;&lt;br /&gt;&amp;nbsp; s.require_path = &amp;#39;lib&amp;#39;&lt;br /&gt;&amp;nbsp; s.autorequire = GEM_NAME&lt;br /&gt;&amp;nbsp; s.files = %w(Rakefile TODO) + Dir.glob(&amp;quot;{config,lib,spec,app,data,public}/**/*&amp;quot;)&lt;br /&gt;end&lt;/p&gt;
&lt;p&gt;Then I created a &lt;b&gt;bin&lt;/b&gt; folder within the Slice&amp;#39;s top directory, and created a file named &amp;quot;&lt;b&gt;foo&lt;/b&gt;&amp;quot; within the &lt;b&gt;bin&lt;/b&gt; folder I put Merb.start in the file &amp;quot;foo&amp;quot;, and I tried to make a gem and installed it. But the Slice &lt;span style="text-decoration:underline;"&gt;did not start correctly this way.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Then I spent a while trying different possibilities, and with somebody&amp;#39;s help, I finally got the right way of doing it.&lt;/p&gt;
&lt;p&gt;1. look up the location of merb-slices. This can be done by executing &lt;i&gt;gem list - d | grep merb-slices&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;2. locate a file named &amp;quot;&lt;b&gt;slice&lt;/b&gt;&amp;quot; under the &lt;b&gt;bin&lt;/b&gt; folder of merb-slices.&lt;/p&gt;
&lt;p&gt;3. copy the contents of this file to the file you have in your Slice&amp;#39;s bin folder, and amend from that (you may want to remove or change the Merb::Config.use block since your own Slice may have that set somewhere else, for example, in init.rb).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Depending on how you amend the slice binary file, you may encouter a situation that your executable is only able to run within the source folder. For example, if you run &amp;quot;foo&amp;quot; in your Slice&amp;#39;s source folder, it becomes equivalent as running &amp;quot;slice&amp;quot;, but if you run it anywhere else, it fails with the error &amp;quot;No slice found&amp;quot;. If this happens, what you need to do is change the following things in your &amp;quot;foo&amp;quot; binary file:&lt;/p&gt;
&lt;p&gt;1. Change __DIR__ (originally assigned to current directory):&lt;/p&gt;
&lt;p&gt;Dir.chdir File.join(File.dirname(__FILE__),&amp;quot;..&amp;quot;)&lt;br /&gt;__DIR__ = Dir.getwd&lt;/p&gt;
&lt;p&gt;2. Update slice_name:&lt;/p&gt;
&lt;p&gt;slice_name = &amp;quot;foo&amp;quot;&lt;/p&gt;
&lt;p&gt;3. Add a line before &lt;i&gt;Merb.start&lt;/i&gt; to specify the right init file to load:&lt;/p&gt;
&lt;p&gt;ARGV.push *[ &amp;quot;-I&amp;quot;, File.join(File.dirname(__FILE__), &amp;quot;..&amp;quot;, &amp;quot;config&amp;quot;, &amp;quot;init.rb&amp;quot;) ]&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Note: &lt;/i&gt;This assumes init.rb is under config folder of your Slice project.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1692836" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/5.+Programming/default.aspx">5. Programming</category></item><item><title>Testing exceptions with RSpec</title><link>http://msmvps.com/blogs/nuoyan/archive/2009/04/20/testing-exceptions-with-rspec.aspx</link><pubDate>Mon, 20 Apr 2009 22:54:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1689087</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1689087</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2009/04/20/testing-exceptions-with-rspec.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;m new to ruby and rspec. I wrote a ruby function and wanted to check whether it throws an exception or not in a certain situation with rspec, but I realized should_raise function no longer worked in the rspec version I was&amp;nbsp;using (1.2.2). I tried to find information on the Internet and I found that I should use raise_error.&lt;/p&gt;
&lt;p&gt;However, when I wrote something like:&lt;/p&gt;
&lt;p&gt;it &amp;quot;description&amp;quot; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjectName.new(&amp;quot;parameterName&amp;quot;).should raise_error &lt;br /&gt;end&lt;/p&gt;
&lt;p&gt;It did not work. Finally I learned the correct way - using lambda:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;it &lt;/b&gt;&amp;quot;description&amp;quot; &lt;b&gt;do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; labmda{&lt;/b&gt;ObjectName.new(&amp;quot;parameterName&amp;quot;)&lt;b&gt;}.should raise_error &lt;br /&gt;end&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Wanted to post this here and hope it can be helpful for people in the similar need.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1689087" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/5.+Programming/default.aspx">5. Programming</category></item><item><title>Using Eclipse to add/update files to CVS</title><link>http://msmvps.com/blogs/nuoyan/archive/2009/02/10/using-eclipse-to-add-update-files-to-cvs.aspx</link><pubDate>Wed, 11 Feb 2009 01:31:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1671301</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1671301</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2009/02/10/using-eclipse-to-add-update-files-to-cvs.aspx#comments</comments><description>&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;The command-line based CVS tool is hard to use for first time users; many GUI-based CVS tools are not really well designed to be easy to use either. I&amp;rsquo;m not against the point that developers and testers should learn how to use a technical tool in no time even though the tool is hard to use, but developers and testers have their schedules and need to be efficient. Having an efficient way to add and update files to CVS is very necessary.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Eclipse is the tool I use to deal with CVS file operations. It works really well not only with source code, but any other file type. &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;For example, if you want to upload a Microsoft Word document (docx) to a remote CVS repository, simply follow the following steps:&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;1.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;In Eclipse, import the remote CVS repository by using the Import wizard:&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;a.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Click File-&amp;gt;Import&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;b.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Choose &amp;ldquo;Projects from CVS&amp;rdquo; and click Next&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;c.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Depends on real situation, either select &amp;ldquo;Create a new repository location&amp;rdquo; or &amp;ldquo;Use an existing repository location&amp;rdquo;. In this example, we use an existing repository location because we want to add the Microsoft Word document to an existing CVS repository. Click Next.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;d.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Select &amp;ldquo;Use an existing module&amp;rdquo;, and navigate the tree list to find the repository you want to add the file to. Click Next.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt 1in;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;em&gt; If you need to upload different files to different subfolders (repositories) within a folder (repository), it&amp;rsquo;s often useful to select the parent folder in this step so you don&amp;rsquo;t need to run this wizard every time for each of the subfolders.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l0 level2 lfo1;mso-add-space:auto;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;e.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Follow the remaining steps in the wizard to finish the import process. Selecting &amp;ldquo;Check out as a project in the workspace&amp;rdquo; is the easiest way to import the repository to a new project. If you want to import it into your existing project, select &amp;ldquo;Check out into existing project.&amp;rdquo; &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="DISPLAY:none;MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="DISPLAY:none;mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;mso-hide:all;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;2.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Import the file(s) you want to add/update to the CVS repository to the appropriate folders:&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l1 level2 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;a.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;In the Project Explorer, expand the folder you just checked out from CVS, right click the folder you want to add the new file to, and click &amp;ldquo;Import&amp;rdquo; from the context menu.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l1 level2 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;b.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Select &amp;ldquo;File System&amp;rdquo; and click Next.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l1 level2 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;c.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Click &amp;ldquo;Browse&amp;hellip;&amp;rdquo; to browse the folder containing the file you want to add or update to CVS. &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l1 level2 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;d.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Select the files, and click &amp;ldquo;Finish&amp;rdquo;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l1 level2 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt 1in;TEXT-INDENT:-0.25in;mso-list:l1 level2 lfo2;mso-add-space:auto;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo2;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;3.&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Now the file(s) you want to add or update to CVS are in the appropriate folders. Right click each file, and click Team-&amp;gt; Commit to commit the file to the corresponding remote CVS repository. &lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 10pt;" class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Hope this helps.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1671301" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/8.+Other+_2800_Technical_2900_/default.aspx">8. Other (Technical)</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/5.+Programming/default.aspx">5. Programming</category></item><item><title>Internet Explorer Mobile 6 emulators are available to download</title><link>http://msmvps.com/blogs/nuoyan/archive/2008/11/12/internet-explorer-mobile-6-emulators-are-available-to-download.aspx</link><pubDate>Thu, 13 Nov 2008 01:46:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1653941</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1653941</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/11/12/internet-explorer-mobile-6-emulators-are-available-to-download.aspx#comments</comments><description>&lt;p&gt;Finally Internet Explorer Mobile 6 is there and a new&amp;nbsp;emulator version (Windows Mobile 6.1.4)&amp;nbsp;includes IE Mobile 6 is now available to download at &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1A7A6B52-F89E-4354-84CE-5D19C204498A&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=1A7A6B52-F89E-4354-84CE-5D19C204498A&amp;amp;displaylang=en&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Winwodws Mobile developers should certainly check this out and see how your applications can take advantage of this new IE Mobile.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1653941" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/3.+Windows+Mobile/default.aspx">3. Windows Mobile</category></item><item><title>How to connect Remote Spy++ to Windows Mobile emulators in Visual Studio 2008</title><link>http://msmvps.com/blogs/nuoyan/archive/2008/08/28/how-to-connect-remote-spy-to-windows-mobile-emulators-in-visual-studio-2008.aspx</link><pubDate>Thu, 28 Aug 2008 21:29:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1646122</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1646122</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/08/28/how-to-connect-remote-spy-to-windows-mobile-emulators-in-visual-studio-2008.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;I don&amp;rsquo;t see any problem doing so, but I got a question from a comment of one of my earlier post. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;The question states&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;font-family:Times New Roman;"&gt;&amp;ldquo;&lt;span style="mso-ansi-language:EN;"&gt;Hello! Could you please tell more about how to make Remote Spy++ connect to WM 5.0 emulator, which I got with MSVS2008? I&amp;#39;ve read some articles at microsoft.com, but they say you can&amp;#39;t connect to Windows Mobile, only Windows CE...&lt;/span&gt;&amp;rdquo;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;So I want to explain the process to connect Remote Spy to Windows Mobile emulator in Visual Studio 2008.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Here are the steps:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;1. On the Debug menu of Visual Studio 2008, click Start Debugging. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;em&gt;Note: Make sure you selected the correct emulator, for example, USA Windows Mobile 5.0 Pocket PC R2 emulator, depending on what Windows Mobile SDK you&amp;rsquo;re using for your project. The step is the same for Windows Mobile 6 and 6.1 emulators.&lt;/em&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;2. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;On the Start menu, click All Programs, expand Microsoft Visual Studio 2008 folder, click Remote Spy in the Visual Studio Remote Tools folder to start Remote Spy.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;3. In the Select a Windows CE Device dialog box of Remote Spy, select the emulator (or device) you want Remote Spy to connect to (the same one as you selected in step 1). Then click &amp;ldquo;OK.&amp;rdquo; Shortly you will be able to see the Windows List shows up.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="mso-ansi-language:EN;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Times New Roman;"&gt;Let me know if there&amp;rsquo;s any problem, and I will figure it out for you.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1646122" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/3.+Windows+Mobile/default.aspx">3. Windows Mobile</category></item><item><title>Begin making improvements on SDK documentations before losing your developers</title><link>http://msmvps.com/blogs/nuoyan/archive/2008/07/22/begin-making-improvements-on-sdk-documentations-before-losing-your-developers.aspx</link><pubDate>Tue, 22 Jul 2008 20:28:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1641778</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1641778</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/07/22/begin-making-improvements-on-sdk-documentations-before-losing-your-developers.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SDK documentation is the most official documentation and support material for developers to learn how to use the Application Programming Interfaces (APIs) the platform provides. The quality of SDK documentation directly affects the willingness and difficulty of the developers to create applications on that certain platform. However, in the current market, it&amp;#39;s just so hard to find perfect SDK documentations. Most developers have to rely on extra information such as books and technical communities to do their development. What are missing from the SDK documentations? Why the developers don&amp;#39;t like about the documentations? I think the lack of sample code, the lack of integration, and lack of innovation are some of the main reasons. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Lack of Sample Code&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Many SDK documentations only explain what the APIs are, the methods and properties, and how to use them. But there aren&amp;#39;t significant amount of sample code to show exactly how to use those APIs. &lt;/p&gt;
&lt;p&gt;For example, let&amp;#39;s look at the documentation of the ConfigurationManager class (&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.configuration.configurationmanager.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.configuration.configurationmanager.aspx&lt;/a&gt;) in the Managed Windows Mobile Class Library. Suppose you are not an expert in developing device applications using .NET Compact Framework, can you figure out how to use the ConfigurationManager programmatically in a very short time? I guess not. It&amp;#39;s not your fault, but the absent of some sample code. Though in this particular case &amp;nbsp;there is a particular section in the Windows Mobile SDK which contains many sample applications, that doesn&amp;#39;t help enough. Code segments are very necessary to be included along with the API descriptions.&lt;/p&gt;
&lt;p&gt;But then let&amp;#39;s look at the Address.AddressLine Property in the Live Search API Reference (&lt;a href="http://msdn.microsoft.com/en-us/library/bb251813.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb251813.aspx&lt;/a&gt;). In this case, thanks to the large amount of sample code, I&amp;#39;m positive that developers can get the idea very soon, because I personally do and I never developed any single application using Live Search APIs before. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;The developers will still be able to figure out how to use the APIs without good sample code segments after some time, but if the sample is there, then the developers will be able to figure it out immediately. This shows the importance, the value, and the &amp;quot;magic&amp;quot; of the code segments that most current SDK documentations don&amp;#39;t have, which is quite unfortunate. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Lack of Integration&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Every single API is documented, but unfortunately, nobody knows how to use them together from the documentation. &lt;/p&gt;
&lt;p&gt;Sample applications and starter kits do solve part of this problem and provide valuable information to the developers on how to use different APIs together. But looking at a sample application or starter kit with more than 500 lines of code just to know how to use two simple APIs together doesn&amp;#39;t seem efficient. &lt;/p&gt;
&lt;p&gt;I don&amp;#39;t know whether there can be any good way to completely solve this problem, but creating more topics on how to use some of the APIs together seems to be a good idea, because these topics will be of high value. An SDK documentation certainly needs to have some low value contents to cover everything, but users need high value documentation, and the high value part is the set of contents that they will use and appreciate the most.&lt;/p&gt;
&lt;p&gt;Users don&amp;#39;t need information in using all the combinations of the single APIs (that will be huge amount of contents to create, but low value). The creator of the documentation should do enough user research to understand what combinations of APIs are of the highest demand, then create topics on how to use those APIs together.&amp;nbsp; I bet the developers will like that. Well, don&amp;#39;t trust me, your user research will tell everything.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Lack of Innovation&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Every SDK documentation in the market looks similar in format and style. Every SDK documentation looks like a dictionary. As I mentioned above, it&amp;#39;s necessary for an SDK documentation to include every public API the platform offers, but the documentation can be a lot more flexible in addition to that. The creators focused too much on trying to document every API and fix every bug, but invested too little on researching the users and finding new and innovative ways to present the information. &lt;/p&gt;
&lt;p&gt;Then what are such innovative ways? There are a lot; and there are a lot that I don&amp;#39;t know. As mentioned above, providing some topics of using certain combinations of APIs (of highest demand) is one possible way to improve the usability and value of the documentation. In addition, I&amp;#39;m also thinking about the way the contents being presented can be improved so that when a developer needs help on a task (note, a task, not an API), information such as the APIs he may use, samples, alternative approaches, etc should be available to the developer. Then the developer can grab the information he needs very easily, and complete the task easier than ever. &lt;/p&gt;
&lt;p&gt;Creating high value SDK documentations is the same as creating high quality software products. Users are very important in the process. Formal user studies are very necessary in creating documentations, to determine what innovations can be done to best satisfy users&amp;#39; needs. &lt;/p&gt;
&lt;p&gt;Such improvements need a lot of work to be done, and that&amp;#39;s why we haven&amp;#39;t seen this happen yet. But again, developers don&amp;#39;t only need a &amp;quot;dictionary&amp;quot;, they need innovative and high value support contents that ultimately help them finish their work. SDK documentation creators should really realize and understand this. But since the demand is there, I&amp;#39;m positive that I can see some innovations &amp;nbsp;on SDK documentations in the future.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The good thing&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The good thing is that every major company creating SDK documentations also provides community support materials such as webcasts, blogs, and forums to assist developers. In the mean time, if such community support can be continued, and at the same time adding more code segments to existing topics, creating more high value topics in addition to the dictionary of APIs, begin to do formal user studies on documentation, and do some useful innovations, then the whole customer (developer) experience will be a lot better. As an Independent Software Vendor programming on many different platforms, I really hope I can see that happen as early as possible.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1641778" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/8.+Other+_2800_Technical_2900_/default.aspx">8. Other (Technical)</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/6.+Usability/default.aspx">6. Usability</category></item><item><title>No way to join the social – Is the lack of global languages support on Zune a problem, or not at all?</title><link>http://msmvps.com/blogs/nuoyan/archive/2008/05/16/no-way-to-join-the-social-is-the-lack-of-global-languages-support-on-zune-a-problem-or-not-at-all.aspx</link><pubDate>Fri, 16 May 2008 17:39:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1623454</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1623454</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/05/16/no-way-to-join-the-social-is-the-lack-of-global-languages-support-on-zune-a-problem-or-not-at-all.aspx#comments</comments><description>&lt;p&gt;&lt;br /&gt;It’s been a pretty long time since the first generation of Zune came out. Microsoft wants to attract us as potential users to join the social – they made pretty good media sharing and community features so that to distinct from similar products made by other companies. &lt;br /&gt;&lt;br /&gt;However, Zune has a very serious usability problem that even though a huge amount of users have been complaining all the time, it’s never been solved. It is the lack of support for most of the global languages. &lt;br /&gt;&lt;br /&gt;It’s true that Zune has not yet been available globally. However, the assumption of people in North America only listen to English, French, and Spanish songs just does not make sense. There’re people originally from almost anywhere in the world reside in North America temporarily or permanently. They speak different languages and they have their entertainment needs as well. They listen to English songs, but they also listen to songs on their own languages. &lt;br /&gt;&lt;br /&gt;You will be able to see the demand of global languages support by just doing a simple search on the Internet. You will see a huge number of complains from the date the first generation of Zune came out all the way up to the present time. &lt;br /&gt;&lt;br /&gt;The users do not even need Microsoft to have Zune menus displayed in their languages. They just need Zune to have the ability to show their song information correctly on the device. Technically, this is really a simple task for Microsoft to do. So it’s become a do-or-not-do decision for Microsoft. But provided the fact that until the newly released version 2.5, Zune still doesn’t support most global languages, I guess Microsoft made the not-do decision. But I still hope in the upcoming third generation, they can do it.&lt;br /&gt;&lt;br /&gt;If you now think that Microsoft has done nothing about this issue, you are wrong. In order for the users to solve this design or usability problem, Microsoft published a Knowledge Base article (&lt;a class="" href="http://support.microsoft.com/default.aspx/kb/928210/en-us?sd=zune" target="_blank"&gt;http://support.microsoft.com/default.aspx/kb/928210/en-us?sd=zune&lt;/a&gt;). It simply asks the user to change all the song information in other languages to their equivalent English representation. Well, does anybody like to find some spare time to translate and change the name, album, and artist information of 10,000 songs in the media library? Or do you, as a user, want to just simply buy an ipod, iriver, or Creative zen?&amp;nbsp; Microsoft tried to ask the customers to solve their own design issues. This will not work out in this user centric era!&lt;br /&gt;&lt;br /&gt;As the result, people have songs in foreign languages are in a frustrating situation. They may like their Zunes; they may like the social; but they don’t want to see the boxes showing in the device instead of the correct characters or languages anymore! Finally, they decide to switch, they either buy a much cheaper music player but supports 20 languages including their own, or go to use an ipod. &lt;br /&gt;&lt;br /&gt;Microsoft should really do something to solve this – provided it’s really just a matter of whether or not putting some font files in the system partition with just a little extra work.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1623454" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/9.+Other+_2800_Non-technical_2900_/default.aspx">9. Other (Non-technical)</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/6.+Usability/default.aspx">6. Usability</category></item><item><title>Who are you talking to on the Internet - Your next girlfriend, or her dog?</title><link>http://msmvps.com/blogs/nuoyan/archive/2008/05/15/who-are-you-talking-to-on-the-internet-your-next-girlfriend-or-her-dog.aspx</link><pubDate>Thu, 15 May 2008 18:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1623098</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1623098</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/05/15/who-are-you-talking-to-on-the-internet-your-next-girlfriend-or-her-dog.aspx#comments</comments><description>&lt;p&gt;&lt;br /&gt;Social networking web sites like MySpace are more and more popular in young people’s everyday life in recent years. People have the desire to make new friends on the Internet for various reasons, such as dating, for a relationship, for friendship, or for business networking; people also like to re-connect with old friend through such web sites.&lt;br /&gt;&lt;br /&gt;However, identity issues have never been completely solved for years. Years ago, everybody on the Internet can claim himself or herself to be anyone (without any technical restrictions). One person can steal pictures from another person’s web site and claim to be that person. Even in the present time, there’re a lot of profiles on web sites like MySpaces are fake ones. They claim (appear) to be pretty girls or handsome boys, and attract large amounts of people to add them into their friend lists. &lt;br /&gt;&lt;br /&gt;I’ve never done any research on this, but personally I think they may have the following goals in mind when stealing those identities and making those fake profiles.&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; Collect relatively a large number of users’ information for various illegal business purposes (i.e. but not limited to send Junk messages or any form of advertisements). They attract a lot of users in their desired genders to be in their friend lists, so that they can more or less get some personal information from them. There are, and actually quite a few young people provide real information in this kind of web sites.&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp; To get their psychological satisfactions. Some people with psychological issues have the desire to be a completely different person online and get a lot of followers.&amp;nbsp; They enjoy doing so and get the satisfactions they desire to have by doing so.&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp; Just for fun. Yes. Many people make a fake profiles just for fun.&lt;br /&gt;&lt;br /&gt;I believe there are many other reasons that I yet to know. But this is truly a problem. How can you ensure you are chatting with your potential date but not her dog on the Internet?&lt;br /&gt;&lt;br /&gt;Some new social network systems like Facebook provide ways to verify users identity. For example, if you want to register as a college student, you may have to use your college email address; if you want to register as a company employee, you may have to use your work email address; etc. But even so, you can still find several Bill Gates, several Steve Ballmer’s and etc in the system. People can still register for a profile freely and use a fake identity. &lt;br /&gt;&lt;br /&gt;As the result, this kind of identity issue is really a human issue, but not a technological issue. Indeed, my answer to the previous question I posed is “ to be careful.” Know your goal when you are using these web sites and don’t abuse. Try to verify whom you are really talking to before disclosing too much information. Learn to protect yourself. Young people like teenagers usually don’t protect themselves enough when trying to get to know new people. They should take more care.&amp;nbsp; And parents should provide more education to their children about protecting themselves online.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In fact, even in an ideal environment that everyone uses their own identity (can be real or imaginary but need to be their own, not stolen), there are still issues. For example, boyfriend may know girlfriend’s password so when you are talking to someone online, it’s possible that you’re really talking to her boyfriend; in the same sense, wife may know husband’s password, too. &lt;br /&gt;&lt;br /&gt;As the result, these issues are not likely to be technically solved, at least in a short time. Think about what information you want the others to know before disclosing; and think about if there’s any unexpected person who may potentially know this information as well before disclosing. Do some verification to make sure the one you’re talking to is the one you want to talk to. If you do all these carefully, I’m positive that you won’t email me and tell me that you’re in a relationship with a dog any more. &lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1623098" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/9.+Other+_2800_Non-technical_2900_/default.aspx">9. Other (Non-technical)</category></item><item><title>Xiaonei and Facebook - Huge differences, but who cares?</title><link>http://msmvps.com/blogs/nuoyan/archive/2008/05/12/xiaonei-and-facebook-huge-differences-but-who-cares.aspx</link><pubDate>Mon, 12 May 2008 18:01:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1621012</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1621012</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/05/12/xiaonei-and-facebook-huge-differences-but-who-cares.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.xiaonei.com" target="_blank"&gt;Xiaonei&lt;/a&gt;, which is called “the Facebook of China,” has a very similar user interface as &lt;a href="http://www.facebook.com" target="_blank"&gt;Facebook&lt;/a&gt;. It provides similar but simplified functionalities. While western media often compare the two and discuss about the potential competitions they may have, I don’t think in recent time there will be any big competition between them.&lt;br /&gt;&lt;br /&gt;In many senses Xiaonei and Facebook do the same thing. They are both social network systems and are both platforms designed mainly for people who already know each other to get connected or reconnected. However, there’s really a long way to go for both of them to have a real competition with each other.&lt;br /&gt;&lt;br /&gt;Xiaonei has absolute advantage in China. They started in as early as 2005 and accumulated a huge number of Chinese users. According to the recent news reports, they also raised a lot of money. But Facebook, on the other hand, has not even officially entered China (or just started to do so). As the result, even with the assumption Facebook gets started to enter the big Chinese market, they still need a lot of efforts to get the users to them. And many Xiaonei users may even think that Facebook copies Xiaonei, since they’ve never known Facebook before.&lt;br /&gt;&lt;br /&gt;However, Facebook currently has absolute advantage in technology. Although Xiaonei looks really like Facebook, they don’t get the same underlying technology, even for basic features. Every single software system has problems and bugs, but Xiaonei still has enough technical problems (bugs) to give users a bad experience. They need a long way to go to be technically comparable to Facebook.&amp;nbsp; As a user, I hope Xiaonei will invest more to the development team and create software with better quality. In addition to the quality issue, Facebook makes itself an open platform. They provide Application Programming Interfaces (APIs) to third party. Independent Software Vendors (ISVs) can develop their own applications or plug-ins for Facebook. By doing so, the contents of Facebook have been dramatically enriched. This also help creates a better user experience. &lt;br /&gt;&lt;br /&gt;Now you may realize why I make the point that Xiaonei and Facebook will not even in competition in a short time. They both have advantages that the other can’t catch up in a short time. Xiaonei will get more and more users and eventually succeed within China, while Facebook will continue their success in other parts of the world. I, as a user of both systems, just hope both of them can get better and provide us a great user experience. I hope Xiaonei can continually improve their technology; and Facebook can continue their efforts on globalization. &lt;br /&gt;&lt;br /&gt;It will be fun to see what the situation is again in 5 years. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1621012" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/9.+Other+_2800_Non-technical_2900_/default.aspx">9. Other (Non-technical)</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/6.+Usability/default.aspx">6. Usability</category></item><item><title>Microsoft Most Valuable Professional (MVP) Summit 2008</title><link>http://msmvps.com/blogs/nuoyan/archive/2008/03/27/microsoft-most-valuable-professional-mvp-summit-2008.aspx</link><pubDate>Thu, 27 Mar 2008 17:27:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1557245</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1557245</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/03/27/microsoft-most-valuable-professional-mvp-summit-2008.aspx#comments</comments><description>&lt;span style="FONT-SIZE:10pt;"&gt;&lt;font face="Times New Roman"&gt;The upcoming summit, April 14-17, will feature a keynote from Microsoft CEO Steve Ballmer and closing by Chief Software Architect Ray Ozzie, in addition to several sessions, including topics ranging from social media for peer-to-peer support to new developments such as Silverlight mobile to Skydrive. Nearly 1,800 MVPs are planning to attend.&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;"&gt;&lt;font face="Times New Roman"&gt;In conjunction with the summit, the Code Trip (&lt;/font&gt;&lt;a href="http://www.thecodetrip.com/"&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;www.thecodetrip.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Times New Roman"&gt;), which launched from MIX and has been traveling around the western U.S., is an RV housed with Microsoft developer evangelists spreading the word about new technologies and meeting MVPs at each stop. The final destination of the 21 city trip is the MVP summit.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;"&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;"&gt;&lt;font face="Times New Roman"&gt;As an MVP, I&amp;#39;m looking forward to attending the event.&amp;nbsp;I&amp;nbsp;am sure&amp;nbsp;that it will be great, and I&amp;nbsp;can&amp;#39;t wait to meet other attendees, including&amp;nbsp;technical experts from around the world and people from Microsoft product groups.&amp;nbsp;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;font size="3"&gt;P.S.&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;font size="3"&gt;Data points the significant role MVPs play. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="FONT-SIZE:12pt;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font face="Calibri"&gt;Worldwide there are more than 100 million participants in technical communities. &lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="FONT-SIZE:12pt;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font face="Calibri"&gt;Of these participants there are only 4,000 MVPs located across 93 countries, spanning more than 30 languages and more than 90 Microsoft technologies. &lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="FONT-SIZE:12pt;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font face="Calibri"&gt;There has been a 10 percent to 15 percent MVP audience growth in countries such as China, Russia and Korea.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font face="Calibri"&gt;Over the past few years new regions with MVPs include the Republic of Congo, Ghana, Nepal, Macedonia and Macao&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font face="Calibri"&gt;In recent years, a handful of MVPs have been awarded in new categories such as MSN, Xbox, Visual Studio Tools for Office, Microsoft Dynamics and Visual Studio Team System.&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="FONT-SIZE:12pt;FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font face="Calibri"&gt;MVPs are a diverse group that includes accountants, teachers, artists, government workers, engineers and technologists. &lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1557245" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/9.+Other+_2800_Non-technical_2900_/default.aspx">9. Other (Non-technical)</category></item><item><title>Usability Issue - Windows Security Center</title><link>http://msmvps.com/blogs/nuoyan/archive/2008/02/24/usability-issue-windows-security-center.aspx</link><pubDate>Sun, 24 Feb 2008 22:08:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1523602</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1523602</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/02/24/usability-issue-windows-security-center.aspx#comments</comments><description>&lt;p&gt;My friend went to China for a 3-month vacation last December. Just now she asked me to help turn on her computer and send her a file in her computer. Since the computer hasn&amp;#39;t been on for two months, the first notification I got when I logged in was a security notification said Windows Defender needed to be updated.&lt;/p&gt;
&lt;p&gt;I clicked the balloon notification, and it guided me to the Windows Security Center. Then I noticed that &lt;strong&gt;Spyware and other malware protection&lt;/strong&gt; is out of date, so I clicked &lt;strong&gt;Update Now&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Then a small dialog box pops up, as shown in the figure. &lt;/p&gt;
&lt;p&gt;&lt;img height="400" alt="" src="http://tkfiles.storage.live.com/y1pIpEK0SacD7nWX9-cfR2vdKS85haFBG4hck91sBoh0KLSTQ-EcRzkV0CbJ4ceJPlyvzT68kJiYpo" width="498" border="1" /&gt;&lt;/p&gt;
&lt;p&gt;There isn&amp;#39;t any problem so far. But if you look at the small dialog box, there are two buttons on it: &amp;quot;Cancel&amp;quot; and &amp;quot;Close&amp;quot;. &lt;/p&gt;
&lt;p&gt;As a user, I feel confused about the &amp;quot;Close&amp;quot; button. I clearly know by intuition that pressing the &amp;quot;Cancel&amp;quot; button will cancel the update process and return to Windows Security Center. But what does &amp;quot;Close&amp;quot; do?&amp;nbsp;Does it just&amp;nbsp;close the pop up dialog box and continue the updating process? Or does it end the updating process as well?&lt;/p&gt;
&lt;p&gt;It&amp;#39;s just confusing. &lt;/p&gt;
&lt;p&gt;There&amp;nbsp;can be many ways to solve the problem, such as changing &amp;quot;Close&amp;quot; to &amp;quot;Minimize&amp;quot;. It may be worth to survey some users about this problem to know&amp;nbsp;if the general&amp;nbsp;users consider this a problem.&amp;nbsp;At least&amp;nbsp;I personally consider it an usability issue.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1523602" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/1.+Windows+Client/default.aspx">1. Windows Client</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/6.+Usability/default.aspx">6. Usability</category></item><item><title>Usability Issue - My Keyboard's "Logout" Button </title><link>http://msmvps.com/blogs/nuoyan/archive/2008/01/11/usability-issue-my-keyboard-s-quot-logout-quot-button.aspx</link><pubDate>Sat, 12 Jan 2008 01:37:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1456940</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1456940</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2008/01/11/usability-issue-my-keyboard-s-quot-logout-quot-button.aspx#comments</comments><description>&lt;p&gt;There are three shortcut buttons on my keyboard which are linked to the calculator, logout command, and sleep command respectively. They are next to each other. I like this design since these shortcut buttons have saved me a lot of times for these activities, especially for the calculator.&lt;/p&gt;
&lt;p&gt;However, one day when I try to use the calculator, I mistakenly pressed the &amp;quot;logout&amp;quot; button. My system immediately logs out without double checking with me. I didn&amp;#39;t lost my work, but logging back-in and open up the applications I need takes time.&lt;/p&gt;
&lt;p&gt;I consider this as a usability issue. The three buttons are placed very&amp;nbsp;close to each other, so there will be chances for the users to accidently press the wrong button. Actions like &amp;quot;logout&amp;quot; and &amp;quot;sleep&amp;quot;&amp;nbsp;are not&amp;nbsp;like just launching a program, a double check with the user is a quite necessary routine.&lt;/p&gt;
&lt;p&gt;The User Interface or Experience Designers of the keyboard should realize about this;&amp;nbsp;design usability studies to test the users;&amp;nbsp;and make improvements. The usability study should be detailed enough to test every possible interaction between the user and the interface. For example, it shouldn&amp;#39;t only testing whether the user can find the button which executes the logout activity, but also need to test the scenario that the action has been done by accident. In this case, a relatively long term test by the users may also help in collecting more valuable feedbacks.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1456940" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/6.+Usability/default.aspx">6. Usability</category></item><item><title>Usability Issue in Windows Recycle Bin on the Desktop</title><link>http://msmvps.com/blogs/nuoyan/archive/2007/12/28/usability-issue-in-windows-recycle-bin-on-the-desktop.aspx</link><pubDate>Sat, 29 Dec 2007 04:33:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1424845</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1424845</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2007/12/28/usability-issue-in-windows-recycle-bin-on-the-desktop.aspx#comments</comments><description>&lt;p&gt;If you put a Recycle Bin on the desktop, you might empty it by right clicking it and click &amp;quot;Empty Recycle Bin&amp;quot; form the menu.&lt;/p&gt;
&lt;p&gt;But you&amp;nbsp;may have noticed that there is another option in the menu called &amp;quot;Delete&amp;quot; which is for deleting the Recycle Bin shortcut from the desktop.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://tkfiles.storage.live.com/y1pIpEK0SacD7lRsL6jiAjvmnZW6RZxpGT_AYM2IuDx7xoTG2QwUqnlOfmbyfBW_TUMZNNRhwJbwIc" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I saw many people mistakenly clicking the &amp;quot;Delete&amp;quot; menu item instead of the correct &amp;quot;Empty Recycle Bin&amp;quot; for emptying the trash, so I consider this as a usability issue for this design.&lt;/p&gt;One way to solve this issue is to replace the &amp;quot;Delete&amp;quot; menu item with other names such as &amp;quot;Remove this shortcut.&amp;quot; Currently I don&amp;#39;t have any better idea.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1424845" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/1.+Windows+Client/default.aspx">1. Windows Client</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/2.+Windows+Server/default.aspx">2. Windows Server</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/8.+Other+_2800_Technical_2900_/default.aspx">8. Other (Technical)</category><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/6.+Usability/default.aspx">6. Usability</category></item><item><title>New Windows Mobile Starter Kits</title><link>http://msmvps.com/blogs/nuoyan/archive/2007/09/25/new-windows-mobile-starter-kits.aspx</link><pubDate>Tue, 25 Sep 2007 17:29:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1215090</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1215090</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2007/09/25/new-windows-mobile-starter-kits.aspx#comments</comments><description>&lt;p&gt;There are some new Windows Mobile Starter Kits published recently on MSDN demonstrating different technologies include DirectDraw on mobile applications, WIndows Mobile Ink APIs, Home Screen APIs, etc.&lt;/p&gt;
&lt;p&gt;A starter kit is a useful and ready-to-run project which helps developers to understand the concepts of various technologies. It comes with a detailed documentation which helps developers to understand the code and structure of the programming project in the starter kit. Developers can develop their own application based on the existing starter kits.&lt;/p&gt;
&lt;p&gt;The following link on MSDN explains the details of the starter kits and provides links for you to download them.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/windowsmobile/bb264330.aspx"&gt;http://msdn2.microsoft.com/en-us/windowsmobile/bb264330.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1215090" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/3.+Windows+Mobile/default.aspx">3. Windows Mobile</category></item><item><title>Windows Mobile Ink: The Correct Way of Getting Recognition Results</title><link>http://msmvps.com/blogs/nuoyan/archive/2007/08/05/sss.aspx</link><pubDate>Sun, 05 Aug 2007 08:30:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1086704</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1086704</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2007/08/05/sss.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Windows Mobile Ink APIs are new in Windows Mobile 6 SDK. I guess they are trying to replace the old RichInk APIs.&lt;/p&gt;
&lt;p&gt;The way of using Windows Mobile Ink is not complex. The basic idea is to have a IInkOverlay object as an ink collector; an IInkDisp object as a container of strokes data; an IInkStrokes object as a collection of IInkStrokeDisp object. The IInkOverlay object collects the ink data and put them&amp;nbsp;in the IInkDisp object. Then the IInkDisp object put the strokes to the IInkStrokes object.&lt;/p&gt;
&lt;p&gt;When the strokes data are in&amp;nbsp;the IInkStrokes object, it&amp;#39;s time to get the best recognition result. Currently there&amp;nbsp;are two ways of doing that. One is to directly use the ToString() method to get the best recognition result; the other is to create an IInkRecognitionResult object and use get_RecognitionResult property to get the recognition result set from the IInkStrokes object, then use get_TopString() property to get the best fit result and put it in the BSTR.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;/**&lt;/p&gt;
&lt;p&gt;* pInkStrokes is the IInkStrokes object.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* pInkRecognitionResult is the IInkRecognitinoResult object.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* StringRecognitionResult is the BSTR.&lt;/p&gt;
&lt;p&gt;**/&lt;/p&gt;
&lt;p&gt;//Get the best recognition result to the IInkRecognitionResult object&lt;/p&gt;
&lt;p&gt;pInkStrokes-&amp;gt;get_RecognitionResult(&amp;amp;pInkRecognitionResult);&lt;/p&gt;
&lt;p&gt;//Get the best recognition result to the BSTR&lt;/p&gt;
&lt;p&gt;pInkRecognitionResult-&amp;gt;get_TopString(&amp;amp;StringRecognitionResult);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The first way, using ToString(), seems to be much easier than the second way which is to use IInkRecognitionResult object; However, ToString() is not recommended to be used in this case. I&amp;#39;ve ever mistakenly used ToString() in this case and had some strange exceptions raised (i.e. WinCE501bException) when my application is not used properly.&amp;nbsp;As the result the correct way of getting ink recognition results is to use IInkRecognitionResult object and its properties. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1086704" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/3.+Windows+Mobile/default.aspx">3. Windows Mobile</category></item><item><title>Windows Mobile: Getting Screen Size Information Before Main Window Is Loaded</title><link>http://msmvps.com/blogs/nuoyan/archive/2007/07/22/windows-mobile-getting-screen-size-information-before-main-window-has-loaded.aspx</link><pubDate>Sun, 22 Jul 2007 19:19:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1047435</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1047435</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2007/07/22/windows-mobile-getting-screen-size-information-before-main-window-has-loaded.aspx#comments</comments><description>&lt;p&gt;I wanted to develop a screen size aware application, which will draw all application dialogboxes and windows dynamically depends on the actual screen size of the device. It will not be that hard to adapt the main application window to the screen size because GetWindowRect() or GetClientRect() functions can be used to get the screen size when the main window is loaded. &lt;/p&gt;
&lt;p&gt;However, if the application has a pop-op dialogbox for user to do some selections before the main window is loaded, how can I make the dialogbox aware of the screen size? Since main application window hasn&amp;#39;t loaded yet so GetWindowRect() and GetClientRect() won&amp;#39;t get the correct value for screen size. &lt;/p&gt;
&lt;p&gt;I thought about it, asked people around me and looked for some related resources, then I found two solutions.&lt;/p&gt;
&lt;p&gt;The first way of doing it is to use GetSystemMetrics() function. It&amp;nbsp;can get the screen size even the main application window hasn&amp;#39;t been loaded yet. So if I define two int variables height and width, then I can set:&lt;/p&gt;
&lt;p&gt;height = GetSystemMetrics(SM_CYSCREEN);&lt;/p&gt;
&lt;p&gt;width = GetSystemMetrics(SM_CXSCREEN);&lt;/p&gt;
&lt;p&gt;Then I can use MoveWindow() under WM_INITDIALOG message handler to make the dialogbox aware of screen size.&lt;/p&gt;
&lt;p&gt;The second way of doing it can be delaying the display of the dialogbox until main window is initialized (not necessarily shown). To implement it this way, I need to have a&amp;nbsp;global integer variable&amp;nbsp;storing the state&amp;nbsp;of the application. It can be set to a specific value, then as the main window has been initialized, set the global integer to another value. Then&amp;nbsp;have&amp;nbsp;a test of the value, to judge when to display the dialogbox. At the time the dialogbox can be displayed, main application window&amp;nbsp;is already initialized so GetWindowRect() function can return the appropriate screen size information.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1047435" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/3.+Windows+Mobile/default.aspx">3. Windows Mobile</category></item><item><title>Using Remote Spy++ To Check Window Messages in Windows Mobile Applications</title><link>http://msmvps.com/blogs/nuoyan/archive/2007/07/04/using-remote-spy-to-check-window-messages-in-windows-mobile-applications.aspx</link><pubDate>Wed, 04 Jul 2007 17:30:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1000962</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=1000962</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2007/07/04/using-remote-spy-to-check-window-messages-in-windows-mobile-applications.aspx#comments</comments><description>&lt;p&gt;Windows programming in native C++ is generally considered far more complex than in managed code. Programming for Windows Mobile devices is&amp;nbsp;very similar&amp;nbsp;with&amp;nbsp;Windows programming. Sometimes we need to figure out which Window message is sent so we can&amp;nbsp;write the corresponding event handling code. However, we can&amp;#39;t use Spy++ to do so because we are either debugging our application in the device emulator which is a virtual machine or an actual device.&lt;/p&gt;
&lt;p&gt;Visual Studio has a tool called Remote Spy++ (with an array of other remote tools), which provides us the functionality to work with device emulators and/or &amp;nbsp;actual connected devices. So if you don&amp;#39;t know this guy yet and want to use Spy++ for your device application, you can go ahead and try. It&amp;#39;s pretty cool and may save you a lot of work to watch for the right messages.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1000962" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/3.+Windows+Mobile/default.aspx">3. Windows Mobile</category></item><item><title>Book Recommendation</title><link>http://msmvps.com/blogs/nuoyan/archive/2007/05/29/book-recommendation.aspx</link><pubDate>Wed, 30 May 2007 06:04:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:933440</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=933440</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2007/05/29/book-recommendation.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.amazon.com/gp/redirect.html%3FASIN=1556155514%26tag=nuoyanslife-20%26lcode=sp1%26cID=2025%26ccmID=165953%26location=/o/ASIN/1556155514%253FSubscriptionId=1KDHEGDEXZNBKYAEECR2"&gt;&lt;font color="#669966"&gt;Writing Solid Code: Microsoft&amp;#39;s Techniques for Developing Bug-Free C Programs (Microsoft Programming Series)&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yes it&amp;#39;s an old book which was published in 1993, but it&amp;#39;s really awesome! I first got this book&amp;nbsp;in last&amp;nbsp;Saturday night, then I spent several hours finished reading it. I just couldn&amp;#39;t stop until I finished!&lt;/p&gt;
&lt;p&gt;I recommend every C programmer to read it, if you haven&amp;#39;t done so yet.&lt;/p&gt;
&lt;p&gt;Nuo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=933440" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/5.+Programming/default.aspx">5. Programming</category></item><item><title>Some Thinkings In Software Piracy</title><link>http://msmvps.com/blogs/nuoyan/archive/2007/05/04/some-thinkings-in-software-piracy.aspx</link><pubDate>Fri, 04 May 2007 17:05:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:890282</guid><dc:creator>Nuo Yan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nuoyan/rsscomments.aspx?PostID=890282</wfw:commentRss><comments>http://msmvps.com/blogs/nuoyan/archive/2007/05/04/some-thinkings-in-software-piracy.aspx#comments</comments><description>&lt;p&gt;Last Friday when I was visiting an internet portal consisting of a chat room of&amp;nbsp;a specific&amp;nbsp;group of people, I saw the following conversation:&lt;/p&gt;
&lt;p&gt;A: How can I configure the system to prevent keeping getting the messages which notify me that the software I use is not genuine?&lt;/p&gt;
&lt;p&gt;B: Just ignore the messages, as you still can use the software.&lt;/p&gt;
&lt;p&gt;It just doesn&amp;#39;t make sense why somebody wants to ask such question, and why the other answers like that. The answer should be &amp;quot;go to buy and use a genuine copy.&amp;quot;&lt;/p&gt;
&lt;p&gt;We all know the fact that in many places in the world there are still a lot of people using pirate software, but we realy need to think further about the reason. Are they really just can&amp;#39;t afford to buy genuine software? No, I don&amp;#39;t think so. The answer is not that easy. Many of the people can spend hundreds of dollars for dinner, for clothes, etc, but they just don&amp;#39;t want to spend the same amount for a genuine copy of software. &lt;/p&gt;
&lt;p&gt;I don&amp;#39;t know anything about psychology, but I guess such people are using a way of thinking which is in the wrong logic. They may probably think that there&amp;#39;s no reason to spend money to buy something which can be&amp;nbsp;found elsewhere&amp;nbsp;for free. But they may not know (hopefully) that doing so is just like somebody steals something and give to them to use. By doing so in a long time, this has become a using habit and people don&amp;#39;t want to buy genuine software anymore.&lt;/p&gt;
&lt;p&gt;As the result, software piracy is not just a problem of rich or poor. It&amp;#39;s true that decreasing software price in specific places&amp;nbsp;of the world may increase the sale; However, proper education&amp;nbsp;and time are also quite necessary. This should be a collaboration of different parties. Schools should provide such kind of education in a very early stage so people know that using priate software is&amp;nbsp;a kind of guilt from their early ages. People has enough money should begin using genuine software, to enjoy better services. Softwre companies should increase the quality of software, and increase the quality of the services provided for genuine users. If the users who are currently using pirate software get same functionality and same level of services or support when they are using&amp;nbsp;genuine software, they would probably continue using pirate software because it&amp;#39;s free. Governments also need to provide support on policies for genuine software. Pirate software will not disappear in a minute, so we also need some time. If you know some of your friends may be using pirate software, tell them why using genuine software is important; and tell them how they can benefit from doing so. If they can&amp;#39;t afford using genuine copy, there are also a lot of free software and evaluation software available. Pirate one are not their only choice.&lt;/p&gt;
&lt;p&gt;All the things&amp;nbsp;above&amp;nbsp;are just some personal ideas, the concepts are not new and&amp;nbsp;most people may already know.&amp;nbsp;&amp;nbsp;My intend is just to let even more people, especially those who are currently using pirate software but actually can afford genuine software, know the importance and benefits of using genuine software. Using pirate software is not free, but it costs much&amp;nbsp;(guilt, illegal in some places, etc). As the result, let&amp;#39;s help everyone around us stop using pirate software; let&amp;#39;s help make the software industry better.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=890282" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nuoyan/archive/tags/9.+Other+_2800_Non-technical_2900_/default.aspx">9. Other (Non-technical)</category></item></channel></rss>