<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ASP.NET Weblogs</title><link>http://weblogs.asp.net/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>LINQ im Einsatz, LINQ in Action in German</title><link>http://weblogs.asp.net/fmarguerie/archive/2008/08/28/linq-im-einsatz-linq-in-action-in-german.aspx</link><pubDate>Wed, 27 Aug 2008 22:59:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572608</guid><dc:creator>Fabrice Marguerie</dc:creator><slash:comments>1</slash:comments><description>&lt;img src="http://linqinaction.net/photos/main/images/3938/original.aspx" mce_src="http://linqinaction.net/photos/main/images/3938/original.aspx" style="margin-right: 10px;" width="120" align="left" height="152"&gt;
&lt;p&gt;Today, I received a copy of &lt;b&gt;LINQ im Einsatz&lt;/b&gt;. This is the German translation of &lt;a href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=sharptoolbox-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1933988169" mce_href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=sharptoolbox-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1933988169"&gt;LINQ in Action&lt;/a&gt;. It's now available from &lt;a href="http://www.amazon.de/LINQ-im-Einsatz-Fabrice-Marguerie/dp/3446414290/" mce_href="http://www.amazon.de/LINQ-im-Einsatz-Fabrice-Marguerie/dp/3446414290/"&gt;Amazon.de&lt;/a&gt; and from &lt;a href="http://www.hanser.de/buch.asp?isbn=978-3-446-41429-7" mce_href="http://www.hanser.de/buch.asp?isbn=978-3-446-41429-7"&gt;Hanser&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Bonus: The German version is bigger than the English one. It contains chapter 14, which covers LINQ to DataSet and is provided in English only as a PDF download from &lt;a href="http://www.manning.com/affiliate/idevaffiliate.php?id=252_74" mce_href="http://www.manning.com/affiliate/idevaffiliate.php?id=252_74"&gt;Manning's website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Maybe we'll see translations in other languages next. French would be a good idea, for example ;-)&lt;/p&gt;

&lt;p&gt;Viel Spaß beim Lesen!&lt;br&gt;&lt;/p&gt;

