<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.objectsharp.com/cs/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>Justin Lee's Technology Blog</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/default.aspx</link><description>&lt;br /&gt;Languages, Languages, Languages!</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Quotable Quotes from Lang.NET Symposium</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2009/04/16/quotable-quotes-from-lang-net-symposium.aspx</link><pubDate>Thu, 16 Apr 2009 19:33:33 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:170590</guid><dc:creator>jlee</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/170590.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=170590</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=170590</wfw:comment><description>&lt;p&gt;&lt;a href="http://langnetsymposium.com/"&gt;Lang.NET&lt;/a&gt; was just over an hour or so ago, and there are many funny and interesting quotes I compiled over the last few days. Here are all I can remember and find on twitter.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Mads Torgersen on C# dynamic: “We owe it to IronPython and Ruby to make them first class languages.”&lt;/p&gt;    &lt;p&gt;Mads Torgersen: “Static typers put the ‘anguish in languish’.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Keith Robertson: “I’m here to sell you something. You can tell because I'm the one with the tie.”&lt;/p&gt;    &lt;p&gt;Erik Meijer: “C# dynamic ‘is like the needle exchange program’.”&lt;/p&gt;    &lt;p&gt;Tim Macfarlane: “We're planning on putting [Tycho] on the DLR pretty soon.”&lt;/p&gt;    &lt;p&gt;Karl Prosser: “When I see squiggly brackets, it feels like a real language to me.”&lt;/p&gt;    &lt;p&gt;Jeffrey Snover on Powershell: “No prayer based parsing.”&lt;/p&gt;    &lt;p&gt;Lars Bak: “It’s good to have a slow compiler because that gives you job security.”&lt;/p&gt;    &lt;p&gt;Joshua Goodman: “The way PMs fix things is by sending email.”&lt;/p&gt;    &lt;p&gt;Erik Meijer: “I love the math - you don't need brain to do math. It’s all symbol pushing.”&lt;/p&gt;    &lt;p&gt;Luke Hoban: “CodeDom is able to handle any language that is C#. Including VB.”&lt;/p&gt;    &lt;p&gt;Erik Meijer: &amp;quot;LINQ is the solution to everything.”&lt;/p&gt;    &lt;p&gt;Philip Wadler: “Monads aren't everything!”&lt;/p&gt;    &lt;p&gt;Philip Wadler: “Nothing is so practical as a good theory.”&lt;/p&gt;    &lt;p&gt;Erik Meijer: “Because of reflection, every language on the CLR is dynamic.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’ve enjoyed myself at Lang.NET and found the people and content are brilliant. I’ll definitely be back again next year. Kudos to the guys who helped set these up.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=170590" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Dynamic+Language+Runtime/default.aspx">Dynamic Language Runtime</category></item><item><title>Random Insert/Select with T-SQL</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2009/02/23/random-insert-select-with-t-sql.aspx</link><pubDate>Mon, 23 Feb 2009 20:43:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:165332</guid><dc:creator>jlee</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/165332.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=165332</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=165332</wfw:comment><description>&lt;p&gt;Here’s something I found pretty useful. The situation is I need to insert entries into the database with one of the columns being some random data. If I did a Rand() directly in the statement:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;Insert &lt;span class="kwrd"&gt;into&lt;/span&gt; NewStudy&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; studyid,((29 + 1) - 27) * Rand() + 27,&lt;span class="kwrd"&gt;null&lt;/span&gt; &lt;span class="kwrd"&gt;from&lt;/span&gt; StudyTable&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;It will only generate Rand() once and fill in all rows with the same data, which is not what I want.&lt;/p&gt;

