<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>InterKnowlogy Bloggers</title><description>.NET by .Text</description><link>http://blogs.interknowlogy.com/MainFeed.aspx</link><generator>.Text Version 0.95.2004.111</generator><item><title>My blog has moved</title><link>http://blogs.interknowlogy.com/bradcunningham/archive/2008/10/22/25121.aspx</link><pubDate>Wed, 22 Oct 2008 16:11:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/bradcunningham/archive/2008/10/22/25121.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/bradcunningham/comments/25121.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/bradcunningham/comments/commentRss/25121.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/bradcunningham/archive/2008/10/22/25121.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/bradcunningham/services/trackbacks/25121.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/bradcunningham/rss.aspx">Blog?</source><description>&lt;p&gt;The new location is &lt;a title="http://team.interknowlogy.com/blogs/bradcunningham/" href="http://team.interknowlogy.com/blogs/bradcunningham/"&gt;http://team.interknowlogy.com/blogs/bradcunningham/&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Update your bookmarks and feed readers.&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/bradcunningham/aggbug/25121.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Brad Cunningham</dc:creator></item><item><title>My Blog has Moved</title><link>http://blogs.interknowlogy.com/billsheldon/archive/2008/10/06/25116.aspx</link><pubDate>Tue, 07 Oct 2008 05:58:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/billsheldon/archive/2008/10/06/25116.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/billsheldon/comments/25116.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/billsheldon/comments/commentRss/25116.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/billsheldon/archive/2008/10/06/25116.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/billsheldon/services/trackbacks/25116.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/billsheldon/rss.aspx">One Nerd's Thoughts</source><description>&lt;P align=left&gt;The InterKnowlogy copy of Bill Sheldon's blog has moved. The past posts have been maintained for historical and linking purposes please join us at the new Team InterKnowlogy blog site.&lt;/P&gt;My New Blog address is: &amp;nbsp;&amp;nbsp;&lt;A href="http://team.interknowlogy.com/blogs/billsheldon"&gt;http://team.interknowlogy.com/blogs/BillSheldon&lt;/A&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P align=left&gt;If you are not redirected automatically within a few seconds then please click on the link above.&lt;/P&gt;
&lt;SCRIPT type=text/javascript&gt;
&lt;!-- setTimeout('Redirect()',4000);
function Redirect()
{
 location.href = 'http://team.interknowlogy.com/blogs/billsheldon';
}
// --&gt;&lt;/SCRIPT&gt;&lt;img src ="http://blogs.interknowlogy.com/billsheldon/aggbug/25116.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Bill Sheldon</dc:creator></item><item><title>New Blog Site</title><link>http://blogs.interknowlogy.com/johnbowen/archive/2008/10/01/25104.aspx</link><pubDate>Wed, 01 Oct 2008 20:03:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/johnbowen/archive/2008/10/01/25104.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/johnbowen/comments/25104.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/johnbowen/comments/commentRss/25104.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/johnbowen/archive/2008/10/01/25104.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/johnbowen/services/trackbacks/25104.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/johnbowen/rss.aspx">John Bowen's Blog</source><description>&lt;P&gt;My blog has moved to &lt;A href="http://team.interknowlogy.com/blogs/johnbowen/"&gt;team.interknowlogy.com/blogs/johnbowen/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Check it out for recent posts!&lt;/P&gt;&lt;img src ="http://blogs.interknowlogy.com/johnbowen/aggbug/25104.aspx" width = "1" height = "1" /&gt;</description><dc:creator>John Bowen</dc:creator></item><item><title>My Blog has moved</title><link>http://blogs.interknowlogy.com/scottlarson/archive/2008/08/13/24986.aspx</link><pubDate>Wed, 13 Aug 2008 20:46:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/scottlarson/archive/2008/08/13/24986.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/scottlarson/comments/24986.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/scottlarson/comments/commentRss/24986.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/scottlarson/archive/2008/08/13/24986.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/scottlarson/services/trackbacks/24986.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/scottlarson/rss.aspx">Scott Larson</source><description>&lt;p&gt;&lt;a title="http://team.interknowlogy.com/blogs/scottlarson" href="http://team.interknowlogy.com/blogs/scottlarson/default.aspx"&gt;http://team.interknowlogy.com/blogs/scottlarson/default.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/scottlarson/aggbug/24986.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Scott Larson</dc:creator></item><item><title>Blog Has Moved</title><link>http://blogs.interknowlogy.com/adamcalderon/archive/2008/08/07/24918.aspx</link><pubDate>Fri, 08 Aug 2008 04:10:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/adamcalderon/archive/2008/08/07/24918.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/adamcalderon/comments/24918.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/adamcalderon/comments/commentRss/24918.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/adamcalderon/archive/2008/08/07/24918.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/adamcalderon/services/trackbacks/24918.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/adamcalderon/rss.aspx">Adam Calderon</source><description>&lt;p&gt;My blog has moved to our new blog server &lt;a href="http://team.interknowlogy.com/blogs/adamcalderon/default.aspx"&gt;http://team.interknowlogy.com/blogs/adamcalderon/default.aspx&lt;/a&gt; so please look there from now on for all of my blog posts.&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/adamcalderon/aggbug/24918.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Adam Calderon</dc:creator></item><item><title>Book Chapter Excerpt</title><link>http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/28/24771.aspx</link><pubDate>Tue, 29 Jul 2008 00:57:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/28/24771.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/adamcalderon/comments/24771.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/adamcalderon/comments/commentRss/24771.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/28/24771.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/adamcalderon/services/trackbacks/24771.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/adamcalderon/rss.aspx">Adam Calderon</source><description>CoDe magazine has an excerpt from Chapter 11 &lt;a href="http://www.code-magazine.com/Article.aspx?quickid=080063"&gt;Adding Client Capabilities to Server Controls Using the ASP.NET AJAX Control Toolkit&lt;/a&gt;&amp;nbsp;of our book. &lt;img src ="http://blogs.interknowlogy.com/adamcalderon/aggbug/24771.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Adam Calderon</dc:creator></item><item><title>Silverlight IE Pains on Windows 2008</title><link>http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/12/24439.aspx</link><pubDate>Sat, 12 Jul 2008 19:20:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/12/24439.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/adamcalderon/comments/24439.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/adamcalderon/comments/commentRss/24439.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/12/24439.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/adamcalderon/services/trackbacks/24439.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/adamcalderon/rss.aspx">Adam Calderon</source><description>&lt;p&gt;So I got an environment up an running to do some work with Silverlight Beta 2 and also SP1 for VS 2008. I decided to do all of this on a VMWare image with Windows 2008. Man was this a headache. The extra super stringent security on Windows 2008 made this an absolute pain. Just so others don&amp;rsquo;t have to go through the same thing I documented what you have to do to get things to work.&lt;/p&gt;
&lt;p&gt;1. Turn off IE Enhanced Security (ESC) for Administrators (this assumes your are developing as an admin). This will enable you to open websites without getting asked if it&amp;rsquo;s ok. To do this go to Administrative Tools and open Server Manager. Click the Configure IE ESC link as shown below in red. This opens the dialog that allows you to turn off ESC for administrators and for users. I just turned it off for administrators on my box since that is what I am developing as.&lt;/p&gt;
&lt;p&gt;&lt;img alt="ServerManagerIEESCsetting" src="http://blogs.interknowlogy.com/downloads/adamcalderon/ServerManagerIEESCsetting.gif" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;2. Now that you have that done run you application in debug mode (which won&amp;rsquo;t show the Silverlight control yet) and add &amp;ldquo;http://localhost&amp;rdquo; to your trusted sites. I did this so that all of the other websites I hit will still have the standard &amp;ldquo;bullet proof&amp;rdquo; security. To get to the security dialog shown double click the Internet icon. Then select the trusted sites icon and finally add &amp;ldquo;http://localhost&amp;rdquo; to the trusted sites.&lt;/p&gt;
&lt;p&gt;&lt;img alt="IESettings2008Silverlight" src="http://blogs.interknowlogy.com/downloads/adamcalderon/IESettings2008Silverlight.gif" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Once I did this I was finally able to rock and roll with Silverlight. If I remember right you will get a little warning just below the toolbar that ESC is disabled. If you select it you can turn this warning off. &lt;/p&gt;
&lt;p&gt;I hope this helps.&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/adamcalderon/aggbug/24439.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Adam Calderon</dc:creator></item><item><title>Book Sales on Amazon</title><link>http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/09/24405.aspx</link><pubDate>Wed, 09 Jul 2008 22:18:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/09/24405.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/adamcalderon/comments/24405.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/adamcalderon/comments/commentRss/24405.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/adamcalderon/archive/2008/07/09/24405.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/adamcalderon/services/trackbacks/24405.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/adamcalderon/rss.aspx">Adam Calderon</source><description>&lt;p&gt;The book &lt;a href="http://seejoelprogram.wordpress.com/"&gt;Joel Rumerman&lt;/a&gt;&amp;nbsp;and I wrote &lt;/p&gt;
&lt;p&gt;&lt;img alt="BookCoverImage Blog" src="http://blogs.interknowlogy.com/downloads/adamcalderon/BookCoverImage_20Blog.gif" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/Advanced-ASP-NET-Server-Controls-Framework/dp/0321514440/ref=pd_ts_b_4?ie=UTF8&amp;amp;s=books"&gt;Advanced ASP.NET AJAX Server Controls For .NET Framework 3.5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;seems to be doing quite well wth only 4 days being on sale. Joel sent me an email earlier today with links to the latest statistics. I was quite suprised. Thanks to everyone!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/gp/bestsellers/books/379359011/ref=pd_zg_hrsr_b_2_5_last"&gt;Top AJAX Best Sellers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/gp/bestsellers/books/379360011/ref=pd_zg_hrsr_b_1_5_last"&gt;Top ASP.NET Best Sellers&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/adamcalderon/aggbug/24405.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Adam Calderon</dc:creator></item><item><title>So Cal Code Camp Slides and Code</title><link>http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/30/24326.aspx</link><pubDate>Tue, 01 Jul 2008 00:39:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/30/24326.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/adamcalderon/comments/24326.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/adamcalderon/comments/commentRss/24326.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/30/24326.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/adamcalderon/services/trackbacks/24326.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/adamcalderon/rss.aspx">Adam Calderon</source><description>&lt;p&gt;Thanks to everyone who attended my sessions at code camp last weekend. Once again Woody and company did a great job.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Overview of the Composite Application Guidance for WPF &lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:3fd4da7a-0695-4238-a9ab-c1ad3afa9b7f" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;p&gt; &lt;a href="http://blogs.interknowlogy.com/downloads/adamcalderon/SoCalCodeCampSlidesandCode_F681/CALOverview.pptx" target="_blank"&gt;Power Point Slide&lt;/a&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;a href="http://www.codeplex.com/CompositeWPF"&gt;Composite Application Guidance for WPF&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Building Control Extenders using the Ajax Control Toolkit&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:4541315b-0882-437f-8db3-9097039252db" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;p&gt; &lt;a href="http://blogs.interknowlogy.com/downloads/adamcalderon/SoCalCodeCampSlidesandCode_F681/AJAXImageRotatorDemo.zip" target="_blank"&gt;Power Point Slide&lt;/a&gt;&lt;br /&gt; &lt;a href="http://blogs.interknowlogy.com/downloads/adamcalderon/SoCalCodeCampSlidesandCode_F681/ToolkitImageRotatorDemo.zip" target="_blank"&gt;AJAX Version of Custom Control&lt;/a&gt;&lt;br /&gt; &lt;a href="http://blogs.interknowlogy.com/downloads/adamcalderon/SoCalCodeCampSlidesandCode_F681/CustomControls.ppt" target="_blank"&gt;Toolkit Version of Custom Control&lt;/a&gt;&lt;/p&gt;&lt;/div&gt; &lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:97065035-1204-4478-8f11-8d21e4b65e89" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;p&gt; &lt;a href="http://blogs.interknowlogy.com/downloads/adamcalderon/SoCalCodeCampSlidesandCode_F681/CustomControls_3.ppt" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/adamcalderon/aggbug/24326.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Adam Calderon</dc:creator></item><item><title>San Diego Code Camp 2008 Resources</title><link>http://blogs.interknowlogy.com/johnbowen/archive/2008/06/29/24322.aspx</link><pubDate>Sun, 29 Jun 2008 18:45:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/johnbowen/archive/2008/06/29/24322.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/johnbowen/comments/24322.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/johnbowen/comments/commentRss/24322.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/johnbowen/archive/2008/06/29/24322.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/johnbowen/services/trackbacks/24322.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/johnbowen/rss.aspx">John Bowen's Blog</source><description>&lt;P&gt;Thanks to everyone who attended my sessions!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Application Layout in XAML:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/CodeCampSD08/PanelsHandout.zip"&gt;Handout &lt;/A&gt; | &lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/CodeCampSD08/Layouts.zip"&gt;Code&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Also look at &lt;A href="http://blogs.interknowlogy.com/johnbowen/archive/2007/08/27/21132.aspx"&gt;this previous post&lt;/A&gt; for more on sharing sizing between Grids.&lt;/P&gt;
&lt;P&gt;We didn't get to cover the FrameworkElement layout properties so check out the second application in the sample code to get a feel for how they work.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Building Controls for WPF:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/CodeCampSD08/Building Controls for WPF.zip"&gt;Slides&lt;/A&gt; | &lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/CodeCampSD08/Controls.zip"&gt;Code&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You can also download the full class library reference poster &lt;A href="http://interknowlogy.com/Pages/WindowsPresentation.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WPF Data Binding:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/CodeCampSD08/WPF Data Binding.zip"&gt;Slides&lt;/A&gt; | &lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/CodeCampSD08/DataBinding.zip"&gt;Code&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Also look at my &lt;A href="http://blogs.interknowlogy.com/johnbowen/category/130.aspx"&gt;other blog posts&lt;/A&gt; for more examples and explanations.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Creating Responsive Desktop Apps:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/CodeCampSD08/ResponsiveApps.zip"&gt;Code&lt;/A&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;&lt;img src ="http://blogs.interknowlogy.com/johnbowen/aggbug/24322.aspx" width = "1" height = "1" /&gt;</description><dc:creator>John Bowen</dc:creator></item><item><title>Speaking at San Diego Code Camp</title><link>http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/23/24311.aspx</link><pubDate>Tue, 24 Jun 2008 00:09:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/23/24311.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/adamcalderon/comments/24311.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/adamcalderon/comments/commentRss/24311.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/23/24311.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/adamcalderon/services/trackbacks/24311.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/adamcalderon/rss.aspx">Adam Calderon</source><description>&lt;p&gt;I will be presenting on two very different topics this year at the &lt;a href="http://www.socalcodecamp.com/"&gt;SoCal Code Camp in San Diego&lt;/a&gt; that reflect much of what I have been doing over the last 6 months or so. My first session &lt;a href="http://www.socalcodecamp.com/session.aspx?sid=d98feb74-3060-453e-8a42-261abeee7258"&gt;Building Control Extenders using the Ajax Control Toolkit&lt;/a&gt; stems from the work I have been doing on my book and will be a fairly comprehensive look at creating controls using the Ajax Control Toolkit. My second session &lt;a href="http://www.socalcodecamp.com/session.aspx?sid=54a072ca-b05a-491d-a41c-e61ca5f0d47d"&gt;Overview of the Composite Application Guidance for WPF&lt;/a&gt; covers the work I have been doing with the Patterns and Practices Group on building composite applications in WPF. &lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/adamcalderon/aggbug/24311.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Adam Calderon</dc:creator></item><item><title>ASP.NET AJAX Controls Book Done!</title><link>http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/23/24310.aspx</link><pubDate>Mon, 23 Jun 2008 23:54:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/23/24310.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/adamcalderon/comments/24310.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/adamcalderon/comments/commentRss/24310.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/adamcalderon/archive/2008/06/23/24310.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/adamcalderon/services/trackbacks/24310.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/adamcalderon/rss.aspx">Adam Calderon</source><description>&lt;p&gt;I thought this day would never come. &lt;a href="http://seejoelprogram.wordpress.com/"&gt;Joel Rumerman&lt;/a&gt; and I have finally completed our book &lt;a href="http://www.amazon.com/Advanced-ASP-NET-Server-Controls-Framework/dp/0321514440/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1214263982&amp;amp;sr=8-1"&gt;Advanced ASP.NET AJAX Server Controls For .NET Framework 3.5&lt;/a&gt; that hits the book shelves the first part of next month. This has been a exciting experience for the both of us and we hope you enjoy reading it as much as we did writing it. &lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/adamcalderon/aggbug/24310.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Adam Calderon</dc:creator></item><item><title>Getting to Know Your Resource Tree</title><link>http://blogs.interknowlogy.com/johnbowen/archive/2008/05/30/24216.aspx</link><pubDate>Fri, 30 May 2008 15:48:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/johnbowen/archive/2008/05/30/24216.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/johnbowen/comments/24216.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/johnbowen/comments/commentRss/24216.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/johnbowen/archive/2008/05/30/24216.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/johnbowen/services/trackbacks/24216.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/johnbowen/rss.aspx">John Bowen's Blog</source><description>&lt;P class=bodytext&gt;The XAML Resources in WPF and Silverlight can be a powerful tool but are often misunderstood and can cause lots of problems if not managed properly. The first point of confusion with Resources is that the term "resources" already has so many other meanings, including:&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.272in; DIRECTION: ltr; FONT-FAMILY: Calibri; unicode-bidi: embed"&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; LIST-STYLE-TYPE: disc"&gt;&lt;SPAN class=bodytext&gt;Project items compiled as Resource&lt;/SPAN&gt; 
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; LIST-STYLE-TYPE: disc"&gt;&lt;SPAN class=bodytext&gt;Linked and embedded resources (resx files)&lt;/SPAN&gt; 
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; LIST-STYLE-TYPE: disc"&gt;&lt;SPAN class=bodytext&gt;Hardware resources, and specifically graphics in WPF&lt;/SPAN&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;BR&gt;
&lt;P class=bodytext&gt;So first to clarify what we're talking about here: XAML Resources are any .NET object that is declared in a ResourceDictionary. This is generally done in XAML but objects can also be added to a ResourceDictionary in code. ResourceDictionaries can be found on any FrameworkElement derived object (and also on Application) in the form of the Resources DependencyProperty. &lt;/P&gt;
&lt;P class=bodytext&gt;Resources are typically accessed with the StaticResource or DynamicResource MarkupExtensions in XAML. I won't get too much into the details of these except for a few key points. DynamicResource will update if the referenced Resource changes which can be useful but generally just causes extra overhead that can create performance and memory problems. StaticResource requires that the referenced Resource exist in the resource tree at load time. More on that later. StaticResource can cause compile-time errors for missing Resources while Dynamic will just use a default value until the Resource becomes available. StaticResource should always be your default choice unless you have a specific need for the behavior of Dynamic (Blend always uses Dynamic so be prepared to make lots of switches in what it generates).&lt;/P&gt;
&lt;P class=bodytext&gt;Next, what is the Resource tree? WPF UI is inherently hierarchical. Each UI is made of a logical tree that is then used to render a visual tree. This means that each element in your UI has a clear parent structure with a single path up the hierarchy to the root Window element (or NavigationWindow, Page&amp;#8230;) and then an Application object at the very top. The Resources property of each parent element is made available to every child element so that elements can access any Resource that is declared anywhere in its parent hierarchy. This makes it possible to share Resources between elements in specific areas while not requiring the memory and performance penalty of declaring them application-wide.&lt;/P&gt;
&lt;P class=bodytext&gt;To get the maximum reuse benefits while not overly impacting performance, resources need to be carefully managed and organized. In addition to resources from the parent hierarchy, the MergedDictionary feature allows you to extract any Resource to a separate ResourceDictionary file that can then be imported to specific elements that need it. This can allow you to share XAML between elements at a lower level but it can also cause situations where multiple instances of a ResourceDictionary are created by elements under a common parent, consuming more memory and initialization time than if the ResourceDictionary were merged once into the parent.&lt;/P&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;

&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Application.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;="/Resources/Brushes.xaml"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;="/MyCompany.MyApplication;component/Resources/Styles.xaml"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&amp;lt;/&lt;span class="html"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;/&lt;span class="html"&gt;ResourceDictionary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;/&lt;span class="html"&gt;Application.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;P class=bodytext&gt;Once you've created and structured your Resources you can get to the important part: actually using them. The most compelling reason to use a Resource is reuse but even in cases where a resource is used once they can still provide value by simplifying your XAML's structure. Declaring things like templates and brushes as resources rather than inline can turn a deep hierarchy into a single line of XAML and can also introduce a descriptive name for a sub-section of XAML, making it more readable (it's no coincidence that this sounds like refactoring methods). There are also cases (ItemsControl ItemTemplates in particular) where declaring things in-line can actually break them but simply moving them to resources will fix the problem.&lt;/P&gt;
&lt;P class=bodytext&gt;The primary method of accessing a Resource is by Key. Keys are specified by the x:Key attribute on the element that is declared as a Resource. Keys are a required attribute for most types of resources and will cause compiler errors if missing. Static and DynamicResource references rely on Keys to find resources. &lt;/P&gt;
&lt;P class=bodytext&gt;The other method of accessing resources instead relies on a type that is associated with a Style (TargetType) or DataTemplate (DataType). When no x:Key is specified on one of these types they are assigned an implicit key that will cause them to be applied to any object of the specified type in whose Resource tree they exist. This can be very powerful but also cause problems that are very hard to locate. For example, if someone creates a Style with TargetType of Button that sets Width to 100 and puts it in App.xaml, suddenly all Buttons application-wide will be fixed at 100 unless they have some other explicit setting for Width. Now someone trying to figure out why their Button text is getting cropped needs to figure out where that fixed width is coming from but gets no clues from the settings on the Button itself. It's pretty easy to go check Window.Resources or App.xaml but now imagine the Style is located in one of 10 ResourceDictionary files that are merged into App.xaml. Implicit key resources should be used very carefully and be declared only in well known locations to avoid this sort of problem.&lt;/P&gt;
&lt;P class=bodytext&gt;The first thing you should do when tracking down an issue with a named (explicit Key) Resource is to make sure the reference is using StaticResource rather than DynamicResource. This can often turn a mysterious run-time behavior into a compiler error, or in some cases a run-time exception, telling you immediately that the Resource doesn't exist in the current Resource tree. If this happens it can most often be fixed simply by merging in a ResourceDictionary or just moving the Resource declaration itself. &lt;/P&gt;
&lt;P class=bodytext&gt;If you find yourself getting into problems with name collisions (i.e. 10 different people created "ButtonStyle1" in Blend and spread them all over the app) it can help to actually diagram out the resource tree for the element in question (on paper or in your head) to find out which one is really being used. It starts at the top with App.xaml, then the Window or Page, then local parent controls' resources, then the element itself. Inside each of these sections include any MergedDictionaries and anything in turn merged into those ResourceDictionaries. Once you can see the whole tree, whatever is declared last takes precedence: this goes for inside files as well as down the tree. &lt;BR&gt;&lt;IMG alt="Resource Diagram" src="/downloads/johnbowen/images/ResourceTree.png"&gt;&lt;BR&gt;So if ButtonStyle1 is declared in Common.xaml (A) that is the first file merged into App.xaml but also as the last local Resource in App.xaml (B) and again in CustomStyles.xaml (C) merged into Window1.xaml then A and B are going to be ignored and C will be used. If you then rename C to ButtonStyle2, A will be ignored and B will be used. Using Visual Studio's Find in Files is usually the quickest way to find name collisions or just track down lost resources (use x:Key="MyResourceKey" to find declarations).&lt;/P&gt;&lt;img src ="http://blogs.interknowlogy.com/johnbowen/aggbug/24216.aspx" width = "1" height = "1" /&gt;</description><dc:creator>John Bowen</dc:creator></item><item><title>What I am reading</title><link>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/23/24141.aspx</link><pubDate>Fri, 23 May 2008 17:54:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/23/24141.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/bradcunningham/comments/24141.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/bradcunningham/comments/commentRss/24141.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/23/24141.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/bradcunningham/services/trackbacks/24141.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/bradcunningham/rss.aspx">Blog?</source><description>&lt;p&gt;Here is the current line up:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/images/1416549013/sr=8-1/qid=1211564149/ref=dp_image_0?ie=UTF8&amp;amp;n=283155&amp;amp;s=books&amp;amp;qid=1211564149&amp;amp;sr=8-1"&gt;&lt;img height="240" alt="Born On A Blue Day: Inside the Extraordinary Mind of an Autistic Savant" src="http://ecx.images-amazon.com/images/I/51e12T12VYL._SL500_AA240_.jpg" width="240" border="0"&gt;&lt;a href="http://www.amazon.com/gp/reader/0262134748/ref=sib_dp_pt#reader-link"&gt;&lt;img height="240" alt="Designing Interactions" src="http://ecx.images-amazon.com/images/I/51l8rLs2n3L._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg" width="240" border="0"&gt;&lt;a href="http://www.amazon.com/gp/reader/1592530079/ref=sib_dp_pt#reader-link"&gt;&lt;img height="240" alt="Universal Principles of Design" src="http://ecx.images-amazon.com/images/I/41XR7HVY2AL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg" width="240" border="0"&gt;&lt;a href="http://www.amazon.com/gp/product/images/0977213315/ref=dp_image_0?ie=UTF8&amp;amp;n=283155&amp;amp;s=books"&gt;&lt;img height="240" alt="Software Creativity 2.0" src="http://ecx.images-amazon.com/images/I/518RGSRTHYL._SL500_AA240_.jpg" width="240" border="0"&gt;&lt;/a&gt;&lt;/a&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.amazon.com/Born-Blue-Day-Extraordinary-Autistic/dp/1416549013/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1211564149&amp;amp;sr=8-1" target="_blank"&gt;Born on A Blue Day : Inside the Extraordinary Mind of an Autistic Savant&lt;/a&gt; -I am only a 1/4 of the way into to this book but I am fascinated by it. I actually find myself comparing some of the author's autistic traits to my own behaviors and trying to figure out why I think the way I do. It is a very interesting exploration in the way the mind works and how people think and react. Very Highly recommended.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.amazon.com/Designing-Interactions-Bill-Moggridge/dp/0262134748" target="_blank"&gt;Designing Interactions&lt;/a&gt; - This is a monster of a read. 700 plus pages. It has been a long but interesting read. I am just about finished with it and I have really enjoyed the read. It can be read in chunks which is nice due to it's size. Short interviews with influential designers. This gives a nice way to see what a designer thinks about when creating a new product or interaction. It has given me good ideas to consider when building user interfaces. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.amazon.com/Universal-Principles-Design-William-Lidwell/dp/1592530079/ref=pd_sim_b_img_3" target="_blank"&gt;Universal Principles of Design&lt;/a&gt; - Short sweet and to the point. I really like this book as a reference guide. Some of the principles are obvious but others aren't quite so easy to see. The book takes a design principle and devotes 2 pages to it. A short summary of the principle, a reason why you would use the principle, and a real world example of where to apply it. Then on the other page a visual representation of the principle and an explanation of why the visual represents the principle. This is a highly recommend reference book. Anyone designing user interfaces or user interactions should read this IMO.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0977213315" target="_blank"&gt;Software Creativity 2.0&lt;/a&gt; - This has a been a slow read for me. I haven't read much of it so I don't have much to say on it yet. I have liked what I read but it obviously wasn't as engaging as the other books because it is the last one of the set I pickup to read. Once I catch up on it more I will update my review.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I had this idea for a book review "corner" the other day so this is my first stab at it. I will be adding a new post every once in a while when I have a new set of books to read. Tell me what you think. &lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/bradcunningham/aggbug/24141.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Brad Cunningham</dc:creator></item><item><title>Silverlight 2 and DHTML</title><link>http://blogs.interknowlogy.com/johnbowen/archive/2008/05/22/24138.aspx</link><pubDate>Fri, 23 May 2008 02:15:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/johnbowen/archive/2008/05/22/24138.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/johnbowen/comments/24138.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/johnbowen/comments/commentRss/24138.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/johnbowen/archive/2008/05/22/24138.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/johnbowen/services/trackbacks/24138.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/johnbowen/rss.aspx">John Bowen's Blog</source><description>&lt;p class="bodytext"&gt;
The purpose of Silverlight 2 in demo applications has so far primarily been to 
provide enhanced graphics to self contained applications. While the graphics 
capabilities are attention-grabbing, some of the other powerful features that 
are available seem to get overlooked. For example, Silverlight has the ability 
to interact with the HTML DOM and Javascript which allows you to use it to 
enhance existing web applications. To try out some of these features, I took a 
basic data entry form (in this case just plain HTML that&amp;#39;s not actually hooked 
up to anything on the server) and added a toolbar that gives the user some 
editing features to help fill out the form.&lt;/p&gt;
&lt;img src="/downloads/johnbowen/images/toolbar.png" alt="Toolbar" /&gt;
&lt;br /&gt;
&lt;p class="bodytext"&gt;
The toolbar provides
&lt;/p&gt;
&lt;ul style="margin-left:.375in;direction:ltr;unicode-bidi:embed;
margin-top:0in;margin-bottom:0in" type="disc"&gt;
&lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;
&lt;span class="bodytext"&gt;Unlimited Undo/Redo&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;
&lt;span class="bodytext"&gt;Clearing of all form data&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;
&lt;span class="bodytext"&gt;Saving multiple sets of the 
entire contents of the form locally on the client&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-top:0;margin-bottom:0;vertical-align:middle"&gt;
&lt;span class="bodytext"&gt;Reloading of any set of data 
that is saved on the client&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="bodytext"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p class="bodytext"&gt;
The only javascript that is required for this functionality is some boilerplate 
to connect to the Silverlight C# code.&lt;/p&gt;
&lt;p class="bodytext"&gt;
For the toolbar I used the DHTML-Silverlight connections in both directions. The 
DataCache class in the application is decorated with the ScriptableType 
attribute and has methods decorated with the ScriptableMember attribute. This is 
the first step in making code available to javascript. The next is to call 
HtmlPage.RegisterScriptableObject(&amp;quot;objectName&amp;quot;, theScriptableObjectInstance) 
from the Silverlight UserControl&amp;#39;s code-behind. A good place to do this is in a 
handler for the Loaded event. These methods are now available to call from 
javascript by getting a reference to the Silverlight application like this:&lt;/p&gt;
&lt;p class="bodytext" style="margin-left:20px"&gt;
var agEControl = document.getElementById(&amp;quot;SilverlightElementId&amp;quot;);&lt;br/&gt;
var content = agEControl.content;&lt;br/&gt;
var scriptableObject = content.objectName;&lt;/p&gt;
&lt;p class="bodytext"&gt;
Here objectName is the string used above to register the object and 
&amp;quot;SilverlightElementId&amp;quot; is the HTML id of your Silverlight control (&amp;quot;Xaml1&amp;quot; by 
default in a VS generated project). Once you have scriptableObject you can just 
call any method on it just as you would in C#.
&lt;/p&gt;
&lt;p class="bodytext"&gt;
In the scriptable methods I use the connection in the other direction to go back 
to the calling HTML and retrieve values from the page&amp;#39;s controls. This basically 
takes one step to get the current value of an element:&lt;/p&gt;
&lt;p class="bodytext" style="margin-left:20px"&gt;
HtmlElement element = HtmlPage.Document.GetElementById(&amp;quot;controlId&amp;quot;);&lt;br/&gt;
string value = element.GetAttribute(&amp;quot;value&amp;quot;);&lt;/p&gt;
&lt;p class="bodytext"&gt;
It looks just like what you would do in javascript with the exception of the 
HtmlElement and HtmlPage classes that provide the access to the DOM. HtmlElement 
allows you to do all sorts of manipulation including attaching event handlers 
and playing with the structure of elements on the page.&lt;/p&gt;
&lt;p class="bodytext"&gt;
Another interesting thing I ran into when I decided to blog this is the 
simplicity of deployment with the current structure of a Silverlight 
application. If you&amp;#39;re working in Visual Studio your application is compiled 
into a single file with a .xap extension. You probably also have a web project 
of some type to host the application. When running your application the built-in 
web server is spun up to serve up the page to the browser.&lt;/p&gt;
&lt;p class="bodytext"&gt;
If you happen to be using a plain HTML host and not using server-side code you 
can also open the .htm directly in your browser as a file. This gave me the idea 
to try xcopy deploying my app to my blog&amp;#39;s downloads folder, which is just a 
basic file share. Starting out with a minimum set of files I copied the .htm and 
.js files that make up my page (no generated files) and the .xap file in 
ClientBin. This didn&amp;#39;t work at first due I think to extension filtering that 
disallowed the browser from pulling down the xap file. Fortunately zip files are 
allowed to download and (big secret) xap files are actually just zip files 
containing your assemblies and a manifest. If you rename your xap to zip you can 
just open it up and see your dlls inside. Once I did this and adjusted the 
reference in the HTML accordingly the entire page with toolbar loaded in my 
browser over http from a simple file share! Compare this to what you need to 
stand up a simple AJAX application and you can see the advantage.&lt;/p&gt;
&lt;p class="bodytext"&gt;
Download the sample code 
&lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/ToolbarSample.zip"&gt;
HERE&lt;/a&gt;.
Try out the functional page
&lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/SLToolbar/Default.htm"&gt;
HERE&lt;/a&gt;. You&amp;#39;ll need the Silverlight 2 Beta 1 runtime (it should ask to install 
itself). Sets of data are saved by Last Name and ID so you may notice the Save 
button being enabled/disabled as you change fields. The Load and Delete buttons 
will become enabled after you save a form. The set selector is kind of clunky 
because there&amp;#39;s no ComboBox control yet in Beta 1 so I just squeezed in a small 
ListBox instead.&lt;/p&gt;
&lt;br /&gt;
&lt;p class="bodytext"&gt;
**UPDATE** - Silverlight 2 Beta 2 was just released and I've updated the functional version
and put it alongside the original &lt;A href="http://blogs.interknowlogy.com/downloads/johnbowen/SLToolbarB2Update/Default.htm"&gt;
HERE&lt;/a&gt;. **
&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/johnbowen/aggbug/24138.aspx" width = "1" height = "1" /&gt;</description><dc:creator>John Bowen</dc:creator></item><item><title>Photo Stackr (Silverlight goodness)</title><link>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/12/23998.aspx</link><pubDate>Tue, 13 May 2008 03:34:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/12/23998.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/bradcunningham/comments/23998.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/bradcunningham/comments/commentRss/23998.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/12/23998.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.interknowlogy.com/bradcunningham/services/trackbacks/23998.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/bradcunningham/rss.aspx">Blog?</source><description>&lt;p&gt;So with the release of the Silverlight 2 beta bits I finally decided to see what all the talk was about. I suppose I would consider myself an ASP.NET guy by trade. Although I have been building WPF applications for the past year or so and generally I am enjoying NOT building web applications. However, I can't hide the fact that I spent the last seven odd years building mostly ASP.NET applications. &lt;/p&gt; &lt;p&gt;So when I first heard of Silverlight and it in the same vain as flash I was skeptical to say the least. I would say I was somewhere closer to outright disgust. I spend so much time focusing on a lightweight client that offloads it's work to a controlled and decidedly beefier web server. There is no way I want to push a plug-in to a client and THEN pay the price of shoving all the assest's down the pipe and hoping their machine can handle it. but alas, I will give it a fair shake. I do like WPF after all.&lt;/p&gt; &lt;p&gt;So with that said I wanted to see what the development experience is like and what kind of things I could do with the WPF skills I had amassed.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Cue &lt;strong&gt;PhotoStackr&lt;/strong&gt; (note the gratuitous web 2.0 spelling)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;One of the things I really like with WPF, and the main thing that makes WPF so compelling to me, is that it gives you the ability to focus on user interaction and user experience and less on implementation details. This allows you to build incredible applications with minimal effort (compared to building the equivalent in WinForms). So before I show the gory details of my Silverlight application I will say that I was trying to build an application that models a known collection of data (in this case a set of photos from the flickr website) in a new / interesting way. &lt;/p&gt; &lt;p&gt;To that end Silverlight, really XAML in general, gives you the tools to visual your data quickly. For the photo stackr application I wanted to give a interesting way to view and organize multiple search results on a single page.&lt;/p&gt; &lt;p&gt;What I like about Silverlight is it changes the development paradigm on the web. With the plug-in architecture you have a stateful environment to develop to. You can write fully managed code to do things previously done on the client in JavaScript (like drag and drop)&lt;/p&gt; &lt;p&gt;The basic design idea of PhotoStackr is to have a "Photo Table", which is the main canvas of the application. On the table you will have multiple "Photo Stacks." These stacks are the result of searching the Flickr web service for a specified tag. The application will give you the ability to "un-stack" your search results so you can view all results at once. You can then zoom in on any one of the results to view the photo in more detail.&lt;/p&gt; &lt;p&gt;There is a link at the bottom of this post where you can get the entire project to view the code in more detail so I will just focus on the main points.&lt;/p&gt; &lt;p&gt;The main canvas is pretty simple I put a text block to show the title in the top left and then two custom controls, one for the search box and one for the about window. I am toggling the visibility of these controls on the button click event of the respective buttons. This brings me to my first annoyance with Silverlight. The current build doesn't support triggers. Triggers are fundamental (IMHO) to WPF. Since I am approaching Silverlight with a WPF background the lack of triggers is painfully obvious. However, Sivlerlight is still in beta so some features just aren't there. I don't know if there is a plan to support triggers in Silverlight. Personally, I think they have to be supported if they want Silverlight to follow the "Do it in markup, not in code" mantra. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Canvas &lt;/span&gt;&lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;="Black" &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="Table" &lt;/span&gt;&lt;span style="color: red"&gt;Loaded&lt;/span&gt;&lt;span style="color: blue"&gt;="Table_Loaded" &lt;/span&gt;&lt;span style="color: red"&gt;SizeChanged&lt;/span&gt;&lt;span style="color: blue"&gt;="Table_SizeChanged" &amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="Title" &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;="Photo Stackr" &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;="16" &lt;/span&gt;&lt;span style="color: red"&gt;Foreground&lt;/span&gt;&lt;span style="color: blue"&gt;="#FF686868"  &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Left&lt;/span&gt;&lt;span style="color: blue"&gt;="100" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Top&lt;/span&gt;&lt;span style="color: blue"&gt;="50" &lt;/span&gt;&lt;span style="color: red"&gt;Opacity&lt;/span&gt;&lt;span style="color: blue"&gt;=".4"/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="AddButton" &lt;/span&gt;&lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;="AddButton_Click" &lt;/span&gt;&lt;span style="color: red"&gt;Template&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;AddStackButtonTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}"  &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Left&lt;/span&gt;&lt;span style="color: blue"&gt;="100" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Top&lt;/span&gt;&lt;span style="color: blue"&gt;="650"/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="AboutButton" &lt;/span&gt;&lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;="AboutButton_Click" &lt;/span&gt;&lt;span style="color: red"&gt;Template&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;AboutButtonTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}"  &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Left&lt;/span&gt;&lt;span style="color: blue"&gt;="125" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Top&lt;/span&gt;&lt;span style="color: blue"&gt;="650"/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;local&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;MessageControl &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="About" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Left&lt;/span&gt;&lt;span style="color: blue"&gt;="250" &lt;/span&gt;&lt;span style="color: red"&gt;Visibility&lt;/span&gt;&lt;span style="color: blue"&gt;="Collapsed"/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;local&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SearchPopup &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="SearchPopup" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Left&lt;/span&gt;&lt;span style="color: blue"&gt;="100" &lt;/span&gt;&lt;span style="color: red"&gt;Visibility&lt;/span&gt;&lt;span style="color: blue"&gt;="Collapsed" /&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Canvas&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;I like the control architecture that Silverlight drives you towards. I have built the SearchPopup and the MessageControl as separate UserControls in it's own XAML file. This is nothing revolutionary, you could do this in ASP.NET with custom controls, but with the stateful environment it makes managing multiple controls much easier. The controls are more aware of the application domain data and don't need state management code to work with the rest of the application. This gives you a development experience much closer to desktop development. This is a big plus to me. &lt;/p&gt;
&lt;p&gt;When the user enters a search tag and clicks the search button I create a PolaroidStack control. This control is a canvas that has the logic to manage multiple Polaroid controls and perform the stack and un-stack behaviors. This brings me to the first programming feature that I really like about Silverlight. On the PolaroidStack control I added a static dependency property called SelectedTag&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DependencyProperty &lt;/span&gt;SelectedTagProperty = &lt;span style="color: #2b91af"&gt;DependencyProperty&lt;/span&gt;.Register(&lt;span style="color: #a31515"&gt;"SelectedTag"&lt;/span&gt;, &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: blue"&gt;string&lt;/span&gt;), &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;),OnSelectedTagChanged);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Dependency properties come from WPF and are a key component to control development. Since I have a dependency property on the PolaroidStack all I have to do in code is set the property and the change handler code in the stack control will take care of the rest.&amp;nbsp; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;PolaroidStack &lt;/span&gt;s = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PolaroidStack&lt;/span&gt;();&lt;/pre&gt;&lt;pre class="code"&gt;s.SetValue(&lt;span style="color: #2b91af"&gt;PolaroidStack&lt;/span&gt;.SelectedTagProperty, SearchPhrase.Text);
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Change handler for the PolaroidStack.SelectedTag property: &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private static void &lt;/span&gt;OnSelectedTagChanged(&lt;span style="color: #2b91af"&gt;DependencyObject &lt;/span&gt;d, &lt;span style="color: #2b91af"&gt;DependencyPropertyChangedEventArgs &lt;/span&gt;e)
{
&lt;span style="color: green"&gt;    //Reload the Polaroid Stack
&lt;/span&gt;    ((&lt;span style="color: #2b91af"&gt;PolaroidStack&lt;/span&gt;)d).LoadStack(e.NewValue.ToString());
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The nice thing about the DependencyProperty is that it can also be set in markup. If I created the PolaroidStack in markup I could set the SelectedTag property in the markup as well which would cause the stack load itself when the control is loaded (and this is exactly what I did to test the LoadStack functionality)&lt;/p&gt;
&lt;p&gt;In the LoadStack method I make a call the the &lt;a href="http://flickr.com/services/api/" target="_blank"&gt;Flickr Rest based Webservice&lt;/a&gt; passing the tag that the user passed in as the search term. The only thing to note here is that I am processing the result of the web service using LinqToXml which makes processing the XML document leaps and bounds easier then before. &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;XDocument &lt;/span&gt;doc = &lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt;.Parse(e.Result);
&lt;span style="color: blue"&gt;var &lt;/span&gt;photos = &lt;span style="color: blue"&gt;from &lt;/span&gt;results &lt;span style="color: blue"&gt;in &lt;/span&gt;doc.Descendants(&lt;span style="color: #a31515"&gt;"photo"&lt;/span&gt;)
&lt;span style="color: blue"&gt;select new
&lt;/span&gt;{
    id = results.Attribute(&lt;span style="color: #a31515"&gt;"id"&lt;/span&gt;).Value.ToString(),
    farm = results.Attribute(&lt;span style="color: #a31515"&gt;"farm"&lt;/span&gt;).Value.ToString(),
    server = results.Attribute(&lt;span style="color: #a31515"&gt;"server"&lt;/span&gt;).Value.ToString(),
    secret = results.Attribute(&lt;span style="color: #a31515"&gt;"secret"&lt;/span&gt;).Value.ToString()
};&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This snippet of code basically creates a dynamic collection and I am defining the members of the objects in the collection by selecting the attributes from the XML document. So I have a collection of Photos, the items in the collection are of type Photo. The Photo type (which is a dynamic type created by LINQ when I call select new) has string members id,farm,server, and secret. And this ends my LINQToXML lesson :), LinqToXML is really cool, for more info check &lt;a href="http://msdn.microsoft.com/en-us/library/bb308960.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After processing the web service response into a collection of Photo objects, I iterate the collection and build a new Polaroid control. The Polaroid control in a custom user control composed of an Image control, a button to control the zoom, and a border to give the look and feel of a Polaroid.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Canvas &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="110" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="91" &lt;/span&gt;&lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;="#FFFFFFFF" &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="PolariodCanvas"&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="Zoomer" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Left&lt;/span&gt;&lt;span style="color: blue"&gt;="70" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Top&lt;/span&gt;&lt;span style="color: blue"&gt;="95.666" &lt;/span&gt;&lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;="Button_Click" /&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="imageControl"  &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="75" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="75" &lt;/span&gt;&lt;span style="color: red"&gt;Stretch&lt;/span&gt;&lt;span style="color: blue"&gt;="Fill" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Top&lt;/span&gt;&lt;span style="color: blue"&gt;="8" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Left&lt;/span&gt;&lt;span style="color: blue"&gt;="8"/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="75.75" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="76.006" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Left&lt;/span&gt;&lt;span style="color: blue"&gt;="8" &lt;/span&gt;&lt;span style="color: red"&gt;Canvas.Top&lt;/span&gt;&lt;span style="color: blue"&gt;="8" &lt;/span&gt;&lt;span style="color: red"&gt;BorderBrush&lt;/span&gt;&lt;span style="color: blue"&gt;="#FF000000" &lt;/span&gt;&lt;span style="color: red"&gt;BorderThickness&lt;/span&gt;&lt;span style="color: blue"&gt;="1,1,1,1"/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Canvas&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I am also creating a rotate transform in code to randomly set the angle of the Polaroid control to give it the messy look when stacked on top of each other. Again, the control development approach works nicely here because I can keep the logic to zoom the Polaroid in the Polaroid control.&lt;/p&gt;
&lt;p&gt;The last thing to point out here is how I implemented drag and drop logic. I wanted to give the ability to drag and drop the PolaroidStack control so I hooked into the mouse button events of the Polaroid control. The actual drag and drop code is nothing new but the ability to do it all in managed code is the big difference. Previously this type of thing would have to be done in javascript. With Silverlight you can do it all in managed C# code&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;PolariodStack_MouseMove(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;MouseEventArgs &lt;/span&gt;e)
{
&lt;span style="color: green"&gt;&lt;font color="#000000"&gt;    &lt;/font&gt;// only execute this code when the user has started dragging
    &lt;/span&gt;&lt;span style="color: blue"&gt;if &lt;/span&gt;(startDrag)
    {
        &lt;span style="color: #2b91af"&gt;Point &lt;/span&gt;movePos = e.GetPosition(&lt;span style="color: blue"&gt;null&lt;/span&gt;);
        &lt;span style="color: blue"&gt;double &lt;/span&gt;currentX = &lt;span style="color: blue"&gt;double&lt;/span&gt;.Parse(&lt;span style="color: blue"&gt;this&lt;/span&gt;.GetValue(&lt;span style="color: #2b91af"&gt;Canvas&lt;/span&gt;.LeftProperty).ToString()) + (movePos.X - beginPos.X);
        &lt;span style="color: blue"&gt;double &lt;/span&gt;currentY = &lt;span style="color: blue"&gt;double&lt;/span&gt;.Parse(&lt;span style="color: blue"&gt;this&lt;/span&gt;.GetValue(&lt;span style="color: #2b91af"&gt;Canvas&lt;/span&gt;.TopProperty).ToString()) + (movePos.Y - beginPos.Y)
        &lt;span style="color: blue"&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.SetValue(&lt;span style="color: #2b91af"&gt;Canvas&lt;/span&gt;.LeftProperty, currentX);
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.SetValue(&lt;span style="color: #2b91af"&gt;Canvas&lt;/span&gt;.TopProperty, currentY);
        beginPos = movePos;
    }
}
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;Borat&amp;gt; Very Nice &amp;lt;/Borat&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can get the code for this project &lt;a href="ftp://blogs.interknowlogy.com/bradcunningham/PhotoStacks.zip" target="_blank"&gt;here&lt;/a&gt;. NOTE: you will have to sign up for a Flickr account and get your own API key to get this to work. I purposely forced a compile error to show you were to enter your API key.&lt;/p&gt;
&lt;p&gt;So in the end, I like what Silverlight offers so far but it isn't all the way there yet. The lack of support for DataTemplates and Triggers&amp;nbsp; are glaring issues. I am also still not sold on the plug-in approach. Solving the satefulness issue is huge and I think that is the overriding win with the plug-in approach but I am still concerned with pushing that much on to the client machine. The temptation to abuse the technology is high and pushing really intensive applications down the wire to the client can lead to bloated applications and serious support issues.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To see the application in action visit &lt;a href="http://www.interknowlogy.com" target="_blank"&gt;our&lt;/a&gt; Silverlight page &lt;a href="http://silverlight.interknowlogy.com" target="_blank"&gt;silverlight.interknowlogy.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Tell me what you think&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As I wrote this I thought of clever way to use this same data visualization for another purpose....... So stay tuned for an update. &lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/bradcunningham/aggbug/23998.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Brad Cunningham</dc:creator></item><item><title>Debugging Blend Errors</title><link>http://blogs.interknowlogy.com/johnbowen/archive/2008/05/11/23960.aspx</link><pubDate>Sun, 11 May 2008 21:13:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/johnbowen/archive/2008/05/11/23960.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/johnbowen/comments/23960.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/johnbowen/comments/commentRss/23960.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/johnbowen/archive/2008/05/11/23960.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.interknowlogy.com/johnbowen/services/trackbacks/23960.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/johnbowen/rss.aspx">John Bowen's Blog</source><description>&lt;p class="bodytext"&gt;
Blend has been getting more stable with frequent releases including SP1, Blend 2 
etc but it still can&amp;#39;t render everything, even from an application that runs 
flawlessly at runtime. There are lots of things that can break the Blend 
renderer but tracking down exactly what broke your window/page/control can be 
difficult and time consuming. In some cases the location can be found by taking 
advantage of how Blend hosts applications. When Blend renders XAML it&amp;#39;s running 
the code just like at runtime and the code can be debugged in the same way. In 
cases where non-XAML Exceptions are breaking the renderer Visual Studio can 
attach to Blend itself and break to the exact location that&amp;#39;s causing the 
problem.&lt;/p&gt;
&lt;p class="bodytext"&gt;
The primary reason errors occur in Blend that don&amp;#39;t show up at runtime is that 
Blend acts as a host for the application. This causes things that are evaluated 
relative to the running application like config files and certain types of 
relative resource references to look in the wrong place. The pack:application 
syntax in particular causes invalid references. The ResourceDictionary hierarchy 
is also different when running in Blend. In versions prior to Blend 2 Feb Beta 
App.xaml resources aren&amp;#39;t automatically resolved using StaticResource the way 
they are at compile time. Even the newest versions run into problems resolving 
references inside things like UserControls when rendered as part of a Window. 
XAML errors generally show up in the Blend errors window and can be linked to a 
specific line (with varying accuracy depending on the version) while errors 
deeper in code need Visual Studio debugging.&lt;/p&gt;
&lt;img src="/downloads/johnbowen/images/DebuggingBlend1.png" alt="Blend XAML Error" /&gt;
&lt;br /&gt;
&lt;p class="bodytext"&gt;
To debug an application inside Blend open the project in both Visual Studio and 
Blend at the same time. Before opening the broken component in Blend attach 
Visual Studio to the process with Debug-&amp;gt;Attach To Process and select Blend.exe 
from the list. To make sure the Exception isn&amp;#39;t just swallowed by Blend set 
Visual Studio to break on all CLR Exceptions by selecting Thrown in the 
Debug-&amp;gt;Exceptions for Common Language Runtime Exceptions.&lt;/p&gt;
&lt;img src="/downloads/johnbowen/images/DebuggingBlend2.png" alt="Exception Options" /&gt;
&lt;br /&gt;
&lt;p class="bodytext"&gt;
Once you&amp;#39;ve tracked down an Exception in code you have a few choices. You can 
fix the error if it&amp;#39;s something that you determine shouldn&amp;#39;t be happening. If 
it&amp;#39;s due solely to the peculiarities of Blend and you want to leave the code as 
is, except when running in Blend, WPF provides a way to check whether Blend (or 
some other designer) is hosting the code. DesignerProperties.IsInDesignMode is 
set to True by Blend and can be accessed from anywhere in a WPF application with
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;
(&lt;span class="kwrd"&gt;bool&lt;/span&gt;)DependencyPropertyDescriptor.FromProperty(DesignerProperties.IsInDesignModeProperty, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(DependencyObject)).Metadata.DefaultValue&lt;/pre&gt;
&lt;p class="bodytext"&gt;
Any code that breaks Blend can just be executed conditionally when this value is 
false.&lt;/p&gt;
&lt;p class="bodytext"&gt;
One of the key advantages of using WPF is the promise of direct collaboration 
between designer and developer. Fixing Blend rendering errors will enable design 
and development of your application simultaneously without worrying about 
keeping application code and static designs from separate teams in sync.&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/johnbowen/aggbug/23960.aspx" width = "1" height = "1" /&gt;</description><dc:creator>John Bowen</dc:creator></item><item><title>WPFPerf and software rendering</title><link>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/09/23947.aspx</link><pubDate>Fri, 09 May 2008 21:37:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/09/23947.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/bradcunningham/comments/23947.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/bradcunningham/comments/commentRss/23947.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/09/23947.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/bradcunningham/services/trackbacks/23947.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/bradcunningham/rss.aspx">Blog?</source><description>&lt;p&gt;The WPFPerf tool that is included with the windows SDK can be a very useful tool in finding areas of your application that is being rendered using the WPF software pipeline. &lt;/p&gt; &lt;p&gt;Recently I was profiling an application looking for areas that could be improved, performance wise, at the WPF level. One thing I thought to do was use the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&amp;amp;displaylang=en" target="_blank"&gt;WPFPerf&lt;/a&gt; tool and look for elements that were being software rendered and see if I could modify them to use the hardware pipeline and still get desired effect. See &lt;a href="http://msdn.microsoft.com/en-us/library/bb613578.aspx" target="_blank"&gt;here&lt;/a&gt; for more information on the two pipelines.&lt;/p&gt; &lt;p&gt;To find the areas that are using software rendering the &lt;a href="http://msdn.microsoft.com/en-us/library/aa969767.aspx" target="_blank"&gt;Perfortator&lt;/a&gt; plug-in gives a nice, albeit cheesy, visual cue. By enabling "Draw software rendering with purple tint"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/Purple.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="188" alt="Purple" src="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/Purple_thumb.gif" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Come on guys, really? Is that really what the option is called? I wonder what the property is called in code ShowSoftwareRenderingUsingPurpleShadeBecauseMyKidWasWatchingBarneyWhileIWasWritingThisFuction.&lt;/p&gt; &lt;p&gt;But I digress, The functionality works well.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/FullApp.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="271" alt="FullApp" src="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/FullApp_thumb.jpg" width="476" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;So a discovery I made was that WPF is able to use the hardware rendering pipeline to render bitmap drop shadows (which is typically documented as being software rendered) but only if the drop shadow is rectangular. In my case I had a button template that was using a border element ad applying a drop shadow to the border element to give the drop shadow effect on the button&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/SoftwareRender.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="55" alt="SoftwareRender" src="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/SoftwareRender_thumb.jpg" width="557" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;="SoftwareRenderTemplate"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Control.Template"&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlTemplate &lt;/span&gt;&lt;span style="color: red"&gt;TargetType&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Type &lt;/span&gt;&lt;span style="color: red"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="22"&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border &lt;/span&gt;&lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;="Gray" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="22" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="0,0,0,0"&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DropShadowBitmapEffect &lt;/span&gt;&lt;span style="color: red"&gt;Opacity&lt;/span&gt;&lt;span style="color: blue"&gt;="0.5" &lt;/span&gt;&lt;span style="color: red"&gt;ShadowDepth&lt;/span&gt;&lt;span style="color: blue"&gt;="3" &lt;/span&gt;&lt;span style="color: red"&gt;Softness&lt;/span&gt;&lt;span style="color: blue"&gt;="0.285"/&amp;gt;
                                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentPresenter &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="ButtonContent" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;TemplateBinding &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;OpacityMask&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;TemplateBinding &lt;/span&gt;&lt;span style="color: red"&gt;Foreground&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="10,0,10,0"/&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When I built the template this way and ran Perforator it showed me that the button was using software rendering. Which is what I would have expected. However, if I modify the template to use a rectangle shape instead of a border element. Then apply the drop shadow effect to the the rectangle I noticed that Perforator no longer indicated (which means to remove the lovely purple tint) that the button was using software rendering. This is not what I would have expected. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;="HardwareRenderTemplate"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Control.Template"&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlTemplate &lt;/span&gt;&lt;span style="color: red"&gt;TargetType&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Type &lt;/span&gt;&lt;span style="color: red"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="22"&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle &lt;/span&gt;&lt;span style="color: red"&gt;Fill&lt;/span&gt;&lt;span style="color: blue"&gt;="Gray" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="22" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="0,0,0,0" &lt;/span&gt;&lt;span style="color: red"&gt;Stroke&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Null&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle.BitmapEffect&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DropShadowBitmapEffect &lt;/span&gt;&lt;span style="color: red"&gt;Opacity&lt;/span&gt;&lt;span style="color: blue"&gt;="0.5" &lt;/span&gt;&lt;span style="color: red"&gt;ShadowDepth&lt;/span&gt;&lt;span style="color: blue"&gt;="3" &lt;/span&gt;&lt;span style="color: red"&gt;Softness&lt;/span&gt;&lt;span style="color: blue"&gt;="0.285"/&amp;gt;
                                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle.BitmapEffect&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentPresenter &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="ButtonContent" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;TemplateBinding &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;OpacityMask&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;TemplateBinding &lt;/span&gt;&lt;span style="color: red"&gt;Foreground&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="10,0,10,0"/&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/HardwareRender.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="50" alt="HardwareRender" src="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/HardwareRender_thumb.jpg" width="526" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I searched around a bit to try and determine what was going on here and the information is sparse (hence my blog entry) But I did find &lt;a href="http://www.designerwpf.com/2008/02/08/wpf-drop-shadows-on-the-cheap/" target="_blank"&gt;one source&lt;/a&gt; that hints to the fact that the underlying implementation of the drop shadow effect is optimized when sticking to rectangular shapes. &lt;/p&gt;
&lt;p&gt;So there it is. If you really like drop shadows but don't want to get hammered by the performance this is one way to do it. &lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/bradcunningham/aggbug/23947.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Brad Cunningham</dc:creator></item><item><title>Generic or Specific</title><link>http://blogs.interknowlogy.com/billsheldon/archive/2008/05/02/23897.aspx</link><pubDate>Sat, 03 May 2008 06:46:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/billsheldon/archive/2008/05/02/23897.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/billsheldon/comments/23897.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/billsheldon/comments/commentRss/23897.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/billsheldon/archive/2008/05/02/23897.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.interknowlogy.com/billsheldon/services/trackbacks/23897.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/billsheldon/rss.aspx">One Nerd's Thoughts</source><description>&lt;P&gt;This is one of those musing posts and comes from one of the challenges I have when teaching a feature that Microsoft chose to call 'Generics'.&amp;nbsp; I think this name was picked by someone, who while reasonably familiar with English wasn't a native speaker of the English language.&amp;nbsp; Thus they found a definition and thought it applied - allow me to elaborate.&lt;/P&gt;
&lt;P&gt;What is a .NET Generic - well in short - under the original implementation of .NET collection classes contained a set of other objects.&amp;nbsp; However, these classes didn't know specifically what kind of object they contained.&amp;nbsp; Instead a given collection might contain more then one different type of object, for example&amp;nbsp;numbers stored in a collection with strings and&amp;nbsp;image objects.&amp;nbsp; It wasn't possible to say thata given collection would contain only a &lt;STRONG&gt;specific&lt;/STRONG&gt; type of class.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;With the introduction of 'Generics' it was possible to indicate that a given collection would only contain a specific type of object.&amp;nbsp; That's right the feature Generics describes a set of rules and syntax for ensuring a collection is of a &lt;STRONG&gt;specific&lt;/STRONG&gt; type.&amp;nbsp; Now the challenge comes from how the definition of generic is phrased in some dictionaries: "Relating to or descriptive of an entire group or class"&lt;/P&gt;
&lt;P&gt;Notice that the preceding definition basically associates the definition of a generic with a class.&amp;nbsp; Thus if you were searching the dictionary for a word that described a class - well there you have it.&amp;nbsp; Unfortunately this use of the word "class" doesn't relate to the use of the word "class" in object oriented programming.&amp;nbsp; In this use a class is more of a category of like items - not the definition of a single item.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;SPAN class=src minmax_bound="true"&gt;&lt;A title="Click for more information about this dictionary" href="http://dictionary.reference.com/help/web1913.html" minmax_bound="true"&gt;&lt;CITE minmax_bound="true"&gt;&lt;FONT color=#666666&gt;Webster's Revised Unabridged Dictionary&lt;/FONT&gt;&lt;/CITE&gt;&lt;/A&gt;&lt;/SPAN&gt; - &lt;SPAN class=src minmax_bound="true"&gt;&lt;A href="http://dictionary.reference.com/cite.html?qh=generic&amp;amp;ia=web1913" target=_blank minmax_bound="true"&gt;&lt;EM&gt;&lt;FONT color=#666666&gt;Cite This Source&lt;/FONT&gt;&lt;/EM&gt;&lt;/A&gt;&lt;/SPAN&gt; - &lt;SPAN class=src minmax_bound="true"&gt;&lt;CITE minmax_bound="true"&gt;&lt;A href="http://dictionary.reference.com/browse/generic#sharethis" minmax_bound="true"&gt;&lt;FONT color=#666666&gt;Share This&lt;/FONT&gt;&lt;/A&gt;&lt;/CITE&gt;&lt;/SPAN&gt; &lt;!-- google_ad_section_start(name=def) --&gt;&lt;/P&gt;
&lt;P minmax_bound="true"&gt;(&lt;A href="http://dictionary.reference.com/help/web1913.html"&gt;http://dictionary.reference.com/help/web1913.html&lt;/A&gt;)&lt;/P&gt;
&lt;P minmax_bound="true"&gt;&lt;STRONG&gt;Generic&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Ge*ner"ic\, Generical \Ge*ner"ic*al\, a. [L. genus, generis, race, kind: cf. F. g['e]n['e]rique. See &lt;A href="http://dictionary.reference.com/browse/Gender" minmax_bound="true"&gt;&lt;FONT color=#568c1e&gt;Gender&lt;/FONT&gt;&lt;/A&gt;.] &lt;/P&gt;
&lt;P minmax_bound="true"&gt;&lt;/P&gt;
&lt;P&gt;1. (Biol.) Pertaining to a genus or kind; relating to a genus, as distinct from a species, or from another genus; as, a generic description; a generic difference; a generic name. &lt;/P&gt;
&lt;P minmax_bound="true"&gt;&lt;/P&gt;
&lt;P&gt;2. Very comprehensive; &lt;STRONG&gt;pertaining or appropriate to large classes or their characteristics; -- opposed to &lt;/STRONG&gt;&lt;A href="http://dictionary.reference.com/browse/specific" minmax_bound="true"&gt;&lt;FONT color=#568c1e&gt;&lt;STRONG&gt;specific&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;&lt;!-- google_ad_section_end(name=def) --&gt; 
&lt;TABLE cellSpacing=0 cellPadding=0 border=0 minmax_bound="true"&gt;
&lt;TBODY minmax_bound="true"&gt;
&lt;TR minmax_bound="true"&gt;
&lt;TD minmax_bound="true"&gt;&lt;SPAN class=src minmax_bound="true"&gt;&lt;CITE minmax_bound="true"&gt;&lt;FONT color=#666666 size=2&gt;Webster's Revised Unabridged Dictionary, © 1996, 1998 MICRA, Inc.&lt;/FONT&gt;&lt;/CITE&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;!-- end web1913 --&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That's right the word I most frequently use to describe the feature Generic is the one which defines the opposite of the definition of the word generic....&lt;/P&gt;
&lt;P&gt;I don't think Microsoft can really do much about this, it's just one of those things that make you wonder...&lt;/P&gt;&lt;img width="0" height="0" src="http://www.nerdnotes.net/blog/cptrk.ashx?id=dec61826-edd1-457d-91d3-1f030d734841"&gt;&lt;img src ="http://blogs.interknowlogy.com/billsheldon/aggbug/23897.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Bill Sheldon</dc:creator></item><item><title>ROSARIO (cont'd) - Manual Test Runner</title><link>http://blogs.interknowlogy.com/randybergeron/archive/2008/04/24/23813.aspx</link><pubDate>Thu, 24 Apr 2008 18:22:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/randybergeron/archive/2008/04/24/23813.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/randybergeron/comments/23813.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/randybergeron/comments/commentRss/23813.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/randybergeron/archive/2008/04/24/23813.aspx#comment</comments><slash:comments>19</slash:comments><trackback:ping>http://blogs.interknowlogy.com/randybergeron/services/trackbacks/23813.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/randybergeron/rss.aspx">Randyb's BizTalk Blog</source><description>&lt;p&gt;In last weeks post I talked about the new tool "Camano" to define your test cases and create test suites. After we have our tests loaded into team system , we can now start to actually execute the test. The first thing we will do is open the new tool called the Manual Test Run tool:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOcontdManualTestRunner_9FC3/MTR.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="343" alt="MTR" src="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOcontdManualTestRunner_9FC3/MTR_thumb.jpg" width="248" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;We now can start recording the actual test, in this case we will be testing the Beer House Web site. As we can see we have three recording settings &lt;/p&gt; &lt;p&gt;Action - Records an action log of each action performed on the application under test&lt;/p&gt; &lt;p&gt;Background - Records actions which can later be played back in the application under test&lt;/p&gt; &lt;p&gt;Video - Records video in the WMV format&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOcontdManualTestRunner_9FC3/Recording.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="633" alt="Recording" src="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOcontdManualTestRunner_9FC3/Recording_thumb.jpg" width="963" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;We will now run the test. The last step will fail. From here we can capture the screen to show exactly what we see when we executed the test step.&lt;/p&gt; &lt;p&gt;We then create a new bug. We see all the data collected already being pre-populated and placed in the bug report and loaded into Team System.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOcontdManualTestRunner_9FC3/NewBug1.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="621" alt="NewBug1" src="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOcontdManualTestRunner_9FC3/NewBug1_thumb.jpg" width="964" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOcontdManualTestRunner_9FC3/NewBug2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="NewBug2" src="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOcontdManualTestRunner_9FC3/NewBug2_thumb.jpg" width="963" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now after the bug is fixed we can re-play the recording to re-test the application. We go back in the Test case and select the steps then select play. The steps that we used to test the web page are now re-executed automatically which is fantastic. Now the last really cool thing is we can go to VS 2008, Create a New Test choose a Coded UI Test. Now we create a BrowserWindow object and use the recording as the source. Then we right click and select Generate code from Existing recording. Now the code is generated and placed right into the test procedure. We now have an automated test that will execute the recording that we have made earlier.&lt;/p&gt; &lt;p&gt;Microsoft has made some great strides in assisting us on being able to execute our manual tests being able to convert these test to automated test. These tools will help us being able to create and execute these test in a timely way. I look forward to using these tools when ROSARIO is released. The test tools will allow us to manage and execute our tests in a much more efficient and effective way to ensure quality on our projects.&amp;nbsp; &lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/randybergeron/aggbug/23813.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Randy Bergeron</dc:creator></item><item><title>The Unofficial, still Plausably Deniable, Future Home of the "San Diego" Chargers</title><link>http://blogs.interknowlogy.com/billsheldon/archive/2008/04/21/23797.aspx</link><pubDate>Mon, 21 Apr 2008 21:05:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/billsheldon/archive/2008/04/21/23797.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/billsheldon/comments/23797.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/billsheldon/comments/commentRss/23797.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/billsheldon/archive/2008/04/21/23797.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.interknowlogy.com/billsheldon/services/trackbacks/23797.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/billsheldon/rss.aspx">One Nerd's Thoughts</source><description>&lt;P&gt;So officially it's not yet an option, after all the San Diego Chargers are still working with the city (suburb) of Chula Vista to keep the Chargers football team in San Diego County.&amp;nbsp; And of course the Chargers spokesman has officially denied it... &lt;A href="http://www.sportsbusinessdaily.com/index.cfm?fuseaction=sbd.preview&amp;amp;articleID=120164"&gt;http://www.sportsbusinessdaily.com/index.cfm?fuseaction=sbd.preview&amp;amp;articleID=120164&lt;/A&gt;&amp;nbsp;(account needed for full article - but the headline says it all)&lt;/P&gt;
&lt;P&gt;However, if Chula Vista 'stumbles', one environmental suit or negative ruling in the next two years, and lets face it the Chargers are moving to Los Angeles and this brand new, very fancy stadium.&amp;nbsp; Construction should be ready to begin in 4Q of this year and my guess is if it does and if the inevitable challenges to the Chula Vista site arise - "Los Angeles 'super' Chargers" will be the new theme song...&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.losangelesfootballstadium.com/"&gt;http://www.losangelesfootballstadium.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I easily could be wrong but let's face it if there wasn't already a sequence of events (or perhaps more than one) that would result in a team moving here, this idea would be crazy.&amp;nbsp; Fact is, IMHO&amp;nbsp;that's what you would have to be to think that this isn't the future home of the Chargers.&amp;nbsp;&amp;nbsp;BTW, check out the background color scheme - which NFL team has uniforms in Baby Blue?&amp;nbsp; Heck another story even has Roski on the record as stating that the team moving could play in other LA venues for 2009, 2010 till this place&amp;nbsp;opens&amp;nbsp;in 2011.&lt;/P&gt;&lt;img width="0" height="0" src="http://www.nerdnotes.net/blog/cptrk.ashx?id=a56daf78-fe3f-454f-83a0-345cd1104231"&gt;&lt;img src ="http://blogs.interknowlogy.com/billsheldon/aggbug/23797.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Bill Sheldon</dc:creator></item><item><title>The new phone books are here, the new phone books are here...</title><link>http://blogs.interknowlogy.com/billsheldon/archive/2008/04/17/23781.aspx</link><pubDate>Fri, 18 Apr 2008 00:27:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/billsheldon/archive/2008/04/17/23781.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/billsheldon/comments/23781.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/billsheldon/comments/commentRss/23781.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/billsheldon/archive/2008/04/17/23781.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/billsheldon/services/trackbacks/23781.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/billsheldon/rss.aspx">One Nerd's Thoughts</source><description>&lt;P&gt;This is one of those 'hey look at me' posts that always make me feel like... well if you recognize the title of the movie that the quote which is the title of this movie comes from - that pretty much sums it up.&lt;/P&gt;
&lt;P&gt;Anyway a few 'ads'.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;First off, I have a new article available over at SQL Magazine.&amp;nbsp; It's a very introductory article to LINQ for SQL so if you are looking for a good starting point for just getting started with LINQ, here's a short article that might be of assistance: &lt;A href="http://www.sqlmag.com/Article/ArticleID/98205/sql_server_98205.html"&gt;http://www.sqlmag.com/Article/ArticleID/98205/sql_server_98205.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The second item fits the post a bit better.&amp;nbsp; Back in the first Quarter I signed on to do another book - yes my wife is ready to kill me - which since she is pregnant get's the pregnancy multiplier (we're currently around 7 or 8 so the danger level is getting pretty high).&amp;nbsp; At any rate if you are interested it's still way out in the future - like October 2008 - if "we" (me) make "our" (my) final due date - here is the page: &lt;A href="http://www.amazon.com/o/ASIN/0470377313/105-1544171-6096430"&gt;http://www.amazon.com/o/ASIN/0470377313/105-1544171-6096430&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;As you can note on that page this next book is an Office Business Applications book.&amp;nbsp; Of note, it will have both C# and VB samples (ok VB sample - but more on that later) and covers using WPF with Outlook Form Regions and Excel not to mention server side document generation.&amp;nbsp; That's the good news - the bad news - well I'm late on my chapters - of course that's pretty typical for me - the question is can I catch up in the next few weeks - especially given the increasing pregnancy multiplier...&lt;/P&gt;
&lt;P&gt;Finally, I thought I should mention that my last book is finally getting read to be available.&amp;nbsp; At 1600 pages it pretty much is a phone book, and it should ship for the first week of May which apparently is fast approaching: &lt;A href="http://www.amazon.com/Professional-Visual-Basic-2008-Evjen/dp/0470191368/ref=sr_1_1"&gt;http://www.amazon.com/Professional-Visual-Basic-2008-Evjen/dp/0470191368/ref=sr_1_1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img width="0" height="0" src="http://www.nerdnotes.net/blog/cptrk.ashx?id=2adce7ca-8259-4cb1-8f16-eb82f56dd53e"&gt;&lt;img src ="http://blogs.interknowlogy.com/billsheldon/aggbug/23781.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Bill Sheldon</dc:creator></item><item><title>&amp;quot;ROSARIO&amp;quot; TAP using &amp;quot;Camano&amp;quot; Tool</title><link>http://blogs.interknowlogy.com/randybergeron/archive/2008/04/17/23780.aspx</link><pubDate>Thu, 17 Apr 2008 19:51:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/randybergeron/archive/2008/04/17/23780.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/randybergeron/comments/23780.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/randybergeron/comments/commentRss/23780.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/randybergeron/archive/2008/04/17/23780.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://blogs.interknowlogy.com/randybergeron/services/trackbacks/23780.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/randybergeron/rss.aspx">Randyb's BizTalk Blog</source><description>&lt;p&gt;I have been participating in the Microsoft TAP program using the new Team Foundation Server codename "ROSARIO". I have been very impressed with this version of the TFS server. I will be making several posts on the features since the functionality in ROSARIO is more than one post can accommodate.&lt;/p&gt; &lt;p&gt;Let me add the disclaimer that these are potential features that will be part of the new version of TFS wether&amp;nbsp; these features will be part of the official release (I sure hope they are) has yet been determined. So today I'm going to concentrate on a new tool being introduced codename Camano. &lt;/p&gt; &lt;p&gt;Microsoft is creating tools to assist in manual testing. This is a great area that needs assitance and Camano is a great step in this direction. Currently here at InterKnowlogy all our test cases are written in word documents with only outbound references inside the document to link with the project requirements. Needless to say this creates issues when trying to run reports to confirm coverage of requirements. &lt;/p&gt; &lt;p&gt;Camano is a new tool that allows a tester to create and organize the test cases for a given project and link the cases back to to defined requirements that are stored in TFS.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOTAPusingCamanoTool_97FD/Camano1.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="438" alt="Camano1" src="http://blogs.interknowlogy.com/downloads/randybergeron/ROSARIOTAPusingCamanoTool_97FD/Camano1_thumb.jpg" width="668" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Above is a screen snapshot of creating a test case in Camano. As we can see each of the steps of the test case are stored inside TFS as Test Case work item. From here we will add the test case to a Test Suite, and the we will create the Test Plan which will track the actually testing of the features. As we can see Camano allows us to consolidate our test cases and test planning tasks into a single utility, they are not buried inside of a word document, which will give us the ability to easily generate coverage reports. Now from here we will be able to use the Microsoft Test Runner tool to actually run the test suite. Which will be the topic of the next post.&lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/randybergeron/aggbug/23780.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Randy Bergeron</dc:creator></item><item><title>WPF Now? Why should you?</title><link>http://blogs.interknowlogy.com/billsheldon/archive/2008/03/20/23701.aspx</link><pubDate>Thu, 20 Mar 2008 07:39:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/billsheldon/archive/2008/03/20/23701.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/billsheldon/comments/23701.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/billsheldon/comments/commentRss/23701.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/billsheldon/archive/2008/03/20/23701.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/billsheldon/services/trackbacks/23701.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/billsheldon/rss.aspx">One Nerd's Thoughts</source><description>&lt;P&gt;I'm in week 5 of teaching my Visual Basic I programming class at the University of California San Diego Extension.&amp;nbsp; The week 5 class is going to focus in on WPF and helping students get a better feel for working with this new user interface paradigm, and it's custom 'script' language XAML. :-)&lt;/P&gt;
&lt;P&gt;WPF comes with several new concepts and I think that for developers who are just getting started and or coming from a solid web application background many of these concepts feel very natural.&amp;nbsp; On the other hand there are a host of developers out there who are coming from a Forms/Win32 based background.&amp;nbsp; For these developers, even though most people think of WPF as a Forms replacement the new declarative model and in particular the new buzzwords leave them overwhelmed.&lt;/P&gt;
&lt;P&gt;After all most people that show of WPF applications are busy making sure they've included as many graphical elements as they possibly can, for example one famous paraphrase of Tim Huckaby is "It's just not a WPF application without some form of gratouitous animation."&lt;/P&gt;
&lt;P&gt;However, from my standpoint, in the way I approach introducing developers is to explain some elements on XAML and then focus on the similarities between WPF and Windows Forms development.&amp;nbsp; For example in Chapter 17 of the soon to be released &lt;A href="http://www.amazon.com/Professional-Visual-Basic-2008-Evjen/dp/0470191368/ref=sr_1_5?ie=UTF8&amp;amp;s=books&amp;amp;qid=1205997993&amp;amp;sr=8-5"&gt;Professional Visual Basic 2008&lt;/A&gt;&amp;nbsp;which will ship this May, my approach&amp;nbsp;is to literally have you start by designing what could easily be a Windows Forms application using WPF.&amp;nbsp; Over the course of the chapter the application is migrated with the title bar being hidden, buttons being customized, etc as you introduce more and more concepts that are native to WPF.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In the beginning you start by working with the Visual Studio 2008 editor.&amp;nbsp; This editor is well known to be VERY limited in comparison to Blend.&amp;nbsp; However, if you are moving from Windows Forms to WPF then you'll feel much more comfortable in this environment.&amp;nbsp; Start here and work towards the same type of applications, then introduce Blend.&amp;nbsp; Blend not only provides several key examples that you can use to get a better feel for the WPF paradigm, but allows you to start to take that item which you feel comfortable with and migrate it to a WPF paradigm with routed events, complex styling and other elements that are much more in keeping with the declarative programming model.&amp;nbsp; Of course this book isn't about WPF so I don't go deep on things like styling and databinding and other topics, but it will help you start so that those topics combined with everything else in WPF aren't quite so overwhelming.&lt;/P&gt;
&lt;P&gt;Keep in mind that while there are rumored to be several WPF related updates coming in the next update to Visual Studio 2008 (I think I covered when to expect that to appear) even with these updates you as a developer are still going to need to start to transition to this new UI paradigm.&amp;nbsp; Fortunately because WPF performs better on Vista then on XP, and has no backward compatability below XP there is still time for you to get up to speed... but that grace period won't last forever.&amp;nbsp; More importantly those performance issues are primarily for heavy duty graphics, if you are working in a more Windows Forms paradigm you won't see much of a difference at all.&lt;/P&gt;
&lt;P&gt;Which brings me to "Why do it now?" - Well we already have an announcement that Windows Forms 2.0 was the last of the new development on that model.&amp;nbsp; By starting to work with WPF now, even though you might not create a gratouitous graphic, you are creating an application tier that as WPF takes over (and with it's relationship to Silverlight 2.0 the pace of adoption is imho going to accelerate) your code even though&amp;nbsp;it still has the standard Windows Forms look will integrate and be able to be adapted much easier then people who are continuing to create new solutions using Windows Forms.&amp;nbsp; So now is the time to take those existing designs and just start by implementing them in WPF with little or no leverage of the high end graphics - and then as you get more comfortable with just how much power WPF provides you can update them to leverage that power.&lt;/P&gt;&lt;img width="0" height="0" src="http://www.nerdnotes.net/blog/cptrk.ashx?id=e51ad637-b338-43a4-8260-2c9cc93a91cf"&gt;&lt;img src ="http://blogs.interknowlogy.com/billsheldon/aggbug/23701.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Bill Sheldon</dc:creator></item><item><title>Knowing Who Executed a Custom Workflow Action</title><link>http://blogs.interknowlogy.com/billsheldon/archive/2008/03/11/23674.aspx</link><pubDate>Wed, 12 Mar 2008 05:43:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/billsheldon/archive/2008/03/11/23674.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/billsheldon/comments/23674.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/billsheldon/comments/commentRss/23674.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/billsheldon/archive/2008/03/11/23674.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/billsheldon/services/trackbacks/23674.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/billsheldon/rss.aspx">One Nerd's Thoughts</source><description>&lt;P class=MsoNormal style="MARGIN-BOTTOM: 10pt"&gt;As I noted in my last post I’ve been working with a State based custom MOSS workflow.&amp;nbsp; I’ve actually reached the point where I’m into resolving minor&amp;nbsp;issues during my unit tests.&amp;nbsp;&amp;nbsp;One of my tests involved having a user other then the assigned user take a pending task and resolve/address it.&amp;nbsp; So for example a document waiting to be approved is recognized by a manager who is covering for the assigned manager.&amp;nbsp; The covering manager has “permission” to complete the task but isn’t the assigned user.&amp;nbsp; This is where I had what I consider to be unexpected behavior.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 10pt"&gt;What happens in SharePoint is that when I start in the debugger (or after deploying my workflow outside the debugger) the workflow is run in the context of the administrator.&amp;nbsp; Now before you read that as “administrator” let me clarify – it’s run under a fixed account.&amp;nbsp; The context of the thread executing the workflow isn’t assigned based on the current user.&amp;nbsp; So whether it’s the administrator account or the Guest account the point is that at runtime if a parameter containing the user who triggered a workflow event isn’t passed into the workflow there is no way to determine the actual identity of the person triggering that next step in the workflow.&amp;nbsp; This is important because if you are planning a workflow, then like most you are planning to capture a history of events which occurred.&amp;nbsp; The&amp;nbsp;problem if you don’t explicitly pass the name of the current user triggering an event then the name available as part of your running context will not be correct.&amp;nbsp; Thus your history can at best reflect the name of the user who was supposed to resolve/address that action.&amp;nbsp; Lost is the identity of the user who actually accessed your site and did take action on that workflow item.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 10pt"&gt;If someone actually has an answer for getting that user (aside from explicitly setting a parameter) that I'm not aware of please feel free to let me know? &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 10pt"&gt;I spent quite a while looking at the parameter and runtime environment data and created a new WindowsPrincipal.GetCurrent() instance to see if I could find the actual current user.&amp;nbsp;I also checked for example the current user value in this.workflowproperties.web, and it also&amp;nbsp;was the administrator.&amp;nbsp; Of course it might turn out to be a setting within SharePoint that I'm not aware of.&amp;nbsp; Not that I would have explicitly set it since I can only begin to guess at&amp;nbsp;where the setting comes from&amp;nbsp;when my workflow is deployed from Visual Studio 2008.&amp;nbsp; (btw, the account I deploy from isn't the administrator&amp;nbsp;account.)&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 10pt"&gt;I actually consider this to be a pretty major workflow failing… in theory there is a reduction in security since the process executing the workflow has the permissions associated with (in this case the administrator) the most privileged account that will need to run any workflow.&amp;nbsp; Additionally it breaks down on tracking reliability since it is in theory possible to apply the wrong account name to some of the history data, or if you haven’t planned for it to not explicitly capture the actual user executing the workflow.&amp;nbsp; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-BOTTOM: 10pt"&gt;Keep in mind if you are building and testing your workflow under the administrator account you might not ever notice this.&amp;nbsp; However, knowing about this issue you can set up an InfoPath form and at least capture the name of the user who actually acted on the associated workflow.&lt;/P&gt;&lt;img width="0" height="0" src="http://www.nerdnotes.net/blog/cptrk.ashx?id=83c73ba6-b436-4749-8d6c-c1358ec3b6f3"&gt;&lt;img src ="http://blogs.interknowlogy.com/billsheldon/aggbug/23674.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Bill Sheldon</dc:creator></item><item><title>Thoughts on Microsoft Mix: The WideOpen Web</title><link>http://blogs.interknowlogy.com/timhuckaby/archive/2008/03/08/23653.aspx</link><pubDate>Sat, 08 Mar 2008 16:21:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/timhuckaby/archive/2008/03/08/23653.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/timhuckaby/comments/23653.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/timhuckaby/comments/commentRss/23653.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/timhuckaby/archive/2008/03/08/23653.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/timhuckaby/services/trackbacks/23653.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/timhuckaby/rss.aspx">Tim Huckaby's Blog</source><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The majority of my blog posts are not exposed externally, but when a group of folks asked me to do an external post on my thoughts about the Microsoft Mix conference in Las Vegas this week, I gladly said, &amp;#8220;Sure!&amp;#8221;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;So here we go&amp;#8230;Attending the conference was time well spent for me and consequently, I&amp;#8217;m more confident than ever that not only is Microsoft building the platform, tools and plumbing for the next generation of applications, but that InterKnowlogy is perfectly aligned as experts in these technologies - specifically WPF and Silverlight.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;I have been a strong advocate and evangelist for &amp;#8220;the smart client revolution&amp;#8221; for many years.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;When .NET Windows Forms 2.0 shipped ~ 5 years ago, the deployment and maintenance nightmare of COM was nearing an end.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;And finally people started seeing that in most cases building browser based applications inside the firewall was just silly &amp;#8211; especially when you consider the developer productivity achieved.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Let&amp;#8217;s face it. It simply is much easier to build windows apps than it is to build browser based apps.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;I call this the Winform phase of the Smart Client Revolution.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;In 2005, WPF shipped and took client apps to the next level.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;WPF allows us to do things in design, usability, and UX that we never speculated would come so quickly.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In all honesty, WPF took me totally by surprise.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The paradigm was different, and difficult.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;But the results were so compelling.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I call this Phase II.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;In my opinion, we are in the 3rd phase of the smart client revolution: The Silverlight phase.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Silverlight gives us the ability to build rich client applications and manifest them in the browser&amp;#8230;cross platform!&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It&amp;#8217;s basically WPF for the browser.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Sure it&amp;#8217;s a light version of the .NET framework, but at a 4.3 mb download there are tough choices to be made on what goes in and stays out.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;I am speculating here, but in phase 4 we are headed for a world where:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;The rich clients of WPF are going to collide with applications delivered in the browser.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;There will be no delineation between web and windows.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;The tool (Visual Studio) will not delineate between the two types.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Issues of cross platform will be overcome &amp;#8211; at least for platforms and devices that have an SDK.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 37.5pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;We&amp;#8217;ll have a full blown framework / next generation version of Silverlight where the technical and security challenges of access to the entire .NET framework over the web delivered in a browser will be overcome.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 1.5pt"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;That&amp;#8217;s a world I want to live in and it&amp;#8217;s happening a lot quicker than I thought it would.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For now, the next 18 months of building WPF and Silverlight applications is going to be really fun.&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.interknowlogy.com/timhuckaby/aggbug/23653.aspx" width = "1" height = "1" /&gt;</description><dc:creator>Tim Huckaby</dc:creator></item><item><title>SharePoint 2007 custom Workflow Debugging Quirk with Visual Studio 2008</title><link>http://blogs.interknowlogy.com/billsheldon/archive/2008/03/07/23643.aspx</link><pubDate>Fri, 07 Mar 2008 18:54:00 GMT</pubDate><guid isPermaLink="true">http://blogs.interknowlogy.com/billsheldon/archive/2008/03/07/23643.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/billsheldon/comments/23643.aspx</wfw:comment><wfw:commentRss>http://blogs.interknowlogy.com/billsheldon/comments/commentRss/23643.aspx</wfw:commentRss><comments>http://blogs.interknowlogy.com/billsheldon/archive/2008/03/07/23643.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.interknowlogy.com/billsheldon/services/trackbacks/23643.aspx</trackback:ping><source url="http://blogs.interknowlogy.com/billsheldon/rss.aspx">One Nerd's Thoughts</source><description>&lt;P&gt;So I noticed an issue the other day.&amp;nbsp; I have a custom SharePoint 2007 workflow as part of some work I'm doing on an Office Business Application (OBA).&amp;nbsp; Now if you were at the Office Developers Conference (ODC) in San Jose this year you saw Jay Schmelzer demonstrate how you could with Visual Studio 2008 start up the debugger on a SharePoint State Workflow project and have Visual Studio automatically update and deploy the files associated with your workflow. It's a great capability and very powerful when it comes to working with SharePoint workflow projects.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;However, I recently ran into a problem every time I went to debug my workflow the deployment step failed and the debugger failed to start.&amp;nbsp; It took a little while but I soon realized that the problem was related to two of the files the workflow.xml and the feature.xml files being marked read only in the deployment directory.&amp;nbsp; It was only a short time after that till I realized that the problem was related to the fact that I had finally bound my development environment to our Team Foundation Server (TFS).&lt;/P&gt;
&lt;P&gt;It turns out that when Visual Studio deploys the files associated with the workflow it leaves the file attributes unchanged from your development directory.&amp;nbsp; This is an issue because in working with TFS and not having these f