<?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/"
	>

<channel>
	<title>Andy Douglas</title>
	<atom:link href="http://blogs.us.sogeti.com/andydouglas/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.us.sogeti.com/andydouglas</link>
	<description>Musings on programming and software architecture</description>
	<pubDate>Tue, 04 May 2010 02:38:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Sogeti Academy Course: Software Development Best Practices</title>
		<link>http://blogs.us.sogeti.com/andydouglas/2010/05/03/sogeti-academy-course-software-development-best-practices/</link>
		<comments>http://blogs.us.sogeti.com/andydouglas/2010/05/03/sogeti-academy-course-software-development-best-practices/#comments</comments>
		<pubDate>Tue, 04 May 2010 02:38:24 +0000</pubDate>
		<dc:creator>Andrew Douglas</dc:creator>
		
		<category><![CDATA[Software Architecture]]></category>

		<category><![CDATA[software development best practices]]></category>

		<category><![CDATA[SOLID]]></category>

		<guid isPermaLink="false">http://blogs.us.sogeti.com/andydouglas/?p=34</guid>
		<description><![CDATA[On Tuesday, May 3rd, Bojan Simic and I will deliver our Sogeti Academy Course &#8220;Software Development Best Practices.&#8221;  It&#8217;s designed to provide a high-level look at some popular best practices while also diving down into details about how to implement these best practices.  The high-level topics are: Separation of Concerns, the Single Responsibility Principle, the Dependency [...]]]></description>
			<content:encoded><![CDATA[<p>On Tuesday, May 3rd, Bojan Simic and I will deliver our Sogeti Academy Course &#8220;Software Development Best Practices.&#8221;  It&#8217;s designed to provide a high-level look at some popular best practices while also diving down into details about how to implement these best practices.  The high-level topics are: Separation of Concerns, the Single Responsibility Principle, the Dependency Inversion Principle (and Dependency Injection), Object Relational Mappers, and richInternet application tips and tricks.  If you&#8217;d like to download the slides from the presentation, <a href="http://blogs.us.sogeti.com/andydouglas/files/2010/05/software-dev-best-practices.ppt">click here</a>.</p>
<p>The following is a list of resources that I used in my .Net-related examples.  (Bojan&#8217;s list of Java-related examples may be available at a later date.)</p>
<ul>
<li><a href="http://blog.wekeroad.com/mvc-storefront/mvc-storefront-part-1/" target="_blank">ASP.Net MVC Storefront (this is a super early version of ASP.Net MVC, but it demonstrates separation of concerns and SOLID OOP concepts)</a></li>
<li><a href="http://nerddinner.codeplex.com/" target="_blank">NerdDinner: ASP.Net MVC application (also demonstrates some separation of concerns and SOLID OOP concepts)</a></li>
<li><a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod" target="_blank">Uncle Bob&#8217;s SOLID patterns for OOD (object oriented design)</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/bb386876.aspx" target="_blank">Entity Framework 4.0 Getting Started Guide</a></li>
<li><a href="http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery" target="_blank">JQuery Getting Started Guide</a></li>
<li><a href="http://getfirebug.com/" target="_blank">Firebug (Firefox plug-in that provides awesome CSS and JavaScript debugging and much more)</a></li>
</ul>
<p>Thanks for those who attended and for those who read this post!  If you&#8217;d like to see any of the code examples, I&#8217;ll be happy to post them&#8230; just leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.us.sogeti.com/andydouglas/2010/05/03/sogeti-academy-course-software-development-best-practices/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Giving up on NHibernate</title>
		<link>http://blogs.us.sogeti.com/andydouglas/2010/04/26/giving-up-on-nhibernate/</link>
		<comments>http://blogs.us.sogeti.com/andydouglas/2010/04/26/giving-up-on-nhibernate/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 03:10:30 +0000</pubDate>
		<dc:creator>Andrew Douglas</dc:creator>
		
		<category><![CDATA[Software Architecture]]></category>

		<category><![CDATA[Entity Framework]]></category>

		<category><![CDATA[NHibernate]]></category>

		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://blogs.us.sogeti.com/andydouglas/?p=32</guid>
		<description><![CDATA[I&#8217;m currently wrapping up preparations for a &#8220;Sogeti Academy&#8221; course called &#8220;Software Development Best Practices.&#8221;  It occurred to me that it would be beneficial to our consultants if I (and co-facilitator Bojan Simic) spent some time covering data access strategies, and specifically popular .Net and Java-based ORM solutions.  The best .Net programmers that I know [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently wrapping up preparations for a &#8220;Sogeti Academy&#8221; course called &#8220;Software Development Best Practices.&#8221;  It occurred to me that it would be beneficial to our consultants if I (and co-facilitator Bojan Simic) spent some time covering data access strategies, and specifically popular .Net and Java-based ORM solutions.  The best .Net programmers that I know use NHibernate as their ORM of choice, so in taking the cue from these folks, I decided to give it a whirl.  After spending hours in study and working thoroughly and completely through the tutorials offered on both NHibernate and Fluent NHibernate, I was left confused and <span style="text-decoration: line-through;">flustered</span> angry.  *Warning* gratuitous venting follows&#8230;</p>
<p>First, I tried following the atrocious <a href="http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx" target="_blank">&#8220;Your first NHibernate based application&#8221; tutorial</a> on their official wiki site.  Atrocious is a strong word, but certainly applicable here.  The writer of this tutorial clearly did not follow his own tutorial to see if it was complete or skipping any steps, because I (along with lots of other people according to the comments) was completely unable to get the application working due to missing steps, and many assumptions being made about knowledge of the tool.  Very frustrating.  Not to be deterred, I decided to take a look at Fluent NHibernate as some very smart folks recommend delving straight into Fluent NHibernate (Fluent NHibernate is NHibernate minus all the xml-based mapping files).  Here again, I was left very unimpressed by the <a href="http://wiki.fluentnhibernate.org/Getting_started#Your_first_project" target="_blank">&#8220;Your first project&#8221; tutorial</a>.  After receiving cryptic run-time error messages due to an incomplete tutorial, and posting to stackoverflow.com for solutions, I finally got the application to work after a couple hours of screwing around.  This is simply unacceptable for a &#8220;your first application&#8221; type of tutorial, unless of course your goal is to drive people as far away from your tool as possible.  With a working application, I decided to take a look to see how hard it would be to get Linq to NHibernate working.  After about 30 minutes of looking around and no clear direction on how to approach Linq to NHibernate, I gave up.</p>
<p>With the release of the .Net Entity Framework 4.0, and an <a href="http://ayende.com/Blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx" target="_blank">admission that it&#8217;s a pretty good tool from Ayende</a> (well-known and well-respected developer), I&#8217;m scrapping NHibernate in favor of EF.  The Microsoft <a href="http://msdn.microsoft.com/en-us/library/bb399182.aspx" target="_blank">Quickstart guide</a> provides an easy-to-follow, and most important WORKING basic application in about 15-30 minutes of invested time.  It seems that Microsoft has closed the gap between EF and NHibernate substantially since the first version, so I&#8217;m going with what works.</p>
<p>I certainly have an open mind with programming in general as well as choosing specific tools, but I refuse to waste any more time on a technology that is so difficult to learn (or at least whose documentation is so deficient) that its most basic tutorials don&#8217;t work.  It frankly amazes me that NHibernate has any adoption at all given the ridiculously deficient state of their introductory documentation.  If someone can point me to documentation that is actually worth spending time on, I&#8217;ll be happy to take a look, but for now, I&#8217;m going with EF, and it will take a lot for me to look back.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.us.sogeti.com/andydouglas/2010/04/26/giving-up-on-nhibernate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to write better code / Intro to Agile</title>
		<link>http://blogs.us.sogeti.com/andydouglas/2010/02/16/how-to-write-better-code-intro-to-agile/</link>
		<comments>http://blogs.us.sogeti.com/andydouglas/2010/02/16/how-to-write-better-code-intro-to-agile/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 01:24:24 +0000</pubDate>
		<dc:creator>Andrew Douglas</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Patterns]]></category>

		<guid isPermaLink="false">http://blogs.us.sogeti.com/andydouglas/?p=27</guid>
		<description><![CDATA[The best programmers that I know are knowledgeable about agile (http://en.wikipedia.org/wiki/Agile_software_development) and practice one or more aspects of agile programming.  On Wednesday, 2/17/2010, I gave a short presentation to the Sogeti Cincinnati Microsoft Practice to provide an introduction to agile concepts, and to generally talk about how programmers can improve their programming skills.  I certainly [...]]]></description>
			<content:encoded><![CDATA[<p>The best programmers that I know are knowledgeable about agile (<a href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank">http://en.wikipedia.org/wiki/Agile_software_development</a>) and practice one or more aspects of agile programming.  On Wednesday, 2/17/2010, I gave a short presentation to the Sogeti Cincinnati Microsoft Practice to provide an introduction to agile concepts, and to generally talk about how programmers can improve their programming skills.  I certainly don&#8217;t claim to be an expert in agile methodologies.  I have become aware of agile techniques primarily through great presentations by smart people who belong to the Cincinnati .Net User Group or who have presented there.  It seems to me that many people are unaware of the benefits that agile can bring to their skill set.  The more I learn about agile, the more I become passionate about the methodologies, techniques and tools, and the more frustrated I become with anti-patterns and being anti-agile.  Here&#8217;s to the programmers with genuine interest in improving their skills and thanks to those who have shared their knowledge with me and made me aware of agile.</p>
<p><a href="http://blogs.us.sogeti.com/andydouglas/files/2010/02/how-to-write-better-code.ppt">Slides from the presentation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.us.sogeti.com/andydouglas/2010/02/16/how-to-write-better-code-intro-to-agile/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Charting in Silverlight with Visifire Charts</title>
		<link>http://blogs.us.sogeti.com/andydouglas/2009/12/08/charting-in-silverlight-with-visifire-charts/</link>
		<comments>http://blogs.us.sogeti.com/andydouglas/2009/12/08/charting-in-silverlight-with-visifire-charts/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 01:53:11 +0000</pubDate>
		<dc:creator>Andrew Douglas</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Charting]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[Visifire]]></category>

		<guid isPermaLink="false">http://blogs.us.sogeti.com/andydouglas/?p=18</guid>
		<description><![CDATA[Currently (12-8-09) there are only a couple free options for creating custom charting solutions in Silverlight / WCF.  One is to utilize Microsoft&#8217;s new Silverlight 3 Toolkit (http://www.codeplex.com/Silverlight) and the other is Visifire Charts (http://www.visifire.com/).  At this point in time, it seems to me that Visifire is clearly a more sophisticated solution in terms of [...]]]></description>
			<content:encoded><![CDATA[<p>Currently (12-8-09) there are only a couple free options for creating custom charting solutions in Silverlight / WCF.  One is to utilize Microsoft&#8217;s new Silverlight 3 Toolkit (<a href="http://www.codeplex.com/Silverlight">http://www.codeplex.com/Silverlight</a>) and the other is Visifire Charts (<a href="http://www.visifire.com/">http://www.visifire.com/</a>).  At this point in time, it seems to me that Visifire is clearly a more sophisticated solution in terms of look-and-feel as well as offering more chart types from which to choose.  Visifire is free under the terms of the Gnu Public License, but requires a commercial license if the GPL doesn&#8217;t apply.</p>
<p>Tomorrow, Wednesday, 12-9-09, I will deliver a mini-presentation to the Sogeti Microsoft Practice to demonstrate Visifire Charts.  I will explain the options of how to implement it, and show off my simple &#8220;VisifireWrapper&#8221; application.  VisifireWrapper (see the .zip attachment to this post) seeks to ease implementing Visifire Charts in cases where either static XML or dynamically-created Visifire-specific XML is too cumbersome or otherwise undesirable.  Note that in order to make use of VisifireWrapper, you&#8217;ll need to have Visual Studio 2008 and Silverlight 3 (and possibly other downloads available for free from Microsoft).</p>
<p>Click here for <a href="http://blogs.us.sogeti.com/andydouglas/files/2009/12/charting-in-silverlight.ppt">slides from the presentation</a> and the <a href="http://blogs.us.sogeti.com/andydouglas/files/2009/12/visifirewrapper.zip">VisifireWrapper application</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.us.sogeti.com/andydouglas/2009/12/08/charting-in-silverlight-with-visifire-charts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>System Architecture (Basics) - Resources</title>
		<link>http://blogs.us.sogeti.com/andydouglas/2009/07/24/system-architecture-basics-resources/</link>
		<comments>http://blogs.us.sogeti.com/andydouglas/2009/07/24/system-architecture-basics-resources/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 13:23:23 +0000</pubDate>
		<dc:creator>Andrew Douglas</dc:creator>
		
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://blogs.us.sogeti.com/andydouglas/?p=3</guid>
		<description><![CDATA[On Wednesday, September 9th, Dave Wanner and I delivered to the Cincinnati office a Sogeti Academy course called System Architecture (Basics).  The links below provide references to material presented as well as resources for further learning of the subject matter.
Slides and References

Slides from Presentation
(Reference) Security Architecture
(Reference) Security Architecture
&#8220;An Introduction to Software Architecture&#8221;, David Garlan and Mary [...]]]></description>
			<content:encoded><![CDATA[<p>On Wednesday, September 9th, Dave Wanner and I delivered to the Cincinnati office a Sogeti Academy course called System Architecture (Basics).  The links below provide references to material presented as well as resources for further learning of the subject matter.</p>
<p><strong>Slides and References</strong></p>
<ul>
<li><a href="http://blogs.us.sogeti.com/andydouglas/files/2009/07/cincinnati-unit-training-academy-system-architecture.zip">Slides from Presentation</a></li>
<li>(Reference) <a href="http://arctecgroup.net/pdf/ArctecSecurityArchitectureBlueprint.pdf" target="_blank">Security Architecture</a></li>
<li>(Reference) <a href="http://www.ffiec.gov/ffiecinfobase/booklets/information_security/information_security.pdf" target="_blank">Security Architecture</a></li>
<li><a href="http://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf" target="_blank">&#8220;An Introduction to Software Architecture&#8221;, David Garlan and Mary Shaw, January 1994</a></li>
<li><a href="http://www.bredemeyer.com/pdf_files/ArchitectureDefinition.PDF" target="_blank">“Software Architecture: Central Concerns, Key Decisions”, By Malan, Ruth and Dana Bredemeyer</a></li>
<li><a href="http://www.softwarepractice.org/" target="_blank">“A Software Architecture Primer”, By H. J. Reekie, R. J. McAdam</a>  (see courseware site)</li>
<li>&#8220;Enterprise, Business and IT Architecture and the Integrated Architecture Framework&#8221; (available to Sogeti employees on Connex by searching on IAF -&gt; Locate “Architecture and IAF Booklet.pdf” by Derrick Tussey (3/3/2009))</li>
</ul>
<p><strong>Instructional/Tutorial</strong></p>
<ul>
<li>(.Net) <a href="http://greggalipeau.wordpress.com/2008/04/04/choosing-a-ui-pattern-mvc-mvp-and-aspnet-mvc/" target="_blank">Choosing a UI Pattern (MVC, MVP, and ASP.Net MVC)</a></li>
<li>(.Net) <a href="http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx" target="_blank">Model View Presenter with ASP.Net</a></li>
<li>(.Net) <a href="http://www.asp.net/learn/mvc-videos/" target="_blank">ASP.Net MVC Videos</a></li>
<li>(.Net) <a href="http://msdn.microsoft.com/en-us/magazine/cc163982.aspx" target="_blank">Intro to test-driven development with NUnit and C#</a> </li>
<li>(.Net) <a href="http://cinnug.org/files/folders/cododn2009/entry1230.aspx" target="_blank">Enabling Test Driven Development with Dependency Injection and Mock Objects</a> (with source code)</li>
<li>(.Net) <a href="http://blog.jpboodhoo.com/ScreencastAppliedTestDrivenDevelopmentForWebApplicationsPart3.aspx" target="_blank">Video tutorial: test-driven development with NUnit, Rhino Mocks in ASP.Net C# with MVP UI pattern</a></li>
<li>(Java) <a href="http://www.slideshare.net/Skud/test-driven-development-tutorial" target="_blank">Slides on the benefits of test-driven-development</a></li>
<li>(Java) <a href="http://www.youtube.com/watch?v=pWGf-tly_JY" target="_blank">Video: Test-driven development with Java and JUnit</a></li>
<li>(Java) <a href="http://agilesoftwaredevelopment.com/videos/test-driven-development-basic-tutorial" target="_blank">Video: Test-driven development with Java and JNunit</a></li>
</ul>
<p><strong>Real Live Source Code (Projects that illustrate the concepts from the class)</strong></p>
<ul>
<li>(.Net) <a href="http://nerddinner.codeplex.com/" target="_blank">NerdDinner</a> (ASP.Net MVC in C# with MS Test)</li>
<li>(.Net) <a href="http://cinnug.org/files/folders/cododn2009/entry1224.aspx" target="_blank">Creating Applications using the Model-View-ViewModel Pattern</a> (slides and source code [WPF in C#])</li>
<li>(.Net) <a href="http://blog.jpboodhoo.com/ScreencastAppliedTestDrivenDevelopmentForWebApplicationsPart3.aspx" target="_blank">Model-View-Presenter in ASP.Net</a> (WebForms, not ASP.Net MVC) with C# and Rhino Mocks</li>
<li>(.Net) Model-View-Presenter in C# Windows Forms with NUnit and Moq: (link will be forthcoming):</li>
</ul>
<p><strong>Unit Testing Frameworks</strong></p>
<ul>
<li>(.Net) NUnit: <a href="http://www.nunit.org">http://www.nunit.org</a></li>
<li>(.Net) MbUnit: <a href="http://www.mbunit.com/">http://www.mbunit.com/</a></li>
<li>(.Net) Moq: <a href="http://code.google.com/p/moq/">http://code.google.com/p/moq/</a></li>
<li>(.Net) Rhino Mocks: <a href="http://ayende.com/projects/rhino-mocks.aspx">http://ayende.com/projects/rhino-mocks.aspx</a></li>
<li>(Java) JUnit: <a href="http://junit.sourceforge.net/">http://junit.sourceforge.net/</a></li>
<li>(Java) JMock: <a href="http://www.jmock.org/">http://www.jmock.org/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.us.sogeti.com/andydouglas/2009/07/24/system-architecture-basics-resources/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
