<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pathfinder Development &#187; .NET</title>
	<atom:link href="http://www.pathf.com/blogs/category/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pathf.com/blogs</link>
	<description>Running commentary about agile development, user experience design and Ajax.</description>
	<lastBuildDate>Tue, 16 Mar 2010 13:42:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Tiling a 2-D Polygon using C# GDI+</title>
		<link>http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/</link>
		<comments>http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 22:14:33 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Drawing]]></category>
		<category><![CDATA[GDI+]]></category>
		<category><![CDATA[Window Forms Development]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4781</guid>
		<description><![CDATA[One of the most challenging problems I came across working on a .NET PDF Annotator and Editor application was to tile a 2-D polygon and also accurately determine the number of tiles that fill the surface of the polygon.  The tiling part was not as much of a challenge as the counting part. The tiled [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/">Tiling a 2-D Polygon using C# GDI+</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2006/07/eyespot_ajax_ap/' rel='bookmark' title='Permanent Link: Eyespot &#8211; AJAX App for Video Editing'>Eyespot &#8211; AJAX App for Video Editing</a></li><li><a href='http://www.pathf.com/blogs/2008/07/linq-to-my-domain/' rel='bookmark' title='Permanent Link: LINQ to My Domain'>LINQ to My Domain</a></li><li><a href='http://www.pathf.com/blogs/2007/01/how_to_really_d/' rel='bookmark' title='Permanent Link: How to REALLY do Page Preview in Java with Embedded HTML Rendering'>How to REALLY do Page Preview in Java with Embedded HTML Rendering</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_4787" class="wp-caption alignnone" style="width: 543px"><img class="size-full wp-image-4787" title="Tiling a Polygon" src="http://www.pathf.com/blogs/wp-content/uploads/2010/02/Tiling-Polygon.png" alt="Tiling a Polygon" width="533" height="388" /><p class="wp-caption-text">Tiling a Polygon</p></div>
<p>One of the most challenging problems I came across working on a <a href="http://www.pathf.com/showcase/success-stories/pdf-annotation-software/" rel="nofollow"  target="_blank">.NET PDF Annotator and Editor application</a> was to tile a 2-D polygon and also accurately determine the number of tiles that fill the surface of the polygon.  The tiling part was not as much of a challenge as the counting part. The tiled polygon was to be rendered on a PDF document since the application in question is a PDF Annotating and Editing tool. We looked for anything the third party .NET PDF rendering/manipulation API that was used could provide for the tile rendering but there was nothing unfortunately.<br />
<span id="more-4781"></span><br />
So we set out to use <a href="http://msdn.microsoft.com/en-us/library/ms533798%28VS.85%29.aspx" rel="nofollow"  target="_blank">C#'s native GDI+ library</a> to render the tiles for the polygon.  After trying out different approaches to accomplish the rendering of the tiles, we discovered the one that would work best. The idea was simple. Every 2-D shape on the drawing surface has a bounding rectangle that encloses the shape. Starting from the top left bounding point of the rectangle, iteratively render a rectangle (tile with whatever length and width) across the X axis until the right most edge of the rectangle and this iteration needs to happen over the Y-axis (not sure if I explained clearly enough <img src='http://www.pathf.com/blogs/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .  So now we have rectangular tiles laid out across the bounding rectangle for the polygon. GDI+ gives us a clip method that allows us to clip the rendering surface to a specific graphics path or region. Using the clip method, clip the drawing surface to be the graphics path for just the Polygon so that only tiles within the polygon's graphics path get rendered on the screen. We could apply other transformations to the rendered tiles like offseting, rotation or a gap between each tile.</p>
<p>Coming up with the most efficient way to count the number of tiles (including partial tiles) was a little trickier than rendering the tiles.  It turned out that the ideal approach was to essentially count each tile as it was drawn and checking whether the tile was partially or fully part of the polygon's graphics path/region. So, there is this method <a href="http://msdn.microsoft.com/en-us/library/system.drawing.region.isvisible%28VS.71%29.aspx" rel="nofollow"  target="_blank">Region.IsVisible</a> that lets you test whether a rectangle is partially or fully contained within a graphics region. During the rendering of each rectangular tile, the method was used to check whether the tile was going to be part of the region associated with the polygon and was counted if it was going to be. Even though, this was the most efficient solution for the problem, we did nt see 100% accuracy sometimes when rotation transformation was applied to the tiles. Still havent found an answer to this anomaly.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/">Tiling a 2-D Polygon using C# GDI+</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2006/07/eyespot_ajax_ap/' rel='bookmark' title='Permanent Link: Eyespot &#8211; AJAX App for Video Editing'>Eyespot &#8211; AJAX App for Video Editing</a></li><li><a href='http://www.pathf.com/blogs/2008/07/linq-to-my-domain/' rel='bookmark' title='Permanent Link: LINQ to My Domain'>LINQ to My Domain</a></li><li><a href='http://www.pathf.com/blogs/2007/01/how_to_really_d/' rel='bookmark' title='Permanent Link: How to REALLY do Page Preview in Java with Embedded HTML Rendering'>How to REALLY do Page Preview in Java with Embedded HTML Rendering</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C# Documentation (It ain&#8217;t that hard)</title>
		<link>http://www.pathf.com/blogs/2009/10/documentation-hard/</link>
		<comments>http://www.pathf.com/blogs/2009/10/documentation-hard/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 18:14:59 +0000</pubDate>
		<dc:creator>Jason Pearl</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[c# documentation ndoc sandcastle]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3260</guid>
		<description><![CDATA[On a recent project after months and months and hundreds of files worth of work, we were asked to provide documentation for the code.  This request could have gone one of two ways depending upon how well we adhered to some basic documentation rules.  
The C# compiler itself is setup to extract documentation [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/documentation-hard/">C# Documentation (It ain&#8217;t that hard)</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/01/agile-developme-2/' rel='bookmark' title='Permanent Link: Agile Development, Documentation and Bringing Projects back from the Dead'>Agile Development, Documentation and Bringing Projects back from the Dead</a></li><li><a href='http://www.pathf.com/blogs/2009/06/integrating-design-and-agile-development/' rel='bookmark' title='Permanent Link: Integrating Design and Agile Development'>Integrating Design and Agile Development</a></li><li><a href='http://www.pathf.com/blogs/2006/06/zk_documentatio/' rel='bookmark' title='Permanent Link: ZK &#8211; Documentation &#038; Tools'>ZK &#8211; Documentation &#038; Tools</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>On a recent project after months and months and hundreds of files worth of work, we were asked to provide documentation for the code.  This request could have gone one of two ways depending upon how well we adhered to some basic documentation rules.  </p>
<p>The C# compiler itself is setup to extract documentation which can then be piped through one of a number of documentation generation apps.  My preference is a new(ish) project called SandCastle from Microsoft, which aims to provide much of the featureset that NDoc once did.  Unfortunately this application provides no GUI.  A fine gentleman named Eric Woodruff stepped in to wrap this application in an easy to use GUI for us aptly named <a href="http://www.codeplex.com/SHFB" rel="nofollow" >Sandcastle Help File Builder</a>.  Through the use of good comments written WHILE we wrote the code, we were able to pop out some documentation for every bit of code we wrote in a matter of minutes.  Add to this the nice information we get when using our code via intellisense, and it simply doesn't make sense not to strictly enforce documentation standards on your project.</p>
<p>I often see code written with little or no attention paid to comments.  Sometimes the comments are fairly haphazard and appear to follow no standards whatsoever.  By following documentation standards, you too can auto generate documentation instead of wasting hours or days going back through and trying to remember what your code does. <span id="more-3260"></span>The following are some of the more important tags available for C# documentation, presented in a roughly organized fashion.  You can find a more complete list <a href="http://msdn.microsoft.com/en-us/library/5ast78ax(VS.85).aspx" rel="nofollow" >here</a>.</p>
<p><strong>Method/Type Description:</strong><br />
summary - To describe a type or type member<br />
param name='name' - To describe a parameter of a method<br />
example - To show an example of code usage<br />
returns - To describe the data to be returned from the method</p>
<p><strong>Formatting:</strong><br />
code - Denotes what is contained is code<br />
c - Similar to 'code' but used within comments<br />
para - Usually nested in another tag, allows formatted text</p>
<p><strong>References:</strong><br />
see cref='member' - To specify a link to another type<br />
seealso cref='member' - To specify text that may appear in a "See Also section" (I honestly have no clue what that means)<br />
paramref name='name' - To reference a parameter in comments</p>
<p>There are other tags available, but with these in your arsenal, you should be able to build some nice documentation.  Here's an example of what I would consider well commented code:</p>
<pre class="c"><span style="color: #808080; font-style: italic;">/// &lt;summary&gt;</span>
<span style="color: #808080; font-style: italic;">/// This is a class description</span>
<span style="color: #808080; font-style: italic;">/// &lt;/summary&gt;</span>
public class MyClass
<span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">/// &lt;summary&gt;</span>
  <span style="color: #808080; font-style: italic;">/// This method gets something</span>
  <span style="color: #808080; font-style: italic;">/// &lt;/summary&gt;</span>
  <span style="color: #808080; font-style: italic;">///</span>
&lt;param name=<span style="color: #ff0000;">&quot;number&quot;</span>&gt;An integer input&lt;/param&gt;
  <span style="color: #808080; font-style: italic;">/// &lt;returns&gt;Returns a &lt;see cref=&quot;string&quot;&gt; based on the provided</span>
  <span style="color: #808080; font-style: italic;">/// number</span>
  <span style="color: #808080; font-style: italic;">/// &lt;/returns&gt;</span>
  public <span style="color: #993333;">string</span> GetSomething<span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> number<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#123;</span>
    ...
  <span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>That's not that painful is it?</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/documentation-hard/">C# Documentation (It ain&#8217;t that hard)</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/01/agile-developme-2/' rel='bookmark' title='Permanent Link: Agile Development, Documentation and Bringing Projects back from the Dead'>Agile Development, Documentation and Bringing Projects back from the Dead</a></li><li><a href='http://www.pathf.com/blogs/2009/06/integrating-design-and-agile-development/' rel='bookmark' title='Permanent Link: Integrating Design and Agile Development'>Integrating Design and Agile Development</a></li><li><a href='http://www.pathf.com/blogs/2006/06/zk_documentatio/' rel='bookmark' title='Permanent Link: ZK &#8211; Documentation &#038; Tools'>ZK &#8211; Documentation &#038; Tools</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/10/documentation-hard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OO Design Patterns that can make a difference</title>
		<link>http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/</link>
		<comments>http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 16:53:32 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Gang of Four]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4235</guid>
		<description><![CDATA[
Design patterns. I think they are the one of the most intriguing areas of object oriented application design and development. There are so many out there that can puzzle you each and every time you try to take a crack at them (I can name a few of them that I still can't figure how [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/">OO Design Patterns that can make a difference</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/01/using_design_pa/' rel='bookmark' title='Permanent Link: Using Design Patterns'>Using Design Patterns</a></li><li><a href='http://www.pathf.com/blogs/2008/10/defining-interaction-patterns-on-time-in-flex-agile-development/' rel='bookmark' title='Permanent Link: Defining RIA Interaction Patterns on time in Flex Agile Development'>Defining RIA Interaction Patterns on time in Flex Agile Development</a></li><li><a href='http://www.pathf.com/blogs/2006/09/style_guide_tip/' rel='bookmark' title='Permanent Link: Style Guide tips and Tricks: Finding patterns'>Style Guide tips and Tricks: Finding patterns</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px;"><img title="building_blocks" src="http://www.pathf.com/blogs/wp-content/uploads/2009/10/building_blocks.jpg" border="0" alt="" width="250" height="250" align="absMiddle" /></div>
<p><a href="http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29" rel="nofollow" title="Design Patterns"  target="_blank">Design patterns</a>. I think they are the one of the most intriguing areas of object oriented application design and development. There are so many out there that can puzzle you each and every time you try to take a crack at them (I can name a few of them that I still can't figure how they are to be used or implemented).  But a thing that most programmers would agree is if used wisely and appropriately, these design patterns can provide really powerful benefits that can enhance one's programming experience and also the software that is being built. There are several patterns I have used/implemented in my projects that I think are awesome. I ll touch upon how I used some of them and why every Object oriented programmer needs to master them.</p>
<p><span id="more-4235"></span></p>
<p><strong>Factory Method </strong></p>
<p><a href="http://en.wikipedia.org/wiki/Factory_method" rel="nofollow" title="This"  target="_blank">This</a> must be one of the most commonly used patterns out there. We indeed have used it the most in our projects. The crux of this pattern is essentially delegating the task of creating objects to a method that basically takes in information about what kind of object is to be created etc.  There were a number of instances in the applications we built where there was a base domain object that had a bunch of derived types. In most of these instances, single method/interface that returned the base domain object type but created instances of the appropriate the derived type was used. The benefit? The object creator is decoupled from the users of the objects and makes the code more reusable and maintainable.</p>
<p><strong>Dependency Injection</strong></p>
<p>I m absolutely in love with <a href="http://en.wikipedia.org/wiki/Dependency_injection" rel="nofollow" title="this"  target="_blank">this </a>design pattern. It is a very effective design approach in my opinion. What it advocates is lazy/runtime injection of object dependencies or modules instead of hard-wiring them.  There are a number of third party dependency injection frameworks like <a href="http://www.springframework.net/" rel="nofollow" title="Spring"  target="_blank">Spring</a>, <a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=ObjectBuilder" rel="nofollow" title="Object Builder"  target="_blank">Object Builder</a> etc that let you implement dependency injection out of the box. A very simple example of how I used this on a recent project : Consider the application needs to talk to a remote service for what ever reason. We also built out a fake service that mocked the real remote service to enable us to test/run the application when the real one was unavailable or being developed. We needed a way for the application to swap dependencies (basically the real service and the fake one) at run time. Spring .NET's dependency injection enabled me to implement this.</p>
<p><strong>Command Pattern</strong></p>
<p>A really powerful <a href="http://en.wikipedia.org/wiki/Command_pattern" rel="nofollow"  target="_blank">design pattern</a> that helped us a great deal in implementing an undo/redo feature  in one of our desktop application projects. The idea is pretty simple. Every operation that you want to be undone/redone is encapsulated in the form of a command object that contains information about the method or delegate that needs to be invoked for that operation, parameters for that method or delegate, the undo method etc. Every time, any such command is executed, it is pushed to an undo stack. If the command needs to be undone, it is simply popped off the stack and the undo method is invoked. There is a redo stack for handling redo operations.</p>
<p>Other patterns that I have used widely are the Singleton, Facade, MVC, Pure MVC and MVP. These are effective in their own different ways.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/">OO Design Patterns that can make a difference</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/01/using_design_pa/' rel='bookmark' title='Permanent Link: Using Design Patterns'>Using Design Patterns</a></li><li><a href='http://www.pathf.com/blogs/2008/10/defining-interaction-patterns-on-time-in-flex-agile-development/' rel='bookmark' title='Permanent Link: Defining RIA Interaction Patterns on time in Flex Agile Development'>Defining RIA Interaction Patterns on time in Flex Agile Development</a></li><li><a href='http://www.pathf.com/blogs/2006/09/style_guide_tip/' rel='bookmark' title='Permanent Link: Style Guide tips and Tricks: Finding patterns'>Style Guide tips and Tricks: Finding patterns</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Launched: Vu360 PDF Annotation and Markup Application</title>
		<link>http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/</link>
		<comments>http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 15:18:16 +0000</pubDate>
		<dc:creator>Bernhard Kappe</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Pathfinder General]]></category>
		<category><![CDATA[Pathfinder News]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[2d cad]]></category>
		<category><![CDATA[adobe acrobat]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[desktop application development]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[pdf application development]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3548</guid>
		<description><![CDATA[
Please install Flash to see this video player!
// 
Vu360, the latest Pathfinder product, was launched by our client the Blue Book of Construction earlier last month.
It’s an Internet-tethered desktop application that enables easy viewing, markup and takeoff of PDF and TIFF documents for the architecture, engineering and construction industry.   Some of the features [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/">Launched: Vu360 PDF Annotation and Markup Application</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/07/launched-rapid-reporting-employment-chek/' rel='bookmark' title='Permanent Link: Launched:  Rapid Reporting Employment Chek'>Launched:  Rapid Reporting Employment Chek</a></li><li><a href='http://www.pathf.com/blogs/2008/05/down-with-html/' rel='bookmark' title='Permanent Link: Down with HTML + Code Markup!'>Down with HTML + Code Markup!</a></li><li><a href='http://www.pathf.com/blogs/2007/10/the-desktop-app/' rel='bookmark' title='Permanent Link: The Desktop Application is Dead&#8230;Almost'>The Desktop Application is Dead&#8230;Almost</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><script src="/sites/pfd/js/swfobject.js" type="text/javascript"></script></p>
<div id="player">Please install Flash to see this video player!</div>
<p><script type="text/javascript">// <![CDATA[
  var so = new SWFObject('/sites/pfd/flash/player.swf','mpl','470','368','9'); so.addParam('allowscriptaccess','always'); so.addParam('allowfullscreen','true'); so.addParam('flashvars','&file=http://media1.www.pathfinder-development.com/assets/bluebook/vu360qt2.mov&image=http://www.pathf.com/sites/pfd/img/cases/videocover.png'); so.write('player'); so.write('player');
// ]]&gt;</script></p>
<p><a href="http://www.thebluebook.com/vu360.shtml"rel="nofollow" >Vu360</a>, the latest Pathfinder product, was launched by our client the Blue Book of Construction earlier last month.</p>
<p>It’s an Internet-tethered desktop application that enables easy viewing, markup and takeoff of PDF and TIFF documents for the architecture, engineering and construction industry.   Some of the features include:<br />
<span id="more-3548"></span></p>
<ul>
<li>Blueprints for projects seeking bids can be downloaded and annotated from the online plan room.</li>
<li>Once a contractor is done annotating and marking up a blueprint, the file is easily saved back to the online plan room for viewing by the developer, general contractor or architect.</li>
<li>While work is underway, the blueprint is saved on a users local computer. The tool does not require a persistent Internet connection to function.</li>
<li>The tool includes a multitude of notations and graphing unique to the construction industry.</li>
<li>The tool makes it easy to perform item counts and calculate length, perimeter, area and volume simply by drawing a square, line, cube or irregular, ad-hoc polygon directly on the blueprint.</li>
<li>Sub-contractors can search BPM Select, Blue Book's repository of contracting supplies and products within the tool. When quoting installation of flooring, for example, a sub-contractor can link to a product sheet for the specific type of wood flooring they propose to use.</li>
</ul>
<p>So far it’s been getting rave reviews from customers, including this one:</p>
<blockquote><p>"VU360 is an incredible tool, and it’s sooooo easy to use.  I cut back on my “job” estimate by at least 80% actual time.  That would have been enough to impress me but, on top of that, I was able to export the figures to Excel."</p></blockquote>
<p>We like those kinds of reviews.  They tell us we’re doing something right when we design and develop software.</p>
<p>Vu360 is free, so if you’d like to download it and play with it, just go to <a href="http://www.thebluebook.com/vu360.shtml"rel="nofollow" >the Blue Book</a> and check it out.  We’d love to get your feedback, so let us know what you think of it.</p>
<p>You can also check out the case study in our <a href="http://www.pathf.com/showcase/success-stories/”" rel="nofollow" >showcase</a> for more project details and agile development goodness. </p>
<p>Our client, the Blue Book of Building and Construction also has a <a href="http://thebluebookmedia.com/vu360_v2/" rel="nofollow" >40 minute tutorial for Vu360</a>.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/pdf-application-development/" rel="nofollow" >PDF Application Development</a>, <a href="http://www.pathf.com/services/technology-expertise/.net-development/" rel="nofollow" >.Net Application Development</a>, <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a>, <a href="http://www.pathf.com/services/user-experience-design/" rel="nofollow" >User Experience Design</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/">Launched: Vu360 PDF Annotation and Markup Application</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/07/launched-rapid-reporting-employment-chek/' rel='bookmark' title='Permanent Link: Launched:  Rapid Reporting Employment Chek'>Launched:  Rapid Reporting Employment Chek</a></li><li><a href='http://www.pathf.com/blogs/2008/05/down-with-html/' rel='bookmark' title='Permanent Link: Down with HTML + Code Markup!'>Down with HTML + Code Markup!</a></li><li><a href='http://www.pathf.com/blogs/2007/10/the-desktop-app/' rel='bookmark' title='Permanent Link: The Desktop Application is Dead&#8230;Almost'>The Desktop Application is Dead&#8230;Almost</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>UI Views &#8211; Include or Exclude from Code Coverage</title>
		<link>http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/</link>
		<comments>http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 20:06:11 +0000</pubDate>
		<dc:creator>Karega Scott</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Pure MVC]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3534</guid>
		<description><![CDATA[My post today comes after watching the code coverage hover just over 70%, constantly asking myself is it possible to get

100% coverage and a discuss with a few internal colleagues on the subject. Interesting to know is if I exclude the views from code coverage,  I hit a high of just over 90%.  So, is [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/">UI Views &#8211; Include or Exclude from Code Coverage</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/' rel='bookmark' title='Permanent Link: WinForms Development Made Simple with PureMVC'>WinForms Development Made Simple with PureMVC</a></li><li><a href='http://www.pathf.com/blogs/2009/05/code-coverage-why/' rel='bookmark' title='Permanent Link: Code Coverage &#8211; Why?'>Code Coverage &#8211; Why?</a></li><li><a href='http://www.pathf.com/blogs/2009/03/notification-testing-with-puremvc-and-flexunit/' rel='bookmark' title='Permanent Link: Notification Testing with PureMVC and FlexUnit'>Notification Testing with PureMVC and FlexUnit</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>My post today comes after watching the code coverage hover just over 70%, constantly asking myself is it possible to get</p>
<div style="float:right;padding:10px;"><img class="alignright" title="NCover Code Coverage" src="http://s3.amazonaws.com/ncover_docs_assets/original/60/build_server_introduction_1.png" alt="" width="260" height="221" /></div>
<p>100% coverage and a discuss with a few internal colleagues on the subject. Interesting to know is if I exclude the views from code coverage,  I hit a high of just over 90%.  So, is not testing your UI the end of the world? Not at all, as long as you use good development practices and aim to make your UI as slim as possible, without any  business processing, branching or conditional type logic.</p>
<p>I've been very pleased with using the PureMVC framework on my current project, and haven't running into any Ah! Ha! I gotcha scenarios yet and frankly can't envision any as we continue to add new features to this application.  In fact using PureMVC has helped me think more about testability of our code and its single messaging bus has been just what the doctor ordered in terms of eliminating Publishing/Subscribing to events between the various components of the system, namely Mediators, Proxies and Commands.  But with great power comes great responsibility.</p>
<p>One could easily access the Singleton Facade of the PureMVC framework directly from your view and send a system wide message to any component interested in that message. The problem here is testability of the UI event required to trigger that system notification.</p>
<p>For instance in the code snippet below you would have to create an instance of the UpgradeView and simulate a click of the download button in order to test sending this notification.<br />
<span id="more-3534"></span><br />
public parital class UpgradView :Form, IUpgradeView<br />
{<br />
...</p>
<p>private void DownloadButton_Click(object sender, EventArgs e)<br />
{<br />
Facade.SendNotificaiton("DownloadUpgrade");<br />
}<br />
}</p>
<p>A better approach here is to allow your view to publish events that its mediator can subscribe to. This way you could add more logic before/after sending the notification and makes your code more testable.</p>
<p>public parital class UpgradView :Form, IUpgradeView<br />
{<br />
...</p>
<p>public event EventHandler OnDownLoad;</p>
<p>private void DownloadButton_Click(object sender, EventArgs e)<br />
{<br />
if(OnDownload != null)<br />
OnDownload(this, e);<br />
}<br />
}</p>
<p>public class UpgradMediator : Mediator<br />
{</p>
<p>public UpgradeMediator(IUpgradeView view)<br />
{<br />
view.OnDownload += Download;<br />
}</p>
<p>private void Download(object sender, EventArgs e)<br />
{<br />
// Add more logic here,<br />
Facade.SendNotificaiton("DownloadUpgrade");<br />
}<br />
}</p>
<p>[TestFixture]<br />
public class UpgradMediatorTest()<br />
{<br />
...</p>
<p>public void HandleNotification(INotification notification)<br />
{<br />
switch (notification.Name)<br />
{<br />
case Notification.DownloadNewVersion:<br />
Assert.IsNull(notification.Body);<br />
break;<br />
default:<br />
Assert.Fail();<br />
break;<br />
}<br />
}</p>
<p>[Test]<br />
public void DownloadUpgradeTest()<br />
{<br />
upgradeView.BackToRecord();<br />
upgradeView.Expect(x =&gt; x.CloseView()).Repeat.Once();<br />
upgradeView.OnDownloadUpgrade += null;</p>
<p>IEventRaiser eventRaiser = LastCall.IgnoreArguments().GetEventRaiser();<br />
upgradeView.Replay();</p>
<p>UpgradeMediator mediator = new UpgradeMediator(upgradeView);<br />
eventRaiser.Raise(this, EventArgs.Empty);</p>
<p>upgradeView.VerifyAllExpectations();<br />
}</p>
<p>}</p>
<p>So its it possible to get 100% coverage or is 100% just some pie in the sky that we aim for. Frankly, 90%+ code coverage aint bad, especially when my views are lean mean fighting machines.  Ok one last thing I'm sure your wondering  is why not 100%  coverage now that the views are excluded. Well, smarty pants, I can't test external third party APIs code that we include, nor do I want to.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/technology-expertise/.net-development/" rel="nofollow" >.Net Application Development</a>,<br />
 <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/">UI Views &#8211; Include or Exclude from Code Coverage</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/' rel='bookmark' title='Permanent Link: WinForms Development Made Simple with PureMVC'>WinForms Development Made Simple with PureMVC</a></li><li><a href='http://www.pathf.com/blogs/2009/05/code-coverage-why/' rel='bookmark' title='Permanent Link: Code Coverage &#8211; Why?'>Code Coverage &#8211; Why?</a></li><li><a href='http://www.pathf.com/blogs/2009/03/notification-testing-with-puremvc-and-flexunit/' rel='bookmark' title='Permanent Link: Notification Testing with PureMVC and FlexUnit'>Notification Testing with PureMVC and FlexUnit</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on Pure MVC for C#</title>
		<link>http://www.pathf.com/blogs/2009/07/more-on-pure-mvc-for-c/</link>
		<comments>http://www.pathf.com/blogs/2009/07/more-on-pure-mvc-for-c/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 05:51:15 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[.Net Development]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Pure MVC]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3374</guid>
		<description><![CDATA[
Last week, Karega Scott made a nice post on how Pure MVC makes development of Windows applications using C# simple. I thought I ll piggyback on this post and share some of my thoughts regarding this popular framework. I think the framework, if understood completely and adopted intelligently, has to offer some really cool benefits [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/07/more-on-pure-mvc-for-c/">More on Pure MVC for C#</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/' rel='bookmark' title='Permanent Link: UI Views &#8211; Include or Exclude from Code Coverage'>UI Views &#8211; Include or Exclude from Code Coverage</a></li><li><a href='http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/' rel='bookmark' title='Permanent Link: WinForms Development Made Simple with PureMVC'>WinForms Development Made Simple with PureMVC</a></li><li><a href='http://www.pathf.com/blogs/2007/06/converting_scri/' rel='bookmark' title='Permanent Link: Pure GWT &#8211; Converting Scriptaculous to GWT'>Pure GWT &#8211; Converting Scriptaculous to GWT</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-3379" style="float:right;padding:10px" title="puremvc" src="http://www.pathf.com/blogs/wp-content/uploads/2009/07/puremvc-icon.jpg" alt="puremvc" width="318" height="200" /></p>
<p>Last week, Karega Scott made a nice <a href="http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/" target="_blank">post</a> on how<a href="http://puremvc.org/" rel="nofollow"  target="_blank"> Pure MVC </a>makes development of Windows applications using C# simple. I thought I ll piggyback on this post and share some of my thoughts regarding this popular framework. I think the framework, if understood completely and adopted intelligently, has to offer some really cool benefits like :</p>
<ul>
<li>Light-weight messaging mechanism (using Notification/Observer patterns) between different parts of the application without having to create custom events/hooks all over the place.</li>
<li>Highly Decoupled Components allowing abstraction and seperation of logic.</li>
<li>The application's testability is enhanced greatly because of the reason stated above.</li>
<li>A Centralized singleton Facade component that mediates between the different components in the application.</li>
<li>The use of commands in the framework can help in building complex applications that need to perform several different UI-driven functions.</li>
</ul>
<p><span id="more-3374"></span></p>
<p>The framework's limitations (or should I say "perceived weaknesses") are :</p>
<ul>
<li>Registering and removing components on the Facade? Could there have been a better way to accomplish this? May be.</li>
<li>Named references for components were not helpful at all.</li>
<li>If the framework's notification mechanisms are not used appropriately,  there are chances of infinite message loops leading to debugging hell.</li>
</ul>
<p>There was considerable ramp up time involved in understanding the framework's capabilities/strengths/weaknesses. I still don't think I have realized the complete potential of Pure MVC  and I hope to explore more of it these coming days.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/technology-expertise/.net-development/" rel="nofollow" >.Net Application Development</a>, <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a> </p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/07/more-on-pure-mvc-for-c/">More on Pure MVC for C#</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/' rel='bookmark' title='Permanent Link: UI Views &#8211; Include or Exclude from Code Coverage'>UI Views &#8211; Include or Exclude from Code Coverage</a></li><li><a href='http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/' rel='bookmark' title='Permanent Link: WinForms Development Made Simple with PureMVC'>WinForms Development Made Simple with PureMVC</a></li><li><a href='http://www.pathf.com/blogs/2007/06/converting_scri/' rel='bookmark' title='Permanent Link: Pure GWT &#8211; Converting Scriptaculous to GWT'>Pure GWT &#8211; Converting Scriptaculous to GWT</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/07/more-on-pure-mvc-for-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinForms Development Made Simple with PureMVC</title>
		<link>http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/</link>
		<comments>http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 15:09:14 +0000</pubDate>
		<dc:creator>Karega Scott</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Pure MVC]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3288</guid>
		<description><![CDATA[PureMVC is open source framework that allows creation of application using Model, View and Controller pattern, and was original designed for Flex, Air and Flash application. It has since been port to various languages include the .NET C# language. So when I first heard about it, several months ago, I was working on a pretty [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/">WinForms Development Made Simple with PureMVC</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/' rel='bookmark' title='Permanent Link: UI Views &#8211; Include or Exclude from Code Coverage'>UI Views &#8211; Include or Exclude from Code Coverage</a></li><li><a href='http://www.pathf.com/blogs/2009/03/notification-testing-with-puremvc-and-flexunit/' rel='bookmark' title='Permanent Link: Notification Testing with PureMVC and FlexUnit'>Notification Testing with PureMVC and FlexUnit</a></li><li><a href='http://www.pathf.com/blogs/2009/08/making-vaadin-puremvc-grails-work/' rel='bookmark' title='Permanent Link: Making Vaadin, PureMVC and Grails Work Together'>Making Vaadin, PureMVC and Grails Work Together</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>PureMVC is open source framework that allows creation of application using Model, View and Controller pattern, and was original designed for Flex, Air and Flash application. It has since been port to various languages include the .NET C# language. So when I first heard about it, several months ago, I was working on a pretty large WinForm application design around the MVP - Model, View and Presenter pattern.</p>
<p>Our presenters were responsible for handling the user interaction coming from the views by subscribing to events published by the views, and coordinating these actions with changes needs from the models such that these changes are then reflected back in the views themselves.</p>
<p>Although this approached work, it requires a lot of wiring and unwiring of events from the various presenters to views, presenters to model, and presenters to presenters. So the code quickly begins to look like the following:</p>
<p style="margin: 0in 0in 0pt;">
<p style="margin: 0in 0in 0pt;">
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public class presenter1 </span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span>public event EventHandler&lt;EventArgs&gt; SomethingHappened;</span></span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public presenter1()</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span>_model = new Model();</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;">_model.StateChanged += OnModelChange;</span></span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span>_model.DocumentSaved += OnModelSaved;</span></span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span>_view = new View();</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;">_view.OnMouseDown += OnMouseDown;</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;">_view.OnMouseUp += OnMouseUp;</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;">_view.OnMouseMove += OnMouseMove;</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;">_view.OnMouseEnter += OnMouseEnter;</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;">}<span style="mso-tab-count: 1;"> </span></span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p>As you can see, for every user interaction on the view or model change a particular presenter is interested in, you must subscribe to an event, and if other presenters are interested in particular actions from views they are not responsible for, well, I’m sure you can get the picture. So act II, introduction of PureMVC framework for WinForms.</p>
<p>So exploring the capabilities of PureMVC framework, uncovered a simplification of our code. At its core, it consists of four singleton objects Model, View, Controller and Façade. The Model, View and Controller contain literal string references to Proxies which are data model, Mediators which provide and manage the user interface, and Commands which interact with the Proxies and Mediators or other commands.</p>
<p>But the simplification revolves around the Façade which is responsible to provide messaging throughout the core framework using an Observer notification scheme. So now our code quickly begins to look like the following:</p>
<p style="margin: 0in 0in 0pt;">
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public class presenter1 : Mediator </span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public presenter1()</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;">{</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;">}<span style="mso-tab-count: 1;"> </span></span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public override void ListNotificationOfInterest()</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-family: Times New Roman; font-size: small;">return new List&lt;string&gt; { Nofication.ViewMouseClick, Notification.ModelChange,};</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">}</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public override void HandleNofication(INofication notification)</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-family: Times New Roman; font-size: small;">switch(nofication.Name)</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span>case Notification.ViewMouseClick: </span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 2;"> </span>Dosomething();</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span>break;</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-family: Times New Roman; font-size: small;">}</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span>}</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public class presenter2 : Mediator </span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public presenter2()</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;">{</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;">}<span style="mso-tab-count: 1;"> </span></span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public override void ListNotificationOfInterest()</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-family: Times New Roman; font-size: small;">return new List&lt;string&gt; { Nofication.ViewMouseClick,};</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">}</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public override void HandleNofication(INofication notification)</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-family: Times New Roman; font-size: small;">switch(nofication.Name)</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span>case Notification.ViewMouseClick: </span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 2;"> </span>DoSomethingFun();</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span>break;</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt 0.5in;"><span style="font-family: Times New Roman; font-size: small;">}</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span>}</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">public partial class view1 : Page</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span>…</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">protected void view_mouseclicked(object sender, MouseEventArgs e)</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">{</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="mso-tab-count: 1;"> </span>Façade.NotifyObserver(new PureMVC.Pattern.Notification(Notification.Name));</span></span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">}</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="text-indent: 0.5in; margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;">…</span></p>
<p style="margin: 0in 0in 0pt;"><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p>Both presenter1 and presenter2 state they are interested in Notication.MouseClick event, and view1 uses the Façade to notify both presenters that the user has clicked the mouse button. No need to publish and subscribe to any events outside what’s naturally needed in the view.</p>
<p>The only thing I dislike is the name references, but as long as we are using constants you should be fine.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/technology-expertise/.net-development/" rel="nofollow" >.Net Application Development</a>, <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/">WinForms Development Made Simple with PureMVC</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/ui-views-include-exclude-code-coverage/' rel='bookmark' title='Permanent Link: UI Views &#8211; Include or Exclude from Code Coverage'>UI Views &#8211; Include or Exclude from Code Coverage</a></li><li><a href='http://www.pathf.com/blogs/2009/03/notification-testing-with-puremvc-and-flexunit/' rel='bookmark' title='Permanent Link: Notification Testing with PureMVC and FlexUnit'>Notification Testing with PureMVC and FlexUnit</a></li><li><a href='http://www.pathf.com/blogs/2009/08/making-vaadin-puremvc-grails-work/' rel='bookmark' title='Permanent Link: Making Vaadin, PureMVC and Grails Work Together'>Making Vaadin, PureMVC and Grails Work Together</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/07/winforms-development-made-simple-with-puremvc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fluently NHibernate</title>
		<link>http://www.pathf.com/blogs/2009/06/fluently-nhibernate/</link>
		<comments>http://www.pathf.com/blogs/2009/06/fluently-nhibernate/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:50:47 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Data Mapper]]></category>
		<category><![CDATA[Fluent]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3089</guid>
		<description><![CDATA[
Fluent NHibernate is an extension of the widely used and very popular NHibernate framework for Microsoft .NET. It is an open source framework that sits on top of the NHibernate layer and utilises all the core NHibernate methods. This framework provides an alternative to the standard XML based mappings (.hbm xml files) of NHibernate. It lets you define [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/06/fluently-nhibernate/">Fluently NHibernate</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/03/net-35-rem/' rel='bookmark' title='Permanent Link: .NET 3.5 Linq to Sql and IBatis.NET'>.NET 3.5 Linq to Sql and IBatis.NET</a></li><li><a href='http://www.pathf.com/blogs/2007/12/hibernate-gotch/' rel='bookmark' title='Permanent Link: Hibernate Gotcha: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!'>Hibernate Gotcha: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!</a></li><li><a href='http://www.pathf.com/blogs/2007/10/afraid-of-lie-l/' rel='bookmark' title='Permanent Link: Afraid of LIE (LazyInitializationException)&#8230; Don&#8217;t Be.'>Afraid of LIE (LazyInitializationException)&#8230; Don&#8217;t Be.</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="right"><img class="alignnone size-full wp-image-3090" title="logo" src="http://www.pathf.com/blogs/wp-content/uploads/2009/06/logo.png" alt="logo" width="200" height="117" /></div>
<p><a href="http://wiki.fluentnhibernate.org/show/GettingStartedIntroduction" rel="nofollow"  target="_blank">Fluent NHibernate</a> is an extension of the widely used and very popular NHibernate framework for Microsoft .NET. It is an open source framework that sits on top of the NHibernate layer and utilises all the core NHibernate methods. This framework provides an alternative to the standard XML based mappings (.hbm xml files) of NHibernate. It lets you define the NHibernate mappings in strongly typed and concise C# code.  For those who are new to NHibernate, <a href="https://www.hibernate.org/343.html" rel="nofollow"  target="_blank">here</a> is more information.</p>
<p><span id="more-3089"></span></p>
<p> <strong>Traditional NHibernate XML mapping</strong></p>
<pre class="xml"> &lt;?xml version="1.0" encoding="utf-8" ?&gt; 
&lt;hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
  namespace="QuickStart" assembly="QuickStart"&gt; 
 
  &lt;class name="Cat" table="Cat"&gt; 
    &lt;id name="Id"&gt; 
      &lt;generator class="identity" /&gt; 
    &lt;/id&gt; 
 
    &lt;property name="Name"&gt; 
      &lt;column name="Name" length="16" not-null="true" /&gt; 
    &lt;/property&gt; 
    &lt;property name="Sex" /&gt; 
    &lt;many-to-one name="Mate" /&gt; 
    &lt;bag name="Kittens"&gt; 
      &lt;key column="mother_id"/&gt; 
        &lt;one-to-many class="Cat"/&gt; 
      &lt;/bag&gt; 
  &lt;/class&gt; 
&lt;/hibernate-mapping&gt; </pre>
<p><strong>Fluent NHibernate equivalent</strong></p>
<pre class="bar">public class CatMap : ClassMap&lt;Cat&gt;  
{  
  public CatMap()  
  {  
    Id(x =&gt; x.Id);  
    Map(x =&gt; x.Name)  
      .WithLengthOf(16)  
      .Not.Nullable();  
    Map(x =&gt; x.Sex);  
    References(x =&gt; x.Mate);  
    HasMany(x =&gt; x.Kittens);  
  }  
}</pre>
<p> Why use Fluent NHibernate? Here are some benefits that it offers:</p>
<ul>
<li>It favors convention over configuration and overcomes the repetitiveness that is there with NHibernate. For instance, NHibernate requires string properties to be not null and have a default value. You don't have to handle this if you go fluent.</li>
<li>By getting rid of XML based mappings, it paves way for easy-to-read code that can be refactored and maintained in a simpler way. The mappings sit along with your code so any refactorings/changes to the code will cause the mappings to be affected as well. This helps catch compile errors/bugs with mappings.</li>
<li>One other obvious benefit is that the XML verbosity of NHibernate can be avoided.</li>
</ul>
<p>I think <a href="http://wiki.fluentnhibernate.org/show/GettingStartedFirstProject" rel="nofollow"  target="_blank">this</a> is a good place to start picking up Fluent. You find a nice little project example that talks about mapping a simple database schema and building an application to read data using the fluent mappings.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/06/fluently-nhibernate/">Fluently NHibernate</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/03/net-35-rem/' rel='bookmark' title='Permanent Link: .NET 3.5 Linq to Sql and IBatis.NET'>.NET 3.5 Linq to Sql and IBatis.NET</a></li><li><a href='http://www.pathf.com/blogs/2007/12/hibernate-gotch/' rel='bookmark' title='Permanent Link: Hibernate Gotcha: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!'>Hibernate Gotcha: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!</a></li><li><a href='http://www.pathf.com/blogs/2007/10/afraid-of-lie-l/' rel='bookmark' title='Permanent Link: Afraid of LIE (LazyInitializationException)&#8230; Don&#8217;t Be.'>Afraid of LIE (LazyInitializationException)&#8230; Don&#8217;t Be.</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/06/fluently-nhibernate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>.NET Web Browser Control Gotchas</title>
		<link>http://www.pathf.com/blogs/2009/06/net-web-browser-control-gotchas/</link>
		<comments>http://www.pathf.com/blogs/2009/06/net-web-browser-control-gotchas/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 13:30:48 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[.NET Browser Control]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=2581</guid>
		<description><![CDATA[How many of you folks out there have used the .NET Web browser control for Windows applications? I bet most of you, at some point, must have done some head-scratching as to why Microsoft did not make this control as powerful as it should have been. This control does offer all of the navigation functions [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/06/net-web-browser-control-gotchas/">.NET Web Browser Control Gotchas</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/03/keeping-up-wi-1/' rel='bookmark' title='Permanent Link: Keeping up with Firefox 3: Six more bookmark-manager gotchas'>Keeping up with Firefox 3: Six more bookmark-manager gotchas</a></li><li><a href='http://www.pathf.com/blogs/2009/08/lazy-download-good-browser/' rel='bookmark' title='Permanent Link: Don&#8217;t be lazy, download a good browser'>Don&#8217;t be lazy, download a good browser</a></li><li><a href='http://www.pathf.com/blogs/2009/10/gwt-20-cool-beans-browser-development-mode/' rel='bookmark' title='Permanent Link: GWT 2.0: Cool Beans on In Browser Development Mode'>GWT 2.0: Cool Beans on In Browser Development Mode</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>How many of you folks out there have used the .NET Web browser control for Windows applications? I bet most of you, at some point, must have done some head-scratching as to why Microsoft did not make this control as powerful as it should have been. This control does offer all of the navigation functions and basic browser capabilities but there is lot more that could have been done to enchance it's utility value. After some persistent fighting with this control in our current project, here are some gotchas that I have to offer.</p>
<p><span id="more-2581"></span><strong>Where the heck is print?</strong></p>
<p>There is a print method that is available on this control which directly prints the current web page without popping up the print dialog. This is fine but what if I want the print dialog to be show up? After some digging into the msdn documentation and googling around, I determined there was a way to do this. The trick is to use the <a href="http://msdn.microsoft.com/en-us/library/ms536419(VS.85).aspx" rel="nofollow"  target="_blank">execcommand</a> method on the browser's document object. The syntax goes like this: </p>
<p> Browser.Document.ExecCommand("Print", false, 0)</p>
<p>I believe this method basically executes the specified command on the underlying Microsoft active-x/html control. There are number of <a href="http://msdn.microsoft.com/en-us/library/ms533049(VS.85).aspx" rel="nofollow"  target="_blank">different commands</a> such as cut, copy, paste, undo, redo etc that are available. One thing to keep in mind is that all the edit commands operate directly on the DOM elements of the HTML document. </p>
<p><strong>What about Search?</strong></p>
<p>This one did take quite a while to figure out.  The browser control did not offer anything directly for searching the current web page.  If  its the Control-F search (that you normally get to see on the browser) is what you want, there is a simple way to enable that on the browser control.  Set the <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.webbrowsershortcutsenabled.aspx" rel="nofollow"  target="_blank">WebBrowserShortcutsEnabled </a>property to true and you have it. This also enables other shortcut operations like control-C, Control-V, Delete etc.  I came across a number of posts that talked about using interop to get to the underlying active-x control to accomplish functions like search, copy, cut, paste etc. I guess you can avoid all this trouble by making use of this property on the control.</p>
<p>Any other gotchas with this control? Feel free to let me know.</p>
<p> </p>
<p> </p>
<p><strong><br />
</strong></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/06/net-web-browser-control-gotchas/">.NET Web Browser Control Gotchas</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/03/keeping-up-wi-1/' rel='bookmark' title='Permanent Link: Keeping up with Firefox 3: Six more bookmark-manager gotchas'>Keeping up with Firefox 3: Six more bookmark-manager gotchas</a></li><li><a href='http://www.pathf.com/blogs/2009/08/lazy-download-good-browser/' rel='bookmark' title='Permanent Link: Don&#8217;t be lazy, download a good browser'>Don&#8217;t be lazy, download a good browser</a></li><li><a href='http://www.pathf.com/blogs/2009/10/gwt-20-cool-beans-browser-development-mode/' rel='bookmark' title='Permanent Link: GWT 2.0: Cool Beans on In Browser Development Mode'>GWT 2.0: Cool Beans on In Browser Development Mode</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/06/net-web-browser-control-gotchas/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Database Migration Tools for .NET</title>
		<link>http://www.pathf.com/blogs/2009/05/database-migration-tools-for-net/</link>
		<comments>http://www.pathf.com/blogs/2009/05/database-migration-tools-for-net/#comments</comments>
		<pubDate>Tue, 19 May 2009 13:48:27 +0000</pubDate>
		<dc:creator>Karega Scott</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=2475</guid>
		<description><![CDATA[For the past several months, I was working on a Windows desktop application that didn't require any connection to a database, and now that this project is coming to an end and my next assignment is Web application with database connection. I wanted to see what my options are for database migration tools. In the [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/05/database-migration-tools-for-net/">Database Migration Tools for .NET</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/07/visualizing-your-database-schema-entirely-in-rails/' rel='bookmark' title='Permanent Link: Visualizing Your Database Schema Entirely in Rails'>Visualizing Your Database Schema Entirely in Rails</a></li><li><a href='http://www.pathf.com/blogs/2008/12/acts_without_database-using-activerecord-for-non-database-backed-objects/' rel='bookmark' title='Permanent Link: acts_without_database: Leverage ActiveRecord with Non-Database Backed Objects'>acts_without_database: Leverage ActiveRecord with Non-Database Backed Objects</a></li><li><a href='http://www.pathf.com/blogs/2008/02/on-agile-planni/' rel='bookmark' title='Permanent Link: Agile planning tools.. paper or &#8216;plastic&#8217;?'>Agile planning tools.. paper or &#8216;plastic&#8217;?</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>For the past several months, I was working on a Windows desktop application that didn't require any connection to a database, and now that this project is coming to an end and my next assignment is Web application with database connection. I wanted to see what my options are for database migration tools. In the past I've used dbsetup.vbs script, created by Alek Davis, and although it worked it did require some modification to the underline script. So I'm currently looking at several alternatives that could serve as a suitable replacement. </p>
<p>RikMigrations<br />
Migrator.NET<br />
Subsonic Migrations<br />
dbDeploy.NET</p>
<p>Here are some useful links I've found to help determine which toy, I mean, tool, I plan to use next.</p>
<p>http://www.infoq.com/news/2009/01/migrations_dotnet<br />
http://flux88.com/blog/net-database-migration-tool-roundup/<br />
http://alekdavis.blogspot.com/2008/07/database-installer-revised.html</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/05/database-migration-tools-for-net/">Database Migration Tools for .NET</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/07/visualizing-your-database-schema-entirely-in-rails/' rel='bookmark' title='Permanent Link: Visualizing Your Database Schema Entirely in Rails'>Visualizing Your Database Schema Entirely in Rails</a></li><li><a href='http://www.pathf.com/blogs/2008/12/acts_without_database-using-activerecord-for-non-database-backed-objects/' rel='bookmark' title='Permanent Link: acts_without_database: Leverage ActiveRecord with Non-Database Backed Objects'>acts_without_database: Leverage ActiveRecord with Non-Database Backed Objects</a></li><li><a href='http://www.pathf.com/blogs/2008/02/on-agile-planni/' rel='bookmark' title='Permanent Link: Agile planning tools.. paper or &#8216;plastic&#8217;?'>Agile planning tools.. paper or &#8216;plastic&#8217;?</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/05/database-migration-tools-for-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Summer Software Development Internship</title>
		<link>http://www.pathf.com/blogs/2009/05/summer-software-development/</link>
		<comments>http://www.pathf.com/blogs/2009/05/summer-software-development/#comments</comments>
		<pubDate>Tue, 12 May 2009 18:36:07 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Pathfinder News]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Internship]]></category>
		<category><![CDATA[Pathfinder Development]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=2409</guid>
		<description><![CDATA[
 photo credit: Paul L. Nettles
We're starting a software development summer internship in our Chicago office this year. If you're a college junior, senior or recent graduate who want to learn the agile/OO development ropes while developing really cool products and services and earning $20/hr per hour (you should pay for the privilege, right?), give [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/05/summer-software-development/">Summer Software Development Internship</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/software-development-wasted-motion/' rel='bookmark' title='Permanent Link: Software Development and Wasted Motion'>Software Development and Wasted Motion</a></li><li><a href='http://www.pathf.com/blogs/2009/09/ruby-rails-internship/' rel='bookmark' title='Permanent Link: Ruby on Rails Internship'>Ruby on Rails Internship</a></li><li><a href='http://www.pathf.com/blogs/2009/08/software-development-construction-analogy/' rel='bookmark' title='Permanent Link: Software Development and the Construction Analogy'>Software Development and the Construction Analogy</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px"><a href="http://www.flickr.com/photos/28451803@N00/3270262773/" rel="nofollow" title="747"  target="_blank"><img src="http://farm4.static.flickr.com/3342/3270262773_f3f3f96052_m.jpg" border="0" alt="747" /></a><br />
<small><a href="http://creativecommons.org/licenses/by-nd/2.0/" rel="nofollow" title="Attribution-NoDerivs License"  target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/28451803@N00/3270262773/" rel="nofollow" title="Paul L. Nettles"  target="_blank">Paul L. Nettles</a></small></div>
<p>We're starting a software development summer internship in our Chicago office this year. If you're a college junior, senior or recent graduate who want to learn the agile/OO development ropes while developing really cool products and services and earning $20/hr per hour (you should pay for the privilege, right?), give the internship posting a look <a href="http://careers.pathf.com/index.php?m=careers&amp;p=showJob&amp;ID=39" rel="nofollow" >here</a>.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/05/summer-software-development/">Summer Software Development Internship</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/software-development-wasted-motion/' rel='bookmark' title='Permanent Link: Software Development and Wasted Motion'>Software Development and Wasted Motion</a></li><li><a href='http://www.pathf.com/blogs/2009/09/ruby-rails-internship/' rel='bookmark' title='Permanent Link: Ruby on Rails Internship'>Ruby on Rails Internship</a></li><li><a href='http://www.pathf.com/blogs/2009/08/software-development-construction-analogy/' rel='bookmark' title='Permanent Link: Software Development and the Construction Analogy'>Software Development and the Construction Analogy</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/05/summer-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deploying .NET Windows applications</title>
		<link>http://www.pathf.com/blogs/2009/04/deploying-net-windows-applications/</link>
		<comments>http://www.pathf.com/blogs/2009/04/deploying-net-windows-applications/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 14:55:20 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[Desktop RIA]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=2147</guid>
		<description><![CDATA[

I m sure many of the .NET programmers who have worked on building .NET windows applications must have had a chance to play around with the MSI/Deployment Project. This is the built-in project that the framework offers to build installers for deploying and installing windows applications. I think this project provides decent capabilities for packaging and installing windows applications but definitely has some [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/04/deploying-net-windows-applications/">Deploying .NET Windows applications</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/11/automated-deployments-rock/' rel='bookmark' title='Permanent Link: Automated Deployments Rock'>Automated Deployments Rock</a></li><li><a href='http://www.pathf.com/blogs/2009/08/rails-development-on-windows-native-or-virtualize/' rel='bookmark' title='Permanent Link: Rails Development on Windows: Native or Virtualize'>Rails Development on Windows: Native or Virtualize</a></li><li><a href='http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/' rel='bookmark' title='Permanent Link: Ruby on Rails with Windows &#8211; How I made it work'>Ruby on Rails with Windows &#8211; How I made it work</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div class="right"><img class="alignright size-full wp-image-2170" src="http://www.pathf.com/blogs/wp-content/uploads/2009/04/nsis_238.jpg" alt="nsis" width="180" height="180" /></div>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;">I m sure many of the .NET programmers who have worked on building .NET windows applications must have had a chance to play around with the <a href="http://www.c-sharpcorner.com/UploadFile/vishnuprasad2005/SetupProjects12022005022406AM/SetupProjects.aspx" rel="nofollow"  target="_blank">MSI/Deployment Project</a>. This is the built-in project that the framework offers to build installers for deploying and installing windows applications. I think this project provides decent capabilities for packaging and installing windows applications but definitely has some limitations.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p><span id="more-2147"></span></p>
<p><strong>MSI/Deployment Project</strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">The windows installer that was needed for our current project needed to accomplish some specific tasks like auto download and install of the .NET framework (without going out to the Microsoft site), detection of the windows version, file type association etc. We started out using the MSI/deployment project to build this installer. At a point when most of the plumbing was done, we realized that the project was'nt going to give us all that we needed. Even though the project offered the ability to build custom actions to perform specific tasks like the ones mentioned earlier, the amount of control that it gave us was pretty limited. We decided to look for other alternate solutions and that's when we came across the Nullsoft Scriptable Installer package.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p><strong>Nullsoft scriptable Installer Package</strong></p>
<p><a href="http://nsis.sourceforge.net/Main_Page" rel="nofollow"  target="_blank"> Nullsoft scriptable installer (NSI)</a> is a pretty straightforward scripting package that lets you build installers for windows applications using scripts driven approach. It is open source of course. I think it definitely is a promising alternative to the .NET deployment project. You essentially build a .nsi script which is like a master installer script that encompasses different sections for install, uninstall etc. This script can include code from other scripts and also macros. Macros are like script snippets that basically get inserted into the main script at compile time. The package comes with a nsi compiler that lets you the compile the nsi scripts and also test the installer. Let me briefly outline the pros and cons of NSI.</p>
<p>I think the pros are:</p>
<ul>
<li>It is quite dynamic and offers facilities for different installation tasks like modifying the registry information, versioning and accessing OS level information.</li>
<li>It allows the user to customize the installer's UI to a great extent and also enables addition of new dialogs in the installer.</li>
<li>It also offers <a href="http://nsis.sourceforge.net/Category:Plugins" rel="nofollow"  target="_blank">additional plugins </a>that can be integrated into the installer for performing different tasks that might be necessary</li>
<li>It even enables debugging using some built in methods.</li>
<li>There is a <a href="http://nsis.sourceforge.net/Developer_Center" rel="nofollow"  target="_blank">nice developer forum</a> on the NSI website that contains useful tips and references for building scripts.</li>
<li>It is free!!</li>
</ul>
<p>The drawbacks are not too many. A couple of not so nice things about this installer package are :</p>
<ul type="disc">
<li>The mechanism to include the files that need to be a part of the installer is not very intuitive. It involves hard coding the different filenames in the script. Ideally, the script should have had the ability to include the complete output of a project or solution. This would prevent errors like files being missed or incorrect files being included in the installer.</li>
<li>I think the <a href="http://nsis.sourceforge.net/Docs/" rel="nofollow"  target="_blank">documentation</a> that is available on the NSI website could have been a little more comprehensive. The site has some decent script examples that can get you started. But they are definitely not any close to  a real world installer that you might want to build.</li>
</ul>
<p>We were able to use NSI successfully to build the installer that we needed after a little bit of a learning curve. Anyone looking for an alternative to the traditional .NET deployment project should definitely check out NSI.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Times New Roman;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 11pt;"><span style="font-family: Times New Roman;"> </span></span></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/04/deploying-net-windows-applications/">Deploying .NET Windows applications</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/11/automated-deployments-rock/' rel='bookmark' title='Permanent Link: Automated Deployments Rock'>Automated Deployments Rock</a></li><li><a href='http://www.pathf.com/blogs/2009/08/rails-development-on-windows-native-or-virtualize/' rel='bookmark' title='Permanent Link: Rails Development on Windows: Native or Virtualize'>Rails Development on Windows: Native or Virtualize</a></li><li><a href='http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/' rel='bookmark' title='Permanent Link: Ruby on Rails with Windows &#8211; How I made it work'>Ruby on Rails with Windows &#8211; How I made it work</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/04/deploying-net-windows-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Before your Code Mildews &#8212; Refactor!</title>
		<link>http://www.pathf.com/blogs/2009/04/before-your-code-mildews-refactor/</link>
		<comments>http://www.pathf.com/blogs/2009/04/before-your-code-mildews-refactor/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 14:52:29 +0000</pubDate>
		<dc:creator>Karega Scott</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Refactor]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1812</guid>
		<description><![CDATA[
 photo credit: erix!

In my last post, See the Code, Be the Code, I compared agile development to the game of golf. But how does one truly "see the code" as the software grows in size and complexity? On one hand, you could ignore the fact that software is developed over many iterations and try [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/04/before-your-code-mildews-refactor/">Before your Code Mildews &#8212; Refactor!</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/06/cucumber-rocks-but-its-not-a-replacement-for-unit-tests/' rel='bookmark' title='Permanent Link: Cucumber Rocks &#8211; But it&#8217;s not a replacement for unit tests'>Cucumber Rocks &#8211; But it&#8217;s not a replacement for unit tests</a></li><li><a href='http://www.pathf.com/blogs/2008/07/1008/' rel='bookmark' title='Permanent Link: Ruby Code Audit Checklist'>Ruby Code Audit Checklist</a></li><li><a href='http://www.pathf.com/blogs/2009/05/rails-testing-frequently-asked-questions-the-non-code-version/' rel='bookmark' title='Permanent Link: Rails Testing Frequently Asked Questions &#8212; The Non-Code Version'>Rails Testing Frequently Asked Questions &#8212; The Non-Code Version</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px">
<a href="http://www.flickr.com/photos/68387408@N00/473704186/" rel="nofollow"  title="Squeeze?" target="_blank"><img src="http://farm1.static.flickr.com/177/473704186_7fbe7bc579_m.jpg" alt="Squeeze?" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by/2.0/" rel="nofollow"  title="Attribution License" target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/68387408@N00/473704186/" rel="nofollow"  title="erix!" target="_blank">erix!</a></small>
</div>
<p>In my last post, <a href="http://www.pathf.com/blogs/2009/03/see-the-code-be-the-code/" target="_blank">See the Code, Be the Code</a>, I compared agile development to the game of golf. But how does one truly "see the code" as the software grows in size and complexity? On one hand, you could ignore the fact that software is developed over many iterations and try to build a very complex system all at once that does everything under the sun, or you can keep the design simple and focus on the iteration at hand knowing that as our understanding increases we will refactor the code.</p>
<p>Refactoring is the process by which you modify the behavior and appearance of the code to ensure that code is up-to-date with current system requirements or changes in the system environment. It gives the development team an opportunity to continuously improve code quality for long term readability and maintainability. The easier the code is to follow, the less time it will take for current and future development teams to make changes as the system matures. It can also help the development team take advantages of improvements to existing frameworks and other software used to develop the application. These improvements can be realized through better performance and reusability of existing and future code. In short, it helps keep your code from become stale and mildewy.<br />
<span id="more-1812"></span><br />
So we are developing a custom desktop application that utilities a third party PDF library. Our team has developed the core tools for marking up documents using simple shapes - lines, rectangles, circles and polygons, calibration of a document to a specific scale - 1/4 in = 1 ft, and more complex shapes that using the scale to compute the shapes length, area, perimeter, etc. Now we are working on hole 10 of the software development golf course and one of the user stories requires multiple scales per document.</p>
<p>Upon inspection of our code base, we decided that we could meet the user requirement by restructuring the code contained within the <code>ViewPort</code> class. This class was originally designed to allow a single scale for the entire document, and contains methods for setting and updating the scale and basic properties for accessing the scale information for use by markup that requires calibration.  The <code>ViewPort</code> still needs a single, default scale that's used for entire document but should support scales for specific areas/zones of the document.  Below shows the current and proposed refactored <code>ViewPort</code> class and new <code>ScaleZone</code> class.</p>
<p style="text-align: center;"><img class="size-full wp-image-1837 aligncenter" src="http://www.pathf.com/blogs/wp-content/uploads/2009/03/photo.jpg" alt="photo" width="389" height="306" /></p>
<p>Now that we have an idea of how we want to refactor the code, we need some unit tests.</p>
<p>Unit Testing is just as important as refactoring because it helps to ensure unchanged code isn't affect by improvements to other parts of the applications,  it helps document how to use new or updated functionality, and confirms the accuracy of our changes. So before we start changing the coding, we create a few  Unit Test. For example <code>AddScaleZone</code> method: we want to test calibrating a blank document and adding a new scale zone. We should save the document and reopen and assert that new scale zone exist with the correct data.</p>
<pre class="csharp"><span style="color: #000000;">&#91;</span>Test<span style="color: #000000;">&#93;</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> AddScaleZoneTest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
  <span style="color: #FF0000;">string</span> fileLocation = FileUtil.<span style="color: #0000FF;">GetFileLocation</span><span style="color: #000000;">&#40;</span>FileUtil.<span style="color: #0000FF;">BlankDocument</span><span style="color: #000000;">&#41;</span>;
  docModel = <a href="http://www.google.com/search?q=new+msdn.microsoft.com" rel="nofollow" ><span style="color: #008000;">new</span></a> DocumentModel<span style="color: #000000;">&#40;</span>fileLocation<span style="color: #000000;">&#41;</span>;
&nbsp;
  CreateDefaultCalibrationViewPort<span style="color: #000000;">&#40;</span>docModel.<span style="color: #0000FF;">Document</span><span style="color: #000000;">&#41;</span>;
&nbsp;
  docModel.<span style="color: #0000FF;">SaveAs</span><span style="color: #000000;">&#40;</span>savedFileLocation<span style="color: #000000;">&#41;</span>;
  docModel.<span style="color: #0000FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
  MeasurementProperty scaleZoneMeasurementProperty = GetScaleZoneMeasurementProperty<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
  savedDocModel = <a href="http://www.google.com/search?q=new+msdn.microsoft.com" rel="nofollow" ><span style="color: #008000;">new</span></a> DocumentModel<span style="color: #000000;">&#40;</span>savedFileLocation<span style="color: #000000;">&#41;</span>;
&nbsp;
  <span style="color: #008080; font-style: italic;">// Create the scale zone and add to viewport</span>
  ScaleZone scaleZone = <a href="http://www.google.com/search?q=new+msdn.microsoft.com" rel="nofollow" ><span style="color: #008000;">new</span></a> ScaleZone<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com" rel="nofollow" ><span style="color: #008000;">new</span></a> RectangleInfo<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">25</span>, <span style="color: #FF0000;">25</span>, <span style="color: #FF0000;">425</span>, <span style="color: #FF0000;">425</span><span style="color: #000000;">&#41;</span>, <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>;
  scaleZone.<span style="color: #0000FF;">SetScaleZone</span><span style="color: #000000;">&#40;</span>scaleZoneMeasurementProperty, <span style="color: #808080;">&quot;ScaleZoneUnitTest&quot;</span><span style="color: #000000;">&#41;</span>;
  savedDocModel.<span style="color: #0000FF;">AddScaleZone</span><span style="color: #000000;">&#40;</span>scaleZone<span style="color: #000000;">&#41;</span>;
&nbsp;
  <span style="color: #FF0000;">int</span> scaleZoneCount = savedDocModel.<span style="color: #0000FF;">GetScaleZoneCount</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
  savedDocModel.<span style="color: #0000FF;">SaveAs</span><span style="color: #000000;">&#40;</span>savedFileLocation<span style="color: #000000;">&#41;</span>;
  savedDocModel.<span style="color: #0000FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
  ValidateCalibrationViewPortSaved<span style="color: #000000;">&#40;</span>savedFileLocation<span style="color: #000000;">&#41;</span>;
  ValidateScaleZoneSaved<span style="color: #000000;">&#40;</span>savedFileLocation, scaleZoneMeasurementProperty, <a href="http://www.google.com/search?q=new+msdn.microsoft.com" rel="nofollow" ><span style="color: #008000;">new</span></a> RectangleInfo<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">30</span>, <span style="color: #FF0000;">30</span>, <span style="color: #FF0000;">90</span>, <span style="color: #FF0000;">90</span><span style="color: #000000;">&#41;</span>, <span style="color: #FF0000;">1</span>, scaleZoneCount, scaleZone<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre>
<p>We know the project won't compile until we add the new <code>ScaleZone</code> class and refactor the <code>ViewPort</code> class. Let's also not forget that our existing unit tests can become stale and out-of-date; it's just as important to update the existing <code>ViewPort</code> Unit Tests base on the new requirement.</p>
<p>The point here is that code regardless of purpose needs refreshing. Don't let it mildew! Refactor your code!</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/04/before-your-code-mildews-refactor/">Before your Code Mildews &#8212; Refactor!</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/06/cucumber-rocks-but-its-not-a-replacement-for-unit-tests/' rel='bookmark' title='Permanent Link: Cucumber Rocks &#8211; But it&#8217;s not a replacement for unit tests'>Cucumber Rocks &#8211; But it&#8217;s not a replacement for unit tests</a></li><li><a href='http://www.pathf.com/blogs/2008/07/1008/' rel='bookmark' title='Permanent Link: Ruby Code Audit Checklist'>Ruby Code Audit Checklist</a></li><li><a href='http://www.pathf.com/blogs/2009/05/rails-testing-frequently-asked-questions-the-non-code-version/' rel='bookmark' title='Permanent Link: Rails Testing Frequently Asked Questions &#8212; The Non-Code Version'>Rails Testing Frequently Asked Questions &#8212; The Non-Code Version</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/04/before-your-code-mildews-refactor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Category and UI changes on Pathfinder blogs</title>
		<link>http://www.pathf.com/blogs/2008/12/category-and-ui-changes-on-pathfinder-blogs/</link>
		<comments>http://www.pathf.com/blogs/2008/12/category-and-ui-changes-on-pathfinder-blogs/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 16:50:45 +0000</pubDate>
		<dc:creator>Brian Dillard</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Business Rules Engines]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Disruption]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex, Flash and Air]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Pathfinder General]]></category>
		<category><![CDATA[Pathfinder News]]></category>
		<category><![CDATA[Product Strategy]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Social Applications]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[iPhone/Mobile]]></category>
		<category><![CDATA[uxd]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1338</guid>
		<description><![CDATA[If you read one or more of the Pathfinder blogs in our web interface, you may have noticed some tweaks to our navigation and top-level categories. Our goal in making these changes was to help different audiences drill down to the specific content that interests them. Instead of just a few top-level categories, we now [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/12/category-and-ui-changes-on-pathfinder-blogs/">Category and UI changes on Pathfinder blogs</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/05/the-blogs-have-moved/' rel='bookmark' title='Permanent Link: The Blogs Have Moved'>The Blogs Have Moved</a></li><li><a href='http://www.pathf.com/blogs/2008/12/puremvc-spanning-the-platform-spectrum/' rel='bookmark' title='Permanent Link: PureMVC, Spanning the Platform Spectrum?'>PureMVC, Spanning the Platform Spectrum?</a></li><li><a href='http://www.pathf.com/blogs/2009/04/touch-screen-kiosk-in-adobe-air/' rel='bookmark' title='Permanent Link: Touch Screen Kiosk in Adobe Air'>Touch Screen Kiosk in Adobe Air</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>If you read one or more of the Pathfinder blogs in our web interface, you may have noticed some tweaks to our navigation and top-level categories. Our goal in making these changes was to help different audiences drill down to the specific content that interests them. Instead of just a few top-level categories, we now boast around 20, though many posts appear in multiple categories. To subscribe via RSS to any specific category - or to our entire feed - just visit our <a href="http://www.pathf.com/blogs/feeds/">Feeds</a> page.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/12/category-and-ui-changes-on-pathfinder-blogs/">Category and UI changes on Pathfinder blogs</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/05/the-blogs-have-moved/' rel='bookmark' title='Permanent Link: The Blogs Have Moved'>The Blogs Have Moved</a></li><li><a href='http://www.pathf.com/blogs/2008/12/puremvc-spanning-the-platform-spectrum/' rel='bookmark' title='Permanent Link: PureMVC, Spanning the Platform Spectrum?'>PureMVC, Spanning the Platform Spectrum?</a></li><li><a href='http://www.pathf.com/blogs/2009/04/touch-screen-kiosk-in-adobe-air/' rel='bookmark' title='Permanent Link: Touch Screen Kiosk in Adobe Air'>Touch Screen Kiosk in Adobe Air</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/12/category-and-ui-changes-on-pathfinder-blogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PureMVC, Spanning the Platform Spectrum?</title>
		<link>http://www.pathf.com/blogs/2008/12/puremvc-spanning-the-platform-spectrum/</link>
		<comments>http://www.pathf.com/blogs/2008/12/puremvc-spanning-the-platform-spectrum/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 20:51:02 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex, Flash and Air]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[iPhone/Mobile]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Swing]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1318</guid>
		<description><![CDATA[At Pathfinder we do a fair amount of desktop style development -- iPhone/Cocoa, WebForms, Swing -- and web application development -- Grails, Rails, JSP, ASP.NET, etc., etc.. In the last two years we, like a lot of other software development shops, have experienced a convergence in our efforts. The web is coming to the desktop [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/12/puremvc-spanning-the-platform-spectrum/">PureMVC, Spanning the Platform Spectrum?</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/12/learning-puremvc-the-hard-way-is-there-any-other-way/' rel='bookmark' title='Permanent Link: Learning PureMVC the Hard Way (is there any other way?)'>Learning PureMVC the Hard Way (is there any other way?)</a></li><li><a href='http://www.pathf.com/blogs/2008/12/using-flex-code-generator-fcg-with-flex-puremvc/' rel='bookmark' title='Permanent Link: Using Flex Code Generator (FCG) with Flex &#038; PureMVC'>Using Flex Code Generator (FCG) with Flex &#038; PureMVC</a></li><li><a href='http://www.pathf.com/blogs/2009/01/flare-on-puremvc-in-flex-example/' rel='bookmark' title='Permanent Link: Flare on PureMVC in Flex example'>Flare on PureMVC in Flex example</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src='http://puremvc.org/pages/images/PureMVC-Blogosphere.png' alt='PureMVC' class='alignnone' style="float:right;padding:10px" />At Pathfinder we do a fair amount of desktop style development -- iPhone/Cocoa, WebForms, Swing -- and web application development -- Grails, Rails, JSP, ASP.NET, etc., etc.. In the last two years we, like a lot of other software development shops, have experienced a convergence in our efforts. The web is coming to the desktop in the form of Air and the Desktop is coming to the web in the form of RIA's. Now web MVC, which used to be a pretty benign pattern mostly concerned with app flow and validation, is starting to resemble desktop MVC, which has to deal with document-centric models and long lived views and all of the plumbing that requires.</p>
<p>So we recently had a powwow between all the different parties to talk about MVC and this convergence. With the exception of the insufferable Mac and iPhone developers and their <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/chapter_5_section_4.html" rel="nofollow"  target="_blank">disgustingly mature Cocoa framework</a>,  we all agreed it would be nice to have an application level MVC framework for each platform. We also agreed that Swing is a great example of what happens when the vendor doesn't provide such a thing -- spaghetti code that relies on component level MVC and hard wiring at the application level. There are a few MVC frameworks for Swing, such as <a href="http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-tikeswing.html" rel="nofollow"  target="_blank">TikeSwing</a> and <a href="http://spring-rich-c.sourceforge.net/1.0.0/index.html" rel="nofollow"  target="_blank">Spring Rich Client</a> (soon to be superseded by Spring Desktop), but for every Swing app that has this sort of design, there are hundreds that are just a mess.<br />
<span id="more-1318"></span><br />
Most of us felt that RIA's, including Flash and Flex apps, were suffering from the same framework vacuum. Wouldn't it be nice, we thought, if there was a common framework between all of these platforms, that brought application level MVC to the party? Sasha, our Flex lead, mentioned <a href="http://trac.puremvc.org/PureMVC" rel="nofollow"  target="_blank">PureMVC</a>, a "simple" framework that has its origins in ActionScript. It now has ports to Java, GWT, C#, Objective-C, PHP, Python and JavaScript. We'll be evaluating this framework over the next few months to see if it is suitable as a general solution for our RIA's and desktop apps.</p>
<p>If any of our readers have experience with PureMVC or any other cross platform MVC frameworks, feel free to comment.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/12/puremvc-spanning-the-platform-spectrum/">PureMVC, Spanning the Platform Spectrum?</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/12/learning-puremvc-the-hard-way-is-there-any-other-way/' rel='bookmark' title='Permanent Link: Learning PureMVC the Hard Way (is there any other way?)'>Learning PureMVC the Hard Way (is there any other way?)</a></li><li><a href='http://www.pathf.com/blogs/2008/12/using-flex-code-generator-fcg-with-flex-puremvc/' rel='bookmark' title='Permanent Link: Using Flex Code Generator (FCG) with Flex &#038; PureMVC'>Using Flex Code Generator (FCG) with Flex &#038; PureMVC</a></li><li><a href='http://www.pathf.com/blogs/2009/01/flare-on-puremvc-in-flex-example/' rel='bookmark' title='Permanent Link: Flare on PureMVC in Flex example'>Flare on PureMVC in Flex example</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/12/puremvc-spanning-the-platform-spectrum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Everything&#8217;s Coming Up Windows</title>
		<link>http://www.pathf.com/blogs/2008/10/everythings-coming-up-windows/</link>
		<comments>http://www.pathf.com/blogs/2008/10/everythings-coming-up-windows/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 00:07:28 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Disruption]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[S3]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1226</guid>
		<description><![CDATA[I've been beating the drum of cloud computing and the advantage that it gives to companies building solutions on Linux. Microsoft needed to respond. Well, now we have two solutions for Windows on demand:

Amazon EC2 is offering Windows on EC2, with the pricing at $0.125 per hour for a small instance running Windows Server (as [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/10/everythings-coming-up-windows/">Everything&#8217;s Coming Up Windows</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/10/microsoft-to-jump-on-board-ec2/' rel='bookmark' title='Permanent Link: Microsoft to Jump on Board EC2'>Microsoft to Jump on Board EC2</a></li><li><a href='http://www.pathf.com/blogs/2009/08/rails-development-on-windows-native-or-virtualize/' rel='bookmark' title='Permanent Link: Rails Development on Windows: Native or Virtualize'>Rails Development on Windows: Native or Virtualize</a></li><li><a href='http://www.pathf.com/blogs/2008/05/agile-business/' rel='bookmark' title='Permanent Link: Agile Business, Microsoft and the Threat of Cloud Computing'>Agile Business, Microsoft and the Threat of Cloud Computing</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>I've been beating the <a href="http://www.pathf.com/blogs/2008/05/agile-business/" target="_blank">drum of cloud computing</a> and the advantage that it gives to companies building solutions on Linux. Microsoft needed to <a href="http://www.pathf.com/blogs/2008/10/microsoft-to-jump-on-board-ec2/" target="_blank">respond</a>. Well, now we have two solutions for Windows on demand:</p>
<ul>
<li>Amazon EC2 is offering <a href="http://aws.amazon.com/ec2/" rel="nofollow"  target="_blank">Windows on EC2</a>, with the pricing at $0.125 per hour for a small instance running Windows Server (as compared to $0.10 for a Linux instance). You can run SQL Server Express at no extra charge. The SQL Server Standard smallest instance (Stadard Large) rings in at $1.10 per hour, however, which ain't such a good deal.</li>
<li>Microsoft's <a href="http://www.microsoft.com/azure/default.mspx" rel="nofollow"  target="_blank">Azure Services Platform</a>. It's still in community evaluation mode, but there is one thing that is already clear about it: it's as confusing as all git out. One of the advantages of Amazon's services like S3 and EC2 is that they are simple and can form the building blocks for other applications and services.</li>
</ul>
<p>If I'm provisioning a web application, I'm pretty comfortable thinking in terms of virtual servers or instances. Not sure how to think about scaling and cost with Azure. I think MS would have done better to start out with a KISS approach to drive adoption. Time will tell if their "it can cure cancer" approach will work out.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/10/everythings-coming-up-windows/">Everything&#8217;s Coming Up Windows</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/10/microsoft-to-jump-on-board-ec2/' rel='bookmark' title='Permanent Link: Microsoft to Jump on Board EC2'>Microsoft to Jump on Board EC2</a></li><li><a href='http://www.pathf.com/blogs/2009/08/rails-development-on-windows-native-or-virtualize/' rel='bookmark' title='Permanent Link: Rails Development on Windows: Native or Virtualize'>Rails Development on Windows: Native or Virtualize</a></li><li><a href='http://www.pathf.com/blogs/2008/05/agile-business/' rel='bookmark' title='Permanent Link: Agile Business, Microsoft and the Threat of Cloud Computing'>Agile Business, Microsoft and the Threat of Cloud Computing</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/10/everythings-coming-up-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery goodness with ASP .NET</title>
		<link>http://www.pathf.com/blogs/2008/10/jquery-goodness-with-asp-net/</link>
		<comments>http://www.pathf.com/blogs/2008/10/jquery-goodness-with-asp-net/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 17:29:28 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1197</guid>
		<description><![CDATA[http://www.eweek.com/c/a/Application-Development/Microsoft-Adopts-OpenSource-jQuery-JavaScript-Library/
This piece of news has brought about great cheer in the Web Developers community. jQuery has been fast gaining reputation in the world of web-development as a light-weight, flexible and easy-to-use Javascript library. Integration of jQuery with Microsoft's development platform should provide web developers with new capabilities and opportunities.
This is very smart move by Microsoft [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/10/jquery-goodness-with-asp-net/">jQuery goodness with ASP .NET</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/05/my-ibm-develope-2/' rel='bookmark' title='Permanent Link: My IBM developerWorks series, part 2: Tooltips, lightboxes and more jQuery goodness'>My IBM developerWorks series, part 2: Tooltips, lightboxes and more jQuery goodness</a></li><li><a href='http://www.pathf.com/blogs/2008/06/pitfalls-of-using-jquery-with-aspnet-ajax/' rel='bookmark' title='Permanent Link: Pitfalls of Using JQuery with ASP.NET Ajax'>Pitfalls of Using JQuery with ASP.NET Ajax</a></li><li><a href='http://www.pathf.com/blogs/2008/03/jquery-form-and/' rel='bookmark' title='Permanent Link: jQuery Form and jQuery UI Tabs: Two great tastes that taste great together'>jQuery Form and jQuery UI Tabs: Two great tastes that taste great together</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.eweek.com/c/a/Application-Development/Microsoft-Adopts-OpenSource-jQuery-JavaScript-Library/" rel="nofollow" >http://www.eweek.com/c/a/Application-Development/Microsoft-Adopts-OpenSource-jQuery-JavaScript-Library/</a></p>
<p>This piece of news has brought about great cheer in the Web Developers community. jQuery has been fast gaining reputation in the world of web-development as a light-weight, flexible and easy-to-use Javascript library. Integration of jQuery with Microsoft's development platform should provide web developers with new capabilities and opportunities.</p>
<p>This is very smart move by Microsoft given the fact they have always hesitated to incorporate open-source technologies into their products. It is planning to ship jQuery with the ASP .NET MVC very soon. Integration with Visual Studio is something that is going to happen later. There are plans to enable intellisense support for jQuery in Visual Studio which would be really cool I think.</p>
<p>Some of the high-points of jQuery integration with ASP .NET could be :</p>
<ul>
<li>JQuery provides an attractive alternative to conventional Javascript making client-side DOM and HTML manipulation much easier and quicker.</li>
<li>It could complement ASP .NET Ajax and play with it really well</li>
<li>The original jQuery libraries are going to be ported into ASP .NET without any change which would enable developers to leverage jQuery's true potential</li>
</ul>
<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/10/jquery-aspnet.png"><img class="alignnone size-medium wp-image-1198" src="http://www.pathf.com/blogs/wp-content/uploads/2008/10/jquery-aspnet.png" alt="" width="407" height="166" /></a></p>
<p>image-source : <a href="http://www.webmonkey.com" rel="nofollow" >www.webmonkey.com</a></p>
<p>I have posted a few links below that discuss more about what the MS-jQuery marriage means for the web development community and how it can make life easier for developers out there.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx" rel="nofollow" >http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx</a></p>
<p><a href="http://weblogs.asp.net/bleroy/archive/2008/09/28/jquery-now-officially-part-of-the-net-developer-s-toolbox.aspx" rel="nofollow" >http://weblogs.asp.net/bleroy/archive/2008/09/28/jquery-now-officially-part-of-the-net-developer-s-toolbox.aspx</a></p>
<p><a href="http://jquery.com/blog/2008/09/28/jquery-microsoft-nokia/" rel="nofollow" >http://jquery.com/blog/2008/09/28/jquery-microsoft-nokia/</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/10/jquery-goodness-with-asp-net/">jQuery goodness with ASP .NET</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/05/my-ibm-develope-2/' rel='bookmark' title='Permanent Link: My IBM developerWorks series, part 2: Tooltips, lightboxes and more jQuery goodness'>My IBM developerWorks series, part 2: Tooltips, lightboxes and more jQuery goodness</a></li><li><a href='http://www.pathf.com/blogs/2008/06/pitfalls-of-using-jquery-with-aspnet-ajax/' rel='bookmark' title='Permanent Link: Pitfalls of Using JQuery with ASP.NET Ajax'>Pitfalls of Using JQuery with ASP.NET Ajax</a></li><li><a href='http://www.pathf.com/blogs/2008/03/jquery-form-and/' rel='bookmark' title='Permanent Link: jQuery Form and jQuery UI Tabs: Two great tastes that taste great together'>jQuery Form and jQuery UI Tabs: Two great tastes that taste great together</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/10/jquery-goodness-with-asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails with Windows &#8211; How I made it work</title>
		<link>http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/</link>
		<comments>http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 18:09:51 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1087</guid>
		<description><![CDATA[I have been developing with Ruby on Rails over the last few weeks. Coming from the ASP .NET/C#/VB world, I am a total stranger to a programming language like Ruby. Any new programming language is fun to learn! Ruby was even more exciting cause it was a new kinda language to me. Though I think [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/">Ruby on Rails with Windows &#8211; How I made it work</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/rails-development-on-windows-native-or-virtualize/' rel='bookmark' title='Permanent Link: Rails Development on Windows: Native or Virtualize'>Rails Development on Windows: Native or Virtualize</a></li><li><a href='http://www.pathf.com/blogs/2008/10/a-java-programmers-transition-to-ruby-on-rails/' rel='bookmark' title='Permanent Link: A Java Programmer&#8217;s transition to Ruby on Rails'>A Java Programmer&#8217;s transition to Ruby on Rails</a></li><li><a href='http://www.pathf.com/blogs/2008/11/testing-various-roles-in-ruby-on-rails/' rel='bookmark' title='Permanent Link: Testing various roles in ruby on rails'>Testing various roles in ruby on rails</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>I have been developing with Ruby on Rails over the last few weeks. Coming from the ASP .NET/C#/VB world, I am a total stranger to a programming language like Ruby. Any new programming language is fun to learn! Ruby was even more exciting cause it was a new kinda language to me. Though I think Ruby is not as user-friendly as C# or Java, it is as powerful and flexible if not better. Combined with Rails, Ruby becomes a platform that facilitates quick and efficient development of database-driven web applications.</p>
<p><span id="more-1087"></span></p>
<p>Ruby has been known work to well with Mac OS, Linux and Cygwin traditionally. I came to understand that it doesnt work very well with Windows. There are a number of pitfalls that are associated with Ruby or Rails running on Windows. Here, I going to talk about a couple that I hit when I was trying to get RoR to work on Windows :</p>
<ul>
<li>Most of the unit tests in my RoR project were failing throwing some weird database errors. I had done everything right from installing Ruby to installing the various gems needed for the project. After a quite a bit of googling, we learnt we could resolved these issues by making a simple change to the MySQL settings. The "Enable Strict mode" option had to be disabled using the MySQL interface config wizard. I ran the tests after this was done and voila!</li>
</ul>
<ul>
<li>This problem was even more perplexing than the above one. A bunch of unit tests were still failing with a dreadful "Segmentation fault" error (I m sure "ROR on Windows" folks might have seen this before). Some research on this error led to the finding that MySQL versions greater than 5.0.18 might cause this problem. So I downgraded my version of MySQL to 5.0.18 to see if that fixed my problem. No luck as yet! This was followed by trying out a number of other potential fixes like using different versions of libmysql.dll (the MySQL library used in Ruby), making changes to database configuration in the project etc. None of these helped me. After a few days of frustration, I uninstalled the MySQL gem and reinstalled it upon the advice of my colleague. That finally did the trick!</li>
</ul>
<p>I m still puzzled how these fixes worked but glad they did <img src='http://www.pathf.com/blogs/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/">Ruby on Rails with Windows &#8211; How I made it work</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/rails-development-on-windows-native-or-virtualize/' rel='bookmark' title='Permanent Link: Rails Development on Windows: Native or Virtualize'>Rails Development on Windows: Native or Virtualize</a></li><li><a href='http://www.pathf.com/blogs/2008/10/a-java-programmers-transition-to-ruby-on-rails/' rel='bookmark' title='Permanent Link: A Java Programmer&#8217;s transition to Ruby on Rails'>A Java Programmer&#8217;s transition to Ruby on Rails</a></li><li><a href='http://www.pathf.com/blogs/2008/11/testing-various-roles-in-ruby-on-rails/' rel='bookmark' title='Permanent Link: Testing various roles in ruby on rails'>Testing various roles in ruby on rails</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/08/ruby-on-rails-with-windows-how-i-made-it-work/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>LINQ to My Domain</title>
		<link>http://www.pathf.com/blogs/2008/07/linq-to-my-domain/</link>
		<comments>http://www.pathf.com/blogs/2008/07/linq-to-my-domain/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 02:04:08 +0000</pubDate>
		<dc:creator>Jason Pearl</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1073</guid>
		<description><![CDATA[I've begun my foray into the world of LINQ, and in my investigation I've seen a lot of work based on the LINQ to SQL "design surface" available in Visual Studio 2008.  It's a neat tool.  I point it to my database, drag some tables over, and it infers my domain structure and [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/07/linq-to-my-domain/">LINQ to My Domain</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/03/net-35-rem/' rel='bookmark' title='Permanent Link: .NET 3.5 Linq to Sql and IBatis.NET'>.NET 3.5 Linq to Sql and IBatis.NET</a></li><li><a href='http://www.pathf.com/blogs/2009/06/fluently-nhibernate/' rel='bookmark' title='Permanent Link: Fluently NHibernate'>Fluently NHibernate</a></li><li><a href='http://www.pathf.com/blogs/2008/07/adonet-entity-framework/' rel='bookmark' title='Permanent Link: ADO.NET Entity Framework'>ADO.NET Entity Framework</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/07/linq_designer2.jpg"><img class="alignright size-thumbnail wp-image-1076" style="float:right; padding: 10px" src="http://www.pathf.com/blogs/wp-content/uploads/2008/07/linq_designer2.jpg" alt="Design Surface" width="150" height="125" /></a>I've begun my foray into the world of LINQ, and in my investigation I've seen a lot of work based on the LINQ to SQL "design surface" available in Visual Studio 2008.  It's a neat tool.  I point it to my database, drag some tables over, and it infers my domain structure and relationships from the databases fields and keys.  That's all well and good for a simple domain model that is <strong>directly</strong> related to the database schema.  I could see using this for a quick prototype, or a really small application.  I see three files created by the designer:</p>
<p><strong>MyClasses.dbml</strong> - This looks like any ORM frameworks mapping file.  It associates classes with tables, maps fields to object properties, and defines relationships.</p>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;table</span> <span style="color: #000066;">border</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/table<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;</pre>
<p><strong> MyClasses.dbml.layout</strong> - This looks to be specific to the layout of the design surface and appears to serve no purpose outside of this design.</p>
<p><strong> MyClasses.designer.cs</strong> - This is the beast that I'm looking to replace.  It contains the class definitions and attribute based mappings to bring my database schema into my application, and ready it for use by LINQ.</p>
<p>So this leaves me with a couple questions.  One,  why are attributes used to specify mappings?  Can this be done strictly via XML?  More importantly two, can I use my own domain model, and if so how do I map it to the database?</p>
<p>My goal would be to design a layered system, separating the underlying data store from the repositories required to push and pull my domain objects from these data stores.  This would allow in memory implementations of the data store, and would make unit testing (and developing) a whole lot easier.  I will be digging into this in the coming days and will report back soon.  Stay tuned!</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/07/linq-to-my-domain/">LINQ to My Domain</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/03/net-35-rem/' rel='bookmark' title='Permanent Link: .NET 3.5 Linq to Sql and IBatis.NET'>.NET 3.5 Linq to Sql and IBatis.NET</a></li><li><a href='http://www.pathf.com/blogs/2009/06/fluently-nhibernate/' rel='bookmark' title='Permanent Link: Fluently NHibernate'>Fluently NHibernate</a></li><li><a href='http://www.pathf.com/blogs/2008/07/adonet-entity-framework/' rel='bookmark' title='Permanent Link: ADO.NET Entity Framework'>ADO.NET Entity Framework</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/07/linq-to-my-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADO.NET Entity Framework</title>
		<link>http://www.pathf.com/blogs/2008/07/adonet-entity-framework/</link>
		<comments>http://www.pathf.com/blogs/2008/07/adonet-entity-framework/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 15:10:20 +0000</pubDate>
		<dc:creator>Karega Scott</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[ADO.NET Entity Framework]]></category>
		<category><![CDATA[Logical Model and Conceptual Model]]></category>
		<category><![CDATA[Object Relation Mapping (ORM)]]></category>
		<category><![CDATA[Object-Oriented]]></category>
		<category><![CDATA[References]]></category>
		<category><![CDATA[XML Metadata]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=1060</guid>
		<description><![CDATA[ADO.NET Entity Framework is an object relationship mapping (ORM) tool. It was designed to provide a layer of abstraction between the logical schema and concept schema of an application, and to decrease the amount code need for a data centric application.
Some benefits of the Entity framework:

Data storage engine and schema independence: Due to the layer [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/07/adonet-entity-framework/">ADO.NET Entity Framework</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/12/hibernate-gotch/' rel='bookmark' title='Permanent Link: Hibernate Gotcha: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!'>Hibernate Gotcha: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!</a></li><li><a href='http://www.pathf.com/blogs/2008/03/net-35-rem/' rel='bookmark' title='Permanent Link: .NET 3.5 Linq to Sql and IBatis.NET'>.NET 3.5 Linq to Sql and IBatis.NET</a></li><li><a href='http://www.pathf.com/blogs/2006/09/thinwire/' rel='bookmark' title='Permanent Link: Framework Watch &#8211; ThinWire'>Framework Watch &#8211; ThinWire</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>ADO.NET Entity Framework is an object relationship mapping (ORM) tool. It was designed to provide a layer of abstraction between the logical schema and concept schema of an application, and to decrease the amount code need for a data centric application.</p>
<p>Some benefits of the Entity framework:</p>
<ul>
<li><strong>Data storage engine and schema independence: </strong>Due to the layer of abstraction between the logical and conceptual schema of your application, you no-longer need to know and hard cord the application to a specific data storage engine or schema.</li>
<li><strong>More expressive conceptual model: </strong>Entity types can inherit from other entity types and allows the creation of more complex types  in addition  to the standard scalar types support by  the database.</li>
<li><strong>Access to multiple database system: </strong>Because the application is free from hard code data storage dependencies, the developer has the ability to access data from multiple storages using a consistent application object model</li>
<li><strong>LINQ: </strong>Language Integrated query support that offers compile time syntax checking for queries against the conceptual model.</li>
</ul>
<p>The Entity Framework works by allow the developers to hand code or use code generation tools to create the XML metadata for the conceptual entity data model, a storage entity model, and a mapping specification between the two. The XML file created for the conceptual entity data model is then stored in the <a href="http://msdn.microsoft.com/en-us/library/bb399292.aspx" rel="nofollow" >conceptual schema definition file (.csdl)</a>, the storage entity model is stored in the <a href="http://msdn.microsoft.com/en-us/library/bb399559.aspx" rel="nofollow" >storage schema definition file (.ssdl)</a>, and mapping between the two in the <a href="http://msdn.microsoft.com/en-us/library/bb399202.aspx" rel="nofollow" >mapping specification language file (.msl)</a>. These XML file are then loaded into the metadata workspace of the entity framework, and a set of classes are generated to allow the developer to work directly with the conceptual model and indirectly with the logical model.</p>
<p><a href="http://www.pathf.com/blogs/wp-content/uploads/2008/07/articleimage.gif"><img class="alignnone size-medium wp-image-1061" src="http://www.pathf.com/blogs/wp-content/uploads/2008/07/articleimage.gif" alt="ADO.NET Entity Framework Architecture" width="696" height="580" /></a><br />
<a href="http://www.code-magazine.com/Article.aspx?quickid=0712042" rel="nofollow" ><strong>Figure: ADO.NET Entity Framework Architecture</strong></a></p>
<p>So with these benefits design and built directly into the the framework and the logical approach used by framework to interact with various data providers, some experts in entity-based applications and software architectures on the .NET  platform still feel that the framework has some pretty large deficiencies.</p>
<p>They are concerned that the framework is...</p>
<ul>
<li>Inordinate focus on the data aspect of entities leads to degraded entity  architectures</li>
<li>Excess code needed to deal with lack of lazy loading</li>
<li>Share, canonical model contradicts software best practices</li>
<li>Lack of persistence ignorance causes business logic to be harder to read,  write, and modify, causing development and maintenance costs to increase at an  exaggerated rate.</li>
<li>Excessive merge conflicts with source control in team environments.</li>
</ul>
<p>Are these claim valid concerns to consider?</p>
<p>Sure, only if the framework is mature with several versions under its belt and its prohibits the productivity, maintainability and scalability of the application.</p>
<p>Isn't the right approach to software development to deliver a subset of the full feature set right the first time than try to deliver everything at once with massive issues that prevent the usability of the tool?</p>
<p>You decide...</p>
<p>Below are some useful references to get you going with Entity Framework.</p>
<p><a href="http://msdn.microsoft.com/en-us/magazine/cc700331.aspx" rel="nofollow" >Achieve Flexible Data Modeling With the Entity Framework</a><br />
<a href="http://msdn.microsoft.com/en-us/library/bb399572.aspx" rel="nofollow" >ADO.NET Entity Framework Pre-release documents</a><br />
<a href="http://www.codeplex.com/adonetsamples/Wiki/View.aspx?title=RunningEFBeta3Samples&amp;referringTitle=Home" rel="nofollow" >Microsoft ADO.NET Entity Framework Overview</a><br />
<a href="http://www.infoq.com/news/2008/06/entity-framework-heat" rel="nofollow" >ADO.NET Entity Framework Taking Some Heat</a><br />
<a href="http://www.code-magazine.com/Article.aspx?quickid=0712042" rel="nofollow" >Programming Against the ADO.NET Entity Framework</a><br />
<a href="http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/" rel="nofollow" >ADO .NET Entity Framework Vote of No Confidence</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2008/07/adonet-entity-framework/">ADO.NET Entity Framework</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/12/hibernate-gotch/' rel='bookmark' title='Permanent Link: Hibernate Gotcha: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!'>Hibernate Gotcha: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!</a></li><li><a href='http://www.pathf.com/blogs/2008/03/net-35-rem/' rel='bookmark' title='Permanent Link: .NET 3.5 Linq to Sql and IBatis.NET'>.NET 3.5 Linq to Sql and IBatis.NET</a></li><li><a href='http://www.pathf.com/blogs/2006/09/thinwire/' rel='bookmark' title='Permanent Link: Framework Watch &#8211; ThinWire'>Framework Watch &#8211; ThinWire</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2008/07/adonet-entity-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 5.250 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-21 05:52:44 -->