&lt;br&gt;&lt;i&gt;Cross-posted from &lt;a href="http://linqinaction.net/"&gt;http://linqinaction.net&lt;/a&gt;&lt;/i&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572608" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/fmarguerie/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Typemock Racer Alpha Available  - Deadlock Finder</title><link>http://weblogs.asp.net/rosherove/archive/2008/08/27/typemock-racer-alpha-available-deadlock-finder.aspx</link><pubDate>Wed, 27 Aug 2008 21:44:28 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572488</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;We’ve released the alpha version of &lt;a href="http://www.typemock.com/requestBeta.php"&gt;Typemock Racer&lt;/a&gt;. Go register. &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx"&gt;Here’s the basic breakdown&lt;/a&gt; of what it is. We will be releasing and updating the alpha version on a monthly basis.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572488" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/General+Software+Development/default.aspx">General Software Development</category></item><item><title>Windows Presentation Foundation Major Release 3</title><link>http://weblogs.asp.net/nunogodinho/archive/2008/08/27/windows-presentation-foundation-major-release-3.aspx</link><pubDate>Wed, 27 Aug 2008 21:08:02 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572428</guid><dc:creator>Nuno.Godinho</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;#160;&amp;#160; With the release of the .NET Framework 3.5 SP1 the WPF suffered the third major release of it’s short history.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; This major areas that were affected were:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Deployment&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Now instead of needing the full framework installation it was made a lightweight version in order to run only this technology, and&amp;#160; this is called the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8CEA6CD1-15BC-4664-B27D-8CEBA808B28B&amp;amp;displaylang=en" target="_blank"&gt;Client Profile&lt;/a&gt;. This lightweight version that consumes 25 MB includes the following:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;CLR (bases of the .NET Framework)&lt;/li&gt;      &lt;li&gt;Click Once (Used in the installation of the WPF applications)&lt;/li&gt;      &lt;li&gt;Windows Forms (Runtime used to run the Windows Forms solutions that can be held also inside WPF applications using WindowsFormsHost class)&lt;/li&gt;      &lt;li&gt;Windows Presentation Foundation (Runtime used to run the WPF solutions that can also be held inside Windows Forms Applications using the ElementHost class)&lt;/li&gt;      &lt;li&gt;Windows Communication Foundation (Runtime used to run and consume WCF services that are normally used by Windows and WPF applications)&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Graphics&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; This versions includes powerful enhancements on the WPF graphics primarily on the 3D scope in controls like UIElement3D and Viewport2DVisual3D (that is responsible for making 2D object viewable in 3D).&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Also brings the &lt;a href="http://msdn.microsoft.com/en-us/library/bb944006%28VS.85%29.aspx#Pixel_Shader_Basics" target="_blank"&gt;HLSL shaders&lt;/a&gt; with the ShaderEffect class, that are entirely implemented on the GPU level, which makes it a lot faster, in case you have the Pixel Shader 2.0 support on your hardware).&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Another class that was also enhanced was the WritableBitmap class that now enables a very efficient image manipulation, by giving the ability to provide bitmap images mapped in the system memory that will give us the ability to change it on runtime and have the effects immediately on the screen.&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Performance&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Changes to the cold start on the application that are now improved in 45% depending on the application size.&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Virtualization optimizations such as in TreeView, columns that can now be virtualized and that will enable a better and easier creation of DataGrid controls.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;New Controls&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The much asked Datagrid control is now part of the WPF controls that are made available, but that will be released after the .net 3.5 SP1 release.&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Office Ribbon control is also part of the new WPF controls and will also be released after the .net 3.5 SP1 release as the DataGrid Control.&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; A Rich functionality WebBrowser Control, that in the previous versions worked via a Frame Element, and now will permit javacript and other funcionalities that exist on the normal browsers, and also will provide the ability for WPF applications to host Silverlight contents.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Other Enhancements&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Support for String formatting on the databinding of text without having to implement the IValueConverter interface.&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Extended support for the XBAP for the Firefox by providing the ClickOnce native support inside it.&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Improvements in the WPF Designer of the Visual Studio 2008 solving some problems that existed with the rendering of elements majorly when they were based on other custom controls.&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; There’s a change that needs to be made on the Blend 2.5 Preview in order to solve some of this problems and that can be &lt;a href="http://www.microsoft.com/expression/try-it/default.aspx?filter=prerelease" target="_blank"&gt;downloaded here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Integration&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Improved DirectX integration by having the D3DImage class that enabled the developer to overlay or blend the Direct3D contents with the WPF contents.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In conclusion, all great stuff for those who develop using this powerful Microsoft Technology called WPF that changed the main community site to the &lt;a href="http://windowsclient.net/wpf" target="_blank"&gt;WindowsClient.net/WPF&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;For more information’s check the following links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/jaimer" target="_blank"&gt;Jaime Rodriguez&lt;/a&gt; blog post on &lt;a href="http://blogs.msdn.com/jaimer/archive/2008/08/15/cheat-sheet-to-some-of-the-wpf-3-5-sp1-features.aspx" target="_blank"&gt;WPF 3.5 SP1 features&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jgoldb" target="_blank"&gt;WPF perfomance&lt;/a&gt; blog post on &lt;a href="http://blogs.msdn.com/jgoldb/archive/2008/05/15/what-s-new-for-performance-in-wpf-in-net-3-5-sp1.aspx" target="_blank"&gt;What’s New for Performance in WPF in .Net 3.5 SP1&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/tims" target="_blank"&gt;Tim Sneath&lt;/a&gt; blog post on &lt;a href="http://blogs.msdn.com/tims/archive/2008/05/12/introducing-the-third-major-release-of-windows-presentation-foundation.aspx" target="_blank"&gt;Introducing the Third Major Release of Windows Presentation Foundation&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572428" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/nunogodinho/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://weblogs.asp.net/nunogodinho/archive/tags/WPF/default.aspx">WPF</category><category domain="http://weblogs.asp.net/nunogodinho/archive/tags/.NET+3.5+SP1/default.aspx">.NET 3.5 SP1</category></item><item><title>Outsourcing Software Development - You Get What You Pay For</title><link>http://weblogs.asp.net/jackieg/archive/2008/08/27/outsourcing-software-development-you-get-what-you-pay-for.aspx</link><pubDate>Wed, 27 Aug 2008 21:06:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572443</guid><dc:creator>Jackie Goldstein</dc:creator><slash:comments>3</slash:comments><description>&lt;FONT size=2&gt;
&lt;P&gt;This&amp;nbsp;post is excerpting / paraphrasing a section that appeared in our &lt;A class="" href="http://renaissance.co.il/newsletters.aspx" target=_blank mce_href="http://renaissance.co.il/newsletters.aspx"&gt;July 2008&amp;nbsp;newsletter&lt;/A&gt;.&amp;nbsp;&amp;nbsp;I'd really love to hear your thoughts&amp;nbsp;on this.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Over the past months, I have been approached by several different companies to help them clean up someone else’s mess (actually, disaster). Some of these companies we’ve been able to help (essentially rewriting their system), some we’ve had to turn down, and a few we are still in the midst of discussions and specifications. The details are different, but the recurring theme is the same: a company looks to outsource some or all of its software development in order to save money. They find a vendor who offers to do the work for a low price. X months and Y thousands of dollars later, they sadly realize that the reason the vendor was so inexpensive is because the system they delivered is close to useless. Then they call me.&lt;/P&gt;
&lt;P&gt;I’ve been thinking about why we at &lt;A class="" href="http://renaissance.co.il/" target=_blank mce_href="http://renaissance.co.il/"&gt;Renaissance&lt;/A&gt; are different from these other companies and developers. Sure, we have assembled a team of exceptional software developers – but everyone claims to have done that (even when obviously not true). Beyond raw talent and a great environment, why do we always succeed where others seem to fail?&amp;nbsp;At Renaissance, we spend a lot of time and effort in evaluating, selecting, and continuously improving the tools, techniques, and technologies that we use for our projects. From what I’ve seen and heard from these other projects, the software vendors did not use recent technologies, did not use known and common best practices, failed to use any sort of structured process, and were unaware of the many tools available to make things easier and faster. I just don’t get it… &lt;/P&gt;
&lt;P&gt;When it comes to outsourcing software development, like most things in life, you get what you pay for.&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572443" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jackieg/archive/tags/General/default.aspx">General</category><category domain="http://weblogs.asp.net/jackieg/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/jackieg/archive/tags/Distributed+Applications/default.aspx">Distributed Applications</category></item><item><title>Silverlight Business Application Part 2: Delete item</title><link>http://weblogs.asp.net/manishdalal/archive/2008/08/27/silverlight-business-application-part-2-delete-item.aspx</link><pubDate>Wed, 27 Aug 2008 21:01:19 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572417</guid><dc:creator>manish.dalal</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This is part two of &lt;a href="http://weblogs.asp.net/manishdalal/archive/2008/08/25/building-business-application-with-silverlight-2-beta-2.aspx"&gt;Building Business Application with Silverlight series&lt;/a&gt; that showcases the basic building blocks of a data centric application.&amp;#160; &lt;/p&gt;  &lt;p&gt;Deleting an item is quite similar to adding an item. Instead of adding new item to the collection, we just remove the selected item from the collection.&lt;/p&gt;  &lt;p&gt;To allow user to delete the selected person, add new Delete button to StackPanel&lt;/p&gt;  &lt;div&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Orientation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Horizontal&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #008000"&gt;&amp;lt;!--&amp;lt;Button x:Name=&amp;quot;addButton&amp;quot; Content=&amp;quot;Add&amp;quot; Margin=&amp;quot;5&amp;quot;/&amp;gt;--&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Button&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;deleteButton&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Delete&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now add handler for delete click event in the page.xaml.cs code behind&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Page() {
    InitializeComponent();
    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Loaded += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RoutedEventHandler(Page_Loaded);
    &lt;span style="color: #008000"&gt;//this.addButton.Click += new RoutedEventHandler(addButton_Click);&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.peopleDataGrid.KeyDown += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; KeyEventHandler(peopleDataGrid_KeyDown);
    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.deleteButton.Click += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RoutedEventHandler(deleteButton_Click);
}


