<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.netindonesia.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Incoherent Rambling</title><link>http://geeks.netindonesia.net/blogs/jimmy/default.aspx</link><description>.Net, coding, architecture and life in general</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>I got Windows 8.  Goodbye 3rd party virtualization?</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/09/17/i-got-windows-8-goodbye-3rd-party-virtualization.aspx</link><pubDate>Sat, 17 Sep 2011 09:40:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:193079</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=193079</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/09/17/i-got-windows-8-goodbye-3rd-party-virtualization.aspx#comments</comments><description>&lt;p&gt;Finally, Hyper-V is coming to Windows client and not just server.&amp;nbsp; For a long time I have to use 3rd party products such as VirtualBox, which is very nice, or VMWare Workstation, etc. to run my 64 bit VMs or dual boot to Windows Server instance to try out Hyper-V.&amp;nbsp; Guess it&amp;#39;s no longer required since Hyper-V will be built-in to Windows client itself.&lt;/p&gt;&lt;p&gt;Mounting VHD is also easier to do in Win8 (at least from what I&amp;#39;ve seen in the keynote).&lt;/p&gt;&lt;p&gt;Another cool thing is mounting ISO is also easier now and built-in to the OS.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Awesome!! :)&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/09/17/i-got-windows-8-goodbye-3rd-party-virtualization.aspx&amp;amp;subject=I got Windows 8.  Goodbye 3rd party virtualization?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/09/17/i-got-windows-8-goodbye-3rd-party-virtualization.aspx&amp;amp;t=I+got+Windows+8.++Goodbye+3rd+party+virtualization%3f" target="_blank" title="Submit I got Windows 8.  Goodbye 3rd party virtualization? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/09/17/i-got-windows-8-goodbye-3rd-party-virtualization.aspx&amp;amp;title=I+got+Windows+8.++Goodbye+3rd+party+virtualization%3f" target="_blank" title="Submit I got Windows 8.  Goodbye 3rd party virtualization? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/09/17/i-got-windows-8-goodbye-3rd-party-virtualization.aspx&amp;amp;phase=2" target="_blank" title="Submit I got Windows 8.  Goodbye 3rd party virtualization? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/09/17/i-got-windows-8-goodbye-3rd-party-virtualization.aspx&amp;amp;title=I+got+Windows+8.++Goodbye+3rd+party+virtualization%3f" target="_blank" title="Add I got Windows 8.  Goodbye 3rd party virtualization? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=193079" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/virtualization/default.aspx">virtualization</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>How to call SharePoint Web Service with Specific Credential from Silverlight OOB</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/23/how-to-call-sharepoint-web-service-with-specific-credential-from-silverlight-oob.aspx</link><pubDate>Tue, 22 Mar 2011 17:08:55 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192271</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192271</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/23/how-to-call-sharepoint-web-service-with-specific-credential-from-silverlight-oob.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;The Problem&lt;/h2&gt;  &lt;p&gt;While playing around with SharePoint web service from Silverlight out of browser, I bumped into web service proxy limitation where I am forced to authenticate no matter what I pass to the &lt;strong&gt;&lt;font face="Courier New"&gt;ClientCredential.UserName&lt;/font&gt;&lt;/strong&gt; property of the web service client proxy.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;//This does not work... will get authentication prompt&lt;/span&gt;
var request = HttpWebRequest.Create(uri);
request.ClientCredential.UserName.UserName = &lt;span class="str"&gt;&amp;quot;DOMAIN\\user1&amp;quot;&lt;/span&gt;;
request.ClientCredential.UserName.Password = &lt;span class="str"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;

&lt;h2&gt;The Authentication Problem Workaround&lt;/h2&gt;

&lt;p&gt;Luckily, starting from Silverlight 3 up, you can use the &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.browser.webrequestcreator.clienthttp(VS.95).aspx" target="_blank"&gt;ClientHttp&lt;/a&gt; object that allows passing specific credential for the web request.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;//This now work wonderfully from Out of Browser Silverlight 3 or up&lt;/span&gt;
var request = WebRequestCreator.ClientHttp.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://localhost/_vti_bin/lists.asmx&amp;quot;&lt;/span&gt;, UriKind.Absolute));

&lt;span class="rem"&gt;//This is required, or otherwise you will be prompted for authentication&lt;/span&gt;
&lt;span class="rem"&gt;//It basically said, no don&amp;#39;t use the current login, I&amp;#39;ll tell you what login to use later.&lt;/span&gt;
request.UseDefaultCredential = &lt;span class="kwrd"&gt;false&lt;/span&gt;

