<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devlicio.us/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>Jak Charlton - Insane World : TDD, Architecture</title><link>http://devlicio.us/blogs/casey/archive/tags/TDD/Architecture/default.aspx</link><description>Tags: TDD, Architecture</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Oxite - An Example of How Not To Write MVC Applications</title><link>http://devlicio.us/blogs/casey/archive/2008/12/19/oxite-an-example-of-how-not-to-write-mvc-applications.aspx</link><pubDate>Fri, 19 Dec 2008 17:56:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:43458</guid><dc:creator>Jak Charlton</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/casey/rsscomments.aspx?PostID=43458</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/casey/commentapi.aspx?PostID=43458</wfw:comment><comments>http://devlicio.us/blogs/casey/archive/2008/12/19/oxite-an-example-of-how-not-to-write-mvc-applications.aspx#comments</comments><description>&lt;p&gt;You may have missed the release of Oxite recently, and some of the hype and comments around it. Having now seen some absolutely ludicrous comments on the web chiming in about how good it is, I feel compelled to write my own short appraisal. Lets start with some of the hype by the Oxite team about their application, as published on CodePlex:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.visitmix.com/Lab/oxite"&gt;Oxite&lt;/a&gt; is an open source, standards compliant, and highly extensible content management platform that can run anything from blogs to big web sites.&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;&lt;strong style="FONT-WEIGHT:bold;FONT-STYLE:normal;"&gt;We heart you so much, that we thought of everything.&lt;/strong&gt; Oxite was developed carefully and painstakingly to be a great blog sample, or a starting point for your own web site project with CMS needs. Its line-up of sexy attributes includes: provider-based architecture allowing you to swap out database and search providers (SQL Server DB, local and Live search providers included), built for testability and hence most likely to be voted &amp;quot;hottest in class&amp;quot; by TDD fans (repositories, everything has an interface, etc.)&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;That is the honest opinion of the Oxite team of the application they have written ... &amp;quot;hottest in class&amp;quot; by TDD fans&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;Now come on!!!! Firstly, to be admired by TDD fans it would have to have been developed using TDD, which clearly it wasn&amp;#39;t - it&amp;#39;s test coverage is pitiful, seriously pitiful.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;But even forgetting picking on specifc ridiculous statements, it only takes 10 or 15 minutes of digging through the source to realise how poor this codebase is - really poor.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;Now this has sparked a large number of web responses - &lt;a class="" href="http://blog.wekeroad.com/blog/some-thoughts-on-oxite/"&gt;one of the first was Rob Conery&lt;/a&gt;. Rob is a good guy, a very talented developer, and with his &lt;a class="" href="http://blog.wekeroad.com/mvc-storefront/"&gt;MVC Storefront&lt;/a&gt; application he has provided a very good example app for ASP.NET MVC. He took on Storefront&amp;nbsp; as a learning excercise, and although he has had some problems, and has changed things a few times, overall the app is pretty damn good. Rob is pretty restrained in his comments, understandabl as that is the kind of guy he is, and this was an application from his own company, Microsoft. Although not officially endorsed by MS, anything they release will obviously be held up as an example to others of &amp;quot;the right way&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;This mild rebuttle was &lt;a class="" href="http://codebetter.com/blogs/karlseguin/"&gt;followed by Karl Seguin&lt;/a&gt;, who was far less restrained in his comments, with good cause. And that&amp;#39;s where the furor began. For some peculiar reason, many people popped up out of the woodwork to say how good Oxite was, how it was really good of MS to release it, and about how they were going off to start writing other sites like it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;Then another peculiar thing, &lt;a class="" href="http://blog.wekeroad.com/blog/oxite-refactor-take-1/"&gt;Rob Conery decided to refactor the application&lt;/a&gt; to try and make it half decent - he also commented that people who said negative things about Oxite were making his job harder in getting the Oxite team to sort the mess out.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;&lt;a class="" href="http://www.lostechies.com/blogs/chad_myers/archive/2008/12/15/my-quick-take-on-oxite.aspx"&gt;Chad Myers commented, and tried to be restrained in his remarks&lt;/a&gt; - but never the less, his conclusion was less than complementary about Oxite.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;&lt;a class="" href="http://www.hanselman.com/blog/ASPNETMVCSamplesOxiteAndCommunity.aspx"&gt;Scott Hanselman then decided to chime in&lt;/a&gt;, and fairly predictably so as a MS employee, urged restraint in critisism. Scott has always been the diplomat, and his post was definitely down the middle of the road.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;But Scott was missing the point, Oxite was not only shockingly poor, but was being promoted as a some wonder application, highly testable, &amp;quot;hottest in class&amp;quot; by TDD fans ... ultimately the puff on the CodePlex site was making this out to be &amp;quot;the right way&amp;quot; to do ASP.NET MVC. &lt;a class="" href="http://ayende.com/Blog/archive/2008/12/19/oxite-open-exchangable-informative-troubled-engine.aspx"&gt;Oren decided his commentary would be on the PR blunder this had been&lt;/a&gt;, and specifically about Scott&amp;#39;s comments, which he felt were less than appropriate.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;Fast forward to today, when I was directed to a blog post via Twitter - in which &lt;a class="" href="http://blogs.msdn.com/nigel/archive/2008/12/10/oxite.aspx"&gt;Nigel Parker had swallowed the blue pill and repeated the ludicrous puff stuff from the Oxite team&lt;/a&gt;. (this link now appears to have been removed from Nigel&amp;#39;s blog). More suprisingly he then went on to say how good this was, and how it as just what the development community needed. This prompted more than a few raised eyebrows - though clearly the post was written before Nigel had downloaded the code or read it - I can only hope he has now done so, and has come to the same conclusion that most of the developers I respect have done - Oxite is poor beyond belief.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;I got narked enough to write this because I am stunned at ho many people thnk the Oxite application is &amp;quot;good&amp;quot;, to be honest I am stunned by any developer who thinks it is of release quality, let alone to be released by Microsoft as an example application. Many many newcomers to ASP.NET MVC (an MVC in general) are going to pick this application up and copy it - consciously or subconsciously - and then we have the next generation of spaghetti mess that MVC is designed to eliminate.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;And then these newcomers will find their MVC projects as f***ed up as the Webforms projects, and blame MVC, blame TDD, and generally blame anything but their own actions. And in this they would have some element of being in the right - if Microsoft employees release an example application, that in any way bears the Microsoft name - they have a responsibility to get it right.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;And to round this off, &lt;a class="" href="http://codebetter.com/blogs/glenn.block/archive/2008/12/19/on-oxite.aspx"&gt;Glenn Block posted the perfect response to Oxite&lt;/a&gt; - a piece of honesty and openess that elevates him even further in my estimation. The situation is summed up perfectly with:&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;&lt;font color="#000000"&gt;There is no excuse for this. There are tons of folks both internal to Microsoft or external that can help people who want to learn good practices for developing software. The fact that the MVC team was not even consulted by the Oxite guys is literally stunning. Not to mention all the other folks we have internally like patterns &amp;amp; practices, folks in our evangelism team, and TDD and Agile email discussion groups which have hundreds of folks. I really wish the &amp;quot;Look what we can do&amp;quot; mentality would become a thing of the past. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;&lt;font color="#000000"&gt;Hallelujah, somebody gets it!&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:14px;COLOR:#262626;LINE-HEIGHT:21px;FONT-FAMILY:&amp;#39;Lucida Sans&amp;#39;;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=43458" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/casey/archive/tags/TDD/default.aspx">TDD</category><category domain="http://devlicio.us/blogs/casey/archive/tags/.NET/default.aspx">.NET</category><category domain="http://devlicio.us/blogs/casey/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://devlicio.us/blogs/casey/archive/tags/Oxite/default.aspx">Oxite</category></item><item><title>Is Alt.net Duplicitous?</title><link>http://devlicio.us/blogs/casey/archive/2008/05/21/is-alt-net-duplicitous.aspx</link><pubDate>Wed, 21 May 2008 09:54:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:40674</guid><dc:creator>Jak Charlton</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/casey/rsscomments.aspx?PostID=40674</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/casey/commentapi.aspx?PostID=40674</wfw:comment><comments>http://devlicio.us/blogs/casey/archive/2008/05/21/is-alt-net-duplicitous.aspx#comments</comments><description>&lt;p&gt;&lt;a class="" href="http://weblogs.asp.net/rosherove/"&gt;Roy&lt;/a&gt; makes a &lt;a class="" href="http://weblogs.asp.net/rosherove/archive/2008/05/19/two-faced-commits-how-the-alt-net-community-is-becoming-more-and-more-dogmatic.aspx"&gt;number of&amp;nbsp;accusations&lt;/a&gt; about the Alt.net community, particularly centred around their espoused ideals clashing with their comments and blogs. I respect Roy greatly, his blog was one of my first real sources for great TDD information, and he has consitently put out great blog posts and software. Largely his complaints come down to TypeMock (who he now works for)&amp;nbsp;not getting an overly warm welcome by many people in the Alt.net world. &lt;/p&gt;
&lt;p&gt;I don&amp;#39;t for one second question Roy&amp;#39;s sincerity, he really has shifted his view on how testing and mocking should work, for what he sees as all the right reasons, and now he seeks to convert others to the same cause.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m not what you might call a &amp;quot;paid up member&amp;quot; of the Alt.net movement, my blog address appears on altnetpedia.com, I frequent the Alt.net mailing list, but I have never attended one of the conferences, nor do I put the Alt.net logo on my site. I read a few dozen blogs, probably&amp;nbsp;a third&amp;nbsp;would be classed as Alt.net people, most would not be.&amp;nbsp;I guess I have a foot in Alt.net but dance with the devil.&lt;/p&gt;
&lt;p&gt;I am however one of the people that has commented a number of times on TypeMock and its suitability as a mocking framework (for my needs), and Roy&amp;#39;s obvious frustration comes down largely to his perception that people are bashing TypeMock unfairly, or out of dogma, and not seeing his vision for a better way to write software that TypeMock can help with.&lt;/p&gt;
&lt;p&gt;That is perhaps the case with some people. TypeMock has some fervent supporters, and there are some people that think TypeMock encourages bad practices and should be avoided - software for some reason is one of those things people become almost religious about. I suspect that most people, myself included, are somewhere in the middle.&lt;/p&gt;
&lt;p&gt;TypeMock is to me largely irrelevant. It has some plus sides (debugger support, mocking legacy and framework classes easily), and it has some down sides (it makes it &amp;quot;ok&amp;quot; to couple your code, or to use concretions over abstractions)&lt;/p&gt;
&lt;p&gt;But mostly I just cannot see the point of TypeMock as it exists. It is, if you exclude the plus and minus points I just listed for a moment, basically the same as Moq or Rhino Mocks. It does more or less the same things, in more or less the same way, except both of those options are free, and TypeMock is one of the most costly development tools you could own.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m certainly not against commercial software, I own personal licences for all the software I use on a daily basis, but those products I choose to purchase are the best in their class, or solve a particular problem I face. &lt;a class="" href="http://devlicio.us/blogs/casey/archive/2008/05/01/typemock-powerful-but-needed.aspx"&gt;I also weigh up the cost to value benefit.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The best comparison would be against unit testing frameworks, which are all to the best of my knowledge open source. There are commercial tools which make them easier to use, but there is no need for a commercial unit testing framework, as they are at least 95% feature complete. &lt;/p&gt;
&lt;p&gt;The same could be said of mocking frameworks, Rhino and Moq are at least 95% feature complete, and pretty much (in all day to day ways) the same as TypeMock. There is for me, no one &amp;quot;killer feature&amp;quot; that TypeMock has that justifies it&amp;#39;s price or putting&amp;nbsp;a dependency upon it within a code base.&lt;/p&gt;
&lt;p&gt;So is Alt.Net guilty of the duplicitous charge that Roy has made?&lt;/p&gt;
&lt;p&gt;Expecting all people who frequent the Alt.net world to be constantly flicking between technology and tool choices is not going to hold water. A typical software project may last weeks, months and possibly years. You cannot switch and change that frequently, you have to make choices and go with them. That doesn&amp;#39;t stop Alt.Net people wanting to become aware of more options, but it also means that new options have to get compared to existing options, and even when a better option comes along, it is frequently not going to be used because of historical reasons. People still have their favourites, they still have their personal biases, and they still consider themselves as capable individuals who can evaluate these things.&lt;/p&gt;
&lt;p&gt;I honestly don&amp;#39;t think TypeMock in it&amp;#39;s current form is that revolutionary that we should be sitting up and rushing to use it. The few new things it brings to the mocking party are different, not much better or that much worse. So picking the right tool for the job, means most of the time I prefer to write a wrapper or abstraction (a few wasted minutes) as opposed to changing an entire mocking strategy, all for the sake of a shinier toy. Others make take another approach. When I encounter a real world scenario where I need the power that TypeMock has, I&amp;#39;ll re-evaluate.&lt;/p&gt;
&lt;p&gt;Sometimes, the newer tool isn&amp;#39;t the right tool for the job.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=40674" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/casey/archive/tags/Practices+and+Principles/default.aspx">Practices and Principles</category><category domain="http://devlicio.us/blogs/casey/archive/tags/TDD/default.aspx">TDD</category><category domain="http://devlicio.us/blogs/casey/archive/tags/Mocking/default.aspx">Mocking</category><category domain="http://devlicio.us/blogs/casey/archive/tags/Rants/default.aspx">Rants</category><category domain="http://devlicio.us/blogs/casey/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://devlicio.us/blogs/casey/archive/tags/Featured/default.aspx">Featured</category></item></channel></rss>