&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; deleteButton_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, RoutedEventArgs e) {
    DeletePerson();
}

&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; DeletePerson() {
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;null&lt;/span&gt; == &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.peopleDataGrid.SelectedItem) {
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;
    }
    &lt;span style="color: #008000"&gt;//&lt;/span&gt;
    Person person = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.peopleDataGrid.SelectedItem &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; Person;
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;null&lt;/span&gt; == person) {
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;
    }
    &lt;span style="color: #008000"&gt;//&lt;/span&gt;
    _data.Remove(person);
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;F5 and run the application, try to add some new items and delete them&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;a href="http://weblogs.asp.net/blogs/manishdalal/WindowsLiveWriter/SilverlightBusinessApplicationParT2delet_DC88/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="346" alt="image" src="http://weblogs.asp.net/blogs/manishdalal/WindowsLiveWriter/SilverlightBusinessApplicationParT2delet_DC88/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You can also allow user to delete using key board&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; peopleDataGrid_KeyDown(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, KeyEventArgs e) {
    &lt;span style="color: #008000"&gt;//if (Key.Insert == e.Key) {&lt;/span&gt;
    &lt;span style="color: #008000"&gt;//    _data.Add(new Person());&lt;/span&gt;
    &lt;span style="color: #008000"&gt;//}  &lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Key.Delete == e.Key) {
        DeletePerson();
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;On problem with above solution is the fact that user can delete our empty row at the end and then they have no way of adding new item! Lets fix that by checking for removal of emptyPerson in the People class&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RemoveItem(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; index) {
    Person personToRemove = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;[index] &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; Person;
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (emptyPerson != personToRemove) {
        &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.RemoveItem(index);
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now when user tries to remove last empty row used to add new item, we detect it and prevent removal of emptyPerson. &lt;/p&gt;

&lt;p&gt;In a real application, DeletePerson will eventually call backend application server to remove the item from database. A nice enhancement would be to provide ability recover deleted item, similar to Recycle Bin functionality, by maintaining list of deleted items on the client side.&lt;/p&gt;

&lt;p&gt;One alternative to deleting immediately is to collect deleted items in a separate list and batch delete them when user elects to save changes. You can either maintain separate list or keep item in the same list and just change the state to mark them as deleted. This can be further combined with data binding to make DataGrid row read only and rendered with different color to indicate deleted row status. This gives user visibility of all changes and provides a chance to change mind before committing!&lt;/p&gt;

&lt;p&gt;At this point we have a complete functioning application that allow user to add data, update data and delete. Next we will take on validation. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572417" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/manishdalal/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/manishdalal/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/manishdalal/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Getting Ready for VSlive! New York </title><link>http://weblogs.asp.net/jackieg/archive/2008/08/27/getting-ready-for-vslive-new-york-conference.aspx</link><pubDate>Wed, 27 Aug 2008 20:53:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572423</guid><dc:creator>Jackie Goldstein</dc:creator><slash:comments>1</slash:comments><description>&lt;P mce_keep="true"&gt;In two weeks is the VSLive! Conference in New York City, where I'll be giving two presentations.&amp;nbsp; This promises to be another great conference, and especially fun for me to be back in my home town.&amp;nbsp; You can still sign up to attend - see the details at &lt;A href="http://vslive.com/2008/newyork/" mce_href="http://vslive.com/2008/newyork/"&gt;http://vslive.com/2008/newyork/&lt;/A&gt;&lt;BR&gt;If you make it over, please let me know so we can get together.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here the abstracts for my sessions:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;The ADO.NET Entity Framework and Entity Data Model&lt;BR&gt;&lt;/STRONG&gt;Monday, September 8, 11:15 a.m.&lt;BR&gt;Come learn about Microsoft's newly released Object Relational Mapping (ORM) offering - the ADO.NET Entity Framework and the Entity Data Model. See how they simplify and raise the level of abstraction available for data programming. The Entity Framework is an evolution of ADO.NET that you already know and love and is built upon the standard ADO.NET Provider model which allows access to third party databases. Designers for Visual Studio are also available to make your development even more productive.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Using SQL Server 2005 Compact Edition&lt;BR&gt;&lt;/STRONG&gt;Tuesday, September 9, 1:45 p.m.&lt;BR&gt;SQL Server Compact Edition is no longer limited to mobile devices &amp;shy; you can use it to develop desktop applications as well ! This session will introduce you to SQL Server Compact Edition and show you how you can build today both standalone and occasionally connected applications with this lightweight database engine. We will discuss the various options and tradeoffs for deploying, developing, and synchronizing with a central database server. We will also show how SQL Server Compact Edition is a cornerstone of Synchronization Services for ADO.NET and will demo the tools in Visual Studio 2008 for configuring this synchronization between SQL Server and SQL Server Compact Edition.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572423" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jackieg/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://weblogs.asp.net/jackieg/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://weblogs.asp.net/jackieg/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/jackieg/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Visual vs. “Executable” Build Configurations</title><link>http://weblogs.asp.net/rosherove/archive/2008/08/27/visual-vs-executable-build-configurations.aspx</link><pubDate>Wed, 27 Aug 2008 20:37:51 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572363</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;a href="http://codebetter.com/blogs/david_laribee/archive/2008/08/25/omg-rake.aspx"&gt;Dave wrote a really nice overview&lt;/a&gt; of how much he liked playing with Rake, the Ruby based build script. From his post I can say that it does indeed look nice in its awesomeness of clear usage and programmability. So why do I still have trouble migrating over from a “visual” build system (which we use &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/08/12/build-and-continuous-integration-toolgasm-achieved.aspx"&gt;and I cover here&lt;/a&gt;) like FinalBuilder and move to something like Rake?&lt;/p&gt;  &lt;p&gt;I’ll try to think our loud and see where it leads me. Let’s compare the two approaches in several ways:&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://rake.rubyforge.org/"&gt;Rake&lt;/a&gt; Way&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/WindowClipping%20(8)_2.jpg"&gt;&lt;img title="WindowClipping (8)" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="439" alt="WindowClipping (8)" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/WindowClipping%20(8)_thumb.jpg" width="422" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The Visual Way (&lt;a href="http://www.finalbuilder.com"&gt;FinalBuilder&lt;/a&gt; in this case. Also check out &lt;a href="http://www.kinook.com/VisBuildPro/Manual/?overview.htm"&gt;Visual Build Pro&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="483" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb.png" width="706" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;What’s going on here?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The “what’s going on here” phase is what a developer faces when looking at the build script for the first time. I think the Rake way is very clear to understand what’s going on even if you don’t know ruby. But take a look at the visual way. It is easy not only to understand what is happening, but also &lt;strong&gt;the hierarchy &lt;/strong&gt;of steps that are being taken.&lt;/p&gt;  &lt;p&gt;I would find it much easier to explain to a new developer how the build works in a visual manner because of that. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Authoring Experience&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A visual build developer does not need to learn a new language (Ruby) to start authoring or maintain the build. this is a huge plus. Sure, learning ruby is a great thing in itself, but it should not be a road block to create a build system. Once you &lt;strong&gt;know&lt;/strong&gt; ruby though, what is the experience like? As I have not played with Rake myself, my assumptions about it are exactly that – assumptions. tell me if I’m wrong. &lt;/p&gt;  &lt;p&gt;Ruby is &lt;strong&gt;easy&lt;/strong&gt; to program in. Therefore the build should be &lt;strong&gt;easy&lt;/strong&gt; to author once you know Ruby. Generally. I am not talking about custom tasks (separate point later). &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Task Discoverability&lt;/u&gt;&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt; This is really important. How do you know which tasks you have available to you? I’m not sure how you know in Rake (other than sifting through source files?), but visually there are usually easy ways to see all the possible tasks, by category. see below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_6.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="344" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_2.png" width="185" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you select a task, it is easy to discover what it can do and what you need to give it as inputs. Rake and Ruby have intellisense (I’m guessing).&lt;/p&gt;  &lt;p&gt;Visual authoring is really easy too, since it presents you with windows that let you know what inputs you need to put in for each task. here is an example:&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; &lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="216" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;&lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Managing flow and logic&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is really important since any self respecting build script would do much more than simply compile or run tests. This is where you’d expect a programming based approach to have a mightier hand. It is &lt;strong&gt;absurdly&lt;/strong&gt; easy to do flow logic in a programming based language. and simple if, for and switch will simply work as expected.&amp;#160; &lt;/p&gt;  &lt;p&gt;In my case, FinalBuilder also has excellent flow related logic that includes all of the above. Simple click the “if-else” task and arrange under it’s node anything that should be run if it is true (or false, your choice). here is how it looks(from left to right):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_10.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="400" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_4.png" width="252" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/WindowClipping%20(9)_2.jpg"&gt;&lt;img title="WindowClipping (9)" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="333" alt="WindowClipping (9)" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/WindowClipping%20(9)_thumb.jpg" width="376" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/WindowClipping%20(11)_2.jpg"&gt;&lt;img title="WindowClipping (11)" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="126" alt="WindowClipping (11)" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/WindowClipping%20(11)_thumb.jpg" width="350" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Some people find it silly to do such a “visual programming” thing. I think that this is good enough DSL for this medium with a balance of being easy to understand and having good flow control in an easy way.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Using Variables and parameters&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In Rake you define the variables in the script files:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_12.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="156" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_5.png" width="336" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;in a tool like FinalBuilder you set variables in a separate window and choose their scope(or even automatically have them set as env. variables):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_14.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_6.png" width="398" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can also declare variables that include other variables in them (your binaries location is combined of your build location + Binaries for example). &lt;/p&gt;  &lt;p&gt;So the visual way is &lt;strong&gt;at least&lt;/strong&gt; comparable in feature set.&amp;#160; Of course, you can modify, define and check for variables at runtime with the appropriate tasks.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Sub scripts and includes&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;in Ruby you can declare sub functions in the same script or in other scripts and just call them (by “include”ing them).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_16.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="314" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_7.png" width="577" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In FinalBuilder you can create “Action Lists” that look like tabs on the top of the build editor. You can also have tasks that invoke external build scripts. Action lists can also take in parameters (like functions) if you want, and use them in their work:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_18.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="300" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_8.png" width="515" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;again, comparable, and reusable.&amp;#160; although definitely more (actually, almost only) clicking (is that bad?)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Built in Tasks&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This is where the visual stuff wins hands down, I believe. There are hundreds of built in, easily discoverable tasks in the FB IDE, which means I almost &lt;strong&gt;never&lt;/strong&gt; have to write my own. In the four years I have used it, I can only recall a couple of times I had to create my own tasks. even then, there was always a way to do it differently if I wanted to. &lt;/p&gt;    &lt;p&gt;Anything from file handling, Multi threaded tasks, text parting and Database manipulation to COM+, Active directory, obfuscators and installer tasks. it’s all there and easy to search for. &lt;strong&gt;With integrated help&lt;/strong&gt;.&amp;#160; Here is just the list of &lt;strong&gt;categories&lt;/strong&gt; of tasks in FinalBuilder:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_20.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; margin: 0px 20px 0px 0px; border-left: 0px; border-bottom: 0px" height="526" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_9.png" width="117" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Rake has lots of stuff , &lt;/p&gt;    &lt;p&gt;but &lt;/p&gt;    &lt;p&gt;it &lt;/p&gt;    &lt;p&gt;is &lt;/p&gt;    &lt;p&gt;not &lt;/p&gt;    &lt;p&gt;even &lt;/p&gt;    &lt;p&gt;close. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Am &lt;/p&gt;    &lt;p&gt;I &lt;/p&gt;    &lt;p&gt;wrong?&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;Custom Tasks and extensibility&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;You can very easily create custom tasks for Rake. You just write them. With FB you have several routes: &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Create a custom &lt;strong&gt;visual task&lt;/strong&gt; that has a designer and form and everything, using its own integrated Task Studio (you can program its logic in C#), &lt;/li&gt;      &lt;li&gt;Run command lines and create custom batch files of console applications. &lt;/li&gt;      &lt;li&gt;Create the task in the build script itself using Powershell, VBScript or JavaScript (the editor has intellisense)&lt;/li&gt;      &lt;li&gt;&amp;#160;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_22.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="168" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_10.png" width="313" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Ruby has some edge on ease of extensibility (it is almost frictionless). It takes longer with FB, but you almost never need it.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Debugging&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can easily debug Ruby scripts. FinalBuilder allows debugging as well by putting breakpoints on tasks and checking all variables and actions (plus watch windows for variables) when you break. Also, you can easily enabled and disable tasks that will run by simply checking and unchecking its checkbox:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_24.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="230" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/Visualvs.ExecutableBuildConfigurations_14C07/image_thumb_11.png" width="700" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I think they are comparable.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Compare and Merge&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;FinalBuilder saved to an XML File. it’s not great but it is somewhat mergeable. Ruby is very easy to merge. Assuming this is a frequent task (two people working on the build) Ruby will be much easier. However, I almost never need to do this since the build is usually handled by one person (or pair) at any time anyway. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Maintenance&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It is easier to maintain something that is visual, where it is easy to find anything you are looking for. That is my feeling and I think the visual way is more maintainable than any Ruby or XML file.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Money&lt;/p&gt;  &lt;p&gt;Ah. FinalBuilder costs money. Ruby does not. One will cost you more than the other. I don’t think FinalBuilder is the costlier one in this regard. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;So, who wins in my book?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have not yet found a &lt;strong&gt;really compelling&lt;/strong&gt; reason to move to a non visual build script. I would love to hear good reasons for doing that as I am obviously missing something. Let me know what it is in the comments.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572363" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/General+Software+Development/default.aspx">General Software Development</category></item><item><title>IE8 beta2 out - make all your sites unbreakable!</title><link>http://weblogs.asp.net/acyment/archive/2008/08/27/ie8-beta2-out-make-all-your-sites-unbreakable.aspx</link><pubDate>Wed, 27 Aug 2008 19:56:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6572361</guid><dc:creator>acyment</dc:creator><slash:comments>1</slash:comments><description>&lt;a href="http://www.sfgate.com/cgi-bin/blogs/sfgate/detail?blogid=19&amp;entry_id=29523"&gt;Internet Explorer 8 beta 2 is finally out&lt;/a&gt;, and standards-aware developers should rejoice: the de facto standard browser is now more standards-compliant than ever.
&lt;strong&gt;&lt;em&gt;Converts beware:&lt;/em&gt;&lt;/strong&gt;wicked Internet Explorer 7/6/5 hacks will simply render wicked things in Explorer, and that is a &lt;em&gt;very&lt;/em&gt; good thing. Yet, you want your page to work until you move to standards. The people at &lt;a href="http://www.aggiorno.com"&gt;Aggiorno&lt;/a&gt; have just released the beta version of &lt;a href="http://www.aggiorno.com/learn/aggiornoexpress.aspx"&gt;a free tool that can add the compatibility tag needed for your decrepit sites to look nice in IE8&lt;/a&gt;. Give it a try and tell me your impressions on it.

Cheers,
Alan &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6572361" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/acyment/archive/tags/web+standards/default.aspx">web standards</category><category domain="http://weblogs.asp.net/acyment/archive/tags/ASP.net/default.aspx">ASP.net</category><category domain="http://weblogs.asp.net/acyment/archive/tags/xhtml/default.aspx">xhtml</category><category domain="http://weblogs.asp.net/acyment/archive/tags/search+engine+optimization/default.aspx">search engine optimization</category><category domain="http://weblogs.asp.net/acyment/archive/tags/markup/default.aspx">markup</category><category domain="http://weblogs.asp.net/acyment/archive/tags/seo/default.aspx">seo</category><category domain="http://weblogs.asp.net/acyment/archive/tags/accessibility/default.aspx">accessibility</category><category domain="http://weblogs.asp.net/acyment/archive/tags/internet+explorer+8/default.aspx">internet explorer 8</category></item><item><title>Mojave Experiment Now in Silverlight</title><link>http://weblogs.asp.net/guybarrette/archive/2008/08/27/mojave-experiment-now-in-silverlight.aspx</link><pubDate>Wed, 27 Aug 2008 17:03:05 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6571983</guid><dc:creator>guybarrette</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Scott Stanfield and his amazing team at &lt;A href="http://www.vertigo.com/"&gt;Vertigo&lt;/A&gt; has &lt;STRIKE&gt;converted&lt;/STRIKE&gt; transformed the &lt;A href="http://www.mojaveexperiment.com/"&gt;Mojave Experiment Website&lt;/A&gt; from Flash to Silverlight.&amp;nbsp; Simply stunning!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.mojaveexperiment.com/"&gt;http://www.mojaveexperiment.com/&lt;/A&gt;&lt;/P&gt;&lt;img width="0" height="0" src="http://guy.dotnet-expertise.com/cptrk.ashx?id=9ada1fe3-3ff5-4865-bf68-f17016932aa5"&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6571983" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/guybarrette/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Using the Silverlight Server Control in ASP.NET Pages</title><link>http://weblogs.asp.net/kencox/archive/2008/08/27/using-the-silverlight-server-control-in-asp-net-pages.aspx</link><pubDate>Wed, 27 Aug 2008 17:02:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6571979</guid><dc:creator>Ken Cox [MVP]</dc:creator><slash:comments>0</slash:comments><description>Microsoft makes available server controls that help you insert rich media such as Silverlight into your ASP.NET pages. If you’re confused about where to find the latest version of these controls, you’re in good company! Pre-release versions have appeared with various Community Technical Previews (CTP), ASP.NET Futures, and ASP.NET Extensions. The code is now (at this hour, anyway) part of the Silverlight 2 Software Development Kit, a free download. You need to download the full Silverlight SDK even...(&lt;a href="http://weblogs.asp.net/kencox/archive/2008/08/27/using-the-silverlight-server-control-in-asp-net-pages.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6571979" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/kencox/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/kencox/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/kencox/archive/tags/Dummies/default.aspx">Dummies</category><category domain="http://weblogs.asp.net/kencox/archive/tags/asp.net+3.5/default.aspx">asp.net 3.5</category></item></channel></rss>