&lt;span class="rem"&gt;//Pass your credential here...&lt;/span&gt;
request.Credentials = &lt;span class="kwrd"&gt;new&lt;/span&gt; NetworkCredential(&lt;span class="str"&gt;&amp;quot;user1&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;DOMAIN&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

&lt;p&gt;Ouila! Authentication problem solved.&amp;#160; Bye bye authentication prompt.&amp;#160; See you later... or not.&lt;/p&gt;

&lt;h2&gt;What About My Web Service?&lt;/h2&gt;

&lt;p&gt;Now... for the second problem, without the nicely generated web service proxy, how the heck am I going to call my web service method?&lt;/p&gt;

&lt;p&gt;Well, luckily, SharePoint and other web service for that matter, give you a neat example of what to pass in a SOAP message like so:&lt;/p&gt;

&lt;p&gt;if you put something like &lt;a href="http://localhost/_vti_bin/lists.asmx"&gt;http://localhost/_vti_bin/lists.asmx&lt;/a&gt; into your browser Address (URL) field, you&amp;#39;ll get this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/jimmy/image_11D73DAF.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/jimmy/image_thumb_7D717823.png" width="520" height="473" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this case, I am interested in adding a list item to one of my SharePoint list.&amp;#160; The method (SOAP action) for this is &lt;strong&gt;UpdateListItems&lt;/strong&gt;.&amp;#160; If you don&amp;#39;t believe me, see &lt;a href="http://msdn.microsoft.com/en-us/library/websvclists.lists.updatelistitems.aspx" target="_blank"&gt;this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So if you click the UpdateListItems from the nice list above, you&amp;#39;ll get this: 
  &lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/jimmy/image_40F90379.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.netindonesia.net/blogs/jimmy/image_thumb_694835CD.png" width="520" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See that SOAP message example (in particular the top one which is a SOAP 1.1 request message)? 
  &lt;br /&gt;Yeah it&amp;#39;s a bit ugly, but trust me underneath the nicely generated web service proxy that you usually get when adding a service reference, you&amp;#39;ll see this message somewhere in there if you open up the generated proxy client code in one shape or form.&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;&amp;lt;digress&amp;gt;Actually if you look inside the generated proxy inside &lt;a href="http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1" target="_blank"&gt;Reflector&lt;/a&gt; or similar tool like &lt;a href="http://wiki.sharpdevelop.net/ilspy.ashx" target="_blank"&gt;ILSpy&lt;/a&gt; for those who don&amp;#39;t want to pay for Reflector, you&amp;#39;ll see the serializable form of this as class and class members which later on will be serialized into 

    &lt;br /&gt;the XML format that you see above. &amp;lt;/digress&amp;gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Well, like it or not, you will need to create your own web service wrapper around the SOAP message.&amp;#160; The good thing is... it&amp;#39;s not that hard.&lt;/p&gt;

&lt;p&gt;Below is a bit of code that I whipped out and refactored in about 2 hours to do this (for now only the UpdateListItems is implemented plus the rest of SOAP Web Service infrastructure):&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Net;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml.Linq;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Net.Browser;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; SilverlightApplication9&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SharePointWebService&lt;/pre&gt;

  &lt;pre class="alt"&gt;    {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; XNamespace xsi = &lt;span class="str"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; XNamespace xsd = &lt;span class="str"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; XNamespace soap = &lt;span class="str"&gt;&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; XNamespace sharepoint = &lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/sharepoint/soap/&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        XElement SoapEnvelopeTemplate;&lt;/pre&gt;

  &lt;pre&gt;        Uri WebServiceUri;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        NetworkCredential Credential;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; SharePointWebService(Uri spWebServiceUri, NetworkCredential credential)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            WebServiceUri = spWebServiceUri;&lt;/pre&gt;

  &lt;pre&gt;            Credential = credential;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            SoapEnvelopeTemplate = &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(soap + &lt;span class="str"&gt;&amp;quot;Envelope&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(XNamespace.Xmlns + &lt;span class="str"&gt;&amp;quot;xsi&amp;quot;&lt;/span&gt;, xsi),&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(XNamespace.Xmlns + &lt;span class="str"&gt;&amp;quot;xsd&amp;quot;&lt;/span&gt;, xsd),&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(XNamespace.Xmlns + &lt;span class="str"&gt;&amp;quot;soap&amp;quot;&lt;/span&gt;, soap),&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(soap + &lt;span class="str"&gt;&amp;quot;Body&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; UpdateListItemsAsync(&lt;span class="kwrd"&gt;string&lt;/span&gt; listName, XElement updates, Action&amp;lt;XDocument&amp;gt; callback)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            var message = CreateUpdateListItemsMessage(listName, updates);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            SoapActionInvokeAsync(&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="str"&gt;&amp;quot;http://schemas.microsoft.com/sharepoint/soap/UpdateListItems&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre class="alt"&gt;                message,&lt;/pre&gt;

  &lt;pre&gt;                callback);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SoapActionInvokeAsync(&lt;span class="kwrd"&gt;string&lt;/span&gt; soapAction, XElement soapMessage, Action&amp;lt;XDocument&amp;gt; callback)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            WebRequest request = WebRequestCreator.ClientHttp.Create(WebServiceUri);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (Credential != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                request.UseDefaultCredentials = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;                request.Credentials = Credential;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            request.Headers[&lt;span class="str"&gt;&amp;quot;SOAPAction&amp;quot;&lt;/span&gt;] = &lt;span class="str"&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt; + soapAction + &lt;span class="str"&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;            request.ContentType = &lt;span class="str"&gt;&amp;quot;text/xml; charset=utf-8&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            request.Method = &lt;span class="str"&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            var message = &lt;span class="str"&gt;&amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot; encoding=\&amp;quot;utf-8\&amp;quot;?&amp;gt;\n&amp;quot;&lt;/span&gt; + soapMessage.ToString();&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            request.BeginGetRequestStream((ar1) =&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var stream = request.EndGetRequestStream(ar1))&lt;/pre&gt;

  &lt;pre&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;using&lt;/span&gt; (var writer = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamWriter(stream))&lt;/pre&gt;

  &lt;pre&gt;                    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                        writer.Write(message);&lt;/pre&gt;

  &lt;pre&gt;                    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;                }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                request.BeginGetResponse((ar2) =&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    XDocument xml = XDocument.Load(&lt;/pre&gt;

  &lt;pre&gt;                        request.EndGetResponse(ar2).GetResponseStream());&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;                    callback(xml);&lt;/pre&gt;

  &lt;pre class="alt"&gt;                }, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;            }, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; XElement CreateUpdateListItemsMessage(&lt;span class="kwrd"&gt;string&lt;/span&gt; listName, XElement updates)&lt;/pre&gt;

  &lt;pre&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            EnsureSharePointNamespace(updates);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            var body = &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(sharepoint + &lt;span class="str"&gt;&amp;quot;UpdateListItems&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; XAttribute(&lt;span class="str"&gt;&amp;quot;xmlns&amp;quot;&lt;/span&gt;, sharepoint),&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(sharepoint + &lt;span class="str"&gt;&amp;quot;listName&amp;quot;&lt;/span&gt;, listName),&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; XElement(sharepoint + &lt;span class="str"&gt;&amp;quot;updates&amp;quot;&lt;/span&gt;, updates));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            var envelope = XElement.Parse(SoapEnvelopeTemplate.ToString());&lt;/pre&gt;

  &lt;pre class="alt"&gt;            envelope.Descendants(soap + &lt;span class="str"&gt;&amp;quot;Body&amp;quot;&lt;/span&gt;).First().Add(body);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; envelope;&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; XElement EnsureSharePointNamespace(XElement el)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        {&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var e &lt;span class="kwrd"&gt;in&lt;/span&gt; el.DescendantsAndSelf())&lt;/pre&gt;

  &lt;pre class="alt"&gt;            {&lt;/pre&gt;

  &lt;pre&gt;                e.Name = sharepoint.GetName(e.Name.LocalName);&lt;/pre&gt;

  &lt;pre class="alt"&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; el;&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;And here is an example of how to use it from Silverlight:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;           var ws = &lt;span class="kwrd"&gt;new&lt;/span&gt; SharePointWebService(&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;https://localhost/_vti_bin/lists.asmx&amp;quot;&lt;/span&gt;, UriKind.Absolute),&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; NetworkCredential(&lt;span class="str"&gt;&amp;quot;user1&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;DOMAIN&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            ws.UpdateListItemsAsync(&lt;span class="str"&gt;&amp;quot;jtest&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;                XElement.Parse(&lt;span class="str"&gt;@&amp;quot;&amp;lt;Batch&amp;gt;&amp;lt;Method ID=&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot; Cmd=&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;New&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;&amp;gt;&amp;lt;Field Name=&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;&lt;span class="str"&gt;&amp;quot;&amp;gt;New item&amp;lt;/Field&amp;gt;&amp;lt;/Method&amp;gt;&amp;lt;/Batch&amp;gt;&amp;quot;&lt;/span&gt;),&lt;/pre&gt;

  &lt;pre class="alt"&gt;                (doc) =&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    Dispatcher.BeginInvoke(() =&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;                    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                        textBox1.Text = doc.ToString();&lt;/pre&gt;

  &lt;pre&gt;                    });&lt;/pre&gt;

  &lt;pre class="alt"&gt;                });&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;This has been a pretty fun exercise... It would be better if the proxy ClientCredential code can do similar thing, but well... live sucks and that&amp;#39;s why you are a coder, right?&amp;#160;&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;&amp;lt;digress&amp;gt;Some of you might be thinking what the hell the relation between live sucks and being a coder.... Don&amp;#39;t worry, I don&amp;#39;t know either, LOL.&amp;#160; Guess that&amp;#39;s why this blog is called Incoherent Rambling... &amp;lt;/digress&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/23/how-to-call-sharepoint-web-service-with-specific-credential-from-silverlight-oob.aspx&amp;amp;subject=How to call SharePoint Web Service with Specific Credential from Silverlight OOB" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/23/how-to-call-sharepoint-web-service-with-specific-credential-from-silverlight-oob.aspx&amp;amp;t=How+to+call+SharePoint+Web+Service+with+Specific+Credential+from+Silverlight+OOB" target="_blank" title="Submit How to call SharePoint Web Service with Specific Credential from Silverlight OOB to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/23/how-to-call-sharepoint-web-service-with-specific-credential-from-silverlight-oob.aspx&amp;amp;title=How+to+call+SharePoint+Web+Service+with+Specific+Credential+from+Silverlight+OOB" target="_blank" title="Submit How to call SharePoint Web Service with Specific Credential from Silverlight OOB to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/23/how-to-call-sharepoint-web-service-with-specific-credential-from-silverlight-oob.aspx&amp;amp;phase=2" target="_blank" title="Submit How to call SharePoint Web Service with Specific Credential from Silverlight OOB to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/23/how-to-call-sharepoint-web-service-with-specific-credential-from-silverlight-oob.aspx&amp;amp;title=How+to+call+SharePoint+Web+Service+with+Specific+Credential+from+Silverlight+OOB" target="_blank" title="Add How to call SharePoint Web Service with Specific Credential from Silverlight OOB to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192271" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/silverlight/default.aspx">silverlight</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/Credential/default.aspx">Credential</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/Authentication/default.aspx">Authentication</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/OOB/default.aspx">OOB</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/Web+Service/default.aspx">Web Service</category></item><item><title>How to Add a link in SharePoint 2010 that will launch InfoPath form template?</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/17/how-to-add-a-link-in-sharepoint-2010-that-will-launch-infopath-form-template.aspx</link><pubDate>Wed, 16 Mar 2011 17:54:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192248</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192248</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/17/how-to-add-a-link-in-sharepoint-2010-that-will-launch-infopath-form-template.aspx#comments</comments><description>&lt;p&gt;While playing around with SharePoint 2010, I want to add a link to my site home page that will do the same thing when I am in a particular document / form library and click the Add Document link.&amp;nbsp; &lt;/p&gt;&lt;p&gt;In other word, how can I launch Word or Excel or InfoPath from my own link without having to go inside the library and clicking Add Document?&lt;/p&gt;&lt;p&gt;At first, I couldn&amp;#39;t figure out how to do this.&amp;nbsp; Decided to dive into the HTML source of the Form Library AllItems.aspx view and found a CoreInvoke JS method, like:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font face="courier new,courier"&gt;CoreInvoke(&amp;#39;createNewDocumentWithProgIDEx&amp;#39;, &amp;#39;template source URI&amp;#39;, event, &amp;#39;save location URI&amp;#39;, &amp;#39;SharePoint.OpenXMLDocuments&amp;#39;, true);&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I plop that inside a link tag and it worked.&amp;nbsp;&lt;/p&gt;&lt;p&gt;After the fact, I look around the web and finally found someone else that has done this already...&lt;/p&gt;&lt;p&gt;See: &lt;a href="http://www.sharepointkings.com/2010/02/create-new-document-link-in-listview.html"&gt;http://www.sharepointkings.com/2010/02/create-new-document-link-in-listview.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The syntax is something like: &lt;font face="courier new,courier"&gt;&lt;strong&gt;createNewDocumentWithProgID(&lt;em&gt;templateSourceURI&lt;/em&gt;, &lt;em&gt;saveLocation&lt;/em&gt;, &lt;em&gt;docType&lt;/em&gt;,&amp;nbsp;false);&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In my case, I want to launch an InfoPath form template, and I found the following work just fine:&lt;/p&gt;&lt;p&gt;&lt;font color="#000000" face="courier new,courier"&gt;&lt;strong&gt;createNewDocumentWithProgID(&amp;#39;http://intranet/spike/FormLib1/Forms/template.xml&amp;#39;, &amp;#39;http://intranet/spike/FormLib1&amp;#39;, &amp;#39;SharePoint.OpenXMLDocuments&amp;#39;, false);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/17/how-to-add-a-link-in-sharepoint-2010-that-will-launch-infopath-form-template.aspx&amp;amp;subject=How to Add a link in SharePoint 2010 that will launch InfoPath form template?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/17/how-to-add-a-link-in-sharepoint-2010-that-will-launch-infopath-form-template.aspx&amp;amp;t=How+to+Add+a+link+in+SharePoint+2010+that+will+launch+InfoPath+form+template%3f" target="_blank" title="Submit How to Add a link in SharePoint 2010 that will launch InfoPath form template? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/17/how-to-add-a-link-in-sharepoint-2010-that-will-launch-infopath-form-template.aspx&amp;amp;title=How+to+Add+a+link+in+SharePoint+2010+that+will+launch+InfoPath+form+template%3f" target="_blank" title="Submit How to Add a link in SharePoint 2010 that will launch InfoPath form template? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/17/how-to-add-a-link-in-sharepoint-2010-that-will-launch-infopath-form-template.aspx&amp;amp;phase=2" target="_blank" title="Submit How to Add a link in SharePoint 2010 that will launch InfoPath form template? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/17/how-to-add-a-link-in-sharepoint-2010-that-will-launch-infopath-form-template.aspx&amp;amp;title=How+to+Add+a+link+in+SharePoint+2010+that+will+launch+InfoPath+form+template%3f" target="_blank" title="Add How to Add a link in SharePoint 2010 that will launch InfoPath form template? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192248" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/InfoPath+2010/default.aspx">InfoPath 2010</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Coolest Feature of IE9 in My Opinion</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/15/coolest-feature-of-ie9-in-my-opinion.aspx</link><pubDate>Tue, 15 Mar 2011 11:22:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192238</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192238</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/15/coolest-feature-of-ie9-in-my-opinion.aspx#comments</comments><description>&lt;p&gt;Just want to link to Scott Hanselmann&amp;#39;s blog post on Site Pinning and the cool things that you can do with it.&amp;nbsp; I think it&amp;#39;s the coolest feature in IE9... graphic hardware acceleration, canvas support, improved javascript speed... PHHBTTT... seen it too many times, but this... is awesome ... or maybe not?&amp;nbsp; Well, I think it is anyhow &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-2.gif" alt="Big Smile" /&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.hanselman.com/blog/IE9SiteSpecificBrowsersAndAddingYourOwnJumpListItemsToPinnedTabs.aspx"&gt;http://www.hanselman.com/blog/IE9SiteSpecificBrowsersAndAddingYourOwnJumpListItemsToPinnedTabs.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Check it out.&amp;nbsp; &lt;/p&gt;&lt;p&gt;Information that you will find: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;How to add Jump List that is available from Windows 7 Pinned Site&lt;/li&gt;&lt;li&gt;Adding notification to the&amp;nbsp;pinned site&amp;nbsp;icon in the taskbar (Push Overlay)&lt;/li&gt;&lt;li&gt;Adding task bar buttons to the pinned site&lt;/li&gt;&lt;/ul&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/15/coolest-feature-of-ie9-in-my-opinion.aspx&amp;amp;subject=Coolest Feature of IE9 in My Opinion" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/15/coolest-feature-of-ie9-in-my-opinion.aspx&amp;amp;t=Coolest+Feature+of+IE9+in+My+Opinion" target="_blank" title="Submit Coolest Feature of IE9 in My Opinion to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/15/coolest-feature-of-ie9-in-my-opinion.aspx&amp;amp;title=Coolest+Feature+of+IE9+in+My+Opinion" target="_blank" title="Submit Coolest Feature of IE9 in My Opinion to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/15/coolest-feature-of-ie9-in-my-opinion.aspx&amp;amp;phase=2" target="_blank" title="Submit Coolest Feature of IE9 in My Opinion to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/15/coolest-feature-of-ie9-in-my-opinion.aspx&amp;amp;title=Coolest+Feature+of+IE9+in+My+Opinion" target="_blank" title="Add Coolest Feature of IE9 in My Opinion to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192238" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/ie9/default.aspx">ie9</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/site+pinning/default.aspx">site pinning</category></item><item><title>Oh Nirvana... VirtualBox, Hyper-V VHD and Synergy</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/10/oh-nirvana-virtualbox-hyper-v-vhd-and-synergy.aspx</link><pubDate>Thu, 10 Mar 2011 16:27:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192225</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192225</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/10/oh-nirvana-virtualbox-hyper-v-vhd-and-synergy.aspx#comments</comments><description>&lt;p&gt;In my daily work, I am doing a lot of prototyping, testing, etc.&amp;nbsp; And for this, I lean heavily on virtualization to isolate my workstation versus the prototyping / testing environment and for its ability to quickly rollback to previous snapshot.&lt;/p&gt;&lt;p&gt;Currently, I configured my laptop to be a dual boot system (Windows 7 and Windows Server 2008 R2 w/ Hyper-V, both implemented as 40GB VHD in the actual harddisk).&amp;nbsp; I utilized Boot from VHD capability of Windows to do this, which is pretty sweet.&lt;/p&gt;&lt;p&gt;But I am getting tired of having to maintain 2 OS on the same box.&amp;nbsp; I am trying to get rid of W2K8R2 from my system since 99% of the time I am using Windows 7 anyhow.&amp;nbsp; But one thing kept preventing me from doing this... call it laziness or whatever you wish, but I use Hyper-V to run some precanned VHDs from Microsoft such as SharePoint 2010 demo which already has everything that I need.&amp;nbsp; I supposed the other reason for this is just to play around with Hyper-V so I understand the technology and can demonstrate them when needed.&lt;/p&gt;&lt;p&gt;The rest of my virtualized environment actually run in Windows 7 using VirtualBox which support 64-bit guest OS.&amp;nbsp; I like VirtualBox very much for what it can do; Not to mention it is also free.&amp;nbsp; So one pet peef that I had previously is I couldn&amp;#39;t find a way to boot Hyper-V VHD from inside VirtualBox.&amp;nbsp; Virtual Server / VPC VHD runs just fine, but not Hyper-V one... weird.&lt;/p&gt;&lt;p&gt;Today, I decided to look around the web again, and finally came across &lt;a href="http://ollysense.blogspot.com/2010/05/virtualbox-using-hyper-v-vhd-image.html" target="_blank"&gt;this particular blog post&lt;/a&gt;... lo and behold... it is actually possible to do this.&amp;nbsp; The trick is just to not to use SATA to boot up the VHD, but rather to attach it to the IDE controller instead.&amp;nbsp; Curious, I tried to quickly create a VM inside VirtualBox and connect it to my existing &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=751fa0d1-356c-4002-9c60-d539896c66ce&amp;amp;displaylang=en" target="_blank"&gt;Hyper-V SP2010-7a.vhd&lt;/a&gt;.&amp;nbsp; Boot it up and guess what... it runs :). YAY!!&lt;/p&gt;&lt;p&gt;So now... I need to decide whether to scrap the 40GB W2K8R2 VHD from my hard drive or not ... Hmmm...&lt;/p&gt;&lt;p&gt;Nothing against Hyper-V, but I just wish Hyper-V can run on top of Win7 so I don&amp;#39;t have to do the OS switcheroos.&amp;nbsp; Most of my tools like Office, Outlook pst and ost, etc. are in my Win7 system.&amp;nbsp; It is such a hassle to maintain 2 different OS (patches, etc.) and the applications when I only use the other one 1% of the time.&amp;nbsp; And Virtual Server / VPC are not an option on Win7 since they can&amp;#39;t run 64-bit guest OS which is needed for SharePoint 2010.&lt;/p&gt;&lt;p&gt;On a totally different thing, at home I like to use my work laptop as my server environment and actually do the work from my home laptop that is attached to a secondary monitor.&amp;nbsp; So I was thinking... wouldn&amp;#39;t it be neat if I can use my home laptop keyboard and mouse to control my work laptop seamlessly... I am not talking about remoting to it since that will actually waste some screen space on my home laptop.&amp;nbsp; But rather, emulate a 3 screens environmment where my work laptop is the left most screen and my home laptop is the middle screen and the additional LCD for the right most screen.&amp;nbsp; One screen to browse, one screen to do some works like coding, and another one for other peripheral stuffs like TweetDeck or&amp;nbsp;email or whatever.&amp;nbsp; It turns out you can do this... Found &lt;a href="http://synergy2.sourceforge.net/" target="_blank"&gt;this piece of open source software (Synergy)&lt;/a&gt; that will allow you to do just that.&amp;nbsp; Cut and paste work just fine across machines and it work across multiple OS too (Windows, MacOS, and Linux).&amp;nbsp; Awesome.&lt;/p&gt;&lt;p&gt;So, with the new ability to run Hyper-V VHD inside VirtualBox and lots of screen estate and seamless control over my other computer screen using Synergy... I am a happy camper :).&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/10/oh-nirvana-virtualbox-hyper-v-vhd-and-synergy.aspx&amp;amp;subject=Oh Nirvana... VirtualBox, Hyper-V VHD and Synergy" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/10/oh-nirvana-virtualbox-hyper-v-vhd-and-synergy.aspx&amp;amp;t=Oh+Nirvana...+VirtualBox%2c+Hyper-V+VHD+and+Synergy" target="_blank" title="Submit Oh Nirvana... VirtualBox, Hyper-V VHD and Synergy to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/10/oh-nirvana-virtualbox-hyper-v-vhd-and-synergy.aspx&amp;amp;title=Oh+Nirvana...+VirtualBox%2c+Hyper-V+VHD+and+Synergy" target="_blank" title="Submit Oh Nirvana... VirtualBox, Hyper-V VHD and Synergy to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/10/oh-nirvana-virtualbox-hyper-v-vhd-and-synergy.aspx&amp;amp;phase=2" target="_blank" title="Submit Oh Nirvana... VirtualBox, Hyper-V VHD and Synergy to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/10/oh-nirvana-virtualbox-hyper-v-vhd-and-synergy.aspx&amp;amp;title=Oh+Nirvana...+VirtualBox%2c+Hyper-V+VHD+and+Synergy" target="_blank" title="Add Oh Nirvana... VirtualBox, Hyper-V VHD and Synergy to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192225" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/virtualization/default.aspx">virtualization</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/synergy/default.aspx">synergy</category></item><item><title>Finally!! Indonesian Mobile Developers Can Submit WP7 Application to the MarketPlace.</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/09/finally-indonesian-mobile-developers-can-submit-your-wp7-application-to-the-marketplace.aspx</link><pubDate>Wed, 09 Mar 2011 13:30:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192211</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192211</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/09/finally-indonesian-mobile-developers-can-submit-your-wp7-application-to-the-marketplace.aspx#comments</comments><description>&lt;p&gt;There are/were 2 things that bug me as an Indonesian in regard to Windows Phone 7.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&amp;nbsp;From Indonesian consumer point of view... The ability to purchase application in Marketplace is basically non existant if you don&amp;#39;t have the right credit card.&amp;nbsp; What I mean by the right credit card is a non Indonesian credit card. &lt;em&gt;(If anyone know different, please let me know.)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;From Indonesian&amp;nbsp;mobile developer&amp;nbsp;point of view... The ability to submit&amp;nbsp;WP7 application into the&amp;nbsp;MarketPlace via &lt;a href="http://create.msdn.com" target="_blank"&gt;AppHub&lt;/a&gt;&amp;nbsp;was also non existant.&amp;nbsp; Again... the&amp;nbsp;problem here is related to&amp;nbsp;Indonesian credit card&amp;nbsp;was not supported. &lt;em&gt;(Note that&amp;nbsp;I said... &lt;strong&gt;WAS&lt;/strong&gt;)&lt;/em&gt; &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-2.gif" alt="Big Smile" /&gt;.&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;So, the good&amp;nbsp;news...&amp;nbsp;&lt;/p&gt;&lt;p&gt;As developer (in Indonesia and other countries),&lt;strong&gt; it is now possible to participate in the Marketplace!! Yay!!&amp;nbsp;&lt;/strong&gt; A Global Publisher Program was recently announced during TechEd Middle East in Dubai.&amp;nbsp; So what are you waiting for?&amp;nbsp; Go to &lt;a href="http://www.yallaapps.com/" target="_blank"&gt;Yalla Apps&lt;/a&gt; and register yourself and start making money.&amp;nbsp;&amp;nbsp;For full news, see &lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/03/08/an-update-on-windows-phone-marketplace-new-tips-policies-and-regional-access-program.aspx" target="_blank"&gt;this blog post&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;But wait... what about if I want to buy from Marketplace as consumer? ... Eh, basically it is still the same situation as before... You need a credit card that is allowed by Marketplace... It&amp;#39;s very hard, but it is not entirely impossible.&amp;nbsp; &amp;nbsp;But hey... at least you can hawk your stuffs online now!&amp;nbsp; Better 1/2 than nothing, right? &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-2.gif" alt="Big Smile" /&gt;.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/09/finally-indonesian-mobile-developers-can-submit-your-wp7-application-to-the-marketplace.aspx&amp;amp;subject=Finally!! Indonesian Mobile Developers Can Submit WP7 Application to the MarketPlace." target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/09/finally-indonesian-mobile-developers-can-submit-your-wp7-application-to-the-marketplace.aspx&amp;amp;t=Finally!!+Indonesian+Mobile+Developers+Can+Submit+WP7+Application+to+the+MarketPlace." target="_blank" title="Submit Finally!! Indonesian Mobile Developers Can Submit WP7 Application to the MarketPlace. to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/09/finally-indonesian-mobile-developers-can-submit-your-wp7-application-to-the-marketplace.aspx&amp;amp;title=Finally!!+Indonesian+Mobile+Developers+Can+Submit+WP7+Application+to+the+MarketPlace." target="_blank" title="Submit Finally!! Indonesian Mobile Developers Can Submit WP7 Application to the MarketPlace. to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/09/finally-indonesian-mobile-developers-can-submit-your-wp7-application-to-the-marketplace.aspx&amp;amp;phase=2" target="_blank" title="Submit Finally!! Indonesian Mobile Developers Can Submit WP7 Application to the MarketPlace. to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/09/finally-indonesian-mobile-developers-can-submit-your-wp7-application-to-the-marketplace.aspx&amp;amp;title=Finally!!+Indonesian+Mobile+Developers+Can+Submit+WP7+Application+to+the+MarketPlace." target="_blank" title="Add Finally!! Indonesian Mobile Developers Can Submit WP7 Application to the MarketPlace. to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192211" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/Marketplace/default.aspx">Marketplace</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/WP7/default.aspx">WP7</category></item><item><title>The Best Deep Dive on jQuery Session</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/07/the-best-deep-dive-on-jquery-session.aspx</link><pubDate>Mon, 07 Mar 2011 09:33:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192201</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192201</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/07/the-best-deep-dive-on-jquery-session.aspx#comments</comments><description>&lt;p&gt;Well, maybe not the best, but it comes very close to it.&amp;nbsp; For sure, it&amp;#39;s the FUNNEST time you can have while trying to understand jQuery internal and at the same time learn about some exotic things about JavaScript and browser DOM.&lt;/p&gt;&lt;p&gt;What I am talking about is the More Things I Learned from the jQuery Source videos by &lt;a href="http://paulirish.com"&gt;Paul Irish&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Trust me... If you are a JavaScript / jQuery geek, it is definitely worth the time to look at them.&lt;/p&gt;&lt;p&gt;Paul is quite a fun guy to watch and his explanation style kind of remind me of how Head First book series are written.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Fun, Fun, Fun.&lt;/p&gt;&lt;p&gt;&lt;a href="http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/"&gt;http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://paulirish.com/2011/11-more-things-i-learned-from-the-jquery-source/"&gt;http://paulirish.com/2011/11-more-things-i-learned-from-the-jquery-source/&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/07/the-best-deep-dive-on-jquery-session.aspx&amp;amp;subject=The Best Deep Dive on jQuery Session" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/07/the-best-deep-dive-on-jquery-session.aspx&amp;amp;t=The+Best+Deep+Dive+on+jQuery+Session" target="_blank" title="Submit The Best Deep Dive on jQuery Session to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/07/the-best-deep-dive-on-jquery-session.aspx&amp;amp;title=The+Best+Deep+Dive+on+jQuery+Session" target="_blank" title="Submit The Best Deep Dive on jQuery Session to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/07/the-best-deep-dive-on-jquery-session.aspx&amp;amp;phase=2" target="_blank" title="Submit The Best Deep Dive on jQuery Session to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/03/07/the-best-deep-dive-on-jquery-session.aspx&amp;amp;title=The+Best+Deep+Dive+on+jQuery+Session" target="_blank" title="Add The Best Deep Dive on jQuery Session to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192201" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/jQuery/default.aspx">jQuery</category></item><item><title>Move to the Cloud, Use the Cloud and Be a Cloud</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/move-to-the-cloud-use-the-cloud-and-be-a-cloud.aspx</link><pubDate>Fri, 25 Feb 2011 16:07:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192154</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192154</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/move-to-the-cloud-use-the-cloud-and-be-a-cloud.aspx#comments</comments><description>&lt;p&gt;As you might already&amp;nbsp;know, there are 3 general types of cloud offerings out there.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Infrastructure as a Service (IaaS)&lt;/li&gt;&lt;li&gt;Platform as a Service (PaaS)&lt;/li&gt;&lt;li&gt;Software as a Service (SaaS)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Each gives you a different level of control and benefits.&amp;nbsp; I won&amp;#39;t bother you with the detail on each.&amp;nbsp; It&amp;#39;s not what this blog entry is about.&amp;nbsp; If you like to compare and contrast these offerings, see &lt;a href="http://www.cloudtweaks.com/2011/02/cloud-computing-for-dummies-saas-paas-iaas-and-all-that-was/"&gt;this&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;A different&amp;nbsp;perspective on the cloud offerings&amp;nbsp;has been suggested to me:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Move to the&amp;nbsp;cloud&lt;/li&gt;&lt;li&gt;Use the cloud&lt;/li&gt;&lt;li&gt;Be&amp;nbsp;a cloud&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Moving to the Cloud&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Moving to the cloud is like outsourcing one more of your services such as e-mail, CRM, portal solution, and even some business productivity tools.&amp;nbsp; A lot of cloud players are playing in this field including &lt;a href="http://office365.microsoft.com/en-US/online-services.aspx"&gt;Microsoft Office 365&lt;/a&gt; and other &lt;a href="http://www.microsoft.com/online/" target="_blank"&gt;Microsoft Online Services&lt;/a&gt;, third party / partner hosted services, Google docs, .and salesforce.com.&lt;/p&gt;&lt;p&gt;The benefits for this&amp;nbsp;is&amp;nbsp;you no longer&amp;nbsp;need to maintain the infrastructure necessary for these &amp;quot;IT commodity&amp;quot; services, instead you can utilize your resources to do more strategic stuffs and let the cloud provider deals with the day-to-day administration.&lt;/p&gt;&lt;p&gt;The disadvantage for this is you might not have the ability to do full customization on top of the solution that you have outsourced since most of the time, the provider will configure the solution to run on multi-tenancy architecture that makes it a bit difficult to customize for a specific tenant.&amp;nbsp; Maybe, if you are lucky, and depending on your service level with the provider, you might be able to do this, but expect to treat this offerings the same way as shopping for cloths from a department store instead of going to the tailor to make a custom suit / dress.&amp;nbsp; You have your choices of colors and sizes and that&amp;#39;s that.&amp;nbsp; No addditional pockets, replacing buttons, etc.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Use the Cloud&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Think of this as not moving the entire solution to the cloud like in Move to the Cloud above, but rather, you still have something on-premise that is reaching out to the cloud for additional things.&amp;nbsp; Or your internal solutions are using some cloud services.&amp;nbsp;&amp;nbsp; Seasonal business activities like internet campaign marketing / promotion can defintely take&amp;nbsp;advantage of the&amp;nbsp;public cloud services&amp;nbsp;such as using Windows Azure&amp;nbsp;or&amp;nbsp;other platform like Google AppEngine&amp;nbsp;as your workhorse&amp;nbsp;during the promotional period by quickly adding&amp;nbsp;the necessary computing power without the need to put down the huge capital cost for hardware&amp;nbsp;up front.&amp;nbsp;&amp;nbsp;The ability to pay as you go is definitely something to consider when you want to cut down the capital cost.&amp;nbsp; Once you are done with the seasonal activity, you don&amp;#39;t need to worry about what to do with the extra computing capacity that won&amp;#39;t be doing anything if you were to implement the solution in house using your own hardware (that you have to purchase up front).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Be a Cloud&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A couple of example for this are a hosting business&amp;nbsp;offering elastic computing based on private cloud technology or your company itself decided that you want to keep your data and computing power inside the company but still wants the elasticity that a cloud offering can provide.&amp;nbsp; A good scenario for considering this kind of solution is when your company or country you operate in&amp;nbsp;has regulation that requires your data to stay within a certain physical boundary or you are considering being a cloud provider for others.&amp;nbsp; Another good case for this is when you have a cloud solution that you want to sell as a service (SaaS) to others.&amp;nbsp; With the right VM infrastructure and management solution, it is definitely possible to be a cloud.&amp;nbsp; An example of this is Microsoft Private Cloud solutions such as Hyper-V Cloud and Windows Azure Platfrom Appliance described &lt;a href="http://www.microsoft.com/virtualization/en/us/private-cloud.aspx"&gt;here&lt;/a&gt;.&amp;nbsp; Another vendor that&amp;nbsp;is also playing in this area is VMWare.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Things to Consider&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Different level of IT&amp;nbsp;maturity is required for operating in the cloud.&amp;nbsp; Before you can move to the cloud, your IT infrastructure, staff, and procedures must be at a&amp;nbsp;certain level of maturity.&amp;nbsp; If you are putting&amp;nbsp;out fire&amp;nbsp;most of the time, you are probably not ready to move yet.&amp;nbsp;&amp;nbsp;How easy&amp;nbsp;you can&amp;nbsp;integrate your internal IT systems&amp;nbsp;such as security&amp;nbsp;&amp;amp; identity with the cloud offering is another thing that you might want to consider before making your move.&amp;nbsp; &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/move-to-the-cloud-use-the-cloud-and-be-a-cloud.aspx&amp;amp;subject=Move to the Cloud, Use the Cloud and Be a Cloud" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/move-to-the-cloud-use-the-cloud-and-be-a-cloud.aspx&amp;amp;t=Move+to+the+Cloud%2c+Use+the+Cloud+and+Be+a+Cloud" target="_blank" title="Submit Move to the Cloud, Use the Cloud and Be a Cloud to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/move-to-the-cloud-use-the-cloud-and-be-a-cloud.aspx&amp;amp;title=Move+to+the+Cloud%2c+Use+the+Cloud+and+Be+a+Cloud" target="_blank" title="Submit Move to the Cloud, Use the Cloud and Be a Cloud to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/move-to-the-cloud-use-the-cloud-and-be-a-cloud.aspx&amp;amp;phase=2" target="_blank" title="Submit Move to the Cloud, Use the Cloud and Be a Cloud to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/move-to-the-cloud-use-the-cloud-and-be-a-cloud.aspx&amp;amp;title=Move+to+the+Cloud%2c+Use+the+Cloud+and+Be+a+Cloud" target="_blank" title="Add Move to the Cloud, Use the Cloud and Be a Cloud to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192154" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/cloud+computing/default.aspx">cloud computing</category></item><item><title>How to Change the Active Printer to Specific Printer in Excel Using .NET and How the Heck Can I Find the Right Printer Name and Port Combination that Excel Wants?</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/how-to-change-the-active-printer-to-specific-printer-in-excel-using-net-and-how-the-heck-can-i-find-the-right-printer-name-and-port-combination-that-excel-wants.aspx</link><pubDate>Fri, 25 Feb 2011 15:38:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192149</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192149</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/how-to-change-the-active-printer-to-specific-printer-in-excel-using-net-and-how-the-heck-can-i-find-the-right-printer-name-and-port-combination-that-excel-wants.aspx#comments</comments><description>&lt;p&gt;A client of mine was having a problem trying to automate Excel to print to a specific (non default) printer.&amp;nbsp; They know which printer they want to use, but are having trouble trying to get Excel to understand it.&lt;/p&gt;  &lt;p&gt;Excel’s &lt;strong&gt;&lt;a title="Excel Application ActivePrinter property" href="http://msdn.microsoft.com/en-us/library/ff822927.aspx" target="_blank"&gt;Application.ActivePrinter&lt;/a&gt;&lt;/strong&gt; property is quite picky about what it will accept.&amp;nbsp; The right pattern to feed to the property is something like&lt;em&gt; &lt;/em&gt;“&lt;strong&gt;&lt;em&gt;PrinterName&lt;/em&gt; on&lt;/strong&gt;&lt;em&gt;&lt;strong&gt; PortName&lt;/strong&gt;:&lt;/em&gt;”&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;For example, if you want to print to Microsoft XPS Document Writer, you need to do something like this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;var excel = &lt;span class="kwrd"&gt;new&lt;/span&gt; Excel.Application();
var workbook = excel.Workbooks.Open(&lt;span class="str"&gt;&amp;quot;....&amp;quot;&lt;/span&gt;);
var worksheet = workbook.ActiveSheet;

excel.ActivePrinter = “Microsoft XPS Document Writer on ne01:”;
worksheet.PrintOut();

excel.Quit();&lt;/pre&gt;

&lt;p&gt;And this of course assuming that the selected printer (&lt;strong&gt;Microsoft XPS Document Writer&lt;/strong&gt;) is on port &lt;strong&gt;ne01&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Getting the right name for the printer is somewhat trivial.&amp;nbsp; You can poke around the &lt;strong&gt;Devices and Printers&lt;/strong&gt; control panel item on Windows and see their name. &lt;/p&gt;

&lt;p&gt;The problem is… the port name information is not so obvious to find.&lt;/p&gt;

&lt;p&gt;So, how would you know where to get the port name?&lt;/p&gt;

&lt;p&gt;Trying to enumerate the attached printers as described by &lt;a title="Is there a .NET way to enumerate all available network printers?" href="http://stackoverflow.com/questions/1018001/is-there-a-net-way-to-enumerate-all-available-network-printers/1018061" target="_blank"&gt;this StackOverflow question&lt;/a&gt; does not gives you the right port name… See the sample code and output below…&lt;/p&gt;

&lt;p&gt;The Code:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Management;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1
{
    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program
    {
        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
        {
            var oquery = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObjectQuery(&lt;span class="str"&gt;&amp;quot;SELECT * FROM Win32_Printer&amp;quot;&lt;/span&gt;);
            var mosearcher = &lt;span class="kwrd"&gt;new&lt;/span&gt; ManagementObjectSearcher(oquery);
            var moc = mosearcher.Get();            

            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var o &lt;span class="kwrd"&gt;in&lt;/span&gt; moc)
            {
                var pdc = o.Properties;

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var p &lt;span class="kwrd"&gt;in&lt;/span&gt; pdc)
                {
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (p.Name == &lt;span class="str"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt; || p.Name == &lt;span class="str"&gt;&amp;quot;PortName&amp;quot;&lt;/span&gt;)
                    {

                        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;{0}: {1}&amp;quot;&lt;/span&gt;, p.Name, o[p.Name]);
                    }
                }
            }
        }
    }
}&lt;/pre&gt;

