<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Bill Li</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/bali_msft/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/bali_msft/feed.xml</link>
    <description>Think globally, act locally.</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:45:03 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Move</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/move</link>
      <pubDate>Wed, 29 Jul 2009 00:20:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/07/29/move/</guid>
      <description><![CDATA[My blog has moved to https://www.BaliOnWeb.com. Most of articles are also moved to new site. This is...]]></description>
      <content:encoded><![CDATA[My blog has moved to<b><a href="https://www.balionweb.com" mce_href="https://www.balionweb.com"></a></b> <b><a href="https://www.BaliOnWeb.com" mce_href="https://www.BaliOnWeb.com">https://www.BaliOnWeb.com</a></b>. Most of articles are also moved to new site. This is retired at this moment.<br>]]></content:encoded>
    </item>
    <item>
      <title>My PM talk in SJTU</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/my-pm-talk-in-sjtu</link>
      <pubDate>Mon, 01 Jun 2009 11:44:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/06/01/my-pm-talk-in-sjtu/</guid>
      <description><![CDATA[Finally, I delivered my first talk. Kind of excited, you can imagine. :-)
PPT can be found...]]></description>
      <content:encoded><![CDATA[<p>Finally, I delivered my first talk. Kind of excited, you can imagine. :-)</p>
<p>PPT can be found @</p>
<p><a href="https://cid-0c5963e0b1a0be5d.skydrive.live.com/self.aspx/Public/PM%20Talk.ppt" mce_href="https://cid-0c5963e0b1a0be5d.skydrive.live.com/self.aspx/Public/PM%20Talk.ppt">https://cid-0c5963e0b1a0be5d.skydrive.live.com/self.aspx/Public/PM%20Talk.ppt</a>&nbsp;</p>
<p>Let me know what you think of it.</p><p><u><b>Update 7/30/2009<br></b></u></p><p>This post has been moved to <a href="https://www.balionweb.com/my-pm-talk-in-sjtu.html" mce_href="https://www.balionweb.com/my-pm-talk-in-sjtu.html">https://www.balionweb.com/my-pm-talk-in-sjtu.html</a> <br></p>]]></content:encoded>
    </item>
    <item>
      <title>If I were designing a new email service, I would…</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/if-i-were-designing-a-new-email-service-i-would</link>
      <pubDate>Wed, 11 Mar 2009 06:49:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/03/11/if-i-were-designing-a-new-email-service-i-would/</guid>
      <description><![CDATA[All great designs come from deep understanding to customers. In my case, I'd like to design the...]]></description>
      <content:encoded><![CDATA[<P><SPAN lang=EN-US><FONT size=3 face=Calibri>All great designs come from deep understanding to customers. In my case, I'd like to design the email service for information workers(IW) as I am one of them. Basically they are hired to get things done. Modern projects, or tasks in smaller granularity, are getting too complex to be accomplished individually. So people have to work together – we call it collaboration. Consequently they <STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">have to</SPAN></STRONG> communicate. They <STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">are forced</SPAN></STRONG> to communicate. Email solves the problem of logistics and synchronization so that communication could happen between different time frames and locations, so it is still indispensable currently. But it is far from perfect, sometimes it is a trouble. Can it be done any better? Let us have a try. This new thing is called Pmail. </FONT></SPAN></P>
<H2 style="MARGIN: 10pt 0cm 0pt"><FONT size=4><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-weight: normal; mso-bidi-font-size: 13.0pt" lang=EN-US>Entities</SPAN></U></STRONG><SPAN style="FONT-WEIGHT: normal; mso-bidi-font-weight: bold" lang=EN-US><FONT color=#17365d><FONT face=Calibri> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></SPAN></FONT></H2>
<P><SPAN lang=EN-US><FONT size=3 face=Calibri>First of all, let us keep in mind that <U>tasks</U> are actually what IWs really care about. They are much happier if they can complete assigned task without touching emails. Right? Completion of tasks is what they are trying to achieve. Second, when they have to communicate, they care about <U>distilled information</U> they are expecting while writing/reading emails. You will not get any additional credit through presenting your idea by writing a poem. <U>Senders</U> and <U>recipients</U> come last. Without them, communication can't happen. These two entities get lower priorities because if distilled information can be gained by other means, say search engine or anonymous DL, who cares them? </FONT></SPAN></P>
<P><SPAN lang=EN-US><FONT size=3 face=Calibri>Again - email for IWs is all about tasks, not messages. This is the most fundamental philosophy differentiating Pmail's design from others. </FONT></SPAN></P>
<H2 style="MARGIN: 10pt 0cm 0pt"><FONT size=4><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-weight: normal; mso-bidi-font-size: 13.0pt" lang=EN-US>Problems - an abused tool in workplace </SPAN></U></STRONG><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; FONT-WEIGHT: normal; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-size: 13.0pt" lang=EN-US><o:p></o:p></SPAN></U></STRONG></FONT></H2>
<P><SPAN lang=EN-US><FONT size=3 face=Calibri>By nature, current email systems allow one sends <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">anything</SPAN></EM> to <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">any</SPAN></EM> number of persons at <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">anytime</SPAN></EM> <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">anywhere</SPAN></EM>. Gradually it turns out true that something that can be anything can do nothing actually. Theoretically any email should be of your interest; otherwise sender will not send it to you. Realistically it is so easy to be over-used: </FONT></SPAN></P>
<UL type=disc>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l3 level1 lfo1; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Email overload.</SPAN></STRONG><SPAN lang=EN-US><FONT face=Calibri> You might probably find everyone around you is complaining about too many emails. Doubt? Open you email clients, see how many unread mails you have. NY Times reports, </FONT><A href="https://www.nytimes.com/2008/04/20/technology/20digi.html?_r=3&amp;oref=slogin&amp;oref=slogin" mce_href="https://www.nytimes.com/2008/04/20/technology/20digi.html?_r=3&amp;oref=slogin&amp;oref=slogin"><FONT face=Calibri>E-MAIL has become the bane of some people's professional lives</FONT></A><FONT face=Calibri>. This occurs likely because of complicated job nature, but I'd say often it is actually because of poor email prioritization. Can you easily tell which email is much more important than others? Or emails tell its priority to you? </FONT></SPAN></FONT></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l3 level1 lfo1; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><SPAN lang=EN-US></SPAN></FONT><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Hard to map emails to one's day-to-day jobs.</SPAN></STRONG><SPAN lang=EN-US><FONT face=Calibri> How many times you have to search your emails to dig certain messages out because you need something? </FONT></SPAN></FONT></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l3 level1 lfo1; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><SPAN lang=EN-US></SPAN></FONT><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Mail thread discussions often go wild. </SPAN></STRONG><SPAN lang=EN-US><FONT face=Calibri>Do you find you are in trouble figuring out what is going on when suddenly looped in a thread?<STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"> </SPAN></STRONG></FONT></SPAN></FONT></LI></UL>
<H2 style="MARGIN: 10pt 0cm 0pt"><FONT size=4><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-weight: normal; mso-bidi-font-size: 13.0pt" lang=EN-US>At a glance </SPAN></U></STRONG><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; FONT-WEIGHT: normal; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-size: 13.0pt" lang=EN-US><o:p></o:p></SPAN></U></STRONG></FONT></H2>
<P><SPAN lang=EN-US><FONT size=3 face=Calibri>Pmail's primary design goal is to help team get jobs done efficiently – under right timing, priorities, order and resources. Everyone would have a clear picture about how his work contributes to team success. </FONT></SPAN></P>
<P><SPAN lang=EN-US><IMG style="WIDTH: 235px; HEIGHT: 469px" title="Bird view" border=1 alt="Bird view" align=middle src="https://lh6.ggpht.com/_A9xfBBUVmv4/SbfCCnDkiFI/AAAAAAAABiE/wTCVCAgkKCQ/s800/BirdView.png" width=235 height=469 mce_src="https://lh6.ggpht.com/_A9xfBBUVmv4/SbfCCnDkiFI/AAAAAAAABiE/wTCVCAgkKCQ/s800/BirdView.png"></SPAN></P>
<P><SPAN lang=EN-US></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Pmail would also aim to minimize communications as much as possible. Leave users alone please. In task-centered email design, all emails will fall into one of below four categories: </FONT></FONT></SPAN></P><SPAN lang=EN-US>
<P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1" class=MsoTableGrid border=1 cellSpacing=0 cellPadding=0 class="MsoTableGrid">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d99594; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-background-themecolor: accent2; mso-background-themetint: 153; mso-border-themecolor: text1; mso-border-right-alt: solid black .5pt; mso-border-right-themecolor: text1" vAlign=top width=123>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Category<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 5cm; PADDING-RIGHT: 5.4pt; BACKGROUND: #d99594; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-background-themecolor: accent2; mso-background-themetint: 153; mso-border-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=189>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Description<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 212.65pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d99594; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-background-themecolor: accent2; mso-background-themetint: 153; mso-border-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=284>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Example<o:p></o:p></FONT></FONT></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 177.15pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #d99594; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-background-themecolor: accent2; mso-background-themetint: 153; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=236>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Your Action<o:p></o:p></FONT></FONT></SPAN></B></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-alt: solid black .5pt; mso-border-right-themecolor: text1" vAlign=top width=123>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>FYI<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 5cm; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-themecolor: text1; mso-border-right-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=189>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>There is no immediate impact to any tasks in your plate at this moment<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 212.65pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-themecolor: text1; mso-border-right-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=284>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>High level org changes announcement<o:p></o:p></FONT></FONT></SPAN></P>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpMiddle><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Knowledge sharing<o:p></o:p></FONT></FONT></SPAN></P>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>News letter<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 177.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=236>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>No – No immediately action required<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-alt: solid black .5pt; mso-border-right-themecolor: text1" vAlign=top width=123>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Catch the ball<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 5cm; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-themecolor: text1; mso-border-right-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=189>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Someone requires you do something to unblock his task(s)<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 212.65pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-themecolor: text1; mso-border-right-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=284>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Sign Off request<o:p></o:p></FONT></FONT></SPAN></P>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpMiddle><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Fix broken printer<o:p></o:p></FONT></FONT></SPAN></P>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Mandatory code review for check in<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 177.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=236>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Action required – Do something and then back to requester with results<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3">
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-alt: solid black .5pt; mso-border-right-themecolor: text1" vAlign=top width=123>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Here you go<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 5cm; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-themecolor: text1; mso-border-right-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=189>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Someone provides you what your task(s) require<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 212.65pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-themecolor: text1; mso-border-right-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=284>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Approval letter<o:p></o:p></FONT></FONT></SPAN></P>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Team member phone number collection table<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 177.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=236>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Action unblocked – You are ready to go complete specific task(s) if all dependencies are resolved<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 4; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 92.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-alt: solid black .5pt; mso-border-right-themecolor: text1" vAlign=top width=123>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Collective efforts<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 5cm; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-themecolor: text1; mso-border-right-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=189>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Someone needs your inputs for task(s) he is working on<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 212.65pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-themecolor: text1; mso-border-right-themecolor: text1; mso-border-alt: solid black .5pt; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=284>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Execution plan review<o:p></o:p></FONT></FONT></SPAN></P>
<P style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3></FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Brainstorming<o:p></o:p></FONT></FONT></SPAN></P></TD>
<TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 177.15pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=236>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Best efforts – do what you can to provide inputs<o:p></o:p></FONT></FONT></SPAN></P></TD></TR></TBODY></TABLE></P>
<P></SPAN><FONT size=4><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-weight: normal; mso-bidi-font-size: 13.0pt" lang=EN-US>Persona/User scenarios </SPAN></U></STRONG><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; FONT-WEIGHT: normal; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-size: 13.0pt" lang=EN-US><o:p></o:p></SPAN></U></STRONG></FONT></P>
<P><SPAN lang=EN-US><FONT size=3 face=Calibri>Key scenarios that Pmail addresses include: </FONT></SPAN></P>
<UL type=disc>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Know big picture for better prioritization</SPAN></STRONG><SPAN lang=EN-US><FONT face=Calibri> – <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">Steven</SPAN></EM>, who is a developer in a software development team, came to his office in a morning. He opens bird view of pmail to check how his tasks (or </FONT><A href="https://en.wikipedia.org/wiki/Work_breakdown_structure" mce_href="https://en.wikipedia.org/wiki/Work_breakdown_structure"><FONT face=Calibri>WBS</FONT></A><FONT face=Calibri> in more general term) fits into the entire team progress. He notices one of his tasks, task8, is in </FONT><A href="https://en.wikipedia.org/wiki/Critical_path_method" mce_href="https://en.wikipedia.org/wiki/Critical_path_method"><FONT face=Calibri>critical path</FONT></A><FONT face=Calibri> according to updated plan(never expect plan is really locked after lock-down). This task is automatically prioritized to p0(highest priority) by Pmail. It is about implementing a feature according to design specification by feature PM. </FONT></SPAN></FONT></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Maintain dependencies </SPAN></STRONG><SPAN lang=EN-US><FONT face=Calibri>– <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">Steven</SPAN></EM> goes ahead to open task8 and find this task depends on two resources, 1) one LHS virtual machine, which has been completed by task7. VM address and credential are also attached. Nice! 2) PM spec. It is also claimed completed. </FONT></SPAN></FONT></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Main email threads around tasks </SPAN></STRONG><SPAN lang=EN-US><FONT face=Calibri>–<EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">Steven</SPAN></EM> opened the spec document in team Sharepoint server, and he finds several points are not clear for him. Then <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">Steven</SPAN></EM> starts a mail conversation with relative PM, <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">Joanne,</SPAN></EM> against this task. The mail thread is linked to task8 and its status is open. </FONT></SPAN></FONT></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Drive team work flow – </SPAN></STRONG><EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Joanne</SPAN></EM><SPAN lang=EN-US><FONT face=Calibri> received a catch-the-ball mail from <EM>Steven</EM> about p0 task8, so it is a shadow p0 task for her as well. <EM>Joanne</EM> can check task details in the Pmail. She quickly comes up with answers regarding <EM>Steven</EM>'s questions and writes back a here-you-go email to <EM>Steven</EM>. <EM>Steven</EM> receives the email and get unblocked. <EM>Steven</EM> closed the email thread by several sentences. This mail thread is traceable in task8 and can't be replied any more as it is closed. Several hours later, <EM>Steven</EM> completes task8 and closes it in Pmail. When <EM>Steven</EM> re-visits the bird view page of Pmail, he finds task8's color&nbsp;turns green&nbsp;due to status change. <EM>Steven</EM> then picks up another one unblocked taks, task9.</FONT></SPAN></FONT></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Maintain team discussion</SPAN></STRONG><SPAN lang=EN-US><FONT face=Calibri> – Task9 is about designing a new feature F9. Deliverable is reviewable dev design spec. <EM>Steven</EM> has two options about solving a technical problem, but not sure which way to go. He then sends a collective-effort discussion mail to the whole team. Since this is not a catch-the-ball mail, team mates will treat it with best efforts, but <EM>Steven</EM> still gets several great feedbacks. When he feels the problem is solved, he summarizes the thread with several sentences and closes the thread. </FONT></SPAN></FONT></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><FONT size=3><STRONG><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi" lang=EN-US>Check history </SPAN></STRONG><SPAN lang=EN-US><FONT face=Calibri>– One year later, <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">Steven</SPAN></EM> transfers to another team and his replacement, <EM><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">Eric</SPAN></EM>, would like to better understand why F9 is designed this way. He opened Task9 in Pmail, check the mail thread and better understand original design decision. </FONT></SPAN></FONT></LI></UL>
<H2 style="MARGIN: 10pt 0cm 0pt"><FONT size=4><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-weight: normal; mso-bidi-font-size: 13.0pt" lang=EN-US>Demo/UI&nbsp;Mock-up</SPAN></U></STRONG><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; FONT-WEIGHT: normal; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-size: 13.0pt" lang=EN-US><o:p></o:p></SPAN></U></STRONG></FONT></H2>
<P><SPAN lang=EN-US><FONT size=3 face=Calibri>Bird view will look like above diagram. In following task view, you can see all mail threads about one task are at your finger tips.</FONT></SPAN></P>
<P><SPAN lang=EN-US><IMG style="WIDTH: 600px; HEIGHT: 299px" title="Task view" border=1 alt="Task view" src="https://lh3.ggpht.com/_A9xfBBUVmv4/SbfCC9MkAUI/AAAAAAAABiU/_k0IEe8u1_Q/s800/Task.png" width=600 height=299 mce_src="https://lh3.ggpht.com/_A9xfBBUVmv4/SbfCC9MkAUI/AAAAAAAABiU/_k0IEe8u1_Q/s800/Task.png"></SPAN></P>
<P><SPAN lang=EN-US><SPAN style="mso-no-proof: yes"></SPAN></SPAN></P>
<P><SPAN lang=EN-US><FONT size=3 face=Calibri>Mail view will also a bit different. Every mail has a TaskID field to help you get the whole context conveniently.</FONT></SPAN></P>
<P><SPAN lang=EN-US><IMG style="WIDTH: 600px; HEIGHT: 344px" title="Mail view" border=1 alt="Mail view" src="https://lh4.ggpht.com/_A9xfBBUVmv4/SbfCCmduy3I/AAAAAAAABiM/lAkbo0aziGU/s800/Mail.png" width=600 height=344 mce_src="https://lh4.ggpht.com/_A9xfBBUVmv4/SbfCCmduy3I/AAAAAAAABiM/lAkbo0aziGU/s800/Mail.png"></SPAN></P>
<P><SPAN lang=EN-US><SPAN style="mso-no-proof: yes"></SPAN></SPAN></P>
<H2 style="MARGIN: 10pt 0cm 0pt"><FONT size=4><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-weight: normal; mso-bidi-font-size: 13.0pt" lang=EN-US>Key features in Pmail </SPAN></U></STRONG><STRONG><U><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #17365d; FONT-WEIGHT: normal; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi; mso-bidi-font-size: 13.0pt" lang=EN-US><o:p></o:p></SPAN></U></STRONG></FONT></H2>
<P><SPAN lang=EN-US><FONT size=3 face=Calibri>In addition to biggest differences we covered before, you might also get excited when seeing below features. </FONT></SPAN></P>
<UL type=disc>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Sometimes feature-rich is not a good thing. It is so easy to reach this point when email system is designed for multiple purposes after several releases, say home usage included. But in any event, Pmail will provide a button to show/hide features(say, increase/decrease indent) which I don't use in last month. Get me a simple world. </FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Mouse hover will show abstract of email(user could assign, or automatically select) before deciding to read it </FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Send me SMS notification when a selected critical thread gets new replies. No special carrier service needed, input my cell phone and go</FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>For discussion mails, send&nbsp;brainstorming results or decision made, and then close the thread by marking it as un-reply-able </FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Enforce sequential replies, for example fill in a excel table</FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Automatically memorize folder or url of files you are editing, and go to Pmail, it can be attached to the email by a hot key, say "ctrl+shift+v"</FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>mailURL(say, steven-task9-show-me-money-88; don't use GUID, please) which can be shared across the clients. Don't to forward again</FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Automatically send out ping for dead catch-the-ball emails after pre-configured interval times out</FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Play video/audio right inside the mail client</FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Mail&nbsp;web client also provides web API like Facebook. OWA&nbsp;kills programmability.</FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Tag everywhere – one mail thread might relate to more than one task. It is not a good idea to put a mail in&nbsp;one folder exclusively.</FONT></SPAN></LI>
<LI style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Don't allow send&nbsp;active documents&nbsp;to team for review, put it on shared place(say, Sharepoint) and send a link</FONT></SPAN></LI></UL>
<P style="MARGIN: 0cm 0cm 0px; mso-list: l2 level1 lfo7; tab-stops: list 36.0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal><SPAN lang=EN-US>&nbsp;<FONT size=3 face=Calibri>I am interested in your thoughs on it. Let me know. Thank you.</FONT></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Building Global Development Team</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/building-global-development-team</link>
      <pubDate>Sat, 07 Mar 2009 04:58:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/03/07/building-global-development-team/</guid>
      <description><![CDATA[Nowadays software is getting so complex that it needs incredibly more and more people to build it....]]></description>
      <content:encoded><![CDATA[<P>Nowadays software is getting so complex that it needs incredibly more and more people to build it. For example, there are <A href="https://blogs.msdn.com/philipsu/archive/2006/06/14/Broken-Windows-Theory.aspx" mce_href="https://blogs.msdn.com/philipsu/archive/2006/06/14/Broken-Windows-Theory.aspx"><SPAN style="COLOR: purple">9000 engineers working on Vista</SPAN></A> simultaneously. In certain sense, you can call that it is a labor-intensive industry. Ideally, it would be best to put all people in one place; however there are also lots of sound reasons to build global development teams. </P>
<H2><SPAN style="FONT-SIZE: 13pt; TEXT-DECORATION: underline">Pros and Cons </SPAN></H2>
<P>Why bother to build global development team?<SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"> </SPAN></P>
<UL>
<LI><STRONG>New talents pool</STRONG> – Software development needs so many persons with similar attributes. In Microsoft Company wide, top 3 hiring criteria are smart, passion for technology and fit to <A href="https://www.microsoft.com/about/default.mspx" mce_href="https://www.microsoft.com/about/default.mspx">company values</A> such as openness, continual self-improvement and mutual respect, etc. From various studies, <A href="https://www.cioinsight.com/c/a/Trends/The-New-IT-Worker-Shortage/" mce_href="https://www.cioinsight.com/c/a/Trends/The-New-IT-Worker-Shortage/"><SPAN style="COLOR: purple">supply of talented IT staffers isn't keeping up with demand. And it won't change anytime soon</SPAN></A>. Even when Microsoft is cutting 5000 jobs now, we still have another 2000~3000 job openings there. What to do if enough qualified hires can be not found within US? Go outside. </LI>
<LI><STRONG>Lower cost</STRONG> – let us straightly go to data. Annual pay for Level "59" is about <A href="https://www.washtech.org/news/industry/display.php?ID_Content=5041" mce_href="https://www.washtech.org/news/industry/display.php?ID_Content=5041"><SPAN style="COLOR: purple">$74,000</SPAN></A> in US, while same level is paid about <A href="https://www.china.com.cn/info/txt/2007-09/29/content_8980820.htm" mce_href="https://www.china.com.cn/info/txt/2007-09/29/content_8980820.htm"><SPAN style="COLOR: purple">$20,000</SPAN></A>(~RMB150K equally) in China. Another slight fact - <A href="https://kurt.spaces.live.com/blog/cns!F3843ED65F744FFE!2638.entry" mce_href="https://kurt.spaces.live.com/blog/cns!F3843ED65F744FFE!2638.entry">It costs about $1.5 to go most common places in Shanghai</A>… </LI>
<LI><STRONG>Close to market</STRONG> – Most innovative ideas often comes out of interactions with customers. And customers' requirements vary from country to country. So best way to serve a local market is to be in the market. </LI>
<LI><STRONG>Specific knowledge</STRONG> – Cross-nation acquisition for specific technologies is another reason to build global development. You can't(or not able to) move all folks to HQ. </LI></UL>
<P><IMG alt="" src="https://lh4.ggpht.com/_A9xfBBUVmv4/SbJmolnzv2I/AAAAAAAABhg/XJF_fRIUv5M/s800/map.gif" mce_src="https://lh4.ggpht.com/_A9xfBBUVmv4/SbJmolnzv2I/AAAAAAAABhg/XJF_fRIUv5M/s800/map.gif">&nbsp; </P>
<P>Like many other things, challenges always go with benefits hand in hand. You can't take only part of it. Fair enough. </P>
<OL>
<LI><STRONG>Distance</STRONG> – People who work on the same software can't work alone, they have to exchange information and make decisions. Less than 3 minutes conversation is often enough for slight but frequently arising communication needs, for example, "Could you show me the bug in your environment?" Distance makes it impossible to stop by one's office. Network bandwidth is another issue introduced by distance. Why it matters? Suppose one team has to copy large file sets from another remote team daily, it would be a problem. The file sets can be growing amazingly big – for example, <A href="https://blogs.msdn.com/sqlcrd/archive/2008/07/28/sql-server-build-system.aspx" mce_href="https://blogs.msdn.com/sqlcrd/archive/2008/07/28/sql-server-build-system.aspx">daily SQL Server build is about 300GB</A>. </LI>
<LI><STRONG>Time zone</STRONG> – Would communication a real headache since modern technologies such as email and telephone have been there for quite a long time? But the things are no one is there when you are working due to time zone. You have to wait another day to get an email response. When you rush to office to check it, the most frustrating but concise reply could be - "What do you mean by &lt;insert anything you assume others should understand&gt;? How can I help you?" </LI>
<LI><STRONG>Culture/Language</STRONG> – Master level of English is unbalanced in global teams. There are dozens of ways to say "A beats B" in English, but only several of them are understandable for general public; dialect is another obstacle. For example, Chinese folks often have hard time pronouncing letter "L", as a result, words like "girl" might sound weird sometimes. </LI>
<LI><STRONG>Junior team</STRONG> – In my organization, most hires right come out of college. We are raw smart, but less experienced. It is hard to deny that some key ingredients for great engineers just take time – design skills, debugging techniques, influencing capabilities. This is not a cutting-corner example. </LI>
<LI><STRONG>Conflicts between hierarchical management and local branding</STRONG> – By organization hierarchy definition, many business units have existence in China. STB, Live, Online Service, etc. They functions nearly independently of each other and reports to US. But from the perspective of customers/partners/talents, it looks a bit confusing because there are so many Microsoft's.&nbsp; </LI>
<LI><STRONG>People development</STRONG> – folks in remote sites are not equally exposed to development resources such as face-to-face training, library, mentors, etc. </LI>
<LI><STRONG>Governing issue</STRONG> – due to well known concerns, something confidential can't be moved out of US. </LI></OL>
<H2><SPAN style="FONT-SIZE: 13pt; TEXT-DECORATION: underline">How-to </SPAN></H2>
<P>There are several factors playing critical role in deciding appropriate distributed development model. At least you should consider project type, team seniority, team size, team culture, communication cost and history.<SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"> </SPAN></P>
<UL>
<LI><STRONG>Build trust first.</STRONG> No matter how adaptable a new team is, it always takes time to fit into a specific team culture. So starting with easy jobs to build team moral and credibility is the safest steps before moving forward. Beyond this, the new team can target increased ownership. </LI>
<LI><STRONG>Decide on team coupling level.</STRONG> From highest to lowest, the level could be: pseudo random assignment, same branch same feature/component, same branch different feature/component, different sub branch but same main branch, different main branch &amp; clearly defined data contract. Avoid circular dependency. </LI>
<LI><STRONG>Come up with communication plan.</STRONG> Minimized communication is not always the best, especially for relatively junior teams. The best way to develop people is to work with senior folks on daily basis as much as possible. So you have to make tradeoffs here based on various inputs. </LI>
<LI><STRONG>Shared lab if possible.</STRONG> If you have to copy large files across the ocean frequently, consider doing your job on a lab down in remote team. If you have to do copying, make sure the files meet most critical quality requirements before doing so, for example, a build verification test. </LI>
<LI><STRONG>People development plan.</STRONG> Regular staff exchanging plan such as <A href="https://blogs.msdn.com/stbcblog/archive/2008/03/14/Talent-Management-CRD.aspx" mce_href="https://blogs.msdn.com/stbcblog/archive/2008/03/14/Talent-Management-CRD.aspx">Marco Polo and Silk Road program</A>, getting a mentor, record trainings, etc. </LI>
<LI><STRONG>Local brand management.</STRONG> Externally shown as one image; internally run by functionality as usual.</LI></UL>]]></content:encoded>
    </item>
    <item>
      <title>#3, Hulu, Why?</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/3-hulu-why</link>
      <pubDate>Mon, 23 Feb 2009 03:10:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/02/23/3-hulu-why/</guid>
      <description><![CDATA[Fast Company recently published its version of the world’s top 50 most innovative companies....]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><A href="https://www.fastcompany.com/" mce_href="https://www.fastcompany.com/"><FONT size=3 face=Calibri>Fast Company</FONT></A><FONT size=3 face=Calibri> recently published its version of the world’s </FONT><A href="https://www.fastcompany.com/fast50_09/list-all" mce_href="https://www.fastcompany.com/fast50_09/list-all"><FONT size=3 face=Calibri>top 50</FONT></A><FONT size=3 face=Calibri> most innovative companies. Although I would question why Intel is among top10, what surprised me most is the fact that </FONT><A href="https://www.hulu.com/" mce_href="https://www.hulu.com/"><FONT size=3 face=Calibri>Hulu</FONT></A><FONT size=3 face=Calibri> is listed #3.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I know there might be political things about the particular order, as it goes with most ranking, but it would be also interesting to find out “<B style="mso-bidi-font-weight: normal">why Hulu, not others</B>”.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><U><SPAN style="COLOR: #244061; FONT-SIZE: 14pt; mso-themecolor: accent1; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-hansi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-themeshade: 128" lang=EN-US><FONT face=Calibri>Origin<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></SPAN></U></B></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Hulu, an online video streaming company, managed to do something which YouTube failed to do. Copyright is one of YouTube’s headaches, but it is incredible positive thing for Hulu, because it is built intentionally aimed to server property content by two major stream media dogs, NBC Universal and Fox. </FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>{YouTube, watch someone’s DIY video} VS { Hulu, watch TV &amp; Movies online legally} -&gt; Similar but different market niche.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>People might be asking, why NBC and Fox executives don’t rely on YouTube to serve their plays? You can imagine following conversation which probably happened behind the scene:</FONT></SPAN></P>
<P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BACKGROUND: #eeece1; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-background-themecolor: background2; mso-border-insideh: none; mso-border-insidev: none" class=MsoTableGrid border=0 cellSpacing=0 cellPadding=0 class="MsoTableGrid">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 134.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #c6d9f1; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-background-themecolor: text2; mso-background-themetint: 51" vAlign=top width=179>
<P style="TEXT-ALIGN: right; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>NBC/Fox:<o:p></o:p></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 605.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #c6d9f1; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-background-themecolor: text2; mso-background-themetint: 51" vAlign=top width=807>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>Hey, YouTube, are you interested in serving my video&nbsp;to the world?<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 134.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm" vAlign=top width=179>
<P style="TEXT-ALIGN: right; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>YouTube:<o:p></o:p></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 605.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm" vAlign=top width=807>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>Why not.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Let’s sit down and take a look at this. Now we are owned by Google, and we are overwhelming dominator in online video market. We have great brand. We have great infrastructure. We have most talented engineers. Blabla… (down to the point) so you have to pay x dollar for every minute show. <o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 134.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #c6d9f1; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-background-themecolor: text2; mso-background-themetint: 51" vAlign=top width=179>
<P style="TEXT-ALIGN: right; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>NBC/Fox(think):<o:p></o:p></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 605.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #c6d9f1; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-background-themecolor: text2; mso-background-themetint: 51" vAlign=top width=807>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>uh-um… let me do some math here. Plan A is to work with YouTube, plan B is to build up something myself. In next 3-5 years, if everything goes as predicted, plan B will bring much more money to our shareholders than plan A, and less risky.<o:p></o:p></SPAN></P></TD></TR>
<TR style="HEIGHT: 16.15pt; mso-yfti-irow: 3">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 134.6pt; PADDING-RIGHT: 5.4pt; HEIGHT: 16.15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm" vAlign=top width=179>
<P style="TEXT-ALIGN: right; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>YouTube(ping NBC/Fox):<o:p></o:p></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 605.6pt; PADDING-RIGHT: 5.4pt; HEIGHT: 16.15pt; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm" vAlign=top width=807>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>What do you think of the plan?<o:p></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 4; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 134.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #c6d9f1; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-background-themecolor: text2; mso-background-themetint: 51" vAlign=top width=179>
<P style="TEXT-ALIGN: right; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=right><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>NBC/Fox:<o:p></o:p></SPAN></B></P></TD>
<TD style="BORDER-BOTTOM: #d4d0c8; BORDER-LEFT: #d4d0c8; PADDING-BOTTOM: 0cm; PADDING-LEFT: 5.4pt; WIDTH: 605.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #c6d9f1; BORDER-TOP: #d4d0c8; BORDER-RIGHT: #d4d0c8; PADDING-TOP: 0cm; mso-background-themecolor: text2; mso-background-themetint: 51" vAlign=top width=807>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt" lang=EN-US>Nice plan, but no, thanks. <o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>This is the first site who delivers property video to your computer for free.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Traditional Media Company gradually realized that they have to embrace the changes if they are not able to prevent them. It is online streaming, in this case. Hulu has more than 120 sources now.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Key is property content sources are nonrenewable rare resources.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><U><SPAN style="COLOR: #244061; FONT-SIZE: 14pt; mso-themecolor: accent1; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-hansi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-themeshade: 128" lang=EN-US><FONT face=Calibri>Independence<o:p></o:p></FONT></SPAN></U></B></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Hulu’s CEO said to capital angels, <I style="mso-bidi-font-style: normal">“I don't think you'll be seeing the name Fox or NBC on the site hardly at all, Hulu is about the shows, not the networks. The shows are the brands that users care about."</I> Another quote, <I style="mso-bidi-font-style: normal">“the key to Hulu's success is its freedom to operate essentially as a stand-alone company…”</I></FONT></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>From startup’s perspective, captical can be good thing, or bad thing. It can help you grow much faster, but it can also easily enable you miss your initial goals. Capital often appoints some seemingly smart guy, who is with XYZ MBA degree or n years of experience in ABC company, to take over the company as one of its investment agreements. </FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>That is indeed one of the worst investment risk controls, although it happens again and again. Give money to most passionate guys, and letting them be passionate always is the only way to maximize the probability of getting most out of your investment. </FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><S><U><SPAN style="COLOR: #244061; FONT-SIZE: 14pt; mso-themecolor: accent1; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-hansi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-themeshade: 128" lang=EN-US>Feature?Solution?</SPAN></U></S></B><B style="mso-bidi-font-weight: normal"><U><SPAN style="COLOR: #244061; FONT-SIZE: 14pt; mso-themecolor: accent1; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-hansi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-themeshade: 128" lang=EN-US> Experience</SPAN></U></B><B style="mso-bidi-font-weight: normal"><U><SPAN style="FONT-SIZE: 14pt; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-hansi-font-family: Calibri; mso-ascii-font-family: Calibri" lang=EN-US>!<o:p></o:p></SPAN></U></B></FONT></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Question: If you are given a task to build a video streaming site within less than 3 months, what would you do?</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>We were taught this way: </FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>1)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Identify who will be using your site</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>2)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Draw use case diagram</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>3)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>List scenarios for each user role</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>4)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>To support each scenarios, figure out needed features</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>5)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Design/Code/test your features </FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>6)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Go live</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>7)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Yeah! Party! :- )</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>If you follow this in your next interview, I can almost guarantee a pass. Do we miss anything? Actually we missed most critical one – Experience! Experience is a combination of brand/feeling/easy-to-use/enjoyable process. For example, given below requirement:</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri><EM>"Design something which is used to sit on, commonly for use by one person. It often has the seat raised above floor level, supported by legs."</EM></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>People&nbsp;will respond immediately, "<A href="https://en.wikipedia.org/wiki/Chair" mce_href="https://en.wikipedia.org/wiki/Chair">Chair</A>!". You may notice that there are at least hundreds of types of chairs in the world, if not thousands of, if not millions of. </FONT></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Only most imaginative ones who deeply understand that particular set of users’ needs, care about their feelings and eventually apply those into product designs can do the best work. Let us take a look at "art of chair".</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><IMG style="WIDTH: 739px; HEIGHT: 139px" title="Art of Chairs" alt="Art of Chairs" src="https://lh4.ggpht.com/_A9xfBBUVmv4/SaYx25NiOaI/AAAAAAAABgU/1lHwZ_UxOqs/s800/Chair.png" width=739 height=139 mce_src="https://lh4.ggpht.com/_A9xfBBUVmv4/SaYx25NiOaI/AAAAAAAABgU/1lHwZ_UxOqs/s800/Chair.png"></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Be COOL, in show time, although&nbsp;you might have the similar hard time figuring out what some of them really are. :-) </FONT></SPAN><SPAN lang=EN-US><FONT size=3><FONT face=Calibri>Just like someone said about iTune – <I style="mso-bidi-font-style: normal">“iTune is not selling features. iTune is selling experience.”<o:p></o:p></I></FONT></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><A href="https://www.fastcompany.com/fast50_09/profile/list/hulu" mce_href="https://www.fastcompany.com/fast50_09/profile/list/hulu"><FONT size=3 face=Calibri>Hulu’s key experiences</FONT></A><FONT size=3 face=Calibri>:</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpFirst><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>1)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Simple</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>2)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Larger screen</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>3)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>High-resolution video</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>4)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Clutter-free</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>5)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Quality control</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>6)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Free to users</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>7)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>No download</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 36pt; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpLast><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>8)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Obsessed with users</FONT></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Lead Without Authority</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/lead-without-authority</link>
      <pubDate>Fri, 20 Feb 2009 02:56:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/02/20/lead-without-authority/</guid>
      <description><![CDATA[As to the complexity level of problems, developers in Microsoft, who deal with coding, are probably...]]></description>
      <content:encoded><![CDATA[<P>As to the complexity level of problems, developers in Microsoft, who deal with coding, are probably taking one of the most challenging jobs in the world. But another engineering role, program manager, is not easier in any sense. Before I explain why, let me illustrate what typical product teams look like. </P>
<P><IMG style="WIDTH: 659px; HEIGHT: 530px" title="Typical MS Engineering Team Org Chart" alt="Typical MS Engineering Team Org Chart" src="https://lh6.ggpht.com/_A9xfBBUVmv4/SZ5mUTy6_6I/AAAAAAAABfk/xtVMLlc_LLg/s800/HR%20arch.png" width=659 height=530 mce_src="https://lh6.ggpht.com/_A9xfBBUVmv4/SZ5mUTy6_6I/AAAAAAAABfk/xtVMLlc_LLg/s800/HR%20arch.png"> </P>
<P>In the diagram, group manager often runs a team owning individual components or feature areas, say, one spell checker DLL in office; a product unit manager owns a product, say Outlook; while a general manager runs a product family, say Office. One compelling advantage Microsoft possesses is that its products&nbsp;are designed to work together seamlessly. For example, in a recent CIO.com article, <A href="https://www.cio.com/article/480011/_Reasons_to_Use_Microsoft_Outlook_for_Your_Company_s_E_mail?source=nlt_cioinsider" mce_href="https://www.cio.com/article/480011/_Reasons_to_Use_Microsoft_Outlook_for_Your_Company_s_E_mail?source=nlt_cioinsider"><SPAN style="COLOR: purple">10 Reasons to Use Microsoft Outlook for Your Company's E-Mail</SPAN></A>, 8 of 10 points is actually about interoperability with other software. <IMG style="WIDTH: 288px; HEIGHT: 252px" title="PM's job" border=1 alt="PM's job" align=right src="https://lh5.ggpht.com/_A9xfBBUVmv4/SZ5krEjuZEI/AAAAAAAABfY/xHJZovLqgJY/s288/brick_wall.jpg" width=288 height=252 mce_src="https://lh5.ggpht.com/_A9xfBBUVmv4/SZ5krEjuZEI/AAAAAAAABfY/xHJZovLqgJY/s288/brick_wall.jpg"></P>
<P>Managers define strategy, Developers write code, testers test code, what do PMs do? Well, it is really hard to define - there is even no consensus within Microsoft. However, one thing is clear – PMs do anything except coding(unless they have to :-) to drive projects meeting strategic goals. <STRONG>Enable right things get done right.</STRONG>&nbsp;<STRONG>Figure out gaps and fill them. </STRONG>The role is something like concrete&nbsp;among brick walls.<EM> (cartoons on the right)</EM></P>
<P>If you take a look at PM's position, blocks with black bold border, in the organization hierarchy, you will get the challenges here. PMs are supposed to lead their peers to work towards the right direction. </P>
<P><STRONG>"You are not my boss. Why do I have to listen to you?" </STRONG></P>
<P>This question gets down the topic of "Lead without Authority". Before you read along, I have to clarify that I am not a PM expert, but I (0) I've been a PM for quite a while,&nbsp;(1) work with great PMs, (2) learn and try most fundamental things which work well, (3) I faced similar situations for many many times, either in schools, or various organizations. Here is my sharing.<SPAN style="FONT-FAMILY: Times New Roman"> </SPAN></P>
<UL>
<LI><STRONG>Charisma</STRONG>. You might be incredibly raw smart – you can optimize an algorithm from O(N*N*N) down to O(logN), or you might be able to design a system of .9999 availability, extremely secure, and super cheap compared with competitors… That doesn't mean you can be a good leader. Instead, many of the best leaders, however, will point to the fact that they were "C" students(From <A href="https://www.amazon.com/Minute-Guide-Effective-Leadership-Guides/dp/0028614062" mce_href="https://www.amazon.com/Minute-Guide-Effective-Leadership-Guides/dp/0028614062">Source</A>).&nbsp; </LI>
<LI><STRONG>Credibility</STRONG>. It is the key to make people follow you. It works like stock value – hard to build, easy to lose. Be careful of it always. Do right things right. Bring something valuable to the team. Your credibility will accumulate gradually. Do what you say, and say what you mean.</LI>
<LI><STRONG>Consistency</STRONG>. People hated to be randomized. Don't always change directions. Clear goal.</LI>
<LI><STRONG>Partnership mentality. </STRONG>Low ego. <IMG style="WIDTH: 400px; HEIGHT: 266px" title="Help Others Great" alt="Help Others Great" align=right src="https://lh5.ggpht.com/_A9xfBBUVmv4/SaX5FMDjqPI/AAAAAAAABfs/kIuVuRXnZZ8/s400/Howard.jpg" width=400 height=266 mce_src="https://lh5.ggpht.com/_A9xfBBUVmv4/SaX5FMDjqPI/AAAAAAAABfs/kIuVuRXnZZ8/s400/Howard.jpg"></LI>
<LI><STRONG>Help others great</STRONG>. Most influences are indirect. People often complain about "over-managed, but less supported". <EM>(Check out photo on the right)</EM></LI>
<LI><STRONG>Lead by showing, not lead by talking only</STRONG>. Get your hands a bit dirty. Leaders should be willing to do anything they tell their reports to do. Show domo, mock UI, prototypes to other when presenting a new way to do things. </LI>
<LI><STRONG>Has sense of people</STRONG>. Most basic thing is <A href="https://www.amazon.com/How-Win-Friends-Influence-People/dp/0671723650" mce_href="https://www.amazon.com/How-Win-Friends-Influence-People/dp/0671723650">How to Win Friends and Influence People</A>.&nbsp;Learn to&nbsp;inspire people. Always be positive in every aspect. </LI>
<LI><STRONG>Communicate. Communicate. Communicate</STRONG>. Listen. Ask questions. <A href="https://worldofsu.com/philipsu/?p=130" mce_href="https://worldofsu.com/philipsu/?p=130"><SPAN style="COLOR: purple">You can be introverts, but have to be proactive</SPAN></A>. Be transparent. Understand your audience – strength, weakness, style, and figure out most effective approaches. </LI>
<LI><STRONG>Relationships enhance communication. </STRONG>Invest time in&nbsp;talking to people interactively. When you need to request advice, an opinion, or a task, you can talk to people from a healthy and positive place.</LI>
<LI><STRONG>Sharpen your vision. </STRONG>Look around. Look ahead. This helps in making sound decisions. </LI>
<LI>
<DIV><STRONG>Start to drive teams with strong pseudo leaders</STRONG> </DIV>
<UL>
<LI>Talk to them especially leaders or submarine leaders, get to know what are their likes/dislikes, Ask: How can I help you guys? Win their support. </LI>
<LI>Build credibility. Bring something invaluable to the team, for example, build up strong relationships with a partner team, present a competitor research report, improve team visibility </LI>
<LI>Before making changes, present it to the leaders in private, say 1on1, to reach rough consensus before it goes public. </LI>
<LI>Help others great. Let them get the credit. </LI></UL></LI>
<LI>
<DIV><STRONG>Conflict Management</STRONG> </DIV>
<UL>
<LI>Focus on goals, not conflicts themselves.&nbsp;Not a question of smart or&nbsp;dumb.&nbsp; </LI>
<LI>If you can control your emotion well enough, 25% of conflicts will go away. </LI>
<LI>Overwhelming majority of conflicts is just because of perspectives and different values. Try to figure out stories of other people's side. People often come to the same solution when presented same set of information. Use negotiation tips. Keep win-win in mind. </LI>
<LI>In worst case – when you have to resolve unavoidable conflicts, say 5 pies for 10 kids, make sure put a <STRONG>fair</STRONG> decision-making system in place, which is often a engineering way. </LI></UL></LI>
<LI>
<DIV><STRONG>You can reward desired performance even without authority</STRONG> </DIV>
<UL>
<LI>Promotions, raises, bonuses are not in your list, but you can affect them in indirect ways </LI>
<LI>Fame. Complimenting an employee on a job well done at a staff meeting or in front of company officers can be extremely rewarding </LI>
<LI>Increased trust. For example, give top performers the freedom to work in a more self-directed manner.</LI></UL></LI></UL>]]></content:encoded>
    </item>
    <item>
      <title>My AD Fun Experiment</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/my-ad-fun-experiment</link>
      <pubDate>Wed, 18 Feb 2009 10:28:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/02/18/my-ad-fun-experiment/</guid>
      <description><![CDATA[Today I got a mail from lakequincy.com, saying:
“Hi Bill,

I noticed that you were never able to...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Today I got a mail from <A href="https://lakequincy.com/" mce_href="https://lakequincy.com/">lakequincy.com</A>, saying:</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #4f81bd; FONT-SIZE: 10pt; mso-themecolor: accent1" lang=EN-US>“Hi Bill,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #4f81bd; FONT-SIZE: 10pt; mso-themecolor: accent1" lang=EN-US><SPAN style="mso-spacerun: yes"></SPAN><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #4f81bd; FONT-SIZE: 10pt; mso-themecolor: accent1" lang=EN-US>I noticed that you were never able to plug the Lake Quincy Media ad tags into your site. Are you still interested in earning revenue from displaying ads targeted to Microsoft developers? If so, you can get your tags from here:<SPAN style="mso-spacerun: yes">&nbsp;&lt;certain link&gt;</SPAN></SPAN><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #4f81bd; FONT-SIZE: 10pt; mso-themecolor: accent1" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #4f81bd; FONT-SIZE: 10pt; mso-themecolor: accent1" lang=EN-US>Let me know if you have any questions or if you’ve decided against running the ads and I’ll set your account to inactive for you.”</SPAN><I style="mso-bidi-font-style: normal"><SPAN style="FONT-SIZE: 10pt" lang=EN-US><o:p></o:p></SPAN></I></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>I even forgot that I resgistered in their site. To encourage such great customer service, I go ahead to try how the AD really works for me; finally decide to put a small square in the side bar. You can easily find it now if you scroll down a bit and pay attention to the left side bar. Let us see how many dollars I can make after one or two quarters. By putting an AD to the blog, it looks more of-the-business, doesn’t it? Of course, you can bid for that AD position. :- )</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri><STRONG><U>Update(2/26/2009)</U></STRONG></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>The AD is disabled temporarily due to security alert.</FONT></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>P2P Backup System w/o SPOF for Work Group</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/p2p-backup-system-wo-spof-for-work-group</link>
      <pubDate>Sun, 15 Feb 2009 10:23:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/02/15/p2p-backup-system-wo-spof-for-work-group/</guid>
      <description><![CDATA[This is also one of my half-completed ideas years ago. It was recalled recently by two...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>This is also one of my half-completed ideas years ago. It was recalled recently by two stories:</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #244061; FONT-SIZE: 14pt; mso-themecolor: accent1; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-themeshade: 128" lang=EN-US><U>Stories</U></SPAN>&nbsp;</SPAN></B></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US>#1</SPAN></B><SPAN lang=EN-US>: One of my team mates lost his Outlook email archive due to a mistaken operation. He is very upset because all of his emails in past two years are gone, unrecoverablly. Suggested Outlook mail file is 2GB, but people can easily drive it up to 10GB and often notice this too late. As what he said in MSN signature, “my archive, 555…”</SPAN></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US>#2</SPAN></B><SPAN lang=EN-US>: While I was browsing one of my favorite bloggers – Brad Abrams’s blog, ran into a shocking post, <A href="https://blogs.msdn.com/brada/archive/2007/06/22/help-my-hard-disk-crashed.aspx">Help! My hard disk crashed</A>. He can afford a new disk, but he need the data – especially “the pictures of the kids recent birthday party”. In the comments, people suggested various ways to recover it, unfortunately looks like no luck. </SPAN></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>This leads to the most basic questions: why people don’t backup data even if they know they are in the risk of losing them? Probably because of:</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-add-space: auto; mso-list: l2 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>1)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>The chance is very tiny</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 18pt; mso-add-space: auto; mso-list: l2 level1 lfo1" class=MsoListParagraphCxSpLast><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>2)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Current backup solutions&nbsp;are not “good enough”</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>For 1), although it might be true, but remember the result might be cataclysmic. Let us take a look at what is going on about 2). </FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #244061; FONT-SIZE: 14pt; mso-themecolor: accent1; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-themeshade: 128" lang=EN-US><STRONG><U>Existing Backup Solutions</U></STRONG></SPAN></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US>Traditional C/S</SPAN></B><SPAN lang=EN-US> – Most of current backup solutions are based on traditional C/S architecture. Assume one use 40% of 500GB disk drive on average; it is still a big capacity for enterprise with thousands of staff. Backup time is also another concern. Let me illustrate this with some math. For a backup server&nbsp;with two 1-Gbit NICs, its max throughput is about 200MB. If backup window(people are sleeping) is 10 hours, it means it can back up about 7.2TB(2*100*3600*10MB) data. Obviously it is hardly scalable along with business expansion.</SPAN></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US>Online backup</SPAN></B><SPAN lang=EN-US> – People can turn to <A href="https://aws.amazon.com/s3/">AWS S3</A>, or <A href="https://www.microsoft.com/azure/data.mspx">Azure SQL Data Services</A> to simplify things on their own side. But this doesn’t make things even better if you look at current network speed. Calculating data is much easier than moving data around.</SPAN></FONT></FONT></P>
<H2 style="MARGIN: 10pt 0cm 0pt"><U><SPAN lang=EN-US><FONT size=4><FONT color=#17365d><FONT face=Calibri><?xml:namespace prefix = o /><o:p><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #244061; FONT-SIZE: 14pt; mso-themecolor: accent1; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-themeshade: 128" lang=EN-US>My P2P Backup System</SPAN></o:p></FONT></FONT></FONT></SPAN></U></H2>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>p2p backup comes with several inherent advantages in handy:</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-add-space: auto; mso-list: l0 level1 lfo2" class=MsoListParagraphCxSpFirst><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>1)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>No additional hardware expense. People often have at least 30% capacity left; we can leverage that for backup space.</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 18pt; mso-add-space: auto; mso-list: l0 level1 lfo2" class=MsoListParagraphCxSpLast><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>2)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>No obvious network bottleneck.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Some people might also list “no single point of failure”, but that is not true. Let us take a look at how </FONT><A href="https://bitconjurer.org/BitTorrent"><FONT size=3 face=Calibri>BT</FONT></A><FONT size=3 face=Calibri> works, a general P2P network.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><IMG style="WIDTH: 585px; HEIGHT: 447px" src="https://lh6.ggpht.com/_A9xfBBUVmv4/SZgvkGsBywI/AAAAAAAABes/yjDaNfOGA1Q/s800/BT.PNG" width=585 height=447 mce_src="https://lh6.ggpht.com/_A9xfBBUVmv4/SZgvkGsBywI/AAAAAAAABes/yjDaNfOGA1Q/s800/BT.PNG"></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Basically here are what happens in P2P network - peers need talk to a central coordination server(i.e., Tracker in BT system) to get info about other peers, and then talk to individual peers about real data exchange. These two steps are essential. <A href="https://en.wikipedia.org/wiki/Single_point_of_failure" mce_href="https://en.wikipedia.org/wiki/Single_point_of_failure">Single Point of Failure(SPOF)</A> can happen in the coordination server. You may argue that you can enhance its reliability by techniques like mirroring, but does it look like over-heavyweight? We have many reliable services running by full time IT guys, why do we bother to re-invent the wheel? Several services can be utilized, such as AD, Sharepoint, exchange, which allow customized data writing.&nbsp;Data needed written into a central place would be:</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-add-space: auto; mso-list: l1 level1 lfo3" class=MsoListParagraphCxSpFirst><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>1)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Peer list by &lt;IP, port&gt;</FONT></SPAN></P>
<P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 18pt; mso-add-space: auto; mso-list: l1 level1 lfo3" class=MsoListParagraphCxSpLast><SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin" lang=EN-US><SPAN style="mso-list: Ignore"><FONT size=3 face=Calibri>2)</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Other meta data such as backup network name, Software RAID level</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Of course, we need do compression, encryption, incremental backup, scheduled backup in the solution. I may do investigation later and update the post.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #244061; FONT-SIZE: 14pt; mso-themecolor: accent1; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-themeshade: 128" lang=EN-US><STRONG><U>Also see other backup solutions</U></STRONG></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://www.storegrid.com/index.html"><FONT size=3 face=Calibri>https://www.storegrid.com/index.html</FONT></A><FONT size=3 face=Calibri> - select a folder, then backup, traditional</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://www.streamload.com/"><FONT size=3 face=Calibri>www.streamload.com</FONT></A><FONT size=3 face=Calibri> - Large net disk, Upload your files to streamload, then view it, or email it to someone else.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://www.beinsync.com/"><FONT size=3 face=Calibri>https://www.beinsync.com/</FONT></A><FONT size=3 face=Calibri> - Access you computer: install a mini PHP web server onto it.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://base.google.com/base/about.html"><FONT size=3 face=Calibri>https://base.google.com/base/about.html</FONT></A><FONT size=3 face=Calibri> - In about 15 minutes, your item will have a unique web address and be visible to the world.</FONT></SPAN></P><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.0pt" lang=EN-US><A href="https://www.openomy.com/">https://www.openomy.com/</A> - <A href="https://www.openomy.com/">openomy</A></SPAN><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.0pt" lang=EN> is an online file storage system designed to be a platform for Web 2.0 applications, built by Ian Sefferman</SPAN>]]></content:encoded>
    </item>
    <item>
      <title>Memory Leaks Demo &amp; Detection in .NET Application</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/memory-leaks-demo-detection-in-net-application</link>
      <pubDate>Tue, 10 Feb 2009 23:32:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/02/10/memory-leaks-demo-detection-in-net-application/</guid>
      <description><![CDATA[Memory leaks are always headache of developers. Do .NET developers no longer bother to worry about...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Memory leaks are always headache of developers. Do .NET developers no longer bother to worry about memory leaks because of garbage collection? Yes and NO. GC periodically find objects that cannot be accessed in the future and then reclaim the resources used by the objects. GC achieves this by maintaining a list of </FONT><A href="https://msdn.microsoft.com/en-us/library/0f66670z(VS.71).aspx"><FONT size=3 face=Calibri>references</FONT></A><FONT size=3 face=Calibri> to live objects. When this mechanism is broken, memory leak happens. </FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>There are many reasons to leak memory. In addition to calling unmanaged code from managed code,&nbsp;another one&nbsp;of general cases is about event handler. If you do this:</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><FONT size=3><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"><FONT face=Calibri>&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; BACKGROUND: silver; mso-highlight: silver" lang=EN-US>Foo.FooEvent += <SPAN style="COLOR: #0066ff">new</SPAN> EventHandler(MemoryLeaksHere.Method);</SPAN><SPAN style="FONT-FAMILY: 'Arial','sans-serif'" lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>When you complete using <EM>MemoryLeaksHere</EM>, but you are still using <EM>Foo</EM>, then <EM>MemoryLeaksHere</EM> will still remain alive as well. <EM>MemoryLeaksHere</EM> object will leak memory as a result of failing to GC. </FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Let us take a look at one simple example first.</FONT></SPAN></P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BACKGROUND: #eeece1; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-background-themecolor: background2; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" class=MsoTableGrid border=0 cellSpacing=0 cellPadding=0 class="MsoTableGrid">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: black; BORDER-LEFT: black; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 594.95pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black; BORDER-RIGHT: black; PADDING-TOP: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=793>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>using</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US> System;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>namespace</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US> MemoryLeakSample<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">Foo<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: #2b91af">Foo</SPAN> myFoo;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">event</SPAN> <SPAN style="COLOR: #2b91af">EventHandler</SPAN> FooEvent;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> Foo()<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>myFoo = <SPAN style="COLOR: blue">this</SPAN>;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> FooMethod()<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">MemoryLeaksHere</SPAN> memLeak = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">MemoryLeaksHere</SPAN>();<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>memLeak.TryQuit();<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> FireEvent()<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>FooEvent(<SPAN style="COLOR: blue">null</SPAN>, <SPAN style="COLOR: blue">null</SPAN>);<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> Main(<SPAN style="COLOR: blue">string</SPAN>[] args)<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Foo</SPAN> foo = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">Foo</SPAN>();<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; 5; ++i)<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>foo.FooMethod();<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">GC</SPAN>.Collect();<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">GC</SPAN>.WaitForPendingFinalizers();<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">GC</SPAN>.Collect();<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Console</SPAN>.WriteLine(<SPAN style="COLOR: #a31515">"Check memory leak here."</SPAN>);<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> This object will cause memory leak<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;/summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">MemoryLeaksHere<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> MemoryLeaksHere()<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Foo</SPAN>.myFoo.FooEvent += <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">EventHandler</SPAN>(OnMyFooEventFired);<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Console</SPAN>.WriteLine(<SPAN style="COLOR: #a31515">"\nObject-{0}: Construct. Subscribe."</SPAN>, <SPAN style="COLOR: blue">this</SPAN>.GetHashCode());<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>~MemoryLeaksHere()<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Console</SPAN>.WriteLine(<SPAN style="COLOR: #a31515">"Object-{0}: Deconstruct."</SPAN>, <SPAN style="COLOR: blue">this</SPAN>.GetHashCode());<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> TryQuit()<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Console</SPAN>.Write(<SPAN style="COLOR: #a31515">"Object-{0}: leak me?"</SPAN>, <SPAN style="COLOR: blue">this</SPAN>.GetHashCode());<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">string</SPAN> input = <SPAN style="COLOR: #2b91af">Console</SPAN>.ReadLine();<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">string</SPAN>.Equals(input, <SPAN style="COLOR: #a31515">"no"</SPAN>))<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Foo</SPAN>.myFoo.FooEvent -= <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">EventHandler</SPAN>(OnMyFooEventFired);<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Console</SPAN>.WriteLine(<SPAN style="COLOR: #a31515">"Object-{0}: Unsubscribe."</SPAN>, <SPAN style="COLOR: blue">this</SPAN>.GetHashCode());<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">else<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Console</SPAN>.WriteLine(<SPAN style="COLOR: #a31515">"Object-{0}: Not Unsubscribe"</SPAN>, <SPAN style="COLOR: blue">this</SPAN>.GetHashCode());<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">void</SPAN> OnMyFooEventFired(<SPAN style="COLOR: blue">object</SPAN> sender, <SPAN style="COLOR: #2b91af">EventArgs</SPAN> e)<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Do something<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>}<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>In </FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>MemoryLeaksHere</SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri> object’s constructor, </FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>Foo</SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri> starts to hold a reference to </FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>MemoryLeaksHere</SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri> by registering event handler. In </FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>MemoryLeaksHere</SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>.</FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>TryQuit()<SPAN lang=EN-US><FONT size=3 face=Calibri>, if we don't unregister, memory leak will happen.</FONT></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>To be more intuitive, you can copy/paste sample code to VS2008, and then enable unmanged code debugging by following:</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Project-&gt;Properties-&gt;Debug-&gt;Enable Unmanaged Code debugging</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Now set a breakpoint at </FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>“<SPAN style="COLOR: #a31515">Check memory leak here”</SPAN></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>, and start build/debug. When being asked leak me or not, you can choose either <I style="mso-bidi-font-style: normal">yes</I> or <I style="mso-bidi-font-style: normal">no</I>. For example:</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri><IMG style="WIDTH: 668px; HEIGHT: 431px" src="https://lh5.ggpht.com/_A9xfBBUVmv4/SZJRYmPI-KI/AAAAAAAABeM/3kApbMNs_dA/s800/LeakMe.PNG" width=668 height=431 mce_src="https://lh5.ggpht.com/_A9xfBBUVmv4/SZJRYmPI-KI/AAAAAAAABeM/3kApbMNs_dA/s800/LeakMe.PNG">&nbsp;</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Here, looks like we leak two of them. Finally app will hit the breakpoint and stop. At this point, we can go to VS immedate window to&nbsp;load sos.dll, and then&nbsp;check how many objects in the heap:</FONT></SPAN></P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BACKGROUND: #eeece1; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-background-themecolor: background2; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" class=MsoTableGrid border=0 cellSpacing=0 cellPadding=0 class="MsoTableGrid">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: black; BORDER-LEFT: black; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 602.05pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black; BORDER-RIGHT: black; PADDING-TOP: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=803>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>!load sos.dll<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>extension C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll loaded<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>!dumpheap -type MemoryLeaksHere<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>PDB symbol for mscorwks.dll not loaded<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Address<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MT<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Size<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>0132e7d0 00983104<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>12<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>0132eba0 00983104<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>12<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>total 2 objects<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>Statistics:<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MT<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Count<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>TotalSize Class Name<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>00983104<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>2<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>24 MemoryLeakSample.MemoryLeaksHere<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>Total 2 objects<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>So now we know there are two object instances are not recycled. Why are they not GC-ed? Because someone has a reference to them. Choose one of them, and use <I style="mso-bidi-font-style: normal">gcroot</I> command.</FONT></SPAN></P>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BACKGROUND: #eeece1; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-background-themecolor: background2; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" class=MsoTableGrid border=0 cellSpacing=0 cellPadding=0 class="MsoTableGrid">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: black; BORDER-LEFT: black; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 602.05pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black; BORDER-RIGHT: black; PADDING-TOP: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=803>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; COLOR: red; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>!gcroot 0132e7d0<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>Note: Roots found on stacks may be false positives. Run "!help gcroot" for<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>more info.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>Error during command: Warning. Extension is using a callback which Visual Studio does not implement.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>Scan Thread 7592 OSTHread 1da8<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>ESP:12f434:Root:01312d48(MemoryLeakSample.Foo)-&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>0132f704(System.EventHandler)-&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>0132f6ec(System.Object[])-&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>0132e7dc(System.EventHandler)-&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>0132e7d0(MemoryLeakSample.MemoryLeaksHere)<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>Scan Thread 4704 OSTHread 1260<o:p></o:p></SPAN></P></TD></TR></TBODY></TABLE>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>Now we can see that </FONT></SPAN><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>MemoryLeakSample.Foo</SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri> is still referencing </FONT></SPAN><SPAN style="FONT-FAMILY: 新宋体; FONT-SIZE: 9pt; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US>MemoryLeakSample.MemoryLeaksHere</SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri> via event handler. If it is not 5 iterations, image what would happen if every incoming request results in a slice of memory leak... Soon or later, you online service will be down.</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>See also:</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://www.codeproject.com/KB/dotnet/Memory_Leak_Detection.aspx"><FONT size=3 face=Calibri>https://www.codeproject.com/KB/dotnet/Memory_Leak_Detection.aspx</FONT></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://blogs.msdn.com/jgoldb/archive/2008/02/04/finding-memory-leaks-in-wpf-based-applications.aspx"><FONT size=3 face=Calibri>https://blogs.msdn.com/jgoldb/archive/2008/02/04/finding-memory-leaks-in-wpf-based-applications.aspx</FONT></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://blogs.msdn.com/calvin_hsia/archive/2008/04/11/8381838.aspx"><FONT size=3 face=Calibri>https://blogs.msdn.com/calvin_hsia/archive/2008/04/11/8381838.aspx</FONT></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://www.automatedqa.com/techpapers/net_allocation_profiler.asp"><FONT size=3 face=Calibri>https://www.automatedqa.com/techpapers/net_allocation_profiler.asp</FONT></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="https://blogs.msdn.com/greg_schechter/archive/2004/05/27/143605.aspx"><FONT size=3 face=Calibri>https://blogs.msdn.com/greg_schechter/archive/2004/05/27/143605.aspx</FONT></A></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Designing Your Own Recent Posts Widget for MSDN Blog</title>
      <link>https://docs.microsoft.com/archive/blogs/bali_msft/designing-your-own-recent-posts-widget-for-msdn-blog</link>
      <pubDate>Sat, 07 Feb 2009 08:42:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/bali_msft/2009/02/07/designing-your-own-recent-posts-widget-for-msdn-blog/</guid>
      <description><![CDATA[In my MSDN blog, I need “Recent Posts”, but I don’t need archive side bar. After having played with...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>In my MSDN blog, I need “Recent Posts”, but I don’t need archive side bar. After having played with template for a while, still no luck. Hmmm, looks like I have to DIY it. Fortunately in News sidebar, you can fill in raw html including <A href="https://en.wikipedia.org/wiki/JavaScript" mce_href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</A>. Then next question is where we can retrieve post tiles. The immediate idea is from current <A href="https://en.wikipedia.org/wiki/Document_Object_Model" mce_href="https://en.wikipedia.org/wiki/Document_Object_Model">DOM</A> document. Through experiments, I found this is impossible because the DOM is not fully loaded yet when the script is executed. Later, I figured it out that all posts title can be gotten from <A href="https://en.wikipedia.org/wiki/RSS_(file_format)" mce_href="https://en.wikipedia.org/wiki/RSS_(file_format)">RSS</A>. For my blog, the address is </FONT><A href="https://blogs.msdn.com/bali_msft/rss.xml" mce_href="https://blogs.msdn.com/bali_msft/rss.xml"><FONT color=#800080 size=3 face=Calibri>https://blogs.msdn.com/bali_msft/rss.xml</FONT></A><FONT size=3 face=Calibri>. One thing worth noticing is the fact that RSS in MSDN blog is not up to date - Your post will not instantly appear in the RSS. After I get all posts in RSS format, things became much easier. And then I go ahead to add more interesting things:</FONT></SPAN></P>
<UL>
<LI>
<DIV style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN lang=EN-US><FONT size=3 face=Calibri>Posts background use two colors in turn</FONT></SPAN></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN lang=EN-US></SPAN><SPAN lang=EN-US><FONT size=3 face=Calibri>Show a new tag for posts less than 3 days old</FONT></SPAN></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN lang=EN-US><FONT size=3 face=Calibri>Show latest 8 posts only</FONT></SPAN></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN lang=EN-US><FONT size=3 face=Calibri>Show posts' age</FONT></SPAN></DIV></LI></UL>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri>So, the final thing will look like this:</FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><IMG style="WIDTH: 209px; HEIGHT: 305px" src="https://lh5.ggpht.com/_A9xfBBUVmv4/SZA17PBQS2I/AAAAAAAABdk/7keHM38EZUw/s400/MyRecentPosts.JPG" width=209 height=305 mce_src="https://lh5.ggpht.com/_A9xfBBUVmv4/SZA17PBQS2I/AAAAAAAABdk/7keHM38EZUw/s400/MyRecentPosts.JPG"></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US></SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><FONT size=3 face=Calibri></FONT></SPAN></P><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT size=3 face=Calibri>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US>If you find it is useful, feel free to paste below code to you blog’s news section. Note to customize “<I style="mso-bidi-font-style: normal">Configurable params</I>” to your own needs and leave other code intact. It works well at least in my IE 8 and Firefox 3.0.6.</SPAN></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal>
<TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BACKGROUND: #eeece1; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-background-themecolor: background2; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" class=MsoTableGrid border=0 cellSpacing=0 cellPadding=0 class="MsoTableGrid">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: black; BORDER-LEFT: black; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 821.75pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black; BORDER-RIGHT: black; PADDING-TOP: 0cm; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=1096><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>div</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> </FONT><SPAN style="COLOR: red">id</SPAN><SPAN style="COLOR: blue">="RecentPosts"&gt;&lt;/</SPAN><SPAN style="COLOR: #a31515">div</SPAN><SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>&lt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>Script</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// Configurable params<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>var</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> recentPostNumber = 8;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>var</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> rssUrl = </FONT><SPAN style="COLOR: #a31515">"https://blogs.msdn.com/bali_msft/rss.xml"</SPAN><FONT color=#000000>;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>var</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> title = </FONT><SPAN style="COLOR: #a31515">"My Recent Posts"</SPAN><FONT color=#000000>;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>var</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> newPostAgeInHour = 72;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><o:p><FONT color=#000000>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// Cacluate age of one post. It is all about getting time span in Javascript<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// return formate: x min; x hour y min, x day y min, x days, x yeas (ago)<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// Refer to: https://www.w3schools.com/jsref/jsref_obj_date.asp<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>function</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> calculateAge(postDate)<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> ret = </FONT><SPAN style="COLOR: #a31515">"fresh!"</SPAN><FONT color=#000000>;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>CurrentDate = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> Date();<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>TimeSpan = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> Date(CurrentDate - postDate);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> mySpanArray = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> Array();<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; mySpanArray[0] = TimeSpan.getUTCFullYear()-1970;<BR>&nbsp;&nbsp;&nbsp; mySpanArray[1] = TimeSpan.getUTCMonth();<BR>&nbsp;&nbsp;&nbsp; mySpanArray[2] = TimeSpan.getUTCDate()-1;<BR>&nbsp;&nbsp;&nbsp; mySpanArray[3] = TimeSpan.getUTCHours();<BR>&nbsp;&nbsp;&nbsp; mySpanArray[4] = TimeSpan.getUTCMinutes();<BR></SPAN></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> TimeSpanTagArray_1 = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> Array(</FONT><SPAN style="COLOR: #a31515">"years"</SPAN><FONT color=#000000>, </FONT><SPAN style="COLOR: #a31515">"months"</SPAN><FONT color=#000000>, </FONT><SPAN style="COLOR: #a31515">"days"</SPAN><FONT color=#000000>, </FONT><SPAN style="COLOR: #a31515">"hours"</SPAN><FONT color=#000000>, </FONT><SPAN style="COLOR: #a31515">"minutes"</SPAN><FONT color=#000000>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> TimeSpanTagArray_2 = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> Array(</FONT><SPAN style="COLOR: #a31515">"year"</SPAN><FONT color=#000000>, </FONT><SPAN style="COLOR: #a31515">"month"</SPAN><FONT color=#000000>, </FONT><SPAN style="COLOR: #a31515">"day"</SPAN><FONT color=#000000>, </FONT><SPAN style="COLOR: #a31515">"hour"</SPAN><FONT color=#000000>, </FONT><SPAN style="COLOR: #a31515">"minute"</SPAN><FONT color=#000000>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: green">// Starting from non-zero element and pick two significant values<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">for</SPAN><FONT color=#000000>(i = 0; i &lt; mySpanArray.length; i++) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000>(mySpanArray[i] != 0) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> correctTag = (mySpanArray[i] == 1)?(TimeSpanTagArray_2[i]):(TimeSpanTagArray_1[i]);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ret = mySpanArray[i] + </FONT><SPAN style="COLOR: #a31515">" "</SPAN><FONT color=#000000> + correctTag;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000>(i+1 &lt; mySpanArray.length &amp;&amp; mySpanArray[i+1] != 0) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>correctTag = (mySpanArray[i+1] == 1)?(TimeSpanTagArray_2[i+1]):(TimeSpanTagArray_1[i+1]);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ret = ret + </FONT><SPAN style="COLOR: #a31515">", "</SPAN><FONT color=#000000> + mySpanArray[i+1] + </FONT><SPAN style="COLOR: #a31515">" "</SPAN><FONT color=#000000> + correctTag;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">break</SPAN><FONT color=#000000>;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">return</SPAN><FONT color=#000000> ret;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><o:p><FONT color=#000000>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// Display the recent posts</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// Refer to: </SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// <A href="https://www.w3schools.com/DOM/dom_node.asp">https://www.w3schools.com/DOM/dom_node.asp</A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// <A href="https://www.w3schools.com/DOM/dom_methods.asp">https://www.w3schools.com/DOM/dom_methods.asp</A><o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>function</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> displayPosts (xmldoc)<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> newTag = </FONT><SPAN style="COLOR: #a31515">"&lt;SPAN style=\"COLOR: red\"&gt;(New!)&lt;/SPAN&gt;"</SPAN><FONT color=#000000>;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> posts = xmldoc.getElementsByTagName(</FONT><SPAN style="COLOR: #a31515">"item"</SPAN><FONT color=#000000>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> displayText = </FONT><SPAN style="COLOR: #a31515">"&lt;h3&gt;"</SPAN><FONT color=#000000> + title + </FONT><SPAN style="COLOR: #a31515">"&lt;/h3&gt;&lt;UL&gt;"</SPAN><FONT color=#000000>;<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (posts.length &lt; recentPostNumber) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>recentPostNumber = posts.length;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">for</SPAN><FONT color=#000000>(</FONT><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> i = 0; i &lt; recentPostNumber; i++)<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>PostTitle = posts[i].firstChild.firstChild.nodeValue;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>PostLink = posts[i].firstChild.nextSibling.firstChild.nodeValue;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>PostDateStr = posts[i].firstChild.nextSibling.nextSibling.firstChild.nodeValue;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>PostDate = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> Date(PostDateStr);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>CurrentDate = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> Date();<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: green">// Calculate age<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> _PostAge = calculateAge(PostDate);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> PostAge = </FONT><SPAN style="COLOR: #a31515">"&lt;SPAN style=\"font-size: 80%; color: black\"&gt; ("</SPAN><FONT color=#000000> +_PostAge + </FONT><SPAN style="COLOR: #a31515">" ago)&lt;/SPAN&gt;"</SPAN><FONT color=#000000>;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: green">// Show a new tag for posts happening last days defined by 'newPostAgeInHour'<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> myNewTag = </FONT><SPAN style="COLOR: #a31515">""</SPAN><FONT color=#000000>;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000>((CurrentDate.getTime() - PostDate.getTime())/1000/60 &lt; newPostAgeInHour * 60) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>myNewTag = newTag;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: green">// Get background color<o:p></o:p></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> BKColor = (i%2 == 0)?(</FONT><SPAN style="COLOR: #a31515">"#B8CCE4"</SPAN><FONT color=#000000>):(</FONT><SPAN style="COLOR: #a31515">"#DBE5F1"</SPAN><FONT color=#000000>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>displayText = displayText + </FONT><SPAN style="COLOR: #a31515">"&lt;LI style=\"background-color:"</SPAN><FONT color=#000000> + BKColor + </FONT><SPAN style="COLOR: #a31515">"\"&gt;&lt;A href=\""</SPAN><FONT color=#000000> + PostLink + </FONT><SPAN style="COLOR: #a31515">"\"&gt;"</SPAN><FONT color=#000000> + myNewTag + PostTitle + PostAge + </FONT><SPAN style="COLOR: #a31515">"&lt;/A&gt;&lt;/LI&gt;"</SPAN><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>displayText = displayText + </FONT><SPAN style="COLOR: #a31515">"&lt;/UL&gt;"</SPAN><FONT color=#000000>;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">var</SPAN><FONT color=#000000> target = document.getElementById(</FONT><SPAN style="COLOR: #a31515">"RecentPosts"</SPAN><FONT color=#000000>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>target.innerHTML=displayText;<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><o:p><FONT color=#000000>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// Call back<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>function</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> complete(){<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (req.readyState == 4) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'">　　</SPAN></FONT><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>if</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> (req.status == 200) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>displayPosts (req.responseXML);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><o:p><FONT color=#000000>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// Initial async call<o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>function</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> getPosts()<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>{<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'"><FONT color=#000000>　　</FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>if</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000> (window.XMLHttpRequest) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'">　　</SPAN></FONT><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>req = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> XMLHttpRequest();<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'"><FONT color=#000000>　　</FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>}</FONT><SPAN style="COLOR: blue">else</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (window.ActiveXObject) {<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'">　　</SPAN></FONT><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>req = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> ActiveXObject(</FONT><SPAN style="COLOR: #a31515">"Microsoft.XMLHTTP"</SPAN><FONT color=#000000>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><FONT color=#000000><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'">　　</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>}<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'"><FONT color=#000000>　　</FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>if</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>(req){<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'">　　</SPAN></FONT><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>req.open(</FONT><SPAN style="COLOR: #a31515">"GET"</SPAN><FONT color=#000000>, rssUrl, </FONT><SPAN style="COLOR: blue">true</SPAN><FONT color=#000000>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'">　　</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>req.onreadystatechange = complete;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'">　　</SPAN></FONT><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>req.send(</FONT><SPAN style="COLOR: blue">null</SPAN><FONT color=#000000>);<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><FONT color=#000000><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'">　　</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>}<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>}<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><o:p><FONT color=#000000>&nbsp;</FONT></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US>// Entry point <o:p></o:p></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes" lang=EN-US><FONT color=#000000>getPosts();<o:p></o:p></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none; mso-pagination: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang=EN-US>&lt;/</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang=EN-US>Script</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang=EN-US>&gt;</SPAN></SPAN></P></TD></TR></TBODY></TABLE></P>
<P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P></FONT></o:p></SPAN>]]></content:encoded>
    </item>
  </channel>
</rss>