<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://agile.codebetter.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Karl Seguin - All Comments</title><link>http://agile.codebetter.com/blogs/karlseguin/default.aspx</link><description>.NET From Ottawa, Ontario - http://twitter.com/karlseguin/</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>re: Get SOLID: Single Responsibility Principle</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/05/get-solid-single-responsibility-principle.aspx#186951</link><pubDate>Mon, 05 Jan 2009 12:42:48 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186951</guid><dc:creator>Colin Jack</dc:creator><description>&lt;p&gt;&amp;quot;SRP states that a class should have one and only one responsibility.&amp;quot;&lt;/p&gt;
&lt;p&gt;I think the better definition, and the one I've read, is reason for change. Responsibility is way too vague for my liking.&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186951" width="1" height="1"&gt;</description></item><item><title>re: new Repository&lt;T&gt;().DoMagic()</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/22/new-repository-lt-t-gt-domagic.aspx#186950</link><pubDate>Mon, 05 Jan 2009 12:41:16 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186950</guid><dc:creator>Remi Despres-Smyth</dc:creator><description>&lt;p&gt;Karl: Thanks for your thoughts - I really enjoyed the article.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Remi.&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186950" width="1" height="1"&gt;</description></item><item><title>re: Get SOLID: Single Responsibility Principle</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/05/get-solid-single-responsibility-principle.aspx#186932</link><pubDate>Mon, 05 Jan 2009 04:43:02 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186932</guid><dc:creator>Dave Schinkel</dc:creator><description>&lt;p&gt;&amp;gt;&amp;gt;&amp;gt;Well, I have a further problem with the semantics of this... what is a purpose? &amp;nbsp;I can easily state a class' 'purpose' as been anything at any level of detail or abstract. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;start with commenting your class to give it a purpose. &amp;nbsp;When a developer looks at a class, it's purpose should be commented on at the top as a FIRST step for one thing&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186932" width="1" height="1"&gt;</description></item><item><title>#.think.in infoDose #14 (22nd Dec - 2nd Jan)</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/29/compressing-js-files-as-part-of-your-build-process.aspx#186919</link><pubDate>Sun, 04 Jan 2009 21:49:03 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186919</guid><dc:creator>#.think.in</dc:creator><description>&lt;p&gt;#.think.in infoDose #14 (22nd Dec - 2nd Jan)&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186919" width="1" height="1"&gt;</description></item><item><title>re: new Repository&lt;T&gt;().DoMagic()</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/22/new-repository-lt-t-gt-domagic.aspx#186899</link><pubDate>Sun, 04 Jan 2009 03:36:21 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186899</guid><dc:creator>karl</dc:creator><description>&lt;p&gt;Remi:&lt;/p&gt;
&lt;p&gt;I think your approach is better for larger systems - I happened to be working on something with only a few domain objects so that's the mindset I was in.&lt;/p&gt;
&lt;p&gt;Keeping references to repositories within domain entities can cause all sorts of nasty bugs to creep up - largely causes by caching and such. I can't remember the details, but I remember spending a few days tracking down an obscure bug which ended up being caused by entities holding on to references to stale repositories. I think it's simply to simply use a DI framework and ask for the repository whenever its needed. This works well in .NET since the scope of a unit of work is generally tied to an individual request (it's why the Session-per-request model for Nhibernate works so well too). Not sure how I'd go about doing it for non-web apps though.&lt;/p&gt;
&lt;p&gt;Karl&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186899" width="1" height="1"&gt;</description></item><item><title>re: new Repository&lt;T&gt;().DoMagic()</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/22/new-repository-lt-t-gt-domagic.aspx#186898</link><pubDate>Sun, 04 Jan 2009 03:36:20 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186898</guid><dc:creator>karl</dc:creator><description>&lt;p&gt;Remi:&lt;/p&gt;
&lt;p&gt;I think your approach is better for larger systems - I happened to be working on something with only a few domain objects so that's the mindset I was in.&lt;/p&gt;
&lt;p&gt;Keeping references to repositories within domain entities can cause all sorts of nasty bugs to creep up - largely causes by caching and such. I can't remember the details, but I remember spending a few days tracking down an obscure bug which ended up being caused by entities holding on to references to stale repositories. I think it's simply to simply use a DI framework and ask for the repository whenever its needed. This works well in .NET since the scope of a unit of work is generally tied to an individual request (it's why the Session-per-request model for Nhibernate works so well too). Not sure how I'd go about doing it for non-web apps though.&lt;/p&gt;
&lt;p&gt;Karl&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186898" width="1" height="1"&gt;</description></item><item><title>Compressing JS files as part of your build process</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/29/compressing-js-files-as-part-of-your-build-process.aspx#186894</link><pubDate>Sun, 04 Jan 2009 00:19:38 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186894</guid><dc:creator>DotNetShoutout</dc:creator><description>&lt;p&gt;Thank you for submitting this cool story - Trackback from DotNetShoutout&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186894" width="1" height="1"&gt;</description></item><item><title>Compressing JS files as part of your build process</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/29/compressing-js-files-as-part-of-your-build-process.aspx#186893</link><pubDate>Sun, 04 Jan 2009 00:19:14 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186893</guid><dc:creator>DotNetShoutout</dc:creator><description>&lt;p&gt;Thank you for submitting this cool story - Trackback from DotNetShoutout&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186893" width="1" height="1"&gt;</description></item><item><title>re: new Repository&lt;T&gt;().DoMagic()</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/22/new-repository-lt-t-gt-domagic.aspx#186890</link><pubDate>Sat, 03 Jan 2009 17:07:51 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186890</guid><dc:creator>Remi Despres-Smyth</dc:creator><description>&lt;p&gt;Karl, I notice that your repository contains an instance of the domain class it represents. &amp;nbsp;In my case, when I've used repositories - even generic ones - I've typically set them up using a repository instance per domain aggregate class (passing the instance in by param), and not a repository per domain aggregate instance (which I believe is the implication here).&lt;/p&gt;
&lt;p&gt;I would be interested in hearing your thoughts on the advantages in your approach.&lt;/p&gt;
&lt;p&gt;Also, how does the repository get called for a loaded aggregate instance? &amp;nbsp;Who keeps a reference to the repository?&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Remi.&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186890" width="1" height="1"&gt;</description></item><item><title>re: new Repository&lt;T&gt;().DoMagic()</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/22/new-repository-lt-t-gt-domagic.aspx#186889</link><pubDate>Sat, 03 Jan 2009 17:07:35 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186889</guid><dc:creator>Remi Despres-Smyth</dc:creator><description>&lt;p&gt;Karl, I notice that your repository contains an instance of the domain class it represents. &amp;nbsp;In my case, when I've used repositories - even generic ones - I've typically set them up using a repository instance per domain aggregate class, and not a repository per domain aggregate instance (which I believe is the implication here).&lt;/p&gt;
&lt;p&gt;I would be interested in hearing your thoughts on the advantages in your approach.&lt;/p&gt;
&lt;p&gt;Also, how does the repository get called for a loaded aggregate instance? &amp;nbsp;Who keeps a reference to the repository?&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Remi.&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186889" width="1" height="1"&gt;</description></item><item><title>re: HttpHandlers – Learn Them. Use Them.</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2006/05/24/145397.aspx#186883</link><pubDate>Fri, 02 Jan 2009 22:52:28 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186883</guid><dc:creator>DevMan</dc:creator><description>&lt;p&gt;Still pretty foggy on the advantages and uses of an http handler.&lt;/p&gt;
&lt;p&gt;I'd say this article falls into the &amp;quot;bad tech writers are squarely to blame&amp;quot; catagorie.&lt;/p&gt;
&lt;p&gt;You've jumped from hello world to proprietary binary serialization.&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186883" width="1" height="1"&gt;</description></item><item><title>Visual Studio Links #94</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/29/compressing-js-files-as-part-of-your-build-process.aspx#186817</link><pubDate>Wed, 31 Dec 2008 17:41:38 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186817</guid><dc:creator>Visual Studio Hacks</dc:creator><description>&lt;p&gt;My latest in a series of the weekly, or more often, summary of interesting links I come across related to Visual Studio. New in Visual Studio Gallery: Delphi Prism - Delphi programming for .NET in Visual Studio. The Web Developer Tools Team posted an&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186817" width="1" height="1"&gt;</description></item><item><title>re: Compressing JS files as part of your build process</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/29/compressing-js-files-as-part-of-your-build-process.aspx#186815</link><pubDate>Wed, 31 Dec 2008 15:25:33 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186815</guid><dc:creator>Timothy</dc:creator><description>&lt;p&gt;I'm not much of a fan of JQuery (MooTools all the way! Or at least Prototype...). But, yea, YUICompressor should be used in every project.&lt;/p&gt;
&lt;p&gt;In fact, everyone should get the YSlow extension for Firebug to see what can be done to improve performance.&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186815" width="1" height="1"&gt;</description></item><item><title>re: Compressing JS files as part of your build process</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/29/compressing-js-files-as-part-of-your-build-process.aspx#186804</link><pubDate>Tue, 30 Dec 2008 23:36:36 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186804</guid><dc:creator>Peter Mounce</dc:creator><description>&lt;p&gt;Your Html.IncludeJs registers a single script-block per file? &amp;nbsp;You'll get significantly better performance (both in terms of number of requests going down, and in terms of compression efficiency) if you, in release mode, include one set of javascripts minified and globbed together into a single file. &amp;nbsp; See &lt;a rel="nofollow" target="_new" href="http://www.julienlecomte.net/blog/2007/08/13/"&gt;www.julienlecomte.net/.../13&lt;/a&gt; and compar your approach as now to a one-minified-file approach with Firebug/YSlow.&lt;/p&gt;
&lt;p&gt;You can do the one-minified-file approach by changing the helper to add the path to a set (as in, set-semantics list), and then (I'm coming from MonoRail, not MS-MVC) write out the script includes as an after-rendering filter - in debug mode, write out one include per file, linking against the debug copies; in release mode, write out a single include that links against the set of scripts, minified.&lt;/p&gt;
&lt;p&gt;Except you can't do that (well, you _can_, but... ;-) &amp;nbsp;) with a build-time task, because it would need to know all of the possible combinations of script-includes that your app uses. &amp;nbsp;I think in this case if you care enough to be compressing in the first place (ie, you need to scale / want responsive UI), you can probably eat the production-CPU-cycles and be better off doing this at run-time, not build-time.&lt;/p&gt;
&lt;p&gt;For interest, there is a most-of-the-way-there patch to MonoRail that creates a ViewComponent that does most of this - it lacks a debug-mode switch, currently. &amp;nbsp;You can see that at &lt;a rel="nofollow" target="_new" href="http://support.castleproject.org/projects/MR/issues/view/MR-ISSUE-457"&gt;support.castleproject.org/.../MR-ISSUE-457&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186804" width="1" height="1"&gt;</description></item><item><title>re: Compressing JS files as part of your build process</title><link>http://agile.codebetter.com/blogs/karlseguin/archive/2008/12/29/compressing-js-files-as-part-of-your-build-process.aspx#186800</link><pubDate>Tue, 30 Dec 2008 22:10:26 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:186800</guid><dc:creator>Brennan Stehling</dc:creator><description>&lt;p&gt;Have you seen Packer for .NET? &lt;/p&gt;
&lt;p&gt;It provides MSBuild tasks and can compress with Packer or JSMin modes. Recently I got a contribution of CSSMinify to the project so you can compress CSS as well now. You can either do it at build time or use the assembly to do it at runtime.&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.smallsharptools.com/Projects/Packer/"&gt;www.smallsharptools.com/.../Packer&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://agile.codebetter.com/aggbug.aspx?PostID=186800" width="1" height="1"&gt;</description></item></channel></rss>