&lt;p&gt;The result:&lt;/p&gt;

&lt;p&gt;&lt;font face="Courier New"&gt;Name: Xerox WorkCentre 3119 Series
    &lt;br /&gt;PortName: USB001

    &lt;br /&gt;Name: Send To OneNote 2010

    &lt;br /&gt;PortName: nul:

    &lt;br /&gt;Name: Microsoft XPS Document Writer

    &lt;br /&gt;PortName: XPSPort:

    &lt;br /&gt;Name: CAMPUS-R101-DC236

    &lt;br /&gt;PortName: 192.168.100.21

    &lt;br /&gt;Name: CAMPUS-R217-DC236

    &lt;br /&gt;PortName: 192.168.100.22

    &lt;br /&gt;Name: Fax

    &lt;br /&gt;PortName: SHRFAX:

    &lt;br /&gt;Name: \\TIGER\Canon Inkjet MP140 series

    &lt;br /&gt;PortName: USB001&lt;/font&gt;&lt;/p&gt;



&lt;p&gt;&lt;em&gt;You just have to trust me the port name here is not the port name that Excel wants to use.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, where else can you get this particular information?&lt;/p&gt;

&lt;p&gt;After looking around the web, I found &lt;a href="http://www.xtremevbtalk.com/showthread.php?t=258994" target="_blank"&gt;this post&lt;/a&gt; that gives some clues on how to do this from VBA that can easily be adapted for .NET.&lt;/p&gt;

