<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.bespoke.com.my/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>Community Server</title><link>http://blogs.bespoke.com.my/blogs/default.aspx</link><description>The platform that enables you to build rich, interactive communities</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 (Build: 60809.935)</generator><item><title>jQuery for your website</title><link>http://blogs.bespoke.com.my/blogs/ery/archive/2008/10/30/jQuery-for-your-website.aspx</link><pubDate>Wed, 29 Oct 2008 23:06:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:29</guid><dc:creator>erymuzuan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;We started using jQuery about a year ago, with little knowledge and much bitter relationship with javascript. jQuery made javascript more loveable, The &lt;a href="http://docs.jquery.com/Selectors" title="jQuery selectors"&gt;selectors&lt;/a&gt; is one of the most interesting bit in jQuery, as well as there are tones of freely and useful available &lt;a href="http://marcgrabanski.com/article/list-of-useful-jquery-plugins" title="jQuery plugins"&gt;plugins&lt;/a&gt; on the internet. For a while we got stuck with Microsoft offering , ASP.Net ajax, but it sucks , I got all the UpdatePanel replaced with ajax call and PageMethod cool. If you guys are on Visual Studio check this out, intellisense for Visual Studio.&lt;/p&gt;&lt;p&gt;1.2.6: &lt;br /&gt;&lt;a href="http://code.jquery.com/jquery-1.2.6-vsdoc.js" target="_blank"&gt;http://code.jquery.com/jquery-1.2.6-vsdoc.js&lt;/a&gt; &lt;br /&gt;Latest release (currently just a copy of 1.2.6): &lt;br /&gt;&lt;a href="http://code.jquery.com/jquery-latest-vsdoc.js" target="_blank"&gt;http://code.jquery.com/jquery-latest-vsdoc.js&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=29" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/ery/archive/tags/jQuery/default.aspx">jQuery</category></item><item><title>SQL Injection : The good , the bad and the ugly</title><link>http://blogs.bespoke.com.my/blogs/ery/archive/2008/10/30/SQL-Injection-_3A00_-The-good-_2C00_-the-bad-and-the-ugly.aspx</link><pubDate>Wed, 29 Oct 2008 12:41:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:28</guid><dc:creator>erymuzuan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;You can download our presentetation slide at &lt;a href="http://www.bespoke.com.my/sql_injection.zip"&gt;http://www.bespoke.com.my/sql_injection.zip&lt;/a&gt;. We welcome any comment, critics.&lt;/p&gt;&lt;p&gt;You&amp;#39;ll need Microsoft Visual Studio, I use Professional Edition, but you can download free edition of Visual Studio Express edition &lt;a href="http://download.microsoft.com/download/E/8/E/E8EEB394-7F42-4963-A2D8-29559B738298/VS2008ExpressWithSP1ENUX1504728.iso" title="Download iso"&gt;here&lt;/a&gt;.&amp;nbsp; You can download my mp3 orgnizer tools from &lt;a href="http://www.bespoke.com/mp3.orgs.zip"&gt;http://www.bespoke.com/mp3.orgs.zip&lt;/a&gt;, but you&amp;#39;ll need Visual Studio 2008 SP1 Professional to view the workflow.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=28" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/ery/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Using Windows Forms DateTime picker in WPF</title><link>http://blogs.bespoke.com.my/blogs/hakimin/archive/2007/04/22/Using-Windows-Forms-DateTime-picker-in-WPF.aspx</link><pubDate>Sat, 21 Apr 2007 23:14:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:24</guid><dc:creator>erymuzuan</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;WPF is great piece of technology coming out from Redmond , it&amp;#39;s kinda of really good when you&amp;#39;re building nice presentation, that really shines. But for most enterprise developer, who needs to deal with data frequently, the lack of certain data aware control is a huge limiting factor, and we all know that, there&amp;#39;s no DateTime data control in WPF. Kevin Moore&amp;#39;s bag o tricks created a pure WPF dateTime picker but the feature far behind what&amp;#39;s offered by Windows Forms. Fortunately we could use any Windows Forms control in WPF with WindowForsm Intergration(crossbow).&lt;/p&gt;&lt;p&gt;Basically we&amp;#39;re going to create a UserControl, put a grid in and off we go&lt;/p&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;&amp;lt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;x:Class&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Bespoke.Forensic.CommonControl.WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;&amp;quot; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;xmlns&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;xmlns:x&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;xmlns:swf&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;xmlns:wfi&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;root&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;&amp;lt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;*&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Auto&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;*&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Auto&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;&amp;lt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Column&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Row&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Margin&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;swf:DateTimePicker&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;x:Name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;wfdateTimePicker&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Format&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Custom&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;CustomFormat&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;dd/MM/yyyy hh:mm tt&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Column&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Row&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Margin&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;swf:DateTimePicker&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;x:Name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;wfdateTimePicker&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Format&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Custom&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;CustomFormat&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;dd/MM/yyyy hh:mm tt&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;x:Class&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Bespoke.Forensic.CommonControl.WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;&amp;quot; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;xmlns&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;xmlns:x&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;xmlns:swf&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;xmlns:wfi&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;root&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;&amp;lt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;*&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Auto&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;*&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Auto&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;&amp;lt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Column&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Row&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Margin&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;swf:DateTimePicker&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;x:Name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;wfdateTimePicker&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Format&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Custom&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;CustomFormat&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;dd/MM/yyyy hh:mm tt&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Column&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Row&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Margin&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;swf:DateTimePicker&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;x:Name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;wfdateTimePicker&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Format&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Custom&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;CustomFormat&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;dd/MM/yyyy hh:mm tt&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;*&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;ColumnDefinition&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Width&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Auto&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid.ColumnDefinitions&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;&amp;lt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Column&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Row&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Margin&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;swf:DateTimePicker&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;x:Name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;wfdateTimePicker&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Format&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Custom&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;CustomFormat&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;dd/MM/yyyy hh:mm tt&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Column&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Grid.Row&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Margin&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;0&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;swf:DateTimePicker&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;x:Name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;wfdateTimePicker&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;Format&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Custom&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;CustomFormat&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;dd/MM/yyyy hh:mm tt&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;wfi:WindowsFormsHost&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;Grid&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;Then we need to create&amp;nbsp; proxy property for the WF DatePicker to be able to do DataBinding, we&amp;#39;re going to need DependencyProperty&lt;/p&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;readonly&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;font size="2"&gt; ValueProperty;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;readonly&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;font size="2"&gt; ValueProperty;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; WpfDateAndTimePicker()&lt;p&gt;{&lt;/p&gt;&lt;p&gt;IsDropDownOpenProperty &lt;strong&gt;&lt;font color="#000080" size="2"&gt;=&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Register(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;IsDropDownOpen&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt;), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;),&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnIsDropDownOpenChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;ValueProperty &lt;strong&gt;&lt;font color="#000080" size="2"&gt;=&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Register(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Value&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;?&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;),&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Now, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnValueChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; WpfDateAndTimePicker()&lt;p&gt;{&lt;/p&gt;&lt;p&gt;IsDropDownOpenProperty &lt;strong&gt;&lt;font color="#000080" size="2"&gt;=&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Register(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;IsDropDownOpen&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt;), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;),&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnIsDropDownOpenChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;ValueProperty &lt;strong&gt;&lt;font color="#000080" size="2"&gt;=&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Register(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Value&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;?&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;),&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Now, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnValueChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;=&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Register(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;IsDropDownOpen&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt;), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;),&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnIsDropDownOpenChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;ValueProperty &lt;strong&gt;&lt;font color="#000080" size="2"&gt;=&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Register(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Value&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;?&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;),&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Now, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnValueChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnIsDropDownOpenChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;ValueProperty &lt;strong&gt;&lt;font color="#000080" size="2"&gt;=&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Register(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Value&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;?&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;),&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Now, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnValueChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;=&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DependencyProperty&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Register(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Value&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;?&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;typeof&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WpfDateAndTimePicker&lt;/font&gt;&lt;font size="2"&gt;),&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Now, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnValueChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadata&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DateTime&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;Now, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;FrameworkPropertyMetadataOptions&lt;/font&gt;&lt;strong&gt;&lt;font color="#000080" size="2"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;BindsTwoWayByDefault, OnValueChanged, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;));&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=24" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/hakimin/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Creating a Form </title><link>http://blogs.bespoke.com.my/blogs/hakimin/archive/2006/11/04/Creating-.aspx</link><pubDate>Fri, 03 Nov 2006 09:12:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:23</guid><dc:creator>hakimin</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Here i will write an example doin a form programming. No more such bull *** of explaination. I Will give an example and it will make you all more easy to understand.&lt;/p&gt;&lt;p&gt;Example :&lt;/p&gt;&lt;p&gt;From last blog we have create a simple form application. Today is some but little bit different;&lt;/p&gt;&lt;p&gt;using System.Windows.Form;&lt;/p&gt;&lt;p&gt;class FirstFormApplication: Form {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class FirstFormApplication()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  this.Text = &amp;quot;Hello World Form Programming&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;and we can call the FormApplication class to other application class we want to as example&lt;br /&gt;&lt;br /&gt;class MyApplication{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Form form = new FirstFormApplication();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.Run(form);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;so we can do a lot of change and more on FirstFormApplication class and it can be call into MyApplication class and run it on because the entry point is there. So we can modified FirstFormApplication as i create an example :&lt;/p&gt;&lt;p&gt;&amp;nbsp;class FirstFormApplication: Form {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public class FirstFormApplication()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  this.Text = &amp;quot;Hello World Form Programming&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp;  Button button = new Button();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  button.Text = &amp;quot;Click Me&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; this.Controls.Add(button);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} &lt;/p&gt;&lt;p&gt;&amp;nbsp;that for today dude...&lt;/p&gt;&lt;p&gt;adios&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=23" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/hakimin/archive/tags/Window+Form+Programming/default.aspx">Window Form Programming</category></item><item><title>Form.Show or .ShowDialog or .Application.Run(Form)</title><link>http://blogs.bespoke.com.my/blogs/hakimin/archive/2006/11/03/Form.Show-or-.ShowDialog-or-.Application.Run_2800_Form_2900_.aspx</link><pubDate>Thu, 02 Nov 2006 08:31:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:22</guid><dc:creator>hakimin</dc:creator><slash:comments>0</slash:comments><description>Chapter 1 in Window Forms 2.0 Programming.&lt;br /&gt;&lt;br /&gt;What the book talk about. Ermmm from the reading, i got a very clear view of Windows Form 2.0 programming. As example have been show, i know a little bit basic of Form under System.Windows.Form.&lt;br /&gt;&lt;br /&gt;So for today, i will give a very simple example of Windows Form programming as a basic to me and all. For this first blog of Window Forms 2.0 Programming.&lt;br /&gt;First of all i will tell about Form. What is it?. We can create an application without using a form. Form is just an interface that communicate user with the computer system. An application without a form will be simple boring because user will se a text only. By using a form, a sofware developer can create an interface which will make user fell glad to using an application. A form can be a dialog box, message box, sigle document interface (SDI) windows or a multiple document interface (MDI) windows. It can be more complicated as we can se windows application today. That the explanation about windows form. So i will give a simple example creating a windows form application.&lt;br /&gt;&lt;br /&gt;Example :&lt;br /&gt;&lt;br /&gt;class FormApplication&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms.MessageBox.Show(&amp;quot;Hello, Form Programming&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;so that is the very simple windows form programming. But now a day, we can not use a very long statement as System.Windows.Forms to get a message box from Form library. In C# we can use &amp;#39;using&amp;#39; to call the System.Windows.Forms namespace. So what we have to do is&lt;br /&gt;&lt;br /&gt;Example :&lt;br /&gt;&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;class FormApplication&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(&amp;quot;Helloo, Form Programming&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;the code so easy to read and we the developer will be easy to maintain. So lets procceed to our main topic. The example shown is very simple form application. We can create a complex application, but before that i want to show a three diffrent way to show a form windows.&lt;br /&gt;&lt;br /&gt;Example 1 :&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;class FormApplication&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Form form = new Form();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;form.Show(); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;this way we can show the form application but it not the best way to use it. Because it will prompt returns and exist the process. So if you want to show a form modeless, you can use that approach. &amp;quot;Show&amp;quot; the form. If you want to show form &amp;quot;modally&amp;quot;, see this second example. Modally meant the form will be shown until user close it, an it will return to the Main method. It use &amp;quot;ShowDialog&amp;quot; method.&lt;br /&gt;&lt;br /&gt;Example 2 :&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;class FormApplication&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Form form = new Form();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;form.ShowDialog(); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;but this one its not the one you maybe want to use if you are building an application. Because it not accessible to other parts of your application. So to make it real and contect with you application, pass the main form as an argument to the Application objects static run as example below.&lt;br /&gt;&lt;br /&gt;Example 3 :&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;class FormApplication&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Form form = new Form();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;form.Text = &amp;quot;Hello Form Application&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Application.Run(form);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;so many things you can do more. But i will write more about. Enough at this for an enterview&lt;br /&gt;&lt;br /&gt;Adios&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=22" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/hakimin/archive/tags/Window+Form+Programming/default.aspx">Window Form Programming</category></item><item><title>Agile charts</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/11/03/Agile-charts.aspx</link><pubDate>Thu, 02 Nov 2006 05:29:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:21</guid><dc:creator>nazura</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Conventional software project management uses Gantt Chart to plan task activities and estimate how long it will take to complete a project. However, it is hard to maintain and overshadow the the big picture with details. The most 2 important things to know in developing a project are &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Are we on time?&lt;/li&gt;&lt;li&gt;Are we on budget?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By using the burn down chart or budget chart, we will get a clearer picture on our current project state. From there, we can estimate the works to be completed with reasonable budget. Look at the example below:&lt;/p&gt;&lt;p&gt;&lt;img height="375" src="http://www.agilekiwi.com/1745f770.jpg" width="607" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The dotted gray line is the target. In this example, the project is 10 weeks long. Each week, we expect to complete 10% of work and use up 10 % of budget.&lt;/p&gt;&lt;p&gt;That&amp;#39;s the ideal scenario and of course real worls is different. That&amp;#39;s why we need another 2 lines. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;The orange line shows how much budget has been &amp;quot;burned&amp;quot;. It is based on actual hours worked by the team. in this example, we are 3 weeks into the project and we&amp;#39;ve burned 40% of the budget. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The green line shows percent complete. It is based on features-completed so far. In this example only 20% of work completed at the end of week3.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The project is in trouble. We&amp;#39;ve spent 40% of the budget to complete only 20% of work. According to plan, we should have use 30% of budget to complete 30% of work. At least, we noticed the bad&amp;nbsp;progressing early and we still have times to fix it.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="http://www.agilekiwi.com/1745f770.jpg"&gt;&lt;/a&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=21" width="1" height="1"&gt;</description></item><item><title>Windows Form</title><link>http://blogs.bespoke.com.my/blogs/hakimin/archive/2006/11/02/Windows-Form.aspx</link><pubDate>Wed, 01 Nov 2006 08:24:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:20</guid><dc:creator>hakimin</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Tomorrow i start to write a blog post about windows form programming. I will write all about it every day maybe or evry time if lucky to tell to all of you abou window form programming so you also can learn about. Today i&amp;#39;m not ready and don&amp;#39;t know nothing. so tomorrow i will start. &lt;/p&gt;&lt;p&gt;Get ready dude. and wait for it&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=20" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/hakimin/archive/tags/Window+Form+Programming/default.aspx">Window Form Programming</category></item><item><title>Event Publication and Subscription on SCFC or CAB</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/11/02/Event-Publication-and-Subcription-on-SCFC-or-CAB.aspx</link><pubDate>Wed, 01 Nov 2006 07:48:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:19</guid><dc:creator>hakimin</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;On SCSF and CAB there two things that for me is new. First is Event Publication. Event Publication is the publisher of event where the event if fire. As example i have this kind of code:&lt;br /&gt;&amp;nbsp;&lt;br /&gt;public void item_clicked(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Clicked();&lt;br /&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;and i want publish this event so the other WorkItem can subscribe it. So what i do is i create an Event publication&lt;br /&gt;&lt;br /&gt;[EventPublication(EventTopicNames.ItemClicked, PublicationScope.Global)]&lt;br /&gt;public event EventHandler&amp;lt;EventArgs&amp;gt; ItemIsClicked&lt;/p&gt;&lt;p&gt;this is for publish the event and we have to create one protected virtual method to invoke that event as example:&lt;/p&gt;&lt;p&gt;protected virtual void OnItemIsClicked(object item)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(null != ItemIsClicked)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  ItemIsClicked(this, new EventArgs())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;but at the item_clicked method we have to put CommandHandler so the CAB know which event have involve. What we have to do is &lt;br /&gt;&lt;br /&gt;[CommandHandler(CommandNames.ItemClickedCommand)]&lt;br /&gt;public void item_clicked(object sender, EventArgs e)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Clicked();&lt;br /&gt;
}&amp;nbsp;&lt;/p&gt;&lt;p&gt;that on event publication... on other presenter or Module Controller we can subscribe event as example like below;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;[EventSubscription(EventTopicNames.ItemClicked, ThreadOption.UserInterface)]&lt;br /&gt;public void ItemClicked(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.Clicked();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; panel.Text = &amp;quot;Clicked&amp;quot;;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;thats what i&amp;#39;ve trying to familiar with CAB od SCSF and if there is some thing wrong... please comment it and fix the wrong... i still in learning on this kind of CAB and SCSF&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=19" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/agile/archive/tags/Smart+Client/default.aspx">Smart Client</category></item><item><title>Smart Client Software Factory and CAB</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/07/Smart-Client-Software-Factory-and-CAB.aspx</link><pubDate>Fri, 06 Oct 2006 08:19:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:18</guid><dc:creator>hakimin</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;What CAB? CAB is short term for Composite UI Application Block. This is realase by Microsoft to solve proble of many developer face when try to copy cat on wincontainer like Outlook. Using CAb, all proble of share state, transfering data and so on we face when using a wincontainer is solve. In CAB, its contains a part as&amp;nbsp; major item. Work Item, SmartPart, ShellProgram, Presenter and so on. WorkItem is working as a module which can contain few smartpart. SmartPart is a user control or a view for user to look. A presenter is a place we put event handler, methods and rule or whatever. This part will communicate together and will be inject into shellProgram and run on it.&lt;/p&gt;&lt;p&gt;&amp;nbsp;So if we have 4 or more workItem, we can combine it in ShellProgram and the data between workitem can be transfer to each other and we do not need to press our brain to work hard to think about it. All of ot will be done and will be help by using CAB.&lt;/p&gt;&lt;p&gt;But, ofurtunately, Smart Client Software factory came and more on helping us on developing. Using SCSF is very greatfull to me. Because, by using it, we simplu can reduce a time to think about on develop system on CAB. &lt;/p&gt;&lt;p&gt;It is realy easy. Very easy, even i who just very new in this programming arena can understand it. Create Smart Client solution when open VS and you just only have to follow the order and it is have guidance to. All help document is there. And to accomplish this, download all this from Microsoft. Refer to gotDotNet and find more about SCSF and CAB.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;Happy trying dude.&lt;/p&gt;&lt;p&gt;adios&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=18" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/agile/archive/tags/Smart+Client/default.aspx">Smart Client</category></item><item><title>Estimating point size on User Stories</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/07/Estimating-point-size-on-User-Stories.aspx</link><pubDate>Fri, 06 Oct 2006 08:13:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:17</guid><dc:creator>hakimin</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Why it is important to clearly estimate point size of user stories. It is important because if we are over estimate the user stories point it will give a bad result on velocity and burdown chart. Over estimate is have to but if we are over2 estimate, that have to avoid. When we over estimate to some of user stories then it will cost of free time and this will cause of increasing of budget.&lt;/p&gt;&lt;p&gt;Under estimate is also bad on estimating user stories point... because if we under estimate a user story point... it will make delivery delay and this will dissapointed user because its not follow the schedule and this will make corporate to think about your position of Project Manager and Developer. under estimate user story point have to be avoid.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Estimating a user story point is okey if you over estimate it a little but avoid under estimate a point. As an example, you have a user story about &amp;quot;As a user i could search an item in the system&amp;quot;. And you have estimate it that it will cause about 4 point however the actual point is 3. It is okey if you over estimate a little but if you estimate the user story is 2 point... it can cause delay and developer have to give a very high commitment to the user story because you have under estimate the user story.&lt;/p&gt;&lt;p&gt;Estimating actually is quite easy. On all user story you have create... chose the easiest one which cause 1 point. and choose other user story. If the user story is twice difficult to the first one, so multiply it. so the second user story will be 2 and so on. And on estimating user story point, you have sit down with all you developer and pruduct owner and project manager. So estimating point to user story will be accurate.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Adios&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=17" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/agile/archive/tags/User+Stories/default.aspx">User Stories</category></item><item><title>Dealing with user proxies</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/06/Dealing-with-user-proxies.aspx</link><pubDate>Thu, 05 Oct 2006 06:48:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:16</guid><dc:creator>nazura</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;User proxies are representative of the real user. It needs careful consideration to pick appropriate user proxies&amp;nbsp;that really understands the goal of the project and &amp;nbsp;view the the system similarly to domain experts. Although user proxy will be the decision maker, try to establish connection with the real-users. The best way for doing this is to request permission to start a &lt;em&gt;user task force&lt;/em&gt;. It can consists any number of real users to gather their ideas on how they want the&amp;nbsp;application to be developed. You can do this by conduct a series of discussion by taking top-level direction from user proxy. Show them the prototypes and generate feedback during task force meeting. &lt;/p&gt;&lt;p&gt;What if there really no user available and you must resort to user proxy, be sure to use more than one user proxy with different background. .&amp;nbsp;This helps reduce the likelihood of building a system that meets exactly one person&amp;#39;s needs. For example, combine marketing people with domain experts rather than using two domain experts. You can also use&amp;nbsp;the competing product&amp;nbsp;feature as a guide and source for your user stories. Get an idea and insert the new feature that they don&amp;#39;t have. Try to find their features that&amp;nbsp;are always discussed in online user group&amp;nbsp;and are the features discussed because they are complex to use?&amp;nbsp;This will be the advantage and value-add to your application.&lt;/p&gt;&lt;p&gt;Another technique to deal with user proxy rather than real users is to release the beta version of product soonest possible. Getting the real users use it early so that it can help to identify inconsistencies between the thinking of user proxy and real users. &lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=16" width="1" height="1"&gt;</description></item><item><title>Principles behind the Agile Manifesto</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/06/Principles-behind-the-Agile-Manifesto.aspx</link><pubDate>Thu, 05 Oct 2006 01:45:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:15</guid><dc:creator>m_sahrizal</dc:creator><slash:comments>0</slash:comments><description>&lt;ul&gt;&lt;li&gt;


We follow these principles:

Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.&lt;/li&gt;&lt;li&gt;

Welcome changing requirements, even late in
development. Agile processes harness change for
the customer&amp;#39;s competitive advantage.

&lt;/li&gt;&lt;li&gt;Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.

&lt;/li&gt;&lt;li&gt;Business people and developers must work
together daily throughout the project.

&lt;/li&gt;&lt;li&gt;Build projects around motivated individuals.Give them the environment and support they need,
and trust them to get the job done.

&lt;/li&gt;&lt;li&gt;The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.

&lt;/li&gt;&lt;li&gt;Working software is the primary measure of progress.

&lt;/li&gt;&lt;li&gt;Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.

&lt;/li&gt;&lt;li&gt;Continuous attention to technical excellence
and good design enhances agility.

&lt;/li&gt;&lt;li&gt;Simplicity--the art of maximizing the amount
of work not done--is essential.

&lt;/li&gt;&lt;li&gt;The best architectures, requirements, and designs
emerge from self-organizing teams.

&lt;/li&gt;&lt;li&gt;At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.&lt;/li&gt;&lt;/ul&gt;get it from ==&amp;gt;&lt;a href="http://www.agilemanifesto.org/" title="AgileManifesto" target="_blank"&gt;AgileManifesto&lt;/a&gt;&lt;br /&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=15" width="1" height="1"&gt;</description></item><item><title>Prioritize the User Story</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/05/Prioritize-the-User-Story.aspx</link><pubDate>Wed, 04 Oct 2006 06:36:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:14</guid><dc:creator>nazura</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Now you have a list of user stories to be implemented. Before you could assigns all the stories to iteration, you need to identify the risk and value of stories to customers so that you can prioritize which story to be done first. A risk is any probable event or condition that have a potentially negative outcome on the project while value is how much&amp;nbsp;the story benefits the user. After identifying the risks and value, plot it to form a quadrant graph. Form there, you can prioritize which to be done first or assign to early iteration&amp;nbsp;and which will be done later.&lt;/p&gt;&lt;p&gt;&lt;table cellpadding="0" cellspacing="0"&gt;&lt;tr&gt;&lt;td style="background-color:transparent;border:#ece9d8;"&gt;&lt;div&gt;&lt;p class="MsoNormal" style="margin:0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=14" width="1" height="1"&gt;</description></item><item><title>5 factor why planning a projects fail</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/05/5-factor-why-planning-a-projects-fail.aspx</link><pubDate>Wed, 04 Oct 2006 05:18:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:13</guid><dc:creator>hakimin</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;After i read about Planning and Estimates in Agile there a 5 factors why planning a projects is fail. And i thinking about it.. Is it true.. Is it happen if i&amp;#39;m apply it into my development of products... Ermmmm... it maybe happen.. So here i want to share what i have exprienced and know with all of you. Hope you all can avoid this to happen in your project development.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. Planning always on activities rather than feutures.&lt;/strong&gt;&lt;br /&gt;In almost traditional approaches in planning a project, they are always give an avtivities status to the user rather than in Agile, we give a functional system to the user to keep up the status by an iteration. The traditional approach, by each of priod time, they will be give a status of an activities they have been doing on some priod of time reffering on Gant&amp;#39;s chart. On traditional approaches, activities is pass after the others activities is finished. But if the first one activities is still not finish the second activities will be not doing. Because it&amp;#39;s have to be pass down the activities. And because of this lateness, the delivery of the product will be delay from expected time. And also, the unindependent activities will make this traditional approaches will be dependent on other activities to be done.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. Multitasking on employee&lt;br /&gt;&lt;/strong&gt;When we assign a multiple task on a developer, the productivity of the developer will drop down. This is happen when the developer cannot do the all task which have been assign to him because of big responsibilities he have to carried. Because on this presure to meet a deadline with a lots of task, moral will down and productivity will drop. as example which in Mike Cohn book, as he said &amp;quot;Loading everyone to 100% of capacity has the same effect as loading a highway to 100% capacity: No one can make any progress&amp;quot;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. Features not developed on priority&lt;/strong&gt;&lt;br /&gt;The traditional planning approaches is always prioritized the work by value to the user and customer. In traditional planning, we will plan all activities to the success of a projects. Will will go through one by one all activities to meet the complete system. And all developer will consider that all activities which have been planned and put in Gant&amp;#39;s chart is mandatory and have to complete by the dateline. But at the end, the activities which have been complete is actualy no value to the customer. Customer not satisfy and have to reproduce. In agile this will not bee happen because user or customer will se a functional delivery by each iteration and any changes, the will find earlier.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. Ingoring of Uncertainty&lt;/strong&gt;&lt;br /&gt;Ignoring on uncertainty is very big mistakes on planning. Without assuming user will not change their requirement cann kill your project successness. The customer or user is first. That the slogan.We cannot hope to identify every activities that will be needed in the course of a project. Maybe later on suddenly customer found that some feuters which really greate to them. This can make late delivery and the planning is fail. To avoid this, we can work in shot iterate. We deliver functional system to user in every each iteration. Work in short iteration so user will alway can see a functional system that we will deliver to them. Some missing task we cann add into the system because user find it on functional delivery.&amp;nbsp;This will reduce uncertainty.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. Estimates become Commitments&lt;/strong&gt;&lt;br /&gt;Estimating is very important to a team because before the start working, the have to figure out what a risk they will face. If we as a planner estimates short of time but there a lot of risk a team will face, than the team will cannot deliver the product. So estimating have to equivalent to the commitments the team will give. Such as Phillip Armour (2002) said &amp;quot;An estimates is probability, and commitments cannot be made to probability&amp;quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Adios&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=13" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/agile/archive/tags/Planning+and+Estimating/default.aspx">Planning and Estimating</category></item><item><title>Test Driven Development (TDD)</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/04/Test-Driven-Development-_2800_TDD_2900_.aspx</link><pubDate>Tue, 03 Oct 2006 07:39:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:11</guid><dc:creator>hakimin</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This TDD is the best development process i have been involved to.
The &amp;quot;Red, Green and Refactor&amp;quot; is the most esiest way i have ever
exprienced when develop a system. Before this, i majorly use Waterfall
model which get a bussines requirement from user first. It take a lot
of time and will make a uselees of time.&lt;/p&gt;&lt;p&gt;With this &amp;quot;Red, Green and Refactor&amp;quot;, i just doin the simplest , less bug and fastest way to develop a system.&lt;/p&gt;&lt;p&gt;First
of all, how to make use of this TDD. First, we must know about Unit
Test environment. U can get the environment by using NUnit or Unit Test
in .Net framework. And when doing a test, think it is for designing...
Not for doin a testing only.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;There is step2 tahat involve in thid TDD.&lt;/p&gt;&lt;p&gt;1. Fisrt things is, think as consumer when create a test. As example here :&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; I have a student and want to register to the system which whe call it StudentRegisSystem.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  example :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Student student = new Student();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp; student.Name = &amp;quot;Student Test&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp; student.ID = Guid.NewGuid();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  return student.Save();&lt;/p&gt;&lt;p&gt;2.
Compile after writing a code. We will be promt an error. Create a
domain class for student, create properties and Save() method just
simple as simple as.&lt;br /&gt;Just writing a code which to be need the code
can be compile only. After it can be compile, run a test to the
UnitTest. Like Example below:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; example: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  public partial class Student&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  private string m_name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  private string m_id;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  public string Name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  get { return m_name; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  set { value = m_name; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp; public string ID&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  get { return m_id; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  set { value = m_id; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Save()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception(&amp;quot;The method or operation is not implemented.&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &amp;nbsp;&amp;nbsp;  &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3.
And Red signal will be display. The red signal will be displayed
marking thar there no implementation yet. So rewriting Save() method
just to make the test past. Rewrite like below as at Save() method.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  example:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  public string Save()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  return string.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4.
Compile and run Unit Test again. This time Green light appear. Thats
meant the unit test have been pass. And the third factor in TDD is
Refactor. At this step refactor your code to be easy to maintain and be
read by other programmers which maybe make use of you code. Refactor
you code and run Unit Test everytime you make a change. This too make
sure thats is no bug after refactor.&lt;/p&gt;&lt;p&gt;The benefit of usinf thid
development process is, we will start small. Use this princip, &amp;quot;Think
Big, Start Small&amp;quot; . Using this TDD, we can detect a bug before we start
a real development. and also, we can design our system while testing
it. We have save our time and effort by using TDD. It is veryyy use
full of me and maybe for you. Try to make use of it.&lt;br /&gt;&lt;br /&gt;Adios.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=11" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/agile/archive/tags/Agile+Development+Process/default.aspx">Agile Development Process</category></item><item><title>Themes and Epic in User Stories</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/04/Themes-and-Epic-in-User-Stories.aspx</link><pubDate>Tue, 03 Oct 2006 07:35:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:10</guid><dc:creator>hakimin</dc:creator><slash:comments>1</slash:comments><description>What is themes and what is epic? Someday before, i dont know about these 2 kind of type in user stories.&lt;p&gt;First, i want to start with &lt;strong&gt;Epic&lt;/strong&gt;. &lt;strong&gt;Epic &lt;/strong&gt;is
actually a large user stories which we can break apart of it. We can
break it up into smallest user stories. As example here &amp;quot;Sarah want
send hers resume&amp;quot;. This is a large user stories. Because we can break
it apart into example below&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;Sarah want to create hers resume&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;Sarah want to select a company before send hers resume&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;Sarah want find availabe position of work before send a resume&amp;quot;&lt;/p&gt;&lt;p&gt;Thats an example i can describe about an &lt;strong&gt;Epic&lt;/strong&gt;.
It is a large user stories thats can be break apart to smaller user
stories which the break aparrt one from epic can be done independency.&lt;/p&gt;&lt;p&gt;Now what is &lt;strong&gt;themes&lt;/strong&gt;. From Mike Cohn from Mountain Goat, he said that, &amp;quot;&lt;strong&gt;themes &lt;/strong&gt;is a colletion of related user stories.&amp;quot; And what i understand is, &lt;strong&gt;theme &lt;/strong&gt;is
colection of user stories that we have to done under one iteration
because they are related with each other, which meant dependency with
other user stories. Even though, in agile methodology, it is pressure
that create a not dependent user story which we can deliver an
freaquent functional feutures to users in every iteration. But we
cannot escape from dependencies. There will be some of user stories
dependent on others user stories to complete a iteration. But if we can
keep small on dependencies, it is quite better.&lt;/p&gt;Adios&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=10" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/agile/archive/tags/User+Stories/default.aspx">User Stories</category></item><item><title>User Story &quot;Epics&quot;</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/04/User-Story-_2200_Epics_2200_.aspx</link><pubDate>Tue, 03 Oct 2006 07:14:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:12</guid><dc:creator>nazura</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The word epic usually refers to the brave action or excitement or the films about the deeds of gods and great man. From it&amp;#39;s literal meaning, we can conclude that user story epics is&amp;nbsp;a great, large and complex set of user story. User role must be included in the epic user story description to picture the real scenario on how they will use the system. There are 2 types of epic user story; &lt;em&gt;compound&lt;/em&gt; and &lt;em&gt;complex.&amp;nbsp;&lt;/em&gt;Compound&amp;nbsp;user story&amp;nbsp;can be dissambled into smaller user stories within the same story&amp;nbsp;subject while complex user story is an extremely large and generic stories that cannot simply be broken down into smaller stories.&lt;/p&gt;&lt;p&gt;The &amp;quot;chunk&amp;quot; of splitted user stories shares the same&amp;nbsp;subject and is called a &lt;em&gt;theme. &lt;/em&gt;&lt;/p&gt;&lt;p&gt;To get clearer picture, look at these example:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Epic&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;User can cancel hotel reservation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Theme&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Privilege&amp;nbsp;member can cancel reservation up to last minute&lt;/li&gt;&lt;li&gt;Normal&amp;nbsp;&amp;nbsp;customer can cancel not less than&amp;nbsp;48 hours&lt;/li&gt;&lt;li&gt;Customer can cancel reservation by phone&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=12" width="1" height="1"&gt;</description></item><item><title>To fake it or not</title><link>http://blogs.bespoke.com.my/blogs/agile/archive/2006/10/04/To-fake-it-or-not.aspx</link><pubDate>Tue, 03 Oct 2006 06:57:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:8</guid><dc:creator>erymuzuan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Continuation from my 1st blog about Fake/Mock object. With the availbility of Dependency Injection framework(Microsoft Pattern and Practice ObjectBuilder, Spring Framewrok and StructureMap). We could easily swicth the implemetation of our interface. In my opinion creating a Mock just for the sake of it, just going to make your code less readable i.e. it&amp;#39;s going to cost more on the maintanance. &lt;/p&gt;&lt;p&gt;&amp;nbsp;This is how we would normally work when dealing with a dependency that we didn&amp;#39;t really care about. Just as exmple we have a domain object called Patient, it has one operation , Save() returs void, the idea is when we call Save on the Patient instance, it must do some validation, then if the patientID is not null , it&amp;#39;s new item and we want to add a new item to our persintance, if PatientID is not null, is mean we&amp;#39;re updating existing patient.&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="rem"&gt;// our test case&lt;/span&gt;
        [Test]
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SavePatient()
        {

            Patient p = &lt;span class="kwrd"&gt;new&lt;/span&gt; Patient();
            p.Save();

            Assert.AreEqual(p.PatientID, 30);

        }



        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Patient
        {

            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; PatientID { set; get;}

            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Save()
            {

                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Validator.Validate(&lt;span class="kwrd"&gt;this&lt;/span&gt;)) &lt;span class="kwrd"&gt;
               throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentException(&lt;span class="str"&gt;&amp;quot;Validation error&amp;quot;&lt;/span&gt;);
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (PatientID &amp;gt; 0)
                {
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;.Persistance.Update(&lt;span class="kwrd"&gt;this&lt;/span&gt;);

                }
                &lt;span class="kwrd"&gt;else&lt;/span&gt;
                {
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;.PatientID = &lt;span class="kwrd"&gt;this&lt;/span&gt;.Persistance.Add(&lt;span class="kwrd"&gt;this&lt;/span&gt;);

                }
            }
        }&lt;/pre&gt;&lt;p&gt;So there are a couple of dependecies that we have here in order to make this method works , the Persistace and Validator, so what do we want to do is to test the domain Save method , not the Persistance or Validator. So the instinct is to do some refactoring , the first one is &amp;quot;Extract Interface&amp;quot; ( please refer to Martin Fowler -Refactoring for more refactoring details, I also a bif fan of Refactoring to Pattern by Joshue Krienvesky).&amp;nbsp; Instead of having a concrete class for Validator and Persistance we now rever it to their interface&lt;/p&gt;&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IValidator
        {
            &lt;span class="kwrd"&gt;bool&lt;/span&gt; Validate(Patient patient);
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IPersistance
        {
            &lt;span class="kwrd"&gt;int&lt;/span&gt; Save(Patient patient);
        }
        &lt;span class="rem"&gt;// thus our patient object&lt;/span&gt;
        &lt;span class="kwrd"&gt;private&lt;/span&gt; IValidator m_validator;
        &lt;span class="kwrd"&gt;private&lt;/span&gt; IPersistance m_persistance;

        &lt;span class="kwrd"&gt;public&lt;/span&gt; IPersistance Persistance
        {
            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; m_persistance; }
            set { m_persistance = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; IValidator Validator
        {
            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; m_validator; }
            set { m_validator = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }
        }
&lt;/pre&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=8" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/agile/archive/tags/TDD/default.aspx">TDD</category></item><item><title>Roy Osherove said he was not a political blogger..</title><link>http://blogs.bespoke.com.my/blogs/ery/archive/2006/09/28/Roy-Osherove-said-he-was-not-a-political-blogger_2E002E00_.aspx</link><pubDate>Wed, 27 Sep 2006 00:00:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:5</guid><dc:creator>erymuzuan</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;but when this blog entry &lt;a href="http://weblogs.asp.net/rosherove/archive/2006/09/27/U2U-refuses-to-work-with-Israelis-due-to-_2600_quot_3B00_War-crimes-and-apartheid_2600_quot_3B00_-in-Israel.aspx?CommentPosted=true"&gt;http://weblogs.asp.net/rosherove/archive/2006/09/27/U2U-refuses-to-work-with-Israelis-due-to-_2600_quot_3B00_War-crimes-and-apartheid_2600_quot_3B00_-in-Israel.aspx?CommentPosted=true&lt;/a&gt;&amp;nbsp;appeared, he just&amp;nbsp;like many othe Jews.&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Israel was built illegally, all the Palestine - Israel issue confrontation was on a piece of land that Israel occupy illegally with the help of British government. Now if some one came over , took away my land , what would I do. We use everything we could to try to get it back. Malaysia was lucky , we got our land from the British 50 years ago, while for many Palestinian, they are refuges in their own land. I strongly believed that our former premier, Dr. Mahathir , was correct. All you Jews want is to get that piece of land illegally. You did that with guns and blood.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;We never recognized Israel, and we never will. I&amp;#39;ve spent many years in the UK, with some Jews friends, We were never against Jews, though we never trust them. It&amp;#39;s the Zionist. It&amp;#39;s the right decision for U2U to take.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;There are more that 1100 innocent Lebanese we killed during the attack, and everyone says it&amp;#39;s wrong. If you think those 1100 lives really worth your 2 Jewish soldier, then you are lying , cause all you want is to destroy the Arabs, make them scare. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The real terrorist is Israel, they are the one who&amp;#39;s making a lot of damages , killing and suffering, and yet it&amp;#39;s easy to blame Al-Qaeda.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;We hope that Iran will be very strong one day, the same goes for Hezbollah. We support and give whatever we could to help them get their land back.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=5" width="1" height="1"&gt;</description></item><item><title>Agile Methodology</title><link>http://blogs.bespoke.com.my/blogs/nazura/archive/2006/09/26/Agile-Methodology.aspx</link><pubDate>Mon, 25 Sep 2006 06:10:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:4</guid><dc:creator>nazura</dc:creator><slash:comments>0</slash:comments><description>&amp;nbsp; &lt;p style="margin-bottom:0in;"&gt;Agile methodology is a conceptual framework for undertaking software development project. Software is developed in short time line called &lt;em&gt;iterations&lt;/em&gt;. One iteration includes overall process of software development from user requirements, analysis, design, coding, testing and implementing. It may takes 2 to 3 weeks to complete one iteration. At the end of each iteration, the team re-evaluates project priorities. &lt;/p&gt;&lt;p style="margin-bottom:0in;"&gt;Agile methods emphasize real time communications rather than written documents. It also emphasize working software as the primary measure of progress. &lt;/p&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;&lt;strong&gt;Principles of Agile Methods&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;Frequent deliverables , completely developed and tested&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;Close cooperation between business people and developers&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;Self-organizing teams&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;Changes can be done during the project progress&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;Continually improving the system flaws&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;Regular adaptations to changing circumstances&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;Continuous attention to technical exellence and good design.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;&lt;strong&gt;Comparison with other methods (Waterfall model)&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom:0in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;Waterfall model can result in substantial integration and testing effort toward the end of cycle , a time period typically extending from several month to several years. The size and difficulty of this integration and testing effort is one cause of project failure. Agile, in contrast produce completely developed and tested features every few weeks or months.&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom:0.03in;"&gt;&lt;font color="#000000"&gt;&lt;font size="2" style="font-size:11pt;"&gt;&lt;strong&gt;Extreme Programming&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-bottom:0.03in;"&gt;&lt;span&gt;&lt;font size="2" style="font-size:11pt;"&gt;&lt;font color="#000000"&gt;XP is the most prominent among the several agile methodology. XP uses the concept of &lt;em&gt;user story&lt;strong&gt; &lt;/strong&gt;&lt;/em&gt;&lt;span&gt;&lt;span style="font-style:normal;"&gt;which is the requirement of users gathered during the conversation between the developers and users. Developers then sort out the stories, estimating the &lt;/span&gt;&lt;em&gt;points &lt;/em&gt;&lt;span style="font-style:normal;"&gt;or how much time it will take to accomplish each story. Then, several user stories will be grouped in first &lt;/span&gt;&lt;em&gt;iteration &lt;/em&gt;&lt;span style="font-style:normal;"&gt;that may take several weeks. After that, they come out with the release plan depending on the project size. Upon completion of the first iteration, user can calculate the &lt;/span&gt;&lt;em&gt;velocity&lt;/em&gt;&lt;span style="font-style:normal;"&gt; or the total points of user stories completed. The next iteration&amp;#39;s velocity must be less than or equal to the velocity of first iteration. At this point, user can roughly estimate how long they can completely deliver the system.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom:0.03in;"&gt;source: wikipedia&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=4" width="1" height="1"&gt;</description></item><item><title>To fake or not to fake</title><link>http://blogs.bespoke.com.my/blogs/ery/archive/2006/09/04/To-fake-or-not-to-fake.aspx</link><pubDate>Sun, 03 Sep 2006 07:39:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:3</guid><dc:creator>erymuzuan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Fake objects or most commonly known as Mock are widely used to decople your component with it&amp;#39;s depency , thus allowing it to be tested independently&amp;nbsp; with the rest of it&amp;#39;s dependencies. Let&amp;#39;s take a look at a simple code&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Patient&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Save()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="rem"&gt;// call your database insert statement  and return the PatientID&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; PatientDataAccess.Insert(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
Well you could do Save Test with something like&lt;br /&gt;
&lt;/p&gt;

&lt;pre&gt;&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;[Test]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SavePatient()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;br /&gt;
&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    Patient patient = &lt;span class="kwrd"&gt;new&lt;/span&gt; Patient();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    patient.FullName = &lt;span class="str"&gt;&amp;quot;erymuzuan&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    patient.Save();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8: &lt;/span&gt;&lt;br /&gt;
&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    Assert.IsTrue(patient.PatientID &amp;gt; 0);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;

&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;It work most of the time, but the big but is what happen if it&amp;#39;s not your code where the bug is but your data access code or your database. It would be nice to get rid of the data access code and database dependency from your code&lt;img src="http://blogs.bespoke.com.my/aggbug.aspx?PostID=3" width="1" height="1"&gt;</description><category domain="http://blogs.bespoke.com.my/blogs/ery/archive/tags/Design/default.aspx">Design</category></item><item><title>Auto update your version with Subversion revision number</title><link>http://blogs.bespoke.com.my/blogs/ery/archive/2006/08/30/Auto-update-your-version-with-your-Subversion-revision-number.aspx</link><pubDate>Tue, 29 Aug 2006 08:43:00 GMT</pubDate><guid isPermaLink="false">9c7185d0-067c-41a7-bca3-6488d40287f0:2</guid><dc:creator>erymuzuan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Since we run Subversion&amp;nbsp; for our source control system , there&amp;#39;s need for us to identify a build with subversion revision number and the build date, this allowing us to track for bugs and related issues down to every single branch. &lt;/p&gt;&lt;p&gt;What we have is basically a build file , executing svn info for the revision then write it to the solution.version which the link to every project in the solution&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;&amp;lt;project name=&amp;quot;x2&amp;quot; default=&amp;quot;help&amp;quot; xmlns=&amp;quot;http://nant.sf.net/release/0.85-rc4/nant.xsd&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;commit.message&amp;quot; value=&amp;quot;&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;configuration&amp;quot; value=&amp;quot;debug&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;db.name&amp;quot; value=&amp;quot;x2o&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;create.db.sql&amp;quot; value=&amp;quot;database\create_database.sql&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;project.name&amp;quot; value=&amp;quot;x2.ed&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;project.code&amp;quot; value=&amp;quot;x2&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;result.dir&amp;quot; value=&amp;quot;result&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;build.dir&amp;quot; value=&amp;quot;bin&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;src.dir&amp;quot; value=&amp;quot;CS&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;expected.output&amp;quot; value=&amp;quot;myniss.exe&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;db.server&amp;quot; value=&amp;quot;(local)\YUKON&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;help.message&amp;quot; value=&amp;quot;OK&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;revision&amp;quot; value=&amp;quot;0&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;ticks&amp;quot; value=&amp;quot;0&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;solution.version.cs&amp;quot; value=&amp;quot;Solution Items\solution.version.cs&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;has.db.schema.changes&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;has.db.code.changes&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;has.new.file&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;base.version&amp;quot; value=&amp;quot;1.1&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;qa.build.dir&amp;quot; value=&amp;quot;QaBuild&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;qa.build&amp;quot; value=&amp;quot;false&amp;quot; overwrite=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- update --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name=&amp;quot;up&amp;quot; description=&amp;quot;update the current working copy&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- check for property file --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test=&amp;quot;${not file::exists(&amp;#39;property.template.xml&amp;#39;)}&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;svn&amp;quot; commandline=&amp;quot;up property.template.xml&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test=&amp;quot;${not file::exists(&amp;#39;property.xml&amp;#39;)}&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;copy file=&amp;quot;property.template.xml&amp;quot; tofile=&amp;quot;property.xml&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- invoke svn up, and examine the updated item if it contains table the rebuild database --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;[Please inspect for anything that might be of interest&amp;quot; append=&amp;quot;false&amp;quot; file=&amp;quot;svn.update.log.txt&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;e.g. database schema changes, or some unwanted merged by subversion]&amp;quot; append=&amp;quot;true&amp;quot; file=&amp;quot;svn.update.log.txt&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;&amp;quot; append=&amp;quot;true&amp;quot; file=&amp;quot;svn.update.log.txt&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;svn&amp;quot; commandline=&amp;quot;up&amp;quot; failonerror=&amp;quot;true&amp;quot; output=&amp;quot;svn.update.log.txt&amp;quot; append=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- update the property file--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;svn&amp;quot; commandline=&amp;quot;log http://svn.bespoke.com.my:8080/svn/x2.ed/ --xml --revision HEAD&amp;quot; output=&amp;quot;svnlog.xml&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xmlpeek file=&amp;quot;svnlog.xml&amp;quot; property=&amp;quot;revision&amp;quot; xpath=&amp;quot;/log/logentry/@revision&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete file=&amp;quot;svnlog.xml&amp;quot; failonerror=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xmlpoke file=&amp;quot;property.xml&amp;quot; xpath=&amp;quot;/property/revision&amp;quot; value=&amp;quot;${revision}&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;call target=&amp;quot;create.version&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- status --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name=&amp;quot;st&amp;quot; description=&amp;quot;check status&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- invoke svn up, and examine the updated item if it contains table the rebuild database --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;[Please examine these new files&amp;quot; append=&amp;quot;false&amp;quot; file=&amp;quot;st.log.txt&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;if you need it then add , else delete or ignore]&amp;quot; append=&amp;quot;true&amp;quot; file=&amp;quot;st.log.txt&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;&amp;quot; append=&amp;quot;true&amp;quot; file=&amp;quot;st.log.txt&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;svn&amp;quot; commandline=&amp;quot;st&amp;quot; failonerror=&amp;quot;true&amp;quot; output=&amp;quot;svn.st.log.txt&amp;quot; append=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;foreach item=&amp;quot;Line&amp;quot; in =&amp;quot;svn.st.log.txt&amp;quot; property =&amp;quot;newfile&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test=&amp;quot;${string::starts-with(newfile, &amp;#39;?&amp;#39;)}&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;has.new.file&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;${string::replace(newfile, &amp;#39;?&amp;#39;, &amp;#39;&amp;#39;)}&amp;quot; append=&amp;quot;true&amp;quot; file=&amp;quot;st.log.txt&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/foreach&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test=&amp;quot;${has.new.file}&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;n&amp;quot; commandline=&amp;quot;st.log.txt&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;cmdcolor&amp;quot; commandline=&amp;#39;-c Red &amp;quot;Theres new uncommited file, ignore, delete or add&amp;quot;&amp;#39;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fail message=&amp;quot;There&amp;#39;s new uncommited file, ignore, delete or add&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- commit --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name=&amp;quot;ci&amp;quot; description=&amp;quot;commit the working copy&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;call target=&amp;quot;st&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;call target=&amp;quot;unit.test&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- make sure the client code is error free --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;msbuild&amp;quot; commandline=&amp;quot;/v:quiet /target:BuildClient&amp;quot; failonerror=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test=&amp;quot;${25 &amp;gt; string::get-length(commit.message)}&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;${commit.message}&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fail message=&amp;quot;commit message must be at least 25 charaters length&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;message&amp;quot; value=&amp;quot;${string::replace(commit.message, &amp;#39;.&amp;#39;, &amp;#39; &amp;#39;)}&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;svn&amp;quot; commandline=&amp;#39; ci -m &amp;quot;${message}&amp;quot;&amp;#39;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name=&amp;quot;cit&amp;quot; description=&amp;quot;test commit script&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;${commit.message}&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- &lt;br /&gt;&amp;nbsp; *********************************************************************&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BUILD &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE : we&amp;#39;re still using exec task to execute MSBuild solution&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ***************************************************************************&lt;br /&gt;&amp;nbsp; --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name=&amp;quot;unit.test&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;msbuild&amp;quot; commandline=&amp;quot;/v:quiet src\Test\Clinical.Test\Clinical.Test.csproj&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;msbuild&amp;quot; commandline=&amp;quot;/v:quiet src\Test\Registration.Test\Registration.Test.csproj&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;msbuild&amp;quot; commandline=&amp;quot;/v:quiet src\Test\Services.Test\Services.Test.csproj&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;msbuild&amp;quot; commandline=&amp;quot;/v:quiet src\Test\SqlPersistence.Test\SqlPersistence.Test.csproj&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;msbuild&amp;quot; commandline=&amp;quot;/v:quiet src\Test\Report.Test\Report.Test.csproj&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;msbuild&amp;quot; commandline=&amp;quot;/v:quiet src\Test\SystemFrameworks.Test\SystemFrameworks.Test.csproj&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;------ Clinical.Test run ---------------------&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;nunit-console.exe&amp;quot; workingdir=&amp;quot;src\nunit.test\Clinical.Test&amp;quot; commandline=&amp;quot;/nologo /xml=Clinical.Test.result.xml Clinical.Test.nunit&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;------ Registration.Test run ---------------------&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;nunit-console.exe&amp;quot; workingdir=&amp;quot;src\nunit.test\Registration.Test&amp;quot; commandline=&amp;quot;/nologo /xml=Registration.Test.result.xml Registration.Test.dll.nunit&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;------ Services.Test run ---------------------&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;nunit-console.exe&amp;quot; workingdir=&amp;quot;src\nunit.test\Services.Test&amp;quot; commandline=&amp;quot;/nologo /xml=Services.Test.result.xml Services.Test.dll.nunit&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;------ SqlPersistence.Test run ---------------------&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;nunit-console.exe&amp;quot; workingdir=&amp;quot;src\nunit.test\SqlPersistence.Test&amp;quot; commandline=&amp;quot;/nologo /xml=SqlPersistence.Test.result.xml SqlPersistence.Test.dll.nunit&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;------ Report.Test run ---------------------&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;nunit-console.exe&amp;quot; workingdir=&amp;quot;src\nunit.test\Report.Test&amp;quot; commandline=&amp;quot;/nologo /xml=Report.Test.result.xml Report.Test.dll.nunit&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Report test --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message=&amp;quot;------ SystemFrameworks.Test run ---------------------&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;nunit-console.exe&amp;quot; workingdir=&amp;quot;src\nunit.test\SystemFrameworks.Test&amp;quot; commandline=&amp;quot;/nologo /xml=SystemFrameworks.Test.result.xml SystemFrameworks.Test.dll.nunit&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name=&amp;quot;simian&amp;quot; description=&amp;quot;finds duplicate code&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec program=&amp;quot;simian.exe&amp;quot; failonerror=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;arg value=&amp;quot;-recurse=*.cs&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;arg value=&amp;quot;-formatter=xml:simian.result.xml&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/exec&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- cleaning --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name=&amp;quot;clean&amp;quot; description=&amp;quot;Delete all previously compiled binaries.&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name=&amp;quot;**/bin/**&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name=&amp;quot;test/**&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name=&amp;quot;**/sbin/**&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name=&amp;quot;**/obj/**&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name=&amp;quot;output/bin/*.*&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude name=&amp;quot;references/entlib/bin/*.*&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude name=&amp;quot;refere