&lt;p&gt;In order to generate a random number for each row, I have to create a view of the RAND() function:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;VIEW&lt;/span&gt; vRandNumber&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; RAND() &lt;span class="kwrd"&gt;as&lt;/span&gt; RandNumber&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;Insert &lt;span class="kwrd"&gt;into&lt;/span&gt; NewStudy&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; studyid,((29 + 1) - 27) * (&lt;span class="kwrd"&gt;select&lt;/span&gt; RandNumber &lt;span class="kwrd"&gt;from&lt;/span&gt; vRandNumber) + 27,&lt;span class="kwrd"&gt;null&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;from&lt;/span&gt; StudyTable&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This works very well. Of course, 29 and 27 are my min and max respectively. I can create a separate function to do the same thing:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; RandNumber(@&lt;span class="kwrd"&gt;Min&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;, @&lt;span class="kwrd"&gt;Max&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;RETURNS&lt;/span&gt; &lt;span class="kwrd"&gt;float&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt; &lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; @&lt;span class="kwrd"&gt;Min&lt;/span&gt; + (&lt;span class="kwrd"&gt;select&lt;/span&gt; RandNumber &lt;span class="kwrd"&gt;from&lt;/span&gt; vRandNumber) * ((@&lt;span class="kwrd"&gt;Max&lt;/span&gt;+1)-@&lt;span class="kwrd"&gt;Min&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt; END&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;So instead, I can do RandNumber(27, 29) within the statement.&lt;/p&gt;

&lt;p&gt;The problem why I didn’t use this randomization is because of permissions. Elevating a standard user to allow creation of a view is disallowed in my situation.&lt;/p&gt;

&lt;p&gt;So this is what I did instead, to keep within the boundaries of the permissions, is to use row_number() instead. Take the mod of row_number by ((@Max + 1) - @Min) which is 3 for my case and add the @Min to it. It’s not random, but deterministic, but it works well enough for my case.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;Insert &lt;span class="kwrd"&gt;into&lt;/span&gt; NewStudy&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; studyid, (row_number() &lt;span class="kwrd"&gt;over&lt;/span&gt; (&lt;span class="kwrd"&gt;order&lt;/span&gt; &lt;span class="kwrd"&gt;by&lt;/span&gt; studyid)) % 3 + 27,&lt;span class="kwrd"&gt;null&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;from&lt;/span&gt; StudyTable&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;So that’s it. A deterministic pseudo “random” (not so random it seems) number based on row_number(). I wonder if there are other solutions to this.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=165332" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Print-Ready Cheat Sheets for Web Developer</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2009/01/21/print-ready-cheat-sheets-for-web-developer.aspx</link><pubDate>Wed, 21 Jan 2009 16:32:11 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:161341</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/161341.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=161341</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=161341</wfw:comment><description>&lt;p&gt;Here’s a great link I thought to share.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.backtoessentials.com/tools/40-useful-print-ready-cheat-sheet-for-web-developers/" href="http://www.backtoessentials.com/tools/40-useful-print-ready-cheat-sheet-for-web-developers/"&gt;http://www.backtoessentials.com/tools/40-useful-print-ready-cheat-sheet-for-web-developers/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It contains 40 great cheat sheets pdf links so you can download them and print it right off.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=161341" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Web+Development/default.aspx">Web Development</category></item><item><title>MSIEXEC Failure on Windows 7</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2009/01/19/msiexec-failure-on-windows-7.aspx</link><pubDate>Mon, 19 Jan 2009 05:40:37 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:161131</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/161131.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=161131</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=161131</wfw:comment><description>&lt;p&gt;Some of you might be getting crashes from your installers. Here’s what the error looks like in your event logs:&lt;/p&gt;  &lt;p&gt;Faulting application name: msiexec.exe, version: 5.0.7000.0, time stamp: 0x49432105    &lt;br /&gt;Faulting module name: ntdll.dll, version: 6.1.7000.0, time stamp: 0x49434898     &lt;br /&gt;Exception code: 0xc0000005     &lt;br /&gt;Fault offset: 0x00000000000ebbaa     &lt;br /&gt;Faulting process id: 0x12dc     &lt;br /&gt;Faulting application start time: 0x01c979f516ed5e4e     &lt;br /&gt;Faulting application path: C:\Windows\System32\msiexec.exe     &lt;br /&gt;Faulting module path: C:\Windows\SYSTEM32\ntdll.dll&lt;/p&gt;  &lt;p&gt;This happens whenever you try to install anything that uses msiexec.exe on Windows 7. The workaround is to do a simple registry edit.&lt;/p&gt;  &lt;p&gt;HKLM\Software\Microsoft\SQMClient\Windows\DisabledSessions &lt;/p&gt;  &lt;p&gt;Remove all entries except default.&lt;/p&gt;  &lt;p&gt;Don’t ask me why that works, but it works. I’m back to installing things. It seems people are having this problem just recently. Hope this helps anyone having this problem.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=161131" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Slate Tablet PCs will be back</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2009/01/07/slate-tablet-pcs-will-be-back.aspx</link><pubDate>Wed, 07 Jan 2009 07:03:49 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:160695</guid><dc:creator>jlee</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/160695.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=160695</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=160695</wfw:comment><description>&lt;p&gt;With the advent of multi-touch capabilities, and the iPhone popularizing this capability, together with Windows 7 having multi-touch capabilities in-built to the operating system itself, I will expect slate tablets (i.e. no keyboards, just screen) to be back, better than before. For those who have forgotten, slate tablets died out long ago in preference for the convertible tablets (i.e. keyboard and screen).&lt;/p&gt;  &lt;p&gt;To get into the market, it first has to be light enough, and a screen wide enough to be comfortable. Together with a “Slate Stand” for desktop usage, this will enhance multi-touch on the desktop itself. We now are seeing laptops so slim (1 inch thick) and so light (2 lbs) with screen sizes of 13.1” or larger, I predict that this will be the critical factors in bringing back the slate tablets.&lt;/p&gt;  &lt;p&gt;If somehow, someone is able to integrate a “Slate Stand” as part of the tablet design, that will be awesome.&lt;/p&gt;  &lt;p&gt;Imagine a “Slate Stand” being a supporting stand to tilt the tablet in a 20 to 40 degrees angle (adjustable of course) for easy touch screen experience. I’m thinking just a fold under the laptop which can increase and decrease the degree angle as the fold gets closer together. Imagine this: /\ :underneath your laptop, and flattening out: —— :when you don’t need it.&lt;/p&gt;  &lt;p&gt;Together with full size keyboard which will “slide in and out” virtually on the screen with a flick of a button (or gesture, or on some text input) and each key is big enough for our fingers, I think we’ve got something pretty good going on here.&lt;/p&gt;  &lt;p&gt;Re-engineering applications’ user interactions to make full use of multi-touch, and we have endless possibilities. Hey, that’s what WPF is for. *wink*&lt;/p&gt;  &lt;p&gt;Let’s hope to see it out there soon!&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=160695" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/User+Experience/default.aspx">User Experience</category></item><item><title>Elevating Privileges in SharePoint</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2009/01/06/elevating-privileges-in-sharepoint.aspx</link><pubDate>Tue, 06 Jan 2009 15:56:17 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:160666</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/160666.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=160666</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=160666</wfw:comment><description>&lt;p&gt;Here’s a good tip for elevating privileges in SharePoint.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/07/12/484.aspx" href="http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/07/12/484.aspx"&gt;http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/07/12/484.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For those who doesn’t want to click on that link (like myself when I searching for this post again), here’s the code.&lt;/p&gt;  &lt;p&gt;//Don't dispose the following two objects. Sharepoint will take care of their disposal when page is completely rendered.    &lt;br /&gt;SPWeb&amp;#160; webInUserContext = SPContext.Current.Web;     &lt;br /&gt;SPSite SiteInUserContext = SPContext.Current.Site;     &lt;br /&gt;Guid webGuid = webInUserContext.ID;     &lt;br /&gt;Guid siteGuid = SiteInUserContext.ID;&lt;/p&gt;  &lt;p&gt;SPSecurity.RunWithElevatedPrivileges(delegate()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // get the site in impersonated context     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; using (SPSite site = new SPSite(siteGuid))     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // get the web in the impersonated context    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SPWeb web = site.OpenWeb(webGuid);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Do your work here&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; web.Dispose();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;/p&gt;  &lt;p&gt;There we go. I used this piece of code to access the SPFile of a document within SharePoint. SPFile requires elevated privileges, and can’t be access with just your normal privileges.&lt;/p&gt;  &lt;p&gt;My code works now, and I’m happy. :)&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=160666" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Where is my Check-In in SharePoint Designer?</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/12/31/where-is-my-check-in-in-sharepoint-designer.aspx</link><pubDate>Wed, 31 Dec 2008 15:03:18 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:160260</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/160260.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=160260</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=160260</wfw:comment><description>&lt;p&gt;&lt;a href="http://triplez.mine.nu/blogs/triplez/sharepointdesignercheckin_1023AB92.png"&gt;&lt;img title="sharepointdesigner-checkin" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="115" alt="sharepointdesigner-checkin" src="http://triplez.mine.nu/blogs/triplez/sharepointdesignercheckin_thumb_09902C02.png" width="518" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;If you notice, the master page file in SharePoint Designer is checked out (from the check symbol at the side). It’s supposed to show me “Check In” and “Undo Check Out” and all that. Where is it?&lt;/p&gt;  &lt;p&gt;It is under your “Edit” toolbar, “Check In”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://triplez.mine.nu/blogs/triplez/image_6A1DD56E.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="172" alt="image" src="http://triplez.mine.nu/blogs/triplez/image_thumb_4447AF0B.png" width="230" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So when it doesn’t display, you know where to go.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=160260" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Hiding Sign In Link For Anonymous Access Users in SharePoint</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/12/29/hiding-sign-in-link-for-anonymous-access-users-in-sharepoint.aspx</link><pubDate>Mon, 29 Dec 2008 22:15:45 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:160003</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/160003.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=160003</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=160003</wfw:comment><description>&lt;p&gt;To customize SharePoint “Sign In” link, we need to modify or duplicate Welcome.ascx in your Control Templates directory.&lt;/p&gt;  &lt;p&gt;Here’s a good post specifying how to hide your sign in link.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/syedi/archive/2008/10/01/hide-the-sign-in-link-for-the-anonymous-access-user-in-anonymous-access-enabled-site-bend-the-welcome-ascx-sharepoint-moss.aspx" target="_blank"&gt;Hide the Sign In link for the anonymous access user in anonymous access enabled site - Bend the Welcome.ascx - SharePoint MOSS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can play around with Welcome.ascx and come up with your custom style sign in.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=160003" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Free UX Tools and Extensions for Websites</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/12/16/free-ux-tools-and-extensions-for-websites.aspx</link><pubDate>Tue, 16 Dec 2008 19:24:45 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:158347</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/158347.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=158347</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=158347</wfw:comment><description>&lt;p&gt;Here’s a great blog post with the compilation of great tools if you’re a web developer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.uxbooth.com/blog/top-29-free-ux-tools-and-extensions/" target="_blank"&gt;Top 29 Free UX Tools and Extensions&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I ran a few of the test on our website, and boy are there a few optimizations we could have done, especially for the JavaScript within the pages to improve performance. And also some quirks xhtml and css errors which will just make things nice and more standardised.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=158347" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Web+Development/default.aspx">Web Development</category></item><item><title>SharePoint: Bug or Feature? @Created not on Variation Site</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/11/18/sharepoint-bug-or-feature-created-not-on-variation-site.aspx</link><pubDate>Tue, 18 Nov 2008 15:52:01 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:157178</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/157178.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=157178</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=157178</wfw:comment><description>&lt;p&gt;As mentioned in the title, the @Created date field (or site column, depending on your terminology), the date of document creation, which is by default available to all pages and documents, is not replicated when you create a site variation. It is however *linked* to the original document from the original site itself. So if you ever decide to turn off site variation, you’ll lose the @Created date field on your site variation, and there’s absolutely no way to get it back, or at least I haven’t found a way to get it back without hacking it through code.&lt;/p&gt;  &lt;p&gt;So be careful when you decide to create a site variation. This “feature” caught us all by surprise, especially when variation was turned off and still wanted the persisted site. &lt;/p&gt;  &lt;p&gt;One suggestion to get around it is to create another field and set the computed value to today’s date. I’ll blog more on how we solve this problem when we actually do.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=157178" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Sharepoint Development: Enable Debugging</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/11/11/sharepoint-development-enable-debugging.aspx</link><pubDate>Tue, 11 Nov 2008 16:07:26 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:155350</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/155350.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=155350</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=155350</wfw:comment><description>Note to self – Before developing on SharePoint, always enable debugging on the development machine to see a “little” more verbose error messages. Edit the web.config and change the following:  &lt;div style="background:white;color:black;"&gt;&lt;span class="Apple-style-span" style="word-spacing:0px;font:16px 'Times New Roman';text-transform:none;text-indent:0px;white-space:normal;letter-spacing:normal;border-collapse:separate;orphans:2;widows:2;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="font-size:12px;line-height:17px;font-family:'Segoe UI';text-align:left;"&gt;       &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;SafeMode&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;MaxControls&lt;/span&gt;&lt;span&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;CallStack&lt;/span&gt;&lt;span&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;...&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;!--&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Becomes&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;SafeMode&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;MaxControls&lt;/span&gt;&lt;span&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;CallStack&lt;/span&gt;&lt;span&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;...&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&lt;/span&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;customErrors&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;mode&lt;/span&gt;&lt;span&gt;=&amp;quot;On&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;!--&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Becomes&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;customErrors&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;mode&lt;/span&gt;&lt;span&gt;=&amp;quot;Off&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;compilation&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;batch&lt;/span&gt;&lt;span&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;debug&lt;/span&gt;&lt;span&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;!--&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Becomes&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;--&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin:1em 0px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;compilation&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;batch&lt;/span&gt;&lt;span&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;debug&lt;/span&gt;&lt;span&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=155350" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Sharepoint Development: &amp;quot;Request failed&amp;quot; with custom page or dlls/assemblies</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/11/11/sharepoint-development-quot-request-failed-quot-with-custom-page-or-dlls-assemblies.aspx</link><pubDate>Tue, 11 Nov 2008 15:39:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:155346</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/155346.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=155346</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=155346</wfw:comment><description>Note to self - If using any external assemblies that try to access Microsoft.Sharepoint assemblies, remember to change the trust level to full in the web.config.
&lt;br /&gt;&lt;br /&gt;
&amp;lt;trust level="Full" originUrl="" /&amp;gt;
&lt;br /&gt;&lt;br /&gt;
This is only used during development.
&lt;br /&gt;&lt;br /&gt;
When it comes to production, install assembly into the GAC with gacutil /i  to allow external assemblies access to Microsoft.Sharepoint assemblies.&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=155346" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>VSLab - F# Visualization</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/07/17/vslab-f-visualization.aspx</link><pubDate>Thu, 17 Jul 2008 05:08:13 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:149084</guid><dc:creator>jlee</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/149084.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=149084</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=149084</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.codeplex.com/vslab"&gt;Visual Studio Lab (VSLab)&lt;/a&gt; exploits the power of F# and its interactive top level to provide an interactive environment similar to MatLab and Mathematica, in which you can easily create Add-ins and interact dynamically with them inside Visual Studio. Moreover, since F# is a compiled language, the final code can be compiled as a standalone application.&lt;br&gt;Goal of the project is to provide the basic infrastructure to turn Visual Studio in VSLab, and a number of addins (called viewlets) used to show data and support development of scientific based applications. &lt;p&gt;Take a look. :) I assure you that you'll be impressed.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=149084" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>Another Reason to use Flash Instead of Silverlight</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/07/01/another-reason-to-use-flash-instead-of-silverlight.aspx</link><pubDate>Wed, 02 Jul 2008 02:40:44 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:148074</guid><dc:creator>jlee</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/148074.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=148074</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=148074</wfw:comment><description>&lt;p&gt;Flash content is finally &lt;a href="http://news.cnet.com/8301-10784_3-9982137-7.html"&gt;searchable&lt;/a&gt; by two of the biggest online search engines on the internet, Google and Yahoo.&lt;/p&gt; &lt;p&gt;One of the biggest disadvantage of using Flash content for your dynamic content is simply because it is not searchable, and now with Adobe's new optimized Adobe Flash Player helping both Google and Yahoo to search and index Flash content, this means that there is no excuse left NOT TO USE FLASH on your web sites.&lt;/p&gt; &lt;p&gt;Note that Microsoft Live Search was not included in this partnership.&lt;/p&gt; &lt;p&gt;Now, for those enthusiastic about writing Silverlight content on the web, might I ask, what is Microsoft going to do about this? Both in its Live Search, making it competitive with Google and Yahoo to search Flash content, and also making Silverlight content searchable too. This is the biggest advantage Adobe Flash has over Silverlight now, and if Microsoft doesn't do anything about it, the web will not be convinced about Silverlight, regardless of the &lt;a href="http://news.cnet.com/Silverlight-to-shine-in-NBCs-Olympics-coverage/2100-1026_3-6238260.html"&gt;amount of &lt;strike&gt;bribing&lt;/strike&gt; promoting they can and will do&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Adobe, we love you and thank you.&lt;/p&gt; &lt;p&gt;To those Silverlight enthusiasts, please get your facts right about Adobe Flash before even bashing Adobe Flash technology. You know who you are.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=148074" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Blaming the User</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/06/23/blaming-the-user.aspx</link><pubDate>Mon, 23 Jun 2008 14:14:16 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:147067</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/147067.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=147067</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=147067</wfw:comment><description>&lt;p&gt;Is it better to have a user implicitly learning how an application work easily by discovery, rather than explicitly learning how an application works through training and books?&lt;/p&gt; &lt;p&gt;If something goes wrong with an application, is it really a "problem between the keyboard and the chair"? Or is it because the "User Experience" isn't sufficient or consistent to assist with implicit learning?&lt;/p&gt; &lt;p&gt;Sometimes people in the "Computer Industry" need to think more about the user and how to ease their pain, instead of blaming them and create more pain for them.&lt;/p&gt; &lt;p&gt;I'm always amazed when a user tells me "It just works! Amazing!" instead of "How do you do this?". That's "User Experience" for you.&lt;/p&gt; &lt;p&gt;Think about it.&lt;/p&gt; &lt;p&gt;This is my rant today.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=147067" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/User+Experience/default.aspx">User Experience</category></item><item><title>Links on F# Quotation</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/06/15/links-on-f-quotation.aspx</link><pubDate>Sun, 15 Jun 2008 23:01:52 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:146971</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/146971.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=146971</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=146971</wfw:comment><description>&lt;p&gt;These are a few links I want to read later on F# Quotations. Quotations are similar to expression trees in C#, but more powerful.&lt;/p&gt; &lt;p&gt;&lt;a href="http://cs.hubfs.net/blogs/tomasp/archive/2006/07/07/413.aspx"&gt;F# - Simple quotations transformation&lt;/a&gt;  &lt;p&gt;&lt;a href="http://devhawk.net/2007/12/19/Practical+F+Parsing+The+Abstract+Syntax+Tree.aspx"&gt;Practical F# Parsing: The Abstract Syntax Tree&lt;/a&gt;  &lt;p&gt;&lt;a href="http://tomasp.net/blog/fsharp-quotation-samples.aspx"&gt;F# Quotations Samples on CodePlex&lt;/a&gt;  &lt;p&gt;&lt;a href="http://tomasp.net/blog/quotvis-reloaded.aspx"&gt;F# quotations visualizer - reloaded!&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://cs.hubfs.net/blogs/f_team/archive/2007/04/07/2662.aspx"&gt;Some Q&amp;amp;A on F# Quotations and LINQ&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=146971" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>MVP Insider - Q &amp;amp; A with Justin Lee</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/06/09/mvp-insider-q-amp-a-with-justin-lee.aspx</link><pubDate>Mon, 09 Jun 2008 17:39:21 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:146345</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/146345.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=146345</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=146345</wfw:comment><description>&lt;p&gt;Well, it seems this month I'm up for being interviewed. &lt;a href="http://blogs.msdn.com/cdndevs/archive/2008/06/09/mvp-insider-q-a-with-justin-lee.aspx"&gt;Here's the link to my interview&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=146345" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>WPF for Developers and Lead Designers Course</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/05/27/wpf-for-developers-and-lead-designers-course.aspx</link><pubDate>Tue, 27 May 2008 18:51:26 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:144474</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/144474.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=144474</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=144474</wfw:comment><description>&lt;p&gt;&lt;a href="http://robburke.net"&gt;Rob Burke&lt;/a&gt; is teaching a WPF training course through Toronto-based consultancy &lt;a href="http://www.objectsharp.com/training/coursedetail.aspx?id=8010"&gt;ObjectSharp&lt;/a&gt;. The course is called “&lt;a href="http://www.objectsharp.com/training/coursedetail.aspx?id=8010"&gt;Windows Presentation Foundation for Developers and Lead Designers&lt;/a&gt;,” and, as the title suggests, it offers a hands-on experience designed to give developers and lead designers the knowledge, background, tips and references they’ll need to build smart client applications using the Windows Presentation Foundation. &lt;p&gt;After &lt;a href="http://robburke.net/2008/04/11/mate-this-is-the-future/"&gt;enjoying the process&lt;/a&gt; of training a team of developers and designers to use WPF, this course is the result of turning that material into a course that we could offer here. &lt;p&gt;The inaugural course offering is currently scheduled for &lt;strong&gt;August 13th-15th&lt;/strong&gt;. If you’re interested in taking part, please find &lt;a href="http://www.objectsharp.com/training/coursedetail.aspx?id=8010"&gt;more information about the course on ObjectSharp’s site&lt;/a&gt;. Also, if August 13th is too long for you to wait, or you’re interested in an on-site course, please contact &lt;a href="mailto:training@objectsharp.com"&gt;Julie James&lt;/a&gt;, ObjectSharp’s Training Manager. &lt;p&gt;&lt;a href="http://robburke.net/2008/05/27/wpf-for-developers-and-lead-designers-course/"&gt;More on Rob Burke&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=144474" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/User+Experience/default.aspx">User Experience</category></item><item><title>Pex 0.5 Released</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/05/25/pex-0-5-released.aspx</link><pubDate>Sun, 25 May 2008 23:16:25 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:144352</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/144352.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=144352</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=144352</wfw:comment><description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is Pex?&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://research.microsoft.com/projects/pex"&gt;&lt;img src="http://research.microsoft.com/projects/pex/Images/PexWeb.png"&gt;&lt;/a&gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;Pex generates test inputs &lt;/strong&gt;that cover all, or at least many of the corner cases in your .NET code. These test inputs are plugged into &lt;strong&gt;parameterized&lt;em&gt; &lt;/em&gt;unit test &lt;/strong&gt;that you write. The result is a small unit test suite, where each unit test calls the parameterized unit test with particular test inputs. There is a great &lt;a href="http://research.microsoft.com/pex/default.aspx"&gt;picture on the main Pex page&lt;/a&gt; that illustrates this process. &lt;p&gt;&lt;strong&gt;Pex supports other unit test frameworks &lt;/strong&gt;since the unit tests that Pex generates can be executed by other unit test frameworks without Pex. Pex comes with support for MSTest, the unit test framework of Visual Studio, out of the box. For support for other unit test frameworks, please look at the &lt;a href="http://www.codeplex.com/pex"&gt;Pex Extensions&lt;/a&gt; project. &lt;p&gt;Parameterized unit tests have been around for quite some time already, under several names -- row tests, data-driven tests, theories, etc. &lt;p&gt;What is really unique about &lt;strong&gt;Pex &lt;/strong&gt;is that it &lt;strong&gt;analyzes your .NET code, instruction by instruction&lt;/strong&gt;, to understand what your code is doing. Then, in a fully automatic way, Pex computes relevant test inputs that &lt;strong&gt;trigger the corner cases of the code&lt;/strong&gt;. When you write assertions, Pex will try to come up with test inputs that cause an assertion to fail. &lt;p&gt;&lt;strong&gt;&lt;u&gt;Feedback&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;To ask questions, get help, or just give feedback, please take a look at our &lt;a href="http://research.microsoft.com/pex/community.aspx"&gt;mailing lists&lt;/a&gt;. &lt;p&gt;&lt;strong&gt;&lt;u&gt;Links&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;Homepage: &lt;a title="http://research.microsoft.com/pex/downloads.aspx" href="http://research.microsoft.com/pex"&gt;http://research.microsoft.com/pex&lt;/a&gt; &lt;p&gt;Download: &lt;a title="http://research.microsoft.com/pex/downloads.aspx" href="http://research.microsoft.com/pex/downloads.aspx"&gt;http://research.microsoft.com/pex/downloads.aspx&lt;/a&gt; &lt;p&gt;Nikolai Tillmann's Blog: &lt;a title="http://blogs.msdn.com/nikolait" href="http://blogs.msdn.com/nikolait"&gt;http://blogs.msdn.com/nikolait&lt;/a&gt; &lt;p&gt;Peli de Halleux's Blog: &lt;a title="http://blog.dotnetwiki.org/" href="http://blog.dotnetwiki.org/"&gt;http://blog.dotnetwiki.org/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=144352" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Release of Microsoft Source Analysis for C#</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/05/25/release-of-microsoft-source-analysis-for-c.aspx</link><pubDate>Sun, 25 May 2008 23:05:55 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:144351</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/144351.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=144351</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=144351</wfw:comment><description>&lt;p&gt;Source Analysis, also known as StyleCop, analyzes C# source code to enforce a set of best practice style and consistency rules. &lt;/p&gt; &lt;p&gt;Source Analysis for C# can be downloaded here: &lt;a href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sourceanalysis"&gt;https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sourceanalysis&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Source Analysis Blog: &lt;a title="http://blogs.msdn.com/sourceanalysis" href="http://blogs.msdn.com/sourceanalysis"&gt;http://blogs.msdn.com/sourceanalysis&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=144351" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>QuickSort in Functional C#</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/05/23/quicksort-in-functional-c.aspx</link><pubDate>Fri, 23 May 2008 19:44:30 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:144261</guid><dc:creator>jlee</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/144261.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=144261</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=144261</wfw:comment><description>&lt;p&gt;Here's a very simple QuickSort algorithm from &lt;a href="http://en.wikipedia.org/wiki/Quick_Sort"&gt;Wikipedia&lt;/a&gt; written in a very Functional way of C#. Notice that it looks very close to the pseudo-code algorithm shown in Wikipedia. The pivot used is just sequence.First(). You can replace the pivot by some random position if you wish.&lt;br&gt;&lt;/p&gt; &lt;p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; QuickSort&amp;lt;T&amp;gt;(&lt;span class="kwrd"&gt;this&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; sequence) &lt;span class="kwrd"&gt;where&lt;/span&gt; T : IComparable&amp;lt;T&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; !sequence.Any()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;                       ? sequence&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                       : ((from x &lt;span class="kwrd"&gt;in&lt;/span&gt; sequence.Skip(1)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                           &lt;span class="kwrd"&gt;where&lt;/span&gt; x.CompareTo(sequence.First()) &amp;lt; 0&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                           select x)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                             .QuickSort()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                         ).Concat(&lt;span class="kwrd"&gt;new&lt;/span&gt;[] { sequence.First() }).Concat((from x &lt;span class="kwrd"&gt;in&lt;/span&gt; sequence.Skip(1)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                                                                      &lt;span class="kwrd"&gt;where&lt;/span&gt; x.CompareTo(sequence.First()) &amp;gt;= 0&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                                                                      select x).QuickSort());&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I tried making this more fun by using the &lt;a href="http://triplez.mine.nu/blogs/triplez/archive/2007/12/10/recursive-lambda-with-fixed-point-generator.aspx"&gt;Fix Point Generator&lt;/a&gt; which I mentioned previously, and converted that code into a Func&amp;lt;IEnumerable&amp;lt;T&amp;gt;&amp;gt; instead. Here's the code.&lt;/p&gt;
&lt;p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;T, T&amp;gt; Fix&amp;lt;T&amp;gt;(Func&amp;lt;Func&amp;lt;T, T&amp;gt;, Func&amp;lt;T, T&amp;gt;&amp;gt; F)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; x =&amp;gt; F(Fix(F))(x);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            var quicksort = Fix&amp;lt;IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;&amp;gt;(&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                qsort =&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                sequence =&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                !sequence.Any()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                    ? sequence&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                    : qsort(from x &lt;span class="kwrd"&gt;in&lt;/span&gt; sequence.Skip(1)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;where&lt;/span&gt; x.CompareTo(sequence.First()) &amp;lt; 0&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                            select x)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                          .Concat(&lt;span class="kwrd"&gt;new&lt;/span&gt;[] { sequence.First() })&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                          .Concat(qsort(from x &lt;span class="kwrd"&gt;in&lt;/span&gt; sequence.Skip(1)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;where&lt;/span&gt; x.CompareTo(sequence.First()) &amp;gt;= 0&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                                        select x)));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is a perfect example of how you can use the &lt;a href="http://triplez.mine.nu/blogs/triplez/archive/2007/12/10/recursive-lambda-with-fixed-point-generator.aspx"&gt;Fix Point Generator&lt;/a&gt; to create your recursive functions on the fly. If you want to make it reusable with an extension method, you can easily convert it to the extension method, or a normal method. Personally I feel that using the &lt;a href="http://triplez.mine.nu/blogs/triplez/archive/2007/12/10/recursive-lambda-with-fixed-point-generator.aspx"&gt;Fix Point Generator&lt;/a&gt; is more intuitive and slightly more readable as oppose to the extension method way of doing things.&lt;/p&gt;
&lt;p&gt;One point to note is that the "Concat" extension only accepts an IEnumerable&amp;lt;T&amp;gt; and not a single item. You can solve this by the above, "new[] { sequence.First() }" which is a cleaner way if you don't want to write your own extension method (which you could too).&lt;/p&gt;
&lt;p&gt;Crazy stuff eh?&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=144261" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Presentation: Practical Functional Programming in C#</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/05/15/presentation-practical-functional-programming-in-c.aspx</link><pubDate>Thu, 15 May 2008 12:36:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:143956</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/143956.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=143956</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=143956</wfw:comment><description>&lt;p&gt;Here are my slides I've done at &lt;a href="http://www.devteach.com"&gt;DevTeach Toronto 2008&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://triplez.mine.nu/files/folders/justin_lee_presentations/entry2222.aspx"&gt;Download it here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=143956" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Presentations/default.aspx">Presentations</category></item><item><title>Getting Bluetooth working on Windows Server 2008</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/05/08/getting-bluetooth-working-on-windows-server-2008.aspx</link><pubDate>Thu, 08 May 2008 23:10:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:143955</guid><dc:creator>jlee</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/143955.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=143955</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=143955</wfw:comment><description>&lt;p&gt;If your bluetooth adapter is a Broadcom Bluetooth 2.0 EDR, like the "ThinkPad Bluetooth with Enhanced Data Rate" or any Broadcom Bluetooth 2.0 EDR type adapter, you can follow the steps below to get bluetooth working on Windows Server 2008.&lt;/p&gt;&lt;p&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;p align="left"&gt;&lt;font face="Arial" size="2"&gt;&lt;b&gt;Required&amp;nbsp;for install&lt;/b&gt;:&lt;/font&gt;&lt;/p&gt;
&lt;p align="left"&gt;Vista or WS2008 &lt;b&gt;x86&lt;/b&gt;: &lt;a href="http://www.toshiba-tro.de/tools/bluetooth/BT-stack.zip" title="http://www.toshiba-tro.de/tools/bluetooth/BT-stack.zip"&gt;http://www.toshiba-tro.de/tools/bluetooth/BT-stack.zip&lt;/a&gt;&lt;br&gt;Vista or WS2008 &lt;b&gt;x64&lt;/b&gt;: &lt;a href="http://www.toshiba-tro.de/tools/bluetooth/BT-stack-64bit.zip" title="http://www.toshiba-tro.de/tools/bluetooth/BT-stack-64bit.zip"&gt;http://www.toshiba-tro.de/tools/bluetooth/BT-stack-64bit.zip&lt;/a&gt;&lt;/p&gt;

&lt;p align="left"&gt;Hex Editor, e.g. WinHex or CodePad&lt;br&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;1. If you down it, you will &lt;b&gt;install this software&lt;/b&gt;. When Toshiba Setup say &lt;b&gt;Plug your BT device&lt;/b&gt;, you'll &lt;b&gt;click to cancel&lt;/b&gt;. Install is succesfull.&lt;/p&gt;

&lt;p align="left"&gt;2. Open &lt;b&gt;Device Manager&lt;/b&gt; (Start | Control Panel | Device Manager) or Start | Run... | &lt;b&gt;devmgmt.msc&lt;/b&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;
&lt;p align="left"&gt;You find in Other devices - Bluetooth dongle. Get &lt;b&gt;Properties&lt;/b&gt; of it. On fold &lt;b&gt;Details&lt;/b&gt;&amp;nbsp;you see &lt;b&gt;Property&lt;/b&gt;, It&amp;nbsp;scroll to &lt;b&gt;Hardware Ids&lt;/b&gt;. In &lt;b&gt;Value&lt;/b&gt; Box u see &lt;b&gt;two line&lt;/b&gt;, e.g.: &lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;
&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;USB\VID_0A5C&amp;amp;PID_2101&amp;amp;REV_0100&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;&lt;font color="#ff0000"&gt;USB\VID_0A5C&amp;amp;PID_2101&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;

&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;You copy &lt;b&gt;second&lt;/b&gt; line with &lt;b&gt;short Ids&lt;/b&gt; ('&lt;font color="#ff0000"&gt;USB\VID_0A5C&amp;amp;PID_2101&lt;/font&gt;') &lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p align="left"&gt;3. Now you going &lt;b&gt;to folder&lt;/b&gt;:&lt;br&gt;Vista or WS2008 x86: %PROGRAMFILES%\Toshiba\Bluetooth Toshiba Stack\Drivers\tosrfusb&lt;/p&gt;
&lt;p align="left"&gt;Vista or WS2008 x64: %PROGRAMFILES(x86)%\Toshiba\Bluetooth Toshiba Stack\Drivers\tosrfusb&lt;/p&gt;
&lt;p align="left"&gt;Here&amp;nbsp;are &lt;b&gt;files&lt;/b&gt;: &lt;font color="#ff0000"&gt;tosrfusb.cat&lt;/font&gt;, &lt;font color="#ff0000"&gt;tosrfusb.inf&lt;/font&gt;, tosrfusb.sys&lt;br&gt;You need edited &lt;b&gt;*.cat&lt;/b&gt;, and &lt;b&gt;*.inf&lt;/b&gt; file.&lt;/p&gt;

&lt;p align="left"&gt;4. &lt;b&gt;Open&lt;/b&gt; &lt;font color="#ff0000"&gt;tosrfusb.inf&lt;/font&gt; in &lt;b&gt;Notepad&lt;/b&gt;.exe (e.g. Start | Run... | Notepad.exe)&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;Here you must edited &lt;b&gt;line 161&lt;/b&gt;:&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;%TosrfUsb.DeviceDesc97%=TosrfUsb_Device,&amp;nbsp; USB\VID_0C24&amp;amp;PID_000F&lt;/p&gt;&lt;/blockquote&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;and &lt;b&gt;line 288&lt;/b&gt;:&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;%TosrfUsb.DeviceDesc97%=TosrfUsb_Device,&amp;nbsp; USB\VID_0C24&amp;amp;PID_000F&lt;/p&gt;&lt;/blockquote&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;You &lt;b&gt;edit&lt;/b&gt; this lines &lt;b&gt;to&lt;/b&gt;:&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;%TosrfUsb.DeviceDesc97%=TosrfUsb_Device,&amp;nbsp; &lt;font color="#ff0000"&gt;USB\VID_0A5C&amp;amp;PID_2101&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;&lt;font color="#000000"&gt;And &lt;b&gt;save&lt;/b&gt; as &lt;b&gt;tosrfusb.inf&lt;/b&gt; (&lt;font color="#ff0000"&gt;&lt;b&gt;replace&lt;/b&gt;&lt;/font&gt; original file).&lt;/font&gt; &lt;br&gt;&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;5. &lt;b&gt;Open &lt;/b&gt;&lt;font color="#ff0000"&gt;tosrfusb.cat&lt;/font&gt;&lt;font color="#000000"&gt; in&lt;/font&gt;&amp;nbsp;&lt;b&gt;Hex Editor&lt;/b&gt; (e.g. WinHex, CodePad).&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;Ctrl+F.. You need line of characters (&lt;font color="#ff0000"&gt;but not find this data as text value&lt;/font&gt;!):&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;4800570049004400390037020410010001042C7500730062005C007600690064005F00300063003200340026007000690064005F0030003000300035&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;or&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;H.W.I.D.9.7.......,u.s.b.\.v.i.d._.0.c.2.4.&amp;amp;.p.i.d._.0.0.0.5&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;or&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;HWID97&amp;nbsp;&amp;nbsp; ,usb\vid_0c24&amp;amp;pid_0005&lt;/p&gt;

&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;There you must change value help by ASCI table, e.g.:&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;4800570049004400390037020410010001042C7500730062005C007600690064005F00&lt;font color="#ff0000"&gt;30&lt;/font&gt;00&lt;font color="#ff0000"&gt;41&lt;/font&gt;00&lt;font color="#ff0000"&gt;35&lt;/font&gt;00&lt;font color="#ff0000"&gt;43&lt;/font&gt;0026007000690064005F00&lt;font color="#ff0000"&gt;32&lt;/font&gt;00&lt;font color="#ff0000"&gt;31&lt;/font&gt;00&lt;font color="#ff0000"&gt;30&lt;/font&gt;00&lt;font color="#ff0000"&gt;31&lt;/font&gt;&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;or&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;H.W.I.D.9.7.......,u.s.b.\.v.i.d._.&lt;font color="#ff0000"&gt;0&lt;/font&gt;.&lt;font color="#ff0000"&gt;A&lt;/font&gt;.&lt;font color="#ff0000"&gt;5&lt;/font&gt;.&lt;font color="#ff0000"&gt;C&lt;/font&gt;.&amp;amp;.p.i.d._.&lt;font color="#ff0000"&gt;2&lt;/font&gt;.&lt;font color="#ff0000"&gt;1&lt;/font&gt;.&lt;font color="#ff0000"&gt;0&lt;/font&gt;.&lt;font color="#ff0000"&gt;1&lt;/font&gt;&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;&lt;font color="#000000"&gt;or&lt;/font&gt;&lt;/p&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;HWID97&amp;nbsp;&amp;nbsp; ,usb\vid_&lt;font color="#ff0000"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;A&lt;/font&gt;&lt;font color="#ff0000"&gt;5&lt;/font&gt;&lt;font color="#ff0000"&gt;C&lt;/font&gt;&amp;amp;pid_&lt;font color="#ff0000"&gt;2&lt;/font&gt;&lt;font color="#ff0000"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;1&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;&lt;font color="#000000"&gt;And &lt;b&gt;save&lt;/b&gt; as &lt;b&gt;tosrfusb.cat&lt;/b&gt; (&lt;font color="#ff0000"&gt;&lt;b&gt;replace&lt;/b&gt;&lt;/font&gt; original file).&lt;/font&gt;&lt;/p&gt;

&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;6. Now you can install your BT. &lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right:0px;"&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;Vista or WS2008 &lt;b&gt;x86&lt;/b&gt;: %PROGRAMFILES%\Toshiba\Bluetooth Toshiba Stack\&lt;b&gt;ECCenter.exe&lt;/b&gt;&lt;/p&gt;
&lt;p align="left"&gt;Vista or WS2008 &lt;b&gt;x64&lt;/b&gt;: %PROGRAMFILES(x86)%\Toshiba\Bluetooth Toshiba Stack\&lt;b&gt;ECCenter.exe&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;You &lt;b&gt;must Ignore install not sign drivers&lt;/b&gt; and&amp;nbsp;all is&amp;nbsp;Okay.&lt;/p&gt;&lt;p dir="ltr" style="margin-right:0px;" align="left"&gt;[&lt;a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2443540&amp;amp;SiteID=17"&gt;Source: MSDN Forums&lt;/a&gt;] &lt;br&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=143955" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>Windows Media Player Plugin for Firefox on Windows Server 2008</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/05/03/windows-media-player-plugin-for-firefox-on-windows-server-2008.aspx</link><pubDate>Sat, 03 May 2008 04:45:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:143954</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/143954.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=143954</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=143954</wfw:comment><description>&lt;p&gt;If anyone tried to install &lt;a href="http://port25.technet.com/pages/windows-media-player-firefox-plugin-download.aspx" target="_blank"&gt;WMP plugin for Firefox&lt;/a&gt; on Windows Server 2008 (or any server os), they will get an error stating that server os are not supported. In order to get it working, you need to do the following steps.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Rename wmpfirefoxplugin.exe to wmpfirefoxplugin.zip.&lt;/li&gt;&lt;li&gt;Extract it into a directory.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Type the following command in a console:&lt;br&gt;msiexec /a ffplugin.msi&lt;/li&gt;&lt;li&gt;It will install it probably in C:\&lt;/li&gt;&lt;li&gt;Copy this file, np-mswmp.dll, into your plugins directory of Firefox (usually C:\Program Files\Mozilla Firefox\plugins)&lt;/li&gt;&lt;/ol&gt;Restart Firefox and it should work.&lt;br&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=143954" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Technology/default.aspx">Technology</category></item><item><title>DevTeach is coming to Toronto in just a few more weeks!</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/04/26/devteach-is-coming-to-toronto-in-just-a-few-more-weeks.aspx</link><pubDate>Sat, 26 Apr 2008 14:02:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:143953</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/143953.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=143953</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=143953</wfw:comment><description>&lt;p&gt;&lt;b&gt;I copied this blog post from &lt;a href="http://geekswithblogs.net/chrduf/archive/2008/04/26/121665.aspx"&gt;Chris Dufour's blog&lt;/a&gt;. Chris copied it from &lt;a href="http://msmvps.com/blogs/windsor/archive/2008/04/26/devteach-is-coming-to-toronto-in-just-a-few-more-weeks.aspx"&gt;Rob Windsor's blog&lt;/a&gt;. Rob copied it from &lt;a href="http://www.thedatafarm.com/blog/2008/04/26/DevTeachIsComingToTorontoOntarioInJustAFewMoreWeeks.aspx"&gt;Julie Lerman's blog&lt;/a&gt;. Julie copied it from &lt;a href="http://guy.dotnet-expertise.com/PermaLink,guid,d94fb145-722c-4b78-948b-a6fe0a08209b.aspx"&gt;Guy Barrette's blog&lt;/a&gt;. I'm sure someone will copy it from me and add their own little flair.&lt;/b&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;If you live in Toronto and don't attend &lt;/i&gt;&lt;i&gt;&lt;a href="http://www.devteach.com/"&gt;DevTeach&lt;/a&gt;&lt;/i&gt;&lt;i&gt;, Guy Barrette is going to make you code in Clipper for the remainder of your career (BTW - that's Clipper development with no Multi Edit and no Norton Guides. Ah, there, now you're shaking).&amp;nbsp; Seriously, DevTeach has a great lineup of speakers from Toronto and across the globe. W&lt;/i&gt;&lt;i&gt;here else can you hear, see, &lt;strike&gt;touch, feel&lt;/strike&gt;, talk to, describe your problems (IT/Dev related or not) and have a beer with these guys/gals?&lt;/i&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;/i&gt; &lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;img src="http://www.devteach.com/Member/000121.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/003389.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/001993.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000382.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000037.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000635.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000026.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000030.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/004589.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000042.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000364.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000011.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000128.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://photos-g.ak.facebook.com/photos-ak-sf2p/v82/37/61/636400649/s636400649_472262_9611.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/001991.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000018.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/003551.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/003439.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000428.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000369.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000719.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000088.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://profile.ak.facebook.com/v230/289/39/n636400649_674.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000735.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000720.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/000070.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/002621.jpg" alt="" height="117" width="90"&gt; &lt;img src="http://www.devteach.com/Member/004497.jpg" alt="" height="117" width="90"&gt;&lt;/i&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;And that's only half of them!!!&lt;/i&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;Need more reasons?&lt;/i&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;Keynote by Scott Hanselman&lt;br&gt;&lt;/b&gt;Scott is one of the most prolific, renowned and respected bloggers (&lt;/i&gt;&lt;a href="http://www.hanselman.com/"&gt;&lt;i&gt;http://www.hanselman.com&lt;/i&gt;&lt;/a&gt;&lt;i&gt;) and podcasters (&lt;/i&gt;&lt;a href="http://www.hanselminutes.com/"&gt;&lt;i&gt;http://www.hanselminutes.com&lt;/i&gt;&lt;/a&gt;&lt;i&gt;) in the .NET world. Scott is a hands-on thinker, a renowned speaker and writer. He has written a few books, most recently with Bill Evjen and Devin Rader on Professional ASP.NET. In July 2007, he joined Microsoft as a Senior Program Manager in the Developer Division. In his new role he'll continue to explore and explain a broad portfolio of technologies, both inside and outside Microsoft. He aims to spread the good word about developing software, most often on the Microsoft stack. Before this he was the Chief Architect at Corillian Corporation, now a part of Checkfree, for 6+ years and before that he was a Principal Consultant at STEP Technology for nearly 7 years.&lt;br&gt;&lt;/i&gt;&lt;a href="http://www.devteach.com/keynote.aspx"&gt;&lt;i&gt;http://www.devteach.com/keynote.aspx&lt;/i&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;Silverlight 2.0 Workshop&lt;/b&gt;&lt;br&gt;For the first time an independent conference is having a workshop on Building Business Applications with Silverlight 2.0.&amp;nbsp; Join Rod Paddock and Jim Duffy as they give you a head start down the road to developing business-oriented Rich Internet Applications (RIA) with Microsoft Silverlight 2.0. Microsoft Silverlight 2.0 is a cross-browser, cross-platform, and cross-device plug-in positioned to revolutionize the way next generation Rich Internet Applications are developed. Microsoft’s commitment to providing an extensive platform for developers and designers to collaborate on creating the next generation of RIAs is very clear and its name is Silverlight 2.0. In this intensive, full-day workshop, Rod and Jim will share their insight and experience building business applications with Silverlight 2.0 including a review of some of the Internet’s more visible Silverlight web applications. This workshop is happening on Friday May 16 at the Hilton Toronto.&lt;br&gt;&lt;/i&gt;&lt;a href="http://www.devteach.com/PostConference.aspx#PreSP"&gt;&lt;i&gt;http://www.devteach.com/PostConference.aspx#PreSP&lt;/i&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;Bonus session: .NET Rocks hosts a panel May 14th at 18:00&lt;br&gt;&lt;/b&gt;This year the bonus session (Wednesday May 14 at 18:00) will be a panel of speakers debating the Future of .NET. Where is .NET going? How will new development influence .NET and be influenced by .NET? Join Carl Franklin and Richard Campbell from .NET Rocks as they moderate a discussion on the future directions of .NET. The panellists include individuals who have strong visions of the future of software development and the role that .NET can play in that future. Attend this session and bring your questions to get some insight into the potential future of .NET! This bonus session is free for everyone. Panelists are: Ted Neward,Oren Eini ,Scott Bellware&lt;br&gt;&lt;/i&gt;&lt;a href="http://www.devteach.com/BonusSession.aspx"&gt;&lt;i&gt;http://www.devteach.com/BonusSession.aspx&lt;/i&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;Party with Palermo, DevTeach Toronto Edition&lt;/b&gt;&lt;br&gt;Jeffrey Palermo (MVP) is hosting Monday May 12th in Toronto is acclaimed "Party with Palermo". This is the official social event&amp;nbsp; kicking off DevTeach Toronto. The event is not just for the attendees of Toronto it’s&amp;nbsp; a &lt;b&gt;free event for everyone&lt;/b&gt;. It’s a unique chance for the attendees, speakers and locals&amp;nbsp; to meet and talk with a &lt;b&gt;free beer&lt;/b&gt;.&amp;nbsp;&amp;nbsp; The event will be held at the Menage club&amp;nbsp; location and you need to RSVP to attend. Get all the details at this link: &lt;br&gt;&lt;/i&gt;&lt;a href="http://www.partywithpalermo.com/"&gt;&lt;i&gt;http://www.partywithpalermo.com/&lt;/i&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;DevTeach Toronto is going to be a lot of fun and a great chance to learn from the best minds in the industry.&amp;nbsp; &lt;a href="http://www.devteach.com/Register.aspx"&gt;Register now&lt;/a&gt; - you don't want to miss out.&lt;/i&gt;&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=143953" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Community/default.aspx">Community</category></item><item><title>Toronto Code Camp Interview</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/03/08/toronto-code-camp-interview.aspx</link><pubDate>Sun, 09 Mar 2008 03:51:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:143952</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/143952.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=143952</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=143952</wfw:comment><description>&lt;span id="PreviewBody"&gt;&lt;p&gt;Well, 45 minutes before my surprise presentation I had to do, without me even knowing I had to do it. Here it is.&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.soapbox.msn.com/flash/soapbox1_1.swf" title="Block this object with Adblock Plus" class="abp-objtab-009045601589737662 visible ontop"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="http://soapbox.msn.com/video.aspx?showPlaylist=true&amp;amp;playlist=videoByUuids:uuids:fc537431-46da-451c-9c59-415c41cc6565" title="Toronto Code Camp 2008 - Speakers Room Part 2" target="_new"&gt;Video: Toronto Code Camp 2008 - Speakers Room Part 2&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=143952" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Community/default.aspx">Community</category></item><item><title>Singularity Source Code Released to CodePlex</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/03/04/singularity-source-code-released-to-codeplex.aspx</link><pubDate>Wed, 05 Mar 2008 04:32:48 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:134352</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/134352.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=134352</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=134352</wfw:comment><description>&lt;p&gt;From &lt;a href="http://www.osnews.com"&gt;OSNews&lt;/a&gt;:&lt;/p&gt; &lt;p&gt;Microsoft has &lt;a href="http://www.codeplex.com/singularity"&gt;released source code from the Singularity research project&lt;/a&gt; onto Codeplex under an academic, non-commercial license. &lt;i&gt;"The Singularity Research Development Kit is based on the Microsoft Research Singularity project. It includes source code, build tools, test suites, design notes, and other background materials. The Singularity RDK is for academic non-commercial use only and is governed by &lt;a href="http://www.codeplex.com/singularity/license"&gt;this license&lt;/a&gt;."&lt;/i&gt;&lt;/p&gt; &lt;p&gt;How cool is that? I'm going to download it and play with it! For those who don't already know, here's a description of what Singularity is.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Singularity is a research project focused on the construction of dependable systems through innovation in the areas of systems, languages, and tools. We are building a research operating system prototype (called Singularity), extending programming languages, and developing new techniques and tools for specifying and verifying program behavior.&lt;/p&gt; &lt;p&gt;&lt;br&gt;Advances in languages, compilers, and tools open the possibility of significantly improving software. For example, Singularity uses type-safe languages and an abstract instruction set to enable what we call Software Isolated Processes (SIPs). SIPs provide the strong isolation guarantees of OS processes (isolated object space, separate GCs, separate runtimes) without the overhead of hardware-enforced protection domains. In the current Singularity prototype SIPs are extremely cheap; they run in ring 0 in the kernel’s address space.&lt;/p&gt; &lt;p&gt;&lt;br&gt;Singularity uses these advances to build more reliable systems and applications. For example, because SIPs are so cheap to create and enforce, Singularity runs each program, device driver, or system extension in its own SIP. SIPs are not allowed to share memory or modify their own code. As a result, we can make strong reliability guarantees about the code running in a SIP. We can verify much broader properties about a SIP at compile or install time than can be done for code running in traditional OS processes. Broader application of static verification is critical to predicting system behaviour and providing users with strong guarantees about reliability.&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=134352" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category></item><item><title>Presentation: Overview of ASP.NET 3.5 Extensions</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/03/04/presentation-overview-of-asp-net-3-5-extensions.aspx</link><pubDate>Wed, 05 Mar 2008 04:24:36 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:134351</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/134351.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=134351</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=134351</wfw:comment><description>&lt;p&gt;The presentation I did for the &lt;a href="http://www.torontocodecamp.net"&gt;Toronto Code Camp&lt;/a&gt;, "&lt;a href="http://www.torontocodecamp.net/Sessions/tabid/55/CodecampId/1/SessionId/1/Default.aspx"&gt;Overview of ASP.NET 3.5 Extensions&lt;/a&gt;", is up on my site. &lt;p&gt;&lt;a href="http://triplez.mine.nu/files/folders/justin_lee_presentations/entry1156.aspx"&gt;Download it here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=134351" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Community/default.aspx">Community</category></item><item><title>SharePoint Designer Bug With Creating Data View Web Parts</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/03/04/sharepoint-designer-bug-with-creating-data-view-web-parts.aspx</link><pubDate>Wed, 05 Mar 2008 04:14:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:134348</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/134348.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=134348</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=134348</wfw:comment><description>
&lt;p&gt;For those who has been getting the ultimate crashes from SharePoint Designer, and many weird oddities with it, this is something that you should know while working with Data View Web Parts. Occasionally, SharePoint Designer will &lt;b&gt;NOT&lt;/b&gt; allow you to add a Data View Web Part no matter what you do, as shown below, and the main reason is... *&lt;b&gt;drum roll&lt;/b&gt;*... your file is not saved. &lt;/p&gt;
 
&lt;p&gt;&lt;a href="http://triplez.mine.nu/photos/triplez/picture1153.aspx" target="_blank"&gt;&lt;img src="http://triplez.mine.nu/photos/triplez/images/1153/original.aspx" border="0"&gt;&lt;/a&gt; &lt;a href="http://triplez.mine.nu/photos/triplez/picture1154.aspx" target="_blank"&gt;&lt;img src="http://triplez.mine.nu/photos/triplez/images/1154/original.aspx" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
 
&lt;p&gt;The first screen shot shows a "changed but not saved file" and "Insert Selected Fields As..." not working and the second screen shot shows the "Insert Selected Fields as..." working after saving.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=134348" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>SharePoint Tip: Displaying HTML Encodes Properly</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/03/04/sharepoint-tip-displaying-html-encodes-properly.aspx</link><pubDate>Tue, 04 Mar 2008 17:04:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:134303</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/134303.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=134303</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=134303</wfw:comment><description>&lt;p&gt;Here's a tip for those people getting &amp;amp;amp; instead of &amp;amp; (and all those other fancy html encodes) from your XSLT variables. You just need to add disable-output-escaping and set that to "yes" when you do a value-of.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&amp;lt;xsl:&lt;span class="kwrd"&gt;value&lt;/span&gt;-of select=&lt;span class="str"&gt;"$Site"&lt;/span&gt; disable-output-escaping=&lt;span class="str"&gt;"yes"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=134303" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/XSLT/default.aspx">XSLT</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>String Replacement with XSLT</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/03/04/string-replacement-with-xslt.aspx</link><pubDate>Tue, 04 Mar 2008 16:29:00 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:134301</guid><dc:creator>jlee</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/134301.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=134301</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=134301</wfw:comment><description>&lt;p&gt;While working with SharePoint, I found that I sometimes need to replace strings with some characters or strings, for example, replacing "&amp;amp;amp;" with "&amp;amp;", or replacing "_x0020_" with " ". This is a useful template to do so. I got this template from &lt;a href="http://www.dpawson.co.uk/xsl/sect2/replace.html"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &amp;lt;!-- here &lt;span class="kwrd"&gt;is&lt;/span&gt; the template that does the replacement --&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &amp;lt;xsl:template name=&lt;span class="str"&gt;"replaceCharsInString"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;      &amp;lt;xsl:param name=&lt;span class="str"&gt;"stringIn"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;      &amp;lt;xsl:param name=&lt;span class="str"&gt;"charsIn"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &amp;lt;xsl:param name=&lt;span class="str"&gt;"charsOut"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;      &amp;lt;xsl:choose&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &amp;lt;xsl:when test=&lt;span class="str"&gt;"contains($stringIn,$charsIn)"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;          &amp;lt;xsl:&lt;span class="kwrd"&gt;value&lt;/span&gt;-of select=&lt;span class="str"&gt;"concat(substring-before($stringIn,$charsIn),$charsOut)"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;          &amp;lt;xsl:call-template name=&lt;span class="str"&gt;"replaceCharsInString"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &amp;lt;xsl:with-param name=&lt;span class="str"&gt;"stringIn"&lt;/span&gt; select=&lt;span class="str"&gt;"substring-after($stringIn,$charsIn)"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &amp;lt;xsl:with-param name=&lt;span class="str"&gt;"charsIn"&lt;/span&gt; select=&lt;span class="str"&gt;"$charsIn"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &amp;lt;xsl:with-param name=&lt;span class="str"&gt;"charsOut"&lt;/span&gt; select=&lt;span class="str"&gt;"$charsOut"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;          &amp;lt;/xsl:call-template&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &amp;lt;/xsl:when&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &amp;lt;xsl:otherwise&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;          &amp;lt;xsl:&lt;span class="kwrd"&gt;value&lt;/span&gt;-of select=&lt;span class="str"&gt;"$stringIn"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &amp;lt;/xsl:otherwise&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;      &amp;lt;/xsl:choose&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &amp;lt;/xsl:template&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And here's how you'll call it.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;!-- pretend &lt;span class="kwrd"&gt;this&lt;/span&gt; &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; a template --&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &amp;lt;xsl:variable name=&lt;span class="str"&gt;"myString"&lt;/span&gt; select=&lt;span class="str"&gt;"'This%20is%20Test'"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &amp;lt;xsl:variable name=&lt;span class="str"&gt;"myNewString"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &amp;lt;xsl:call-template name=&lt;span class="str"&gt;"replaceCharsInString"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &amp;lt;xsl:with-param name=&lt;span class="str"&gt;"stringIn"&lt;/span&gt; select=&lt;span class="str"&gt;"string($myString)"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;      &amp;lt;xsl:with-param name=&lt;span class="str"&gt;"charsIn"&lt;/span&gt; select=&lt;span class="str"&gt;"'%20'"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;      &amp;lt;xsl:with-param name=&lt;span class="str"&gt;"charsOut"&lt;/span&gt; select=&lt;span class="str"&gt;"' '"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &amp;lt;/xsl:call-template&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;  &amp;lt;/xsl:variable&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;  &amp;lt;!-- $myNewString &lt;span class="kwrd"&gt;is&lt;/span&gt; a result tree fragment, which should be OK. --&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;  &amp;lt;!-- If you really need a &lt;span class="kwrd"&gt;string&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;, &lt;span class="kwrd"&gt;do&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;: --&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;  &amp;lt;xsl:variable name=&lt;span class="str"&gt;"myNewRealString"&lt;/span&gt; select=&lt;span class="str"&gt;"string($myNewString)"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And there you have it. Very useful indeed.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=134301" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/XSLT/default.aspx">XSLT</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Channel 5.5: Your Host, Rob WIndsor</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/03/02/channel-5-5-your-host-rob-windsor.aspx</link><pubDate>Mon, 03 Mar 2008 04:59:42 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:134085</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/134085.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=134085</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=134085</wfw:comment><description>&lt;p&gt;After the &lt;a href="http://www.torontocodecamp.net"&gt;Toronto Code Camp&lt;/a&gt; event on Saturday, the gang went out for a drink at the Spotted ***. Your host, Rob Windsor was interviewing each of us. There're lots of weird things going on, especially badgers running around. :) Here it is. It's hilarious. Enjoy.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;a title="Toronto Code Camp 2008: Interviews at the Pub" href="http://video.msn.com/video.aspx?vid=d32690c8-358a-4ebb-b9ad-4d324cbe5237" target="_new"&gt;Video: Toronto Code Camp 2008: Interviews at the Pub&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=134085" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/ObjectSharp/default.aspx">ObjectSharp</category></item><item><title>Process Lasso</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2008/02/21/process-lasso.aspx</link><pubDate>Fri, 22 Feb 2008 00:02:38 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:130481</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/130481.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=130481</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=130481</wfw:comment><description>&lt;p&gt; I've just installed this to try it out. Here's a description of what it is from &lt;a href="http://feeds.feedburner.com/~r/jkOnTheRun/~3/239008205/freeware-of-t-1.html"&gt;jkOnTheRun&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;img title="Process_lasso" alt="Process_lasso" src="http://jkontherun.blogs.com/photos/uncategorized/2008/02/21/process_lasso.jpg" border="0"&gt; &lt;/p&gt; &lt;p&gt;Anyone who has been using mobile devices for very long knows too well the hit and miss scenario caused by multi-tasking.&amp;nbsp; You have too much running in the background and the CPU grinds up to 100% and it's hard to do much of anything.&amp;nbsp; Today's Freeware of the Moment is a utility that aims to end that problem once and for all.&amp;nbsp; &lt;a href="http://www.bitsum.com/prolasso.php"&gt;Process Lasso &lt;/a&gt;sets some rules and runs (with very little resources) in the background and prevents bad things from happening when too much gets going at once.&amp;nbsp; It watches your CPU resources and when they get tapped out it steps the priority down for processes until the system is running at an even keel.&amp;nbsp; I have heard many people praise this program but none so well as Steven Hughes of BostonPocket PC who has published a &lt;a href="http://www.bostonpocketpc.com/Review++Process+Lasso.aspx"&gt;very thorough review of Process Lasso&lt;/a&gt;.&amp;nbsp; Check out the review and then give Process Lasso a try and see how well your older system runs with today's programs.&amp;nbsp; Note that Process Lasso runs under Windows 2000, XP and Vista and there are both 32 bit and 64 bit versions available.&amp;nbsp; Be sure and get the right one and you'll be hauling buns in short order.&amp;nbsp; Don't be intimidated, while Process Lasso has all sorts of technical settings to give you total control over your running environment the defaults will pretty much sort your system out with ease. &lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=130481" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category></item><item><title>Presentation: Acropolis and Composite Applications</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/12/16/presentation-acropolis-and-composite-applications.aspx</link><pubDate>Mon, 17 Dec 2007 00:04:01 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:106631</guid><dc:creator>jlee</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/106631.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=106631</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=106631</wfw:comment><description>&lt;p&gt;The presentation I did for the &lt;a href="http://www.metrotorontoug.com/" target="_blank"&gt;Metro Toronto .NET User Group&lt;/a&gt;, "&lt;a href="http://www.metrotorontoug.com/User+Group+Events/650.aspx" target="_blank"&gt;A Look into the Future of Creating Composite Applications&lt;/a&gt;", is up on my site.&lt;/p&gt; &lt;p&gt;&lt;a href="http://triplez.mine.nu/files/folders/justin_lee_presentations/entry1013.aspx" target="_blank"&gt;Download it here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=106631" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/User+Group/default.aspx">User Group</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Acropolis/default.aspx">Acropolis</category></item><item><title>XNA Game Studio 2.0 Released</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/12/14/xna-game-studio-2-0-released.aspx</link><pubDate>Fri, 14 Dec 2007 13:55:55 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:106395</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/106395.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=106395</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=106395</wfw:comment><description>&lt;p&gt;Well, the next version of XNA Game Studio is released. &lt;a href="http://creators.xna.com/Education/GettingStarted.aspx" target="_blank"&gt;Download it here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;b&gt;What’s New with&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;XNA Game Studio?&lt;/b&gt; &lt;ul&gt; &lt;li&gt;XNA Game Studio 2.0 works in &lt;i&gt;all versions &lt;/i&gt;of Visual Studio 2005. This includes Standard and Professional, as well as many other specific editions. &lt;li&gt;The new and improved interface makes it easier for you to manage your Xbox 360 console. &lt;li&gt;You’ll find that managing and building content is easier and more consistent in XNA Game Studio. &lt;li&gt;We’ve included project templates for content importers and processors. &lt;li&gt;You can configure how content is processed with the new ability to set parameters on Content Processors.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;What’s new in the&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;XNA Framework? Now you can:&lt;/b&gt; &lt;ul&gt; &lt;li&gt;Create rich multiplayer games over Xbox LIVE using the new networking APIs.  &lt;li&gt;Create Audio more effectively with the new XACT editor! &lt;li&gt;Host XNA Framework games easily inside a Windows Form. &lt;li&gt;Use the virtualized GraphicsDevice: no more special code to handle device reset and recreate! &lt;li&gt;Take advantage of render targets that are more flexible, consistent, and easier to use. Xbox 360 and Windows now support multiple render targets (MRTs) as well. &lt;li&gt;Easily nest one component inside another thanks to improvements in GameComponent. &lt;li&gt;Enjoy many more enhancements and tweaks!&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=106395" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Recursive Lambda with Fixed Point Generator</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/12/10/recursive-lambda-with-fixed-point-generator.aspx</link><pubDate>Mon, 10 Dec 2007 21:10:26 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:105906</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/105906.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=105906</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=105906</wfw:comment><description>&lt;p&gt;Reading &lt;a href="http://blogs.msdn.com/madst" target="_blank"&gt;Mads Torgersen&lt;/a&gt; old blog post on &lt;a href="http://blogs.msdn.com/madst/archive/2007/05/11/recursive-lambda-expressions.aspx" target="_blank"&gt;Recursive Lambda Expressions&lt;/a&gt;, I decided it was time for me to seriously play with his code and try out the fixed point generator to create recursive lambda expressions (together with the fact that I was sick and felt bored).&lt;/p&gt; &lt;p&gt;Taking lessons from that blog post, I created a reusable fixed point generator which we can use for anything that uses recursion. Here's the code, simply.&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;T, T&amp;gt; Fix&amp;lt;T&amp;gt;(Func&amp;lt;Func&amp;lt;T, T&amp;gt;, Func&amp;lt;T, T&amp;gt;&amp;gt; F)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; x =&amp;gt; F(Fix&amp;lt;T&amp;gt;(F))(x);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;T, T, T&amp;gt; Fix&amp;lt;T&amp;gt;(Func&amp;lt;Func&amp;lt;T, T, T&amp;gt;, Func&amp;lt;T, T, T&amp;gt;&amp;gt; F)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; (x, n) =&amp;gt; F(Fix&amp;lt;T&amp;gt;(F))(x, n);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;T1, T2, T1&amp;gt; Fix&amp;lt;T1, T2&amp;gt;(Func&amp;lt;Func&amp;lt;T1, T2, T1&amp;gt;, Func&amp;lt;T1, T2, T1&amp;gt;&amp;gt; F)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; (x, n) =&amp;gt; F(Fix&amp;lt;T1, T2&amp;gt;(F))(x, n);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;T, T, T, T&amp;gt; Fix&amp;lt;T&amp;gt;(Func&amp;lt;Func&amp;lt;T, T, T, T&amp;gt;, Func&amp;lt;T, T, T, T&amp;gt;&amp;gt; F)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; (x, n, k) =&amp;gt; F(Fix&amp;lt;T&amp;gt;(F))(x, n, k);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Static Fix methods are the actual Fixed Point Generator as described in Mads' blog. This simplifies the code and makes it reusable. The method at lines 11-14 shows how 2 different input can be used. I will be using this method for the sine and cosine lambda expressions I've written. &lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;Func&amp;lt;&lt;span class="kwrd"&gt;double&lt;/span&gt;, &lt;span class="kwrd"&gt;double&lt;/span&gt;&amp;gt; factorial = Fix&amp;lt;&lt;span class="kwrd"&gt;double&lt;/span&gt;&amp;gt;(fac =&amp;gt; x =&amp;gt; x == 0 ? 1 : x * fac(x - 1));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;Func&amp;lt;&lt;span class="kwrd"&gt;double&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;double&lt;/span&gt;&amp;gt; sine = Fix&amp;lt;&lt;span class="kwrd"&gt;double, int&lt;/span&gt;&amp;gt;(sin =&amp;gt; (x, n) =&amp;gt; n == 0 ? x : &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    sin(x, n - 1) + Math.Pow(-1, n) * Math.Pow(x, 2 * n + 1) / factorial(2 * n + 1));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;Func&amp;lt;&lt;span class="kwrd"&gt;double&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;double&lt;/span&gt;&amp;gt; cosine = Fix&amp;lt;&lt;span class="kwrd"&gt;double, int&lt;/span&gt;&amp;gt;(cos =&amp;gt; (x, n) =&amp;gt; n == 0 ? 1 : &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    cos(x, n - 1) + Math.Pow(-1, n) * Math.Pow(x, 2 * n) / factorial(2 * n));&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The factorial lambda expression is the same as in Mads' blog. I've created both sine and cosine lambda expressions learning from how the fixed point generator works. I have to keep factorial as double instead of int because it'll make the precision wrong.&lt;/p&gt;
&lt;p&gt;I used the &lt;a href="http://en.wikipedia.org/wiki/Taylor_series" target="_blank"&gt;Taylor Series&lt;/a&gt; in order to generate the sine and cosine function. x is the angle in radians, and n is the number of recursion to do (i.e. the more recursion, the more precision). &lt;/p&gt;
&lt;p&gt;The basic recursion is as follows:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://upload.wikimedia.org/math/5/d/3/5d32785481dec2be0c115f510f164dd1.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://upload.wikimedia.org/math/e/0/f/e0fff3e8139b4fa32ca3971938869282.png"&gt; &lt;/p&gt;
&lt;p&gt;So that's that! Plug in your lambda expression into the Fix static method and you're done, you've got recursion.&lt;/p&gt;
&lt;p&gt;Further testing out whether if it actually works, here's a simple testing code:&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 20; i++)&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;   Console.WriteLine(factorial(i));&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;Console.WriteLine(sine(Math.PI / 4, 10));&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;Console.WriteLine(Math.Sin(Math.PI / 4));&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;Console.WriteLine(cosine(Math.PI / 3, 10));&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;Console.WriteLine(Math.Cos(Math.PI / 3));&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;Console.ReadKey();&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here, what I do is I check my sine and cosine output with the actual Math.Sin and Math.Cos methods from the framework. It looks like it works well with n = 10 or higher, achieving the same precision as the framework.&lt;/p&gt;
&lt;p&gt;That's that. I will play around with more of this, and create more methods out of this.&lt;/p&gt;
&lt;p&gt;I tried generalizing the method itself to make it look better and easier to read, but the limits of Generics in C# stopped me from doing anything further. Here's what I tried to do, but failed of course.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;// I need a constraint operator- to make this work, but Generics does not support this&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;T, T&amp;gt; Factorial&amp;lt;T&amp;gt;() &lt;span class="kwrd"&gt;where&lt;/span&gt; T : &lt;span class="kwrd"&gt;struct&lt;/span&gt;, IEquatable&amp;lt;T&amp;gt;, &lt;span class="kwrd"&gt;operator&lt;/span&gt;-&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{         &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; Fix&amp;lt;T&amp;gt;(fac =&amp;gt; x =&amp;gt; x.Equals(0) ? 1 : x * fac(x - 1));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If that was successful, then the code would have been reduced to simply like this.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;Factorial(5)&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Doesn't that look better? If only, but there must be come other way to do this.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=105906" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Microsoft Codename Volta</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/12/06/microsoft-codename-volta.aspx</link><pubDate>Thu, 06 Dec 2007 23:45:28 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:105345</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/105345.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=105345</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=105345</wfw:comment><description>&lt;p&gt;If &lt;a href="http://www.google.com" target="_blank"&gt;Google&lt;/a&gt; can do it, so can &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt;. &lt;a href="http://labs.live.com/volta/" target="_blank"&gt;Volta&lt;/a&gt; is the &lt;a href="http://code.google.com/webtoolkit/" target="_blank"&gt;GWT&lt;/a&gt; of .NET. Enough said. Here's a description of what it is.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;The Volta technology preview is a developer toolset that enables you to build multi-tier web applications by applying familiar techniques and patterns. First, design and build your application as a .NET client application, then assign the portions of the application to run on the server and the client tiers late in the development process. The compiler creates cross-browser JavaScript for the client tier, web services for the server tier, and communication, serialization, synchronization, security, and other boilerplate code to tie the tiers together.  &lt;p&gt;Developers can target either web browsers or the CLR as clients and Volta handles the complexities of tier-splitting for you.&amp;nbsp; Volta comprises tools such as end-to-end profiling to make architectural refactoring and optimization simple and quick. In effect, Volta offers a best-effort experience in multiple environments without any changes to the application. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://labs.live.com/volta/download/" target="_blank"&gt;Download it here&lt;/a&gt;. &lt;p&gt;You need &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx" target="_blank"&gt;Visual Studio 2008&lt;/a&gt; and &lt;a href="http://go.microsoft.com/?linkid=7755937" target="_blank"&gt;.NET Framework 3.5&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=105345" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Web+Development/default.aspx">Web Development</category></item><item><title>A Detailed look at Overriding the Equality Operator in .Net</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/12/02/a-detailed-look-at-overriding-the-equality-operator-in-net.aspx</link><pubDate>Mon, 03 Dec 2007 01:33:26 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:104731</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/104731.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=104731</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=104731</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.infoq.com" target="_blank"&gt;InfoQ&lt;/a&gt; has a &lt;a href="http://www.infoq.com/articles/Equality-Overloading-DotNET" target="_blank"&gt;very good article&lt;/a&gt; for those who need to override the equality operator. Quote from &lt;a href="http://www.infoq.com" target="_blank"&gt;InfoQ&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;In this deep dive article on equal operator overloading Jonathan Allen clears the air on overriding the equality operator. In the article Jonathan provides code samples in both VB and C# to demonstrate the nuances of each .NET language. He also covers usage in both structures and classes. &lt;p&gt;Areas covered include: &lt;ul&gt; &lt;li&gt;The initial Class signature  &lt;li&gt;Fields and Properties  &lt;li&gt;Type-Safe Equality  &lt;li&gt;Hash Codes  &lt;li&gt;Overriding the base class Equals method  &lt;li&gt;Performance and Testing &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Enjoy this well-thought through &lt;a href="http://www.infoq.com/articles/Equality-Overloading-DotNET"&gt;tutorial on Equality Operator overloading.&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=104731" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>New Microsoft Downloads created with SilverLight</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/12/02/new-microsoft-downloads-created-with-silverlight.aspx</link><pubDate>Sun, 02 Dec 2007 16:23:04 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:104715</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/104715.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=104715</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=104715</wfw:comment><description>&lt;p&gt;There is a &lt;a href="http://preview.microsoft.com/downloads" target="_blank"&gt;new Microsoft Downloads page&lt;/a&gt; created entirely with Silverlight. Click on the link to see more. It's just a preview site now.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=104715" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Microsoft+Downloads/default.aspx">Microsoft Downloads</category></item><item><title>Line of Code(LOC) Counter For VSTS 2005</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/12/02/line-of-code-loc-counter-for-vsts-2005.aspx</link><pubDate>Sun, 02 Dec 2007 16:22:37 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:104714</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/104714.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=104714</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=104714</wfw:comment><description>&lt;p&gt;Microsoft IT and Microsoft Research released a &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5af387c5-55c7-4bb1-97cd-e3f742de99da" target="_blank"&gt;Line Of Code (LOC) counter&lt;/a&gt; that counts the number of lines of code in your software development project to determine the size and status of your project, predicting system defects, providing measurements of productivity and quality, accessing code stability, and using these metrics to measure the success of your project.&lt;/p&gt; &lt;p&gt;LOC Counter can be used as a stand-alone client or as a Visual Studio 2005 add-in. The tool has the following features:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;It handles many different programming languages.  &lt;li&gt;It performs many different kinds of code counts.  &lt;li&gt;It handles comments, system-generated code, blank lines, and code churn.  &lt;li&gt;It connects to many different repositories.  &lt;li&gt;It provides an estimated defect density that is based on code churn.  &lt;li&gt;It is customizable. A user can change the kinds of objects that are counted during a counting task.  &lt;li&gt;It generates detailed reports. In addition, a user can export the report information to a Microsoft Office Excel® worksheet or to a Portable Document Format (PDF) file.  &lt;li&gt;It is fast. The tool can parse 10 million lines of code in less than one hour.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;It uses a Defect Density Algorithm developed from Microsoft Research that uses the following version control history of a file to estimate the software defect density with an accuracy of 89 percent:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The number of times that the selected files has been modified  &lt;li&gt;The time period in which the modifications have occurred  &lt;li&gt;The number of files that were actually modified &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;"&lt;a href="http://research.microsoft.com/research/pubs/view.aspx?type=Publication&amp;amp;id=1359" target="_blank"&gt;Use of Relative Code Churn Measures to Predict System Defect Density&lt;/a&gt;" is a PDF document from Microsoft Research that describes this.&lt;/p&gt; &lt;p&gt;An IT Showcase web cast called &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032355807&amp;amp;Culture=en-US" target="_blank"&gt;How Microsoft IT Uses Visual Studio Team System 2005 to Measure Software Code Stability&lt;/a&gt; includes a discussion on how code changes, also known as code churn, may affect the code stability of a programming project.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=104714" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Quality+Assurance/default.aspx">Quality Assurance</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Project+Management/default.aspx">Project Management</category></item><item><title>Microsoft Parallel Extensions to .NET Framework 3.5, December 2007 Community Technology Preview</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/11/29/microsoft-parallel-extensions-to-net-framework-3-5-december-2007-community-technology-preview.aspx</link><pubDate>Thu, 29 Nov 2007 23:38:48 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:103917</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/103917.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=103917</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=103917</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba" target="_blank"&gt;Parallel Extensions to the .NET Framework&lt;/a&gt; is a managed programming model for data parallelism, task parallelism, and coordination on parallel hardware unified by a common work scheduler. Parallel Extensions makes it easier for developers to write programs that scale to take advantage of parallel hardware by providing improved performance as the numbers of cores and processors increase without having to deal with many of the complexities of today’s concurrent programming models. &lt;/p&gt; &lt;p&gt;Parallel Extensions provides library based support for introducing concurrency into applications written with any .NET language, including but not limited to C# and Visual Basic. &lt;/p&gt; &lt;p&gt;ParallelFX runs on .NET FX 3.5, and relies on features available in C# 3.0 and VB 9.0 and includes:  &lt;ul&gt; &lt;li&gt;Imperative data and task parallelism APIs, including parallel &lt;i&gt;for&lt;/i&gt; and &lt;i&gt;foreach&lt;/i&gt; loops, to make the transition from sequential to parallel programs simpler.  &lt;li&gt;Declarative data parallelism in the form of a data parallel implementation of LINQ-to-Objects.&amp;nbsp; This allows you to run LINQ queries on multiple processors. (PLINQ)  &lt;li&gt;First class tasks that can be used to schedule, wait on, and cancel parallel work.  &lt;li&gt;New concurrency runtime used across the library to enable lightweight tasks and effectively map and balance the concurrency expressed in code to available concurrent resources on the execution platform.  &lt;li&gt;Several great examples of how to use parallelism in real world problems to obtain impressive speedups, including a raytracer, Sudoku puzzle generator, and other simple puzzle solvers and smaller samples.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Resources:&lt;br&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&amp;amp;"&gt;Download Here&lt;/a&gt;&lt;br&gt;&lt;a href="http://blogs.msdn.com/pfxteam/"&gt;Parallel Extensions Team Blog&lt;/a&gt;&lt;br&gt;&lt;a href="http://msdn2.microsoft.com/en-us/concurrency/" target="_blank"&gt;MSDN Parallel Computing Developer Center&lt;/a&gt;&lt;br&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/10/Futures/default.aspx"&gt;MSDN Magazine Article: Parallel Performance: Optimize Managed Code for Multi-Core Machines&lt;/a&gt;&lt;br&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/10/PLINQ/default.aspx"&gt;MSDN Magazine Article: Parallel LINQ: Running Queries on Multi-Core Processors&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=633F9F08-AAD9-46C4-8CAE-B204472838E1&amp;amp;displaylang=en"&gt;The Manycore Shift whitepaper&lt;/a&gt;&lt;br&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1986&amp;amp;SiteID=1"&gt;MSDN Forums: Parallel Extensions to the .NET Framework&lt;/a&gt;&lt;br&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1985&amp;amp;SiteID=1"&gt;MSDN Forums: Parallel Computing General forum&lt;/a&gt;&lt;br&gt;&lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=516"&gt;Parallel Extensions to the .NET Framework Connect Site&lt;/a&gt;&lt;br&gt;&lt;a href="http://channel9.msdn.com/Showforum.aspx?forumid=38&amp;amp;tagid=269" target="_blank"&gt;Channel9 Parallel Extension Videos&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=103917" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Parallel+Extensions/default.aspx">Parallel Extensions</category></item><item><title>Farseer Physics Engine for XNA and Silverlight (And .NET in General)</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/11/20/farseer-physics-engine-for-xna-and-silverlight-and-net-in-general.aspx</link><pubDate>Tue, 20 Nov 2007 15:11:43 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:100375</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/100375.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=100375</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=100375</wfw:comment><description>&lt;p&gt;The &lt;a href="http://www.codeplex.com/FarseerPhysics" target="_blank"&gt;Farseer Physics Engine&lt;/a&gt; is an easy to use 2D physics engine designed for &lt;b&gt;&lt;a href="http://msdn.microsoft.com/xna/" target="_blank"&gt;Microsoft’s XNA&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href="http://silverlight.net/" target="_blank"&gt;Silverlight&lt;/a&gt;&lt;/b&gt; platforms. The Farseer Physics Engine focuses on simplicity, useful features, and enabling the creation of fun, dynamic games.&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;General&lt;/b&gt;  &lt;ul&gt; &lt;li&gt;Easy To Use!  &lt;li&gt;Support for XNA (XBOX 360 and Windows)  &lt;li&gt;Support for Silverlight (1.1 and above)  &lt;li&gt;Support for Managed .Net Languages In General &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;b&gt;Collison&lt;/b&gt;  &lt;ul&gt; &lt;li&gt;Concave and Convex Polygons Supported  &lt;li&gt;Multiple Collision Geometries Per Body  &lt;li&gt;Collision Categories For Complex Interaction Between Physics Objects  &lt;li&gt;Collision Callback Mechanism &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;b&gt;Dynamics&lt;/b&gt;  &lt;ul&gt; &lt;li&gt;Joints  &lt;ul&gt; &lt;li&gt;Revolute Joint (body to body or fixed to world)  &lt;li&gt;Angle Joint (body to body or fixed to world)  &lt;li&gt;Slider (Prismatic) Joint  &lt;li&gt;Pin (Distance) Joint &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Force Controllers  &lt;ul&gt; &lt;li&gt;Linear Spring  &lt;li&gt;Angular Spring  &lt;li&gt;Easy To Build Custom Force Controllers (Explosions, Steering Behaviors, etc.) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;b&gt;Support and Debugging&lt;/b&gt;  &lt;ul&gt; &lt;li&gt;Samples Framework With Samples Covering Most Major Engine Features. (XNA and Silverlight versions)  &lt;li&gt;Debug Viewer To View All Major Physics Objects (part of samples framework)  &lt;li&gt;User Manual (in progress) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://www.infoq.com/news/2007/11/Farseer" target="_blank"&gt;Interview from InfoQ&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Although intended for games, a physics engine can be used for UI effects too. This would generally be very useful to create cool effects, especially on Silverlight applications.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=100375" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Visual Studio 2008 RTM Is Released</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/11/19/visual-studio-2008-rtm-is-released.aspx</link><pubDate>Mon, 19 Nov 2007 19:54:50 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:99849</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/99849.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=99849</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=99849</wfw:comment><description>&lt;p&gt;As the title says, it is released on &lt;a href="http://msdn2.microsoft.com/en-ca/subscriptions/default.aspx" target="_blank"&gt;MSDN Subscriptions&lt;/a&gt;. Go get it everyone! &lt;/p&gt; &lt;p&gt;Visual Studio Team System 2008 Team Foundation Server Trial (x86 and x64 WoW) - DVD (English)&lt;br&gt;Visual Studio Team System 2008 Team Suite Trial (x86 and x64 WoW) - DVD (English)&lt;br&gt;Visual Studio Team System 2008 Test Load Agent Trial (x86 and x64 WoW) - CD (English)&lt;br&gt;Visual Studio 2008 Standard Edition (x86 and x64 WoW) - DVD (English)&lt;br&gt;Visual Studio 2008 Express Editions (x86 and x64 WoW) - DVD (English)&lt;br&gt;Visual Studio 2008 Professional Edition (x86 and x64 WoW) - DVD (English)&lt;br&gt;MSDN Library for Visual Studio 2008 (x86 and x64 WoW) - DVD (English)&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=99849" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Visual+Studio+Team+Foundation/default.aspx">Visual Studio Team Foundation</category></item><item><title>Microsoft SOA &amp;amp; BP 2007 conference Presentations available</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/11/19/microsoft-soa-amp-bp-2007-conference-presentations-available.aspx</link><pubDate>Mon, 19 Nov 2007 05:26:12 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:99665</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/99665.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=99665</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=99665</wfw:comment><description>&lt;p&gt;Here is the link to all the &lt;a href="http://www.mssoaandbpconference.com/PPT_presentations.htm" target="_blank"&gt;presentations&lt;/a&gt; from the &lt;a href="http://www.mssoaandbpconference.com" target="_blank"&gt;Microsoft SOA and Business Process Conference 2007&lt;/a&gt; that was held in Redmond from October 29th to November 2nd.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/ssfartz/"&gt;Steve Sfartz&lt;/a&gt;, architect evangelist at Microsoft France, mentions that access is available until 11/21/2007.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=99665" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Free ASP.NET Pro Magazine (PDF Version)</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/11/18/free-asp-net-pro-magazine-pdf-version.aspx</link><pubDate>Sun, 18 Nov 2007 22:07:43 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:99556</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/99556.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=99556</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=99556</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.aspnetpro.com/adredir.asp?url=/PDF/Issues/aspSEP2007.pdf"&gt;&lt;img hspace="25" src="http://www.aspnetpro.com/PDF/ASP_200709.gif" align="top" border="0"&gt;&lt;/a&gt;&lt;a href="http://www.aspnetpro.com/adredir.asp?url=/PDF/Issues/aspOCT2007.pdf"&gt;&lt;img hspace="25" src="http://www.aspnetpro.com/PDF/ASP_200710.gif" border="0"&gt;&lt;/a&gt;&lt;a href="http://www.aspnetpro.com/adredir.asp?url=/PDF/Issues/aspNOV2007.pdf"&gt;&lt;img hspace="25" src="http://www.aspnetpro.com/PDF/ASP_200711.gif" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Click on the issues for the direct download link.&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=99556" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Keybinding Posters and .NET 3.5 Namespace Posters</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/11/15/keybinding-posters-and-net-3-5-namespace-posters.aspx</link><pubDate>Thu, 15 Nov 2007 08:40:47 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:98365</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/98365.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=98365</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=98365</wfw:comment><description>&lt;p&gt;Here are some nice keybinding posters from &lt;a href="http://www.microsoft.com/downloads" target="_blank"&gt;Microsoft Downloads&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d255b8cf1-f6bd-4b55-bb42-dd1a69315833%26DisplayLang%3den"&gt;Visual Basic 2008 Keybinding Poster&lt;/a&gt;  &lt;p&gt;Printable wall poster containing list of useful keyboard shortcuts for Visual Basic 2008 developers  &lt;p&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d4411bbfc-0e3c-42b3-bd05-af1d292c986f%26DisplayLang%3den"&gt;Visual C++ 2008 Keybinding Poster&lt;/a&gt;  &lt;p&gt;List of keybidings for Visual C++ language within Visual Studio and Visual C++ Express 2008  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=3&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3de5f902a8-5bb5-4cc6-907e-472809749973%26DisplayLang%3den"&gt;Visual C# 2008 Poster&lt;/a&gt;  &lt;p&gt;Wall chart showing useful keyboard shortcuts for Visual C# programming language  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=9&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d7b645f3a-6d22-4548-a0d8-c2a27e1917f8%26DisplayLang%3den"&gt;NET Namespaces Poster&lt;/a&gt;  &lt;p&gt;The .NET Framework 3.5 Common Namespaces and Types Poster&lt;/p&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=98365" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>(In)Secure Issue #14 Released</title><link>http://blogs.objectsharp.com/cs/blogs/jlee/archive/2007/11/14/in-secure-issue-14-released.aspx</link><pubDate>Thu, 15 Nov 2007 03:17:56 GMT</pubDate><guid isPermaLink="false">4e5c2b59-774a-4189-b009-1bb73818b493:98297</guid><dc:creator>jlee</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.objectsharp.com/cs/blogs/jlee/comments/98297.aspx</comments><wfw:commentRss>http://blogs.objectsharp.com/cs/blogs/jlee/commentrss.aspx?PostID=98297</wfw:commentRss><wfw:comment>http://blogs.objectsharp.com/cs/blogs/jlee/rsscomments.aspx?PostID=98297</wfw:comment><description>&lt;p&gt;&lt;a href="http://www.net-security.org/insecuremag.php"&gt;(IN)SECURE Magazine&lt;/a&gt; is a freely available digital security magazine discussing some of the hottest information security topics. Issue 14, has just been released. &lt;/p&gt; &lt;p&gt;The covered topics are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Attacking consumer embedded devices  &lt;li&gt;Review: QualysGuard  &lt;li&gt;CCTV: technology in transition - analog or IP?  &lt;li&gt;Interview with Robert "RSnake" Hansen, CEO of SecTheory  &lt;li&gt;The future of encryption  &lt;li&gt;Endpoint threats  &lt;li&gt;Review: Kaspersky Internet Security 7.0  &lt;li&gt;Interview with Amol Sarwate, Manager, Vulnerability Research Lab, Qualys Inc.  &lt;li&gt;Network access control: bridging the network security gap  &lt;li&gt;Change and configuration solutions aid PCI auditors  &lt;li&gt;Data protection and identity management  &lt;li&gt;Information security governance: the nuts and bolts  &lt;li&gt;Securing moving targets  &lt;li&gt;6 CTOs, 10 Burning Questions: AirDefense, AirMagnet, Aruba Networks, AirTight Networks, Fortress Technologies and Trapeze Networks  &lt;li&gt;The need for a new security approach &lt;li&gt;Data insecurity: lessons learned? &lt;li&gt;Wi-Fi safety and security&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.objectsharp.com/cs/aggbug.aspx?PostID=98297" width="1" height="1"&gt;</description><category domain="http://blogs.objectsharp.com/cs/blogs/jlee/archive/tags/Security/default.aspx">Security</category></item></channel></rss>