&lt;p&gt;It turns out that the key to this is to poke around in the registry. in particular &lt;strong&gt;HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I came up with the code below to test it and lo and behold.&amp;nbsp; It works perfectly.&amp;nbsp; Basically I enumerate through all the devices in that particular registry location, did some string manipulation on the port (remove the &lt;strong&gt;winspool,&lt;/strong&gt; prefix from the port name) and concatenate the stripped version of the port name with the printer / device name to form the &lt;strong&gt;PrinterName on PortName:&lt;/strong&gt; combination that is required by Excel.&lt;/p&gt;



&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Win32;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Runtime.InteropServices;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Excel = Microsoft.Office.Interop.Excel;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1
{
    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program
    {
        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
        {
            var excelApp = &lt;span class="kwrd"&gt;new&lt;/span&gt; Excel.Application();
            excelApp.Visible = &lt;span class="kwrd"&gt;true&lt;/span&gt;;

            var workbook = excelApp.Workbooks.Add();
            var worksheet = workbook.ActiveSheet;

            var key = Registry.CurrentUser;
            var subkey = key.OpenSubKey(&lt;span class="str"&gt;@&amp;quot;Software\Microsoft\Windows NT\CurrentVersion\Devices&amp;quot;&lt;/span&gt;);

            var printerNames = subkey.GetValueNames();

            &lt;span class="rem"&gt;//Should be able to complete this loop without throwing an exception&lt;/span&gt;
            &lt;span class="rem"&gt;//if all the names matches to what Excel is expecting.&lt;/span&gt;
            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var printerName &lt;span class="kwrd"&gt;in&lt;/span&gt; printerNames)
            {
                var excelPrinterName = ConvertToExcelPrinterFriendlyName(printerName);
                Console.WriteLine(excelPrinterName);

                excelApp.ActivePrinter = excelPrinterName;
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();

            Marshal.FinalReleaseComObject(worksheet);

            workbook.Close(&lt;span class="kwrd"&gt;false&lt;/span&gt;);
            Marshal.FinalReleaseComObject(workbook);

            excelApp.Quit();
            Marshal.FinalReleaseComObject(excelApp);
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ConvertToExcelPrinterFriendlyName(&lt;span class="kwrd"&gt;string&lt;/span&gt; printerName)
        {
            var key = Registry.CurrentUser;
            var subkey = key.OpenSubKey(&lt;span class="str"&gt;@&amp;quot;Software\Microsoft\Windows NT\CurrentVersion\Devices&amp;quot;&lt;/span&gt;);

            var &lt;span class="kwrd"&gt;value&lt;/span&gt; = subkey.GetValue(printerName);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;value&lt;/span&gt; == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;Device not found: {0}&amp;quot;&lt;/span&gt;, printerName));

            var portName = &lt;span class="kwrd"&gt;value&lt;/span&gt;.ToString().Substring(9);  &lt;span class="rem"&gt;//strip away the winspool, &lt;/span&gt;
 
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;{0} on {1}&amp;quot;&lt;/span&gt;, printerName, portName);;
        }
    }
}&lt;/pre&gt;



&lt;p&gt;Hope this is useful for those who need it… Enjoy.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/how-to-change-the-active-printer-to-specific-printer-in-excel-using-net-and-how-the-heck-can-i-find-the-right-printer-name-and-port-combination-that-excel-wants.aspx&amp;amp;subject=How to Change the Active Printer to Specific Printer in Excel Using .NET and How the Heck Can I Find the Right Printer Name and Port Combination that Excel Wants?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/how-to-change-the-active-printer-to-specific-printer-in-excel-using-net-and-how-the-heck-can-i-find-the-right-printer-name-and-port-combination-that-excel-wants.aspx&amp;amp;t=How+to+Change+the+Active+Printer+to+Specific+Printer+in+Excel+Using+.NET+and+How+the+Heck+Can+I+Find+the+Right+Printer+Name+and+Port+Combination+that+Excel+Wants%3f" target="_blank" title="Submit How to Change the Active Printer to Specific Printer in Excel Using .NET and How the Heck Can I Find the Right Printer Name and Port Combination that Excel Wants? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/how-to-change-the-active-printer-to-specific-printer-in-excel-using-net-and-how-the-heck-can-i-find-the-right-printer-name-and-port-combination-that-excel-wants.aspx&amp;amp;title=How+to+Change+the+Active+Printer+to+Specific+Printer+in+Excel+Using+.NET+and+How+the+Heck+Can+I+Find+the+Right+Printer+Name+and+Port+Combination+that+Excel+Wants%3f" target="_blank" title="Submit How to Change the Active Printer to Specific Printer in Excel Using .NET and How the Heck Can I Find the Right Printer Name and Port Combination that Excel Wants? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/how-to-change-the-active-printer-to-specific-printer-in-excel-using-net-and-how-the-heck-can-i-find-the-right-printer-name-and-port-combination-that-excel-wants.aspx&amp;amp;phase=2" target="_blank" title="Submit How to Change the Active Printer to Specific Printer in Excel Using .NET and How the Heck Can I Find the Right Printer Name and Port Combination that Excel Wants? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/25/how-to-change-the-active-printer-to-specific-printer-in-excel-using-net-and-how-the-heck-can-i-find-the-right-printer-name-and-port-combination-that-excel-wants.aspx&amp;amp;title=How+to+Change+the+Active+Printer+to+Specific+Printer+in+Excel+Using+.NET+and+How+the+Heck+Can+I+Find+the+Right+Printer+Name+and+Port+Combination+that+Excel+Wants%3f" target="_blank" title="Add How to Change the Active Printer to Specific Printer in Excel Using .NET and How the Heck Can I Find the Right Printer Name and Port Combination that Excel Wants? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192149" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/Excel/default.aspx">Excel</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/Interops/default.aspx">Interops</category></item><item><title>How come System.Web.Extensions.dll cannot be found in the Add Reference dialog?</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/17/how-come-system-web-extensions-dll-cannot-be-found-in-the-add-reference-dialog.aspx</link><pubDate>Thu, 17 Feb 2011 16:42:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:192092</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=192092</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/17/how-come-system-web-extensions-dll-cannot-be-found-in-the-add-reference-dialog.aspx#comments</comments><description>&lt;p&gt;I was perusing stackoverflow.com questions and came upon a question regarding JavaScriptSerializer that I found quite interesting.&amp;nbsp; I decided to do a quick spike in Visual Studio to find out if I can get answer for the question.&amp;nbsp; Fired up Visual Studio 2010, created a new Console Application and tried to instantiate a JavaScriptSerializer in my code, but of course,&amp;nbsp;the IDE&amp;nbsp;did not recognize JavaScriptSerializer since I haven&amp;#39;t added a reference to the necessary assembly.&amp;nbsp; In trying to fix that, I launched the Add Reference dialog and chose the .NET tab and scrolled down... and guess what.... no System.Web.Extensions... hmmm...&lt;/p&gt;&lt;p&gt;&amp;nbsp;Thinking the problem through I know System.Web.Extensions is part of .NET 4 (which was installed when I installed VS 2010), so how come it is not available in the Add Reference dialog?&lt;/p&gt;&lt;p&gt;&amp;nbsp;After a bit more thinking I came to realize that it&amp;#39;s probably because Console Application is targetting the .NET Framework&amp;nbsp;4 Client Profile which does not include all the web stuffs in it.&amp;nbsp; Switching the Target framework to .NET Framework 4 (Full profile) from the Project Property, Application tab, solved the problem.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/17/how-come-system-web-extensions-dll-cannot-be-found-in-the-add-reference-dialog.aspx&amp;amp;subject=How come System.Web.Extensions.dll cannot be found in the Add Reference dialog?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/17/how-come-system-web-extensions-dll-cannot-be-found-in-the-add-reference-dialog.aspx&amp;amp;t=How+come+System.Web.Extensions.dll+cannot+be+found+in+the+Add+Reference+dialog%3f" target="_blank" title="Submit How come System.Web.Extensions.dll cannot be found in the Add Reference dialog? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/17/how-come-system-web-extensions-dll-cannot-be-found-in-the-add-reference-dialog.aspx&amp;amp;title=How+come+System.Web.Extensions.dll+cannot+be+found+in+the+Add+Reference+dialog%3f" target="_blank" title="Submit How come System.Web.Extensions.dll cannot be found in the Add Reference dialog? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/17/how-come-system-web-extensions-dll-cannot-be-found-in-the-add-reference-dialog.aspx&amp;amp;phase=2" target="_blank" title="Submit How come System.Web.Extensions.dll cannot be found in the Add Reference dialog? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/02/17/how-come-system-web-extensions-dll-cannot-be-found-in-the-add-reference-dialog.aspx&amp;amp;title=How+come+System.Web.Extensions.dll+cannot+be+found+in+the+Add+Reference+dialog%3f" target="_blank" title="Add How come System.Web.Extensions.dll cannot be found in the Add Reference dialog? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=192092" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/.NET+Client+Profile/default.aspx">.NET Client Profile</category></item><item><title>"Unable to load client print control" on SQL Server 2008 SP 2 SSRS</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/26/quot-unable-to-load-client-print-control-quot-on-sql-server-2008-sp-2-ssrs.aspx</link><pubDate>Wed, 26 Jan 2011 13:34:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:191915</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=191915</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/26/quot-unable-to-load-client-print-control-quot-on-sql-server-2008-sp-2-ssrs.aspx#comments</comments><description>&lt;p&gt;Ran into this problem with a client of mine.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Symptom&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Everytime the user tries to print a report from the web, the error message was shown and the report won&amp;#39;t print.&amp;nbsp; &lt;/li&gt;&lt;li&gt;The user is just a regular user and not assigned to Power Users / Local Administrators group.&lt;br /&gt;&lt;em&gt;p.s. Elevating the user privilege by assigning it to Power Users&amp;nbsp; / Local Admin will solve the issue, but for audit purposes, this is not allowed at the particular client.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Even after installing the necessary RSClientPrint ActiveX control as Local Administrators, the problem still persists.&lt;/li&gt;&lt;li&gt;Tried applying the solution from this blog entry: &lt;a href="http://blogs.msdn.com/b/mariae/archive/2010/04/13/error-unable-to-load-client-print-control-when-printing-reports-in-reporting-services-summary-of-all-possible-causes-at-april-2010.aspx"&gt;http://blogs.msdn.com/b/mariae/archive/2010/04/13/error-unable-to-load-client-print-control-when-printing-reports-in-reporting-services-summary-of-all-possible-causes-at-april-2010.aspx&lt;/a&gt;&amp;nbsp;and the problem still persists.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;server: SQL Server 2008 Service Pack 2&lt;/li&gt;&lt;li&gt;client: Windows XP x86&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Causes&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Insufficient&amp;nbsp;user permission&amp;nbsp;&lt;/li&gt;&lt;li&gt;Potential bug introduced in&amp;nbsp;SQL Server 2008 SP 2?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Working Remedy&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Deploying the RSClientPrint-x86.cab from &lt;strong&gt;SQL Server 2008 R2&lt;/strong&gt; to the client machine fixed the problem.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/799e7c86-1d2d-445f-9b18-687c1474e0a7"&gt;http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/799e7c86-1d2d-445f-9b18-687c1474e0a7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/340151/reportviewer-client-print-control-unable-to-load-client-print-control"&gt;http://stackoverflow.com/questions/340151/reportviewer-client-print-control-unable-to-load-client-print-control&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/26/quot-unable-to-load-client-print-control-quot-on-sql-server-2008-sp-2-ssrs.aspx&amp;amp;subject=&amp;quot;Unable to load client print control&amp;quot; on SQL Server 2008 SP 2 SSRS" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/26/quot-unable-to-load-client-print-control-quot-on-sql-server-2008-sp-2-ssrs.aspx&amp;amp;t=%26quot%3bUnable+to+load+client+print+control%26quot%3b+on+SQL+Server+2008+SP+2+SSRS" target="_blank" title="Submit &amp;quot;Unable to load client print control&amp;quot; on SQL Server 2008 SP 2 SSRS to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/26/quot-unable-to-load-client-print-control-quot-on-sql-server-2008-sp-2-ssrs.aspx&amp;amp;title=%26quot%3bUnable+to+load+client+print+control%26quot%3b+on+SQL+Server+2008+SP+2+SSRS" target="_blank" title="Submit &amp;quot;Unable to load client print control&amp;quot; on SQL Server 2008 SP 2 SSRS to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/26/quot-unable-to-load-client-print-control-quot-on-sql-server-2008-sp-2-ssrs.aspx&amp;amp;phase=2" target="_blank" title="Submit &amp;quot;Unable to load client print control&amp;quot; on SQL Server 2008 SP 2 SSRS to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/26/quot-unable-to-load-client-print-control-quot-on-sql-server-2008-sp-2-ssrs.aspx&amp;amp;title=%26quot%3bUnable+to+load+client+print+control%26quot%3b+on+SQL+Server+2008+SP+2+SSRS" target="_blank" title="Add &amp;quot;Unable to load client print control&amp;quot; on SQL Server 2008 SP 2 SSRS to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=191915" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/SSRS/default.aspx">SSRS</category></item><item><title>Certified ScrumMaster training in Jakarta by Bas Vodde</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/11/certified-scrummaster-training-in-jakarta-by-bas-vodde.aspx</link><pubDate>Tue, 11 Jan 2011 14:28:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:191762</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=191762</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/11/certified-scrummaster-training-in-jakarta-by-bas-vodde.aspx#comments</comments><description>&lt;p&gt;For those who are interested in Scrum and agile development process,&amp;nbsp;this is a good chance to get your ScrumMaster certification.&lt;/p&gt;&lt;p&gt;It&amp;#39;s going to be at Gran Melia from 21-22 February 2011.&lt;/p&gt;&lt;p&gt;The detail can be found &lt;a title="Certified ScrumMaster Training in Jakarta" href="http://www.scrumalliance.org/courses/20096629-certified-scrummaster#" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/11/certified-scrummaster-training-in-jakarta-by-bas-vodde.aspx&amp;amp;subject=Certified ScrumMaster training in Jakarta by Bas Vodde" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/11/certified-scrummaster-training-in-jakarta-by-bas-vodde.aspx&amp;amp;t=Certified+ScrumMaster+training+in+Jakarta+by+Bas+Vodde" target="_blank" title="Submit Certified ScrumMaster training in Jakarta by Bas Vodde to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/11/certified-scrummaster-training-in-jakarta-by-bas-vodde.aspx&amp;amp;title=Certified+ScrumMaster+training+in+Jakarta+by+Bas+Vodde" target="_blank" title="Submit Certified ScrumMaster training in Jakarta by Bas Vodde to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/11/certified-scrummaster-training-in-jakarta-by-bas-vodde.aspx&amp;amp;phase=2" target="_blank" title="Submit Certified ScrumMaster training in Jakarta by Bas Vodde to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2011/01/11/certified-scrummaster-training-in-jakarta-by-bas-vodde.aspx&amp;amp;title=Certified+ScrumMaster+training+in+Jakarta+by+Bas+Vodde" target="_blank" title="Add Certified ScrumMaster training in Jakarta by Bas Vodde to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=191762" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/Scrum/default.aspx">Scrum</category></item><item><title>SEA SharePoint Conference Announced</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/14/sea-sharepoint-conference-announced.aspx</link><pubDate>Wed, 14 Jul 2010 09:01:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:190349</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=190349</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/14/sea-sharepoint-conference-announced.aspx#comments</comments><description>&lt;p&gt;So, you are a SharePoint IT Pro / Dev in SEA area... Are you looking for an alternative to US based SharePoint Conference (connotation... far, expensive, not enough training budget to send you halfway across the globe)?&amp;nbsp; Well, how about a SEA regional SharePoint conference?&lt;/p&gt;
&lt;p&gt;Wait no more!! Well, actually, wait a little, but SEA Sharepoint Conference has been announced.&amp;nbsp; It&amp;#39;s scheduled to take place on October 26 - 27, 2010 in Singapore.&amp;nbsp; The cost is also quite reasonable, which is about SGD 400 per person with additional discounts.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;For detail, visit &lt;a href="http://spevents.co.nz/SEA/default.aspx"&gt;http://spevents.co.nz/SEA/default.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Register early and go as a group for additional discounts :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/14/sea-sharepoint-conference-announced.aspx&amp;amp;subject=SEA SharePoint Conference Announced" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/14/sea-sharepoint-conference-announced.aspx&amp;amp;t=SEA+SharePoint+Conference+Announced" target="_blank" title="Submit SEA SharePoint Conference Announced to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/14/sea-sharepoint-conference-announced.aspx&amp;amp;title=SEA+SharePoint+Conference+Announced" target="_blank" title="Submit SEA SharePoint Conference Announced to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/14/sea-sharepoint-conference-announced.aspx&amp;amp;phase=2" target="_blank" title="Submit SEA SharePoint Conference Announced to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/14/sea-sharepoint-conference-announced.aspx&amp;amp;title=SEA+SharePoint+Conference+Announced" target="_blank" title="Add SEA SharePoint Conference Announced to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=190349" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/conference/default.aspx">conference</category></item><item><title>Unit Testing, Mocking, Stubbing and Moles?</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/07/unit-testing-mocking-stubbing-and-moles.aspx</link><pubDate>Wed, 07 Jul 2010 08:22:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:190294</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=190294</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/07/unit-testing-mocking-stubbing-and-moles.aspx#comments</comments><description>&lt;p&gt;As a general rule, when creating unit test, you should&amp;nbsp;&lt;strong&gt;NOT&lt;/strong&gt; have the test code communicate directly across the network, to the database, the file system, etc.&amp;nbsp; This is a good thing since it will allow the unit test to be fast and remove the headache of doing test data management, etc.&amp;nbsp; For more details on what a unit test should not do, see &lt;a title="A Set of Unit Testing Rules" href="http://www.artima.com/weblogs/viewpost.jsp?thread=126923" target="_blank"&gt;here&lt;/a&gt;. To achieve this goal, &lt;a title="Mock Object" href="http://en.wikipedia.org/wiki/Mock_object" target="_blank"&gt;mocking and stubbing&lt;/a&gt; were introduced into the unit testing world. &lt;/p&gt;
&lt;h2&gt;Stubbing&lt;/h2&gt;
&lt;p&gt;Stubbing will allow you to create fake dependency objects that you can use to give the class that you are unit testing constant / static values, something that will not change across tests.&amp;nbsp; An example of this is when you want to create a fake data repository from a data repository interface that will return you a set of pre-canned (always the same) values when queried.&lt;/p&gt;&lt;pre class="csharpcode"&gt;var warehouse = &lt;span class="kwrd"&gt;new&lt;/span&gt; Mock&amp;lt;IWarehouse&amp;gt;();
warehouse.SetupGet(w =&amp;gt; w.HasInventory).Returns(&lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Fig 1. Example of a warehouse stub using Moq (warehouse stub will return false when it’s HasInventory property is invoked).&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Mocking&lt;/h2&gt;
&lt;p&gt;Mocking will allow you to create fake dependency objects that contain expectations that you can validate as part of your unit test (and also can provide what stub can provide).&amp;nbsp; An example of this is when you want to determine if a particular branch or path is taken when a certain parameter is passed to your method.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        [TestMethod]
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Should_SendMail_If_Unfilled() {
            &lt;span class="rem"&gt;//Assign&lt;/span&gt;
            var warehouse = &lt;span class="kwrd"&gt;new&lt;/span&gt; Mock&amp;lt;IWarehouse&amp;gt;();
            var mailer = &lt;span class="kwrd"&gt;new&lt;/span&gt; Mock&amp;lt;IMailService&amp;gt;();
            warehouse.SetupGet(w =&amp;gt; w.HasInventory).Returns(&lt;span class="kwrd"&gt;false&lt;/span&gt;);
            var order = &lt;span class="kwrd"&gt;new&lt;/span&gt; Order
                            {
                                ItemName = &lt;span class="str"&gt;&amp;quot;Boo&amp;quot;&lt;/span&gt;, 
                                Amount = 51, 
                                Mailer = mailer.Object
                            };

            &lt;span class="rem"&gt;//Act&lt;/span&gt;
            order.Fill(warehouse.Object);

            &lt;span class="rem"&gt;//Assert&lt;/span&gt;
            mailer.Verify(m =&amp;gt; m.Send(It.IsAny&amp;lt;Message&amp;gt;()), Times.Once());&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Fig 2. Example of using mock to verify mailer Send method was called once when trying to fullfill an order using Moq.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;For more information on the difference between mock and stub, see &lt;a title="Mocks Aren&amp;#39;t Stubs" href="http://martinfowler.com/articles/mocksArentStubs.html" target="_blank"&gt;this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Perhaps this is old news, but like there are a lot of unit testing frameworks out there,&amp;nbsp;i.e. &lt;a title="NUnit" href="http://www.nunit.org/" target="_blank"&gt;NUnit&lt;/a&gt;, &lt;a title="xUnit" href="http://xunit.codeplex.com/" target="_blank"&gt;xUnit&lt;/a&gt;, &lt;a title="Visual Studio Unit Testing Framework" href="http://msdn.microsoft.com/en-us/library/ms243147(VS.90).aspx" target="_blank"&gt;MSTest&lt;/a&gt;, &lt;a title=".NET Unit Testing Framework List" href="http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#.NET_programming_languages" target="_blank"&gt;etc.&lt;/a&gt;, there are also a bunch of mocking frameworks out there, like &lt;a title="RhinoMock" href="http://www.ayende.com/projects/rhino-mocks.aspx" target="_blank"&gt;RhinoMock&lt;/a&gt;, &lt;a title="moq" href="http://code.google.com/p/moq/" target="_blank"&gt;Moq&lt;/a&gt;, &lt;a title="TypeMock Isolator" href="http://site.typemock.com/" target="_blank"&gt;TypeMock Isolator&lt;/a&gt;, and recently &lt;a title="JustMock" href="http://www.telerik.com/products/mocking.aspx" target="_blank"&gt;JustMock from Telerik&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To do proper mocking or stubbing, and by extension, unit testing, you usually need the following things: interface and dependency injection.&lt;/p&gt;
&lt;h2&gt;Interface&lt;/h2&gt;
&lt;p&gt;Interface will allow you to switch one implementation of it with a different implementation.&amp;nbsp; I.e. SqlRepository, that derives from an IRepository, will actually talk to a SQL database backend, while a FakeRepository that derives from the same IRepository might actually fake the database call and instead returns an in memory list of data when asked.&amp;nbsp; The ability to switch between a real implementation and a fake implementation is a crucial thing if you want to make your unit test fast.&lt;/p&gt;
&lt;h2&gt;Dependency Injection&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/jimmy/dependencyinversionprinciple_0278f9e2_50553EB9.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:0px;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:0px;" title="dependencyinversionprinciple_0278f9e2" border="0" alt="dependencyinversionprinciple_0278f9e2" align="left" src="http://geeks.netindonesia.net/blogs/jimmy/dependencyinversionprinciple_0278f9e2_thumb_712865C6.jpg" width="340" height="276" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Before we go too far into the topic of dependency injection, let’s take a quick detour.&amp;nbsp; The Dependency Inversion Principle stated that higher level object should not depend on the lower level objects, instead, have all of them depend on a contract or interface / abstraction.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Think about how a desk lamp and electric socket interact.&amp;nbsp; The electric socket can provide electricity to any devices (not just the lamp) that can connect to it.&amp;nbsp; As long as the specific device that wants to get electricity implement the right plug, then it’s no problem for the socket to provide it with electricity.&amp;nbsp; Compare this design versus lamps that are built into the wall and wired directly to the electrical wiring.&amp;nbsp; If you want to switch the lamp, you have to tear down your wall, rip out the old lamp, install a new lamp, wire it up to the electrical wiring in the wall and redo your wall.&amp;nbsp; What a pain… With electrical socket, I can just unplug the lamp and replace it with a TV for example, and it still work.&amp;nbsp; The electrical socket can still provide electricity with very minimum interruption. &lt;/p&gt;
&lt;p&gt;Again, this will allow you to easily swap one implementation with another for the same contract / interface.&amp;nbsp; See &lt;a title="Dependency Inversion Principle" href="http://www.oodesign.com/dependency-inversion-principle.html" target="_blank"&gt;here&lt;/a&gt; to see more detail on this topic.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IElectricalDevice
{
    &lt;span class="kwrd"&gt;void&lt;/span&gt; SwitchOff();
}

&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Lamp : IElectricalDevice
{    
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SwitchOff()
    {
        &lt;span class="rem"&gt;//It&amp;#39;s dark!&lt;/span&gt;
    }
}

&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Refridgerator : IElectricalDevice
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SwitchOff()
    {
       &lt;span class="rem"&gt;//Wow it&amp;#39;s getting warm in here...&lt;/span&gt;
    }
}

&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ElectricalOutlet
{
    &lt;span class="kwrd"&gt;private&lt;/span&gt; IElectricalDevice _pluggedInDevice;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; ElectricalOutlet(IElectricalDevice pluggedInDevice)
    {
        _pluggedInDevice = pluggedInDevice;
    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; PowerOff()
    {
        _pluggedInDevice.SwitchOff();
    }
}&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Fig 3. Example of electric socket and devices as code&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now that we see why DIP is important, comes the question of how can we “inverse” the dependency to make our solution more loosely coupled?&amp;nbsp; That’s where injection comes in.&amp;nbsp; You need to provide points in your object where you can inject other objects that it need to do its work.&lt;/p&gt;
&lt;p&gt;Most common points are the class constructor and public properties.&amp;nbsp; In Fig. 3 code above, I was using constructor injection in the ElectricalOutlet class (the constructor takes an IElectricalDevice object, thus injecting it into the ElectricalOutlet class).&amp;nbsp; Property is self explanatory.&amp;nbsp; Since you can inject different instance of object of its type during the application runtime.&lt;/p&gt;
&lt;h2&gt;Moles&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/jimmy/mole_68B46AA2.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:0px;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:0px;" title="mole" border="0" alt="mole" align="left" src="http://geeks.netindonesia.net/blogs/jimmy/mole_thumb_07E6EBA9.jpg" width="117" height="123" /&gt;&lt;/a&gt;Now, let’s talk about moles.&lt;/p&gt;
&lt;p&gt;What a tunneling blind rodent has to do with this, you ask…&lt;/p&gt;
&lt;p&gt;Well, not that kind of mole.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Not&lt;a title="Mole WPF Debugger" href="http://www.codeproject.com/KB/WPF/moleIIforWPF.aspx" target="_blank"&gt; the other mole either (WPF debugger)&lt;/a&gt;.&amp;nbsp; I am talking about a unit testing kind of moles.&amp;nbsp; &lt;a title="Moles" href="http://research.microsoft.com/en-us/projects/moles/" target="_blank"&gt;Moles&lt;/a&gt; is a mocking framework from Microsoft Research group with similar ability that TypeMock Isolator or JustMock offered.&amp;nbsp; Just like the other products, it will allow you mock stuffs that previously unmockable if you are using mocking frameworks like RhinoMock or Moq.&amp;nbsp; Unlike TypeMock and JustMock, Moles is a free product.&amp;nbsp; I supposed the name was chosen due to the ability of the framework to dig deep into a class and replace whatever you wish to replace with your own implementation that you can use during unit testing.&lt;/p&gt;
&lt;p&gt;Moles provides 2 types of capabilities: stubs and moles.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Stub is a very fast compared to moles but has certain limitation, mostly you can only stub things that has interfaces and class instances with virtual methods, similar to RhinoMock and Moq. &lt;/p&gt;
&lt;p&gt;Mole is not as fast as stub since it injects instrumentation code into your actual classes and redirect control to itself when called.&amp;nbsp; The benefit of this method is that now it can totally take control of any sealed class, static methods, etc. that are usually not mockable / stubable without a proper interface or virtual methods.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// let&amp;#39;s detour DateTime.Now (Mole into DateTime.Now property, which usually not mockable w/ other framework)&lt;/span&gt;
MDateTime.Now = () =&amp;gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; DateTime(2000, 1, 1);

&lt;span class="kwrd"&gt;if&lt;/span&gt; (DateTime.Now == &lt;span class="kwrd"&gt;new&lt;/span&gt; DateTime(2000, 1, 1))
  &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Y2KBugException(); &lt;span class="rem"&gt;// take cover!&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Fig 4. Using Moles to return 1 Jan 2000 everytime DateTime.Now is called.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Having said that, currently Moles does not have internal mocking support like RhinoMock and Moq.&amp;nbsp; To do mocking with Moles, you will have to implement them yourself.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        [TestMethod]
        [HostType(&lt;span class="str"&gt;&amp;quot;Moles&amp;quot;&lt;/span&gt;)]
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Should_SendMessage_Once_When_Not_Filled() 
        {
            &lt;span class="rem"&gt;//Assign&lt;/span&gt;
            var mailSendCallCount = 0;

            &lt;span class="rem"&gt;//Create stubs (S prefix = stub)&lt;/span&gt;
            var warehouse = &lt;span class="kwrd"&gt;new&lt;/span&gt; SIWarehouse();
            var mailer = &lt;span class="kwrd"&gt;new&lt;/span&gt; SIMailService();
            
            &lt;span class="rem"&gt;//Setup warehouse stub to return false &lt;/span&gt;
            &lt;span class="rem"&gt;//when its HasInventory property is called&lt;/span&gt;
            warehouse.HasInventoryGet = () =&amp;gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;

            &lt;span class="rem"&gt;//Setup mailer stub to increase the mailSendCallCount &lt;/span&gt;
            &lt;span class="rem"&gt;//everytime SendMessage is called&lt;/span&gt;
            mailer.SendMessage = (m) =&amp;gt; { mailSendCallCount++; };

            var order = &lt;span class="kwrd"&gt;new&lt;/span&gt; Order
            {
                ItemName = &lt;span class="str"&gt;&amp;quot;Boo&amp;quot;&lt;/span&gt;,
                Amount = 51,
                Mailer = mailer
            };

            &lt;span class="rem"&gt;//Act&lt;/span&gt;
            order.Fill(warehouse);

            &lt;span class="rem"&gt;//Assert&lt;/span&gt;
            Assert.AreEqual(1, mailSendCallCount);
        }&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Fig 5. Example of mocking with Moles&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;To learn more detail on Moles, I suggest you check the following resources:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://www.dimecasts.net/Casts/CastDetails/170" href="http://www.dimecasts.net/Casts/CastDetails/170"&gt;http://www.dimecasts.net/Casts/CastDetails/170&lt;/a&gt; (good short video on introduction to Moles)&lt;/p&gt;
&lt;p&gt;&lt;a title="http://research.microsoft.com/en-us/projects/pex/molesmanual.pdf" href="http://research.microsoft.com/en-us/projects/pex/molesmanual.pdf"&gt;http://research.microsoft.com/en-us/projects/pex/molesmanual.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Happy Unit Testing &amp;amp; Moling?&amp;nbsp; Is that a verb?&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/07/unit-testing-mocking-stubbing-and-moles.aspx&amp;amp;subject=Unit Testing, Mocking, Stubbing and Moles?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/07/unit-testing-mocking-stubbing-and-moles.aspx&amp;amp;t=Unit+Testing%2c+Mocking%2c+Stubbing+and+Moles%3f" target="_blank" title="Submit Unit Testing, Mocking, Stubbing and Moles? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/07/unit-testing-mocking-stubbing-and-moles.aspx&amp;amp;title=Unit+Testing%2c+Mocking%2c+Stubbing+and+Moles%3f" target="_blank" title="Submit Unit Testing, Mocking, Stubbing and Moles? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/07/unit-testing-mocking-stubbing-and-moles.aspx&amp;amp;phase=2" target="_blank" title="Submit Unit Testing, Mocking, Stubbing and Moles? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/07/07/unit-testing-mocking-stubbing-and-moles.aspx&amp;amp;title=Unit+Testing%2c+Mocking%2c+Stubbing+and+Moles%3f" target="_blank" title="Add Unit Testing, Mocking, Stubbing and Moles? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=190294" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/mock/default.aspx">mock</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/unit+test/default.aspx">unit test</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/stub/default.aspx">stub</category><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/moles/default.aspx">moles</category></item><item><title>Martial Art Can Improve The Way You Code? For Real? How?</title><link>http://geeks.netindonesia.net/blogs/jimmy/archive/2010/05/01/martial-art-can-improve-the-way-you-code-for-real-how.aspx</link><pubDate>Sat, 01 May 2010 16:16:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:187090</guid><dc:creator>Jimmy Chandra</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/jimmy/rsscomments.aspx?PostID=187090</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/jimmy/archive/2010/05/01/martial-art-can-improve-the-way-you-code-for-real-how.aspx#comments</comments><description>&lt;p&gt;When I was still in elementary school I&amp;nbsp;used to take&amp;nbsp;martial art class, specifically&amp;nbsp;&lt;a title="Kyoukushinkaikan" href="http://en.wikipedia.org/wiki/Kyokushin_kaikan"&gt;Kyoukushin&lt;/a&gt; karate.&amp;nbsp; And when you get to a certain level, you have to perform&amp;nbsp;some series of karate movements / form&amp;nbsp;called &lt;a title="Kata" href="http://www.kyokushinkata.com/"&gt;kata&lt;/a&gt;, for example &lt;a title="Kanku Dai" href="http://www.karate-psv-hattingen.de/images/Kata/Kanku_Dai_g.jpg"&gt;this one&lt;/a&gt;.&amp;nbsp; So, why am I talking about martial art in a development related blog?&lt;/p&gt;
&lt;p&gt;Apparently some&amp;nbsp;coders like &lt;a title="Dave Thomas&amp;#39; Code Kata Site" href="http://codekata.pragprog.com/codekata/"&gt;Dave Thomas&lt;/a&gt; and &lt;a title="Robert Martin" href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;Uncle Bob&lt;/a&gt; (&lt;a title="DotNetRocks podcast 388" href="http://www.dotnetrocks.com/default.aspx?ShowNum=388"&gt;in this podcast&lt;/a&gt;) believe that us coder can learn something from martial art.&amp;nbsp; &lt;em&gt;Really?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;One used of kata in Karate is to build up one&amp;#39;s muscle memory.&amp;nbsp; Once you learn the form, it will come easily to you when you need to perform it.&lt;/p&gt;
&lt;p&gt;Dave believe, just as kata in martial art can improve the practioner&amp;#39;s skill,&amp;nbsp;by&amp;nbsp;adapting kata in coding (by performing a series of coding exercise repeatedly), can hone your skill as a programmer through a lot practice and repetition.&amp;nbsp; Thus he coined the term &lt;a title="Code Kata" href="http://en.wikipedia.org/wiki/Code_Kata"&gt;Code Kata&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Actually, I heard about this a while ago, but I never took any real interest in it, until a couple days back when I listed to &lt;a title="Herding Code Podcast" href="http://herdingcode.com/?p=247"&gt;this particular Herding Code podcast&lt;/a&gt;.&amp;nbsp; In the podcast, they talked about someone doing this String Calculator Kata in Python and Vim.&amp;nbsp; The actual topic was not even about the kata, but&amp;nbsp;about how awesome this guy in using editor like Vim.&amp;nbsp; Anyhow... As I said before, it made me interested, so I looked it up on the net and found &lt;a title="Gary B doing String Calculator Kata in Python" href="http://katas.softwarecraftsmanship.org/?p=128"&gt;this&lt;/a&gt;.&amp;nbsp; Which if you are not familiar with the context, you will be scratching your head while watching it... like myself :).&amp;nbsp; So I go search around a bit more on String Calculator Kata and found out that Roy Osherove was the one who created it and I found out the context that I need to understand just what the heck the previous video is about, &lt;a title="String Calculator Kata" href="http://osherove.com/tdd-kata-1/"&gt;here&lt;/a&gt;.&amp;nbsp;&amp;nbsp; So, I decided, what the heck, I&amp;#39;ll give it a try in C# and the&amp;nbsp;MS Test&amp;nbsp;framework that comes with Visual&amp;nbsp;Studio.&amp;nbsp; Doing the usual TDD red green refactor steps, I&amp;nbsp;managed to complete the kata to what I think was&amp;nbsp;satisfactory result.&amp;nbsp; Roy also posted a bunch of kata-cast on the same page and I decided to give some a look and a glance and stumbled upon &lt;a title="Awesome C# String Calculator Kata" href="http://www.iamnotmyself.com/2009/10/23/TDDKataCalculatorDemonstration.aspx"&gt;this&lt;/a&gt; one.&amp;nbsp; And boy, I was watching it with my mouth half opened on some of the stuffs that they did in that katacast which sort of open my mind and eyes to a whole lot of possibility (on how to use&amp;nbsp;LINQ, lambda &amp;amp; fluent interface programming style.&lt;/p&gt;
&lt;p&gt;Not that I&amp;#39;m going to do this daily from now on, but I do think practicing the code kata from time to time will benefit me in the long run, so I&amp;#39;ll give it a try, perhaps in multiple different languages, which should also be a good way to learn the language that I want to learn like &lt;a title="Ruby, Programming Language" href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt;&amp;nbsp;for example.&lt;/p&gt;
&lt;p&gt;So, what are you waiting for? Learn it, Practice it, Love it... Happy Code-Kata-ing??&amp;nbsp; &lt;em&gt;Is that even a word?&lt;/em&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/jimmy/archive/2010/05/01/martial-art-can-improve-the-way-you-code-for-real-how.aspx&amp;amp;subject=Martial Art Can Improve The Way You Code? For Real? How?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/05/01/martial-art-can-improve-the-way-you-code-for-real-how.aspx&amp;amp;t=Martial+Art+Can+Improve+The+Way+You+Code%3f+For+Real%3f+How%3f" target="_blank" title="Submit Martial Art Can Improve The Way You Code? For Real? How? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/05/01/martial-art-can-improve-the-way-you-code-for-real-how.aspx&amp;amp;title=Martial+Art+Can+Improve+The+Way+You+Code%3f+For+Real%3f+How%3f" target="_blank" title="Submit Martial Art Can Improve The Way You Code? For Real? How? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/05/01/martial-art-can-improve-the-way-you-code-for-real-how.aspx&amp;amp;phase=2" target="_blank" title="Submit Martial Art Can Improve The Way You Code? For Real? How? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/jimmy/archive/2010/05/01/martial-art-can-improve-the-way-you-code-for-real-how.aspx&amp;amp;title=Martial+Art+Can+Improve+The+Way+You+Code%3f+For+Real%3f+How%3f" target="_blank" title="Add Martial Art Can Improve The Way You Code? For Real? How? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=187090" width="1" height="1"&gt;</description><enclosure url="http://geeks.netindonesia.net/blogs/jimmy/attachment/187090.ashx" length="13116" type="application/x-zip-compressed" /><category domain="http://geeks.netindonesia.net/blogs/jimmy/archive/tags/kata/default.aspx">kata</category></item></channel></rss>
