<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Brendan Kowitz's .NET Blog</title>
        <link>http://kowitz.net/Default.aspx</link>
        <description>Over The Code</description>
        <language>en-AU</language>
        <copyright>Brendan Kowitz</copyright>
        <managingEditor>brendan@kowitz.net</managingEditor>
        <generator>Subtext Version 2.0.0.43</generator>
        <image>
            <title>Brendan Kowitz's .NET Blog</title>
            <url>http://kowitz.net/images/RSS2Image.gif</url>
            <link>http://kowitz.net/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/OverTheCode" type="application/rss+xml" /><item>
            <title>Macbook Multi-touch Trackpad Driver update causes Blue Screen of Death</title>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/499085587/macbook-multi-touch-trackpad-driver-update-causes-blue-screen-of-death.aspx</link>
            <description>&lt;p&gt;As happy as I was the other day that &lt;a href="http://www.kowitz.net/archive/2008/12/28/macbook-multi-touch-trackpad-driver-update.aspx"&gt;Apple has released an update&lt;/a&gt; for their windows trackpad driver, I've been getting plagued by BSODs caused by "&lt;em&gt;applemtp&lt;/em&gt;.sys". I think I've narrowed the cause down to multi-touch operations (using 2 fingers at once), however here is a work-around...well, working for me so far..&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.kowitz.net/images/www_kowitz_net/WindowsLiveWriter/MacbookMultitouchTrackpadDriverupdatecau_A812/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="300" alt="image" src="http://www.kowitz.net/images/www_kowitz_net/WindowsLiveWriter/MacbookMultitouchTrackpadDriverupdatecau_A812/image_thumb.png" width="440" align="left" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Workaround:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;As I've read on some of the support forums after the update there are now 2 mouse interface devices installed, after Disabling the "Apple Multitouch Mouse" I've not come across another BSOD.&lt;/p&gt; &lt;p&gt;Although I'm not sure yet, perhaps the other interface device is one left over from the previous mouse driver, or its an erroneous ugly twin from the new mouse driver. In either case Apple will need to fix their installer to remove it, or fix driver itself. Hopefully some more light is shed on this soon.&lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/94.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=7H4eky.O"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=7H4eky.O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=yTTsoC.o"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=yTTsoC.o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=2QpIM3.o"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=2QpIM3.o" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/499085587" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/12/31/macbook-multi-touch-trackpad-driver-update-causes-blue-screen-of-death.aspx</guid>
            <pubDate>Wed, 31 Dec 2008 01:57:18 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/94.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/12/31/macbook-multi-touch-trackpad-driver-update-causes-blue-screen-of-death.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/94.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/94.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/12/31/macbook-multi-touch-trackpad-driver-update-causes-blue-screen-of-death.aspx</feedburner:origLink></item>
        <item>
            <title>Macbook Multi-touch Trackpad Driver update</title>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/496606176/macbook-multi-touch-trackpad-driver-update.aspx</link>
            <description>&lt;p&gt;After recently updating to the latest aluminium macbook and loading back on Bootcamp with Windows Vista, it become very apparent that the existing drivers for the Trackpad are basically unusable. &lt;a href="http://discussions.apple.com"&gt;Apple's discussion forums&lt;/a&gt; where overflowing with threads complaining about poor compatibility, things such as even right-clicking or left-click-dragging becoming non-trivial. &lt;a href="http://www.kowitz.net/images/www_kowitz_net/WindowsLiveWriter/MacbookMultitouchTrackpadDriverupdate_7C2E/overview-hero20081014_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="128" alt="overview-hero20081014" src="http://www.kowitz.net/images/www_kowitz_net/WindowsLiveWriter/MacbookMultitouchTrackpadDriverupdate_7C2E/overview-hero20081014_thumb.jpg" width="244" align="left" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This year I've also taken a summer uni semester to try and finish the Masters finished a little quicker. Finally I have a compatible version of mac:Word and Endnote, so I've spent the entire time in OSX, WOW! The multi-touch trackpad under OSX is sooo freak'n smooth, it really redefines how laptop mice 'should' work. The simple gestures and movements make a wide variety of common desktop tasks seamless and easy, some of these things include, Scrolling, Activating Expose, Zooming, etc.&lt;/p&gt; &lt;p&gt;The new drivers for Windows Vista and XP do not have the same sheen as using the trackpad under OSX however, they will at least allow use of the trackpad to get you out of trouble. Huge improvement, thanks to Apple for listening to the noise.&lt;/p&gt; &lt;p&gt;If you use bootcamp and an aluminium Macbook definitely &lt;a href="http://support.apple.com/downloads/Multi_Touch_Trackpad_Update_for_Windows_XP___Vista"&gt;download&lt;/a&gt; them from the Apple site immediately.&lt;/p&gt; &lt;p&gt;EDIT: Please see the &lt;a href="http://www.kowitz.net/archive/2008/12/31/macbook-multi-touch-trackpad-driver-update-causes-blue-screen-of-death.aspx"&gt;next post&lt;/a&gt; if you experience blue screens from the update. &lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/93.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=Enc6O"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=Enc6O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=RLnQo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=RLnQo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=dhLqo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=dhLqo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/496606176" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/12/28/macbook-multi-touch-trackpad-driver-update.aspx</guid>
            <pubDate>Sat, 27 Dec 2008 23:15:02 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/93.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/12/28/macbook-multi-touch-trackpad-driver-update.aspx#feedback</comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/93.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/93.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/12/28/macbook-multi-touch-trackpad-driver-update.aspx</feedburner:origLink></item>
        <item>
            <title>ASP.NET + jQuery: What about PrototypeJS?</title>
            <category>ASP.NET</category>
            <category>Internet</category>
            <category>General</category>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/411110421/asp.net-jquery-what-about-prototypejs.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;Well done jQuery&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As everyone already knows, Microsoft has &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx"&gt;announced&lt;/a&gt; that &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; will ship in the future with Visual Studio. I think this really is a step forward and will definitely complement all the exciting new developments going on with ASP.NET including the enhancements with ASP.NET Ajax and ASP.NET 3.5 + SP1. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But...&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here’s what I would like to know: Why did Microsoft choose jQuery? The only explanation I can come up with is: Well..why not?&lt;/p&gt;
&lt;p&gt;&lt;img style="DISPLAY: inline; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px" align="right" alt="" src="http://www.kowitz.net/images/kowitz_net/prototypejs.png" /&gt;I have ported JavaScript from jQuery to PrototypeJS and visa-versa, even emulated functionality I’ve seen in one with the other. After a while, I ended up settling into &lt;a href="http://prototypejs.org/"&gt;PrototypeJS&lt;/a&gt;, why? Well, honestly it’s probably not because of PrototypeJS itself, but because of &lt;a href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt;. Going back 12 months or so, the animations and effects in script.aculo.us to me appeared a little smoother and seemed to have more browser compatibility then the jQuery of the time. &lt;/p&gt;
&lt;p&gt;I have recently been writing a client-side control extender using the ASP.NET Ajax libraries then using PrototypeJS+script.aculo.us to basically fill the gaps. And thus far these libraries are an exceptionally powerful and productive combination.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Battle tested&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lets also not forget that PrototypeJS + script.aculo.us are included as part of Ruby-on-rails, which basically means you can be assured that these JavaScript libraries have been deployed in a huge variety of websites in the Ruby community.&lt;/p&gt;
&lt;p&gt;Taking a look at the warm-fuzzy real world client list on &lt;a href="http://prototypejs.org/real-world"&gt;Prototype&lt;/a&gt;’s site and &lt;a href="http://docs.jquery.com/Sites_Using_jQuery"&gt;jQuery&lt;/a&gt;’s site, its obvious that both libraries are popular, there are a lot of big companies in each list, some are even listed in both. Funnily enough though Microsoft itself is listed only on the Prototype site.. :)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not really knowing where to get answers or reasons, I took a long shot and fired a &lt;a href="http://twitter.com/brendankowitz/statuses/941562974"&gt;tweet at Scott Hanselman&lt;/a&gt;…no pulse, but I didn’t expect anything. I’m just wanting to know what makes jQuery so special? It definitely has a better website then PrototypeJS. I’ve read forum comments that in some cases jQuery is only being used for it’s plugins, which are conveniently accessible from a link on the homepage. How many people even know that &lt;a href="http://scripteka.com/"&gt;Scripteka&lt;/a&gt; has a collection of downloadable plug-ins for prototype!? I agree that the guys over at Prototype should look at a website refresh and start pulling the community together a bit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The future&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;In any respect I feel this is a step forward for Microsoft actually accepting and using Open Source products for .net instead of &lt;a href="http://www.nunit.org/"&gt;replicating&lt;/a&gt; &lt;a href="http://nant.sourceforge.net/"&gt;them&lt;/a&gt;. And you never know, &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=369"&gt;shipping NHibernate with Sql Server&lt;/a&gt; would be to me, a whole new level of respekt.&lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/92.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=6iWgM"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=6iWgM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=mhtRm"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=mhtRm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=mRpWm"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=mRpWm" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/411110421" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/10/04/asp.net-jquery-what-about-prototypejs.aspx</guid>
            <pubDate>Sat, 04 Oct 2008 13:14:57 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/92.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/10/04/asp.net-jquery-what-about-prototypejs.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/92.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/92.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/10/04/asp.net-jquery-what-about-prototypejs.aspx</feedburner:origLink></item>
        <item>
            <title>What would NHibernate ICriteria look like in .net 3.5?</title>
            <category>.NET</category>
            <category>Code Snippets</category>
            <category>NHibernate</category>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/367042172/what-would-nhibernate-icriteria-look-like-in-.net-3.5.aspx</link>
            <description>&lt;p&gt;If NHibernate decided to ditch compatibility with plain old .net 2.0 and focus on 3.5 how would the ICriteria interface change? &lt;a href="http://www.kowitz.net/archive/2008/07/22/nhibernate-type-safety-using-lamba-expressions.aspx"&gt;Previously&lt;/a&gt; I was throwing around an idea of using a simple lambda expression to resolve the property name. Well, I couldn't help but build on this a little more. The following idea is not supposed to be LINQ, that would be far more complicated and LINQ is essentially its own interface, which is not the point. The point is, if ICriteria was written today in .net 3.5, what could it look like? How could it change?&lt;/p&gt;
&lt;p&gt;So just to recap, the original code sample looked like:&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;ICriteria c = session.CreateCriteria(typeof(Person));&lt;br /&gt;c.Add(Restrictions.Eq(Property.GetFor(() =&amp;gt; new Person().FirstName), "John"));&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://www.paulstovell.com/"&gt;Paul&lt;/a&gt; later come back and suggested I try using a slightly different signature so that the "Person" object doesn't need to be instantiated for no reason, this means the we can do this:&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;ICriteria c = session.CreateCriteria(typeof(Person));&lt;br /&gt;c.Add(Restrictions.Eq(Property.For&amp;lt;Person&amp;gt;(p =&amp;gt; p.FirstName), "John"));&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;I like this a lot more. So this is the point where I started playing around and wanted to try and implement a neater way of integrating this to add Criterion. First off I tried implementing ICriteria.Add(Restrictions.Eq()) as an expression which looked like:&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;ICriteria c = session.CreateCriteria(typeof(Person));&lt;br /&gt;c.Add(RestrictBy.Eq&amp;lt;Person&amp;gt;(p =&amp;gt; p.FirstName == "John" ));&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;That is where I got up to in the previous post. So after this I started implementing some of the other functions found on the 'Restrictions' class such as:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;.NotNull() &lt;/li&gt;
    &lt;li&gt;.IsNotNull() &lt;/li&gt;
    &lt;li&gt;.Not() &lt;/li&gt;
    &lt;li&gt;.Between() &lt;/li&gt;
    &lt;li&gt;.Gt() (Greater than) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then I realized all of the above functions are able to be figured out using the syntax I already had: 'p.FirstName == "John"', so how about p.FirstName != "John", or p.ID &amp;gt; 0 or p.FirstName != null, you get the idea. This being the case, now there is no need for the Restrictions class at all, nearly everything can be figured out by using Add(). The other problem I wanted to solve was not having to keep passing the generic &amp;lt;Person&amp;gt; class in all the time. So I created a class which wraps ICriteria and keeps track of these few things, so now it looks like:&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;ICriteria c = session.CreateExpression&amp;lt;Person&amp;gt;()&lt;br /&gt;     .Add(p =&amp;gt; p.FirstName == "John")&lt;br /&gt;     .Criteria;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Most of the other functions on the Restrictions class can be added the same way:&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;ICriteria c = session.CreateExpression&amp;lt;person&amp;gt;()&lt;br /&gt;      .Add(p =&amp;gt; p.FirstName == "John") //Restriction.Eq()&lt;br /&gt;      .Add(p =&amp;gt; p.LastName != null)    //Restriction.IsNotNull() &lt;br /&gt;      .Add(p =&amp;gt; p.ID &amp;gt; 0 &amp;amp;&amp;amp; p.ID &amp;lt; 1000) //Restriction.Between()&lt;br /&gt;      .Criteria;&lt;/pre&gt;
&lt;p&gt;There are also other more complex things that the ICriteria interface does such as adding Projections and Joins. So how would the old AddAlias() function work? Like this perhaps:&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;ICriteria c = session.CreateExpression&amp;lt;Person&amp;gt;()&lt;br /&gt;      .Alias&amp;lt;Address&amp;gt;(p =&amp;gt; p.Addresses, "addr")&lt;br /&gt;            .Add(a =&amp;gt; a.Postcode != null)&lt;br /&gt;            .AddAndReturn(a =&amp;gt; a.Address2 == null)&lt;br /&gt;      .Criteria;&lt;/pre&gt;
&lt;p&gt;Bringing it all together, here's a comparison between the old interface and the expressions version.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Current ICriteria:&lt;/strong&gt;&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;ICriteria o = session.CreateCriteria(typeof(Person))&lt;br /&gt;    .Add(Restrictions.Eq("FirstName", "John"))&lt;br /&gt;    .CreateAlias("Addresses", "addr")&lt;br /&gt;        .Add(Restrictions.IsNotNull("addr.Postcode"))&lt;br /&gt;        .Add(Restrictions.IsNull("addr.Address2"))&lt;br /&gt;    .AddOrder(Order.Asc("ID"));&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Same query using Expressions:&lt;/strong&gt;&lt;/p&gt;
&lt;pre name="code" class="c-sharp"&gt;ICriteria c = session.CreateExpression&amp;lt;Person&amp;gt;()&lt;br /&gt;    .Add(p =&amp;gt; p.FirstName == "John")&lt;br /&gt;    .Alias&amp;lt;Address&amp;gt;(p =&amp;gt; p.Addresses, "addr")&lt;br /&gt;        .Add(a =&amp;gt; a.Postcode != null)&lt;br /&gt;        .AddAndReturn(a =&amp;gt; a.Address2 == null)&lt;br /&gt;    .OrderAsc(p =&amp;gt; p.ID)&lt;br /&gt;    .Criteria;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;In conclusion, this is probably not going to revolutionize the global economy, but on some levels I think it feels a little more intuitive and a little more modern. In other respects, it's probably not much less typing then the original. Also with the up and coming linq provider, is this a waste of time? or does it complement it?&lt;/p&gt;
&lt;p&gt;Feel free to have a poke around the &lt;a href="http://code.google.com/p/systembusinessobjects/source/browse/trunk#trunk/System.BusinessObjects.Expressions"&gt;source&lt;/a&gt;, and corresponding &lt;a href="http://code.google.com/p/systembusinessobjects/source/browse/trunk/BusinessObject.Framework.Tests/RestrictionHelperTests.cs"&gt;tests&lt;/a&gt;&lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/90.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=YUwdO"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=YUwdO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=ZEnvo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=ZEnvo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=ZbA8o"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=ZbA8o" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/367042172" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/08/17/what-would-nhibernate-icriteria-look-like-in-.net-3.5.aspx</guid>
            <pubDate>Sun, 17 Aug 2008 05:12:29 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/90.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/08/17/what-would-nhibernate-icriteria-look-like-in-.net-3.5.aspx#feedback</comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/90.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/90.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/08/17/what-would-nhibernate-icriteria-look-like-in-.net-3.5.aspx</feedburner:origLink></item>
        <item>
            <title>Upgrading to subtext 2.0-fail</title>
            <category>General</category>
            <category>Errors and Bugs</category>
            <category>ASP.NET</category>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/365694175/upgrading-to-subtext-2.0-fail.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;It's been a long time in between &lt;a href="https://sourceforge.net/project/showfiles.php?group_id=137896"&gt;updates&lt;/a&gt; for &lt;a href="http://subtextproject.com/"&gt;subtext&lt;/a&gt;, but, has it actually been worth it? Well, kinda. Compared to the 1.9.5 release this one seems a little rough around the edges.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;If you're on a shared host WITHOUT full trust, beware! Things will break in multiple places, including:&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strike&gt;DTP.aspx (The homepage) (tag "st" undefined, needed to add back 'Register TagPrefix="st" Namespace="Subtext.Web.UI.WebControls"')&lt;/strike&gt; (My web.config merge error)&lt;/li&gt;
    &lt;li&gt;/admin/Posts/  (EnclosureMimetypes config section missing requirePermission="false" attribute) &lt;/li&gt;
    &lt;li&gt;/admin/Feedback/ ("FeedbackStatusFlag" undeclared, needed to prefix with the namespace) &lt;/li&gt;
    &lt;li&gt;Subtext.Framework.UrlManager.UrlReWriteHandlerFactory.GetHandlerForUrl(string url) also breaks from a security permission when calling UrlAuthorizationModule.CheckUrlAccessForPrincipal(), had to recompile Subtext.Framework to get around this. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; I don't mean to blast subtext, but I might as well lay a few more issues out there:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;The call to "&lt;font face="Arial"&gt;/Admin/Services/Ajax/AjaxServices.ashx?proxy" throws an "&lt;font face="Arial"&gt;Operation could destabilize the runtime" exception, haha I must say this is the first time I've seen that, fixed by generating the &lt;font face="Arial"&gt;AjaxServicesProxy.js file locally.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;In the Feedback admin area, when hovering the URL icon the "title" tag shows the email address. &lt;/li&gt;
    &lt;li&gt;Forgot to add this last night: Had to remove the OpenID stuff from the login page, errors with "Cannot be called from Untrusted assembly". &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The problems in this upgrade mostly appear to be stemming from carelessness regarding restrictions in medium trust. I guess the question is - "Is subtext venturing away from medium trust on purpose?"&lt;/p&gt;
&lt;p&gt;Looking to the future. From what I recall I don’t think it’s actually possible to run .net 3.5 applications without full trust, features such as anonymous types simply don’t work.&lt;br /&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;img src="http://kowitz.net/aggbug/89.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=YfL0O"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=YfL0O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=s8Jco"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=s8Jco" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=veRFo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=veRFo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/365694175" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/08/15/upgrading-to-subtext-2.0-fail.aspx</guid>
            <pubDate>Fri, 15 Aug 2008 13:55:40 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/89.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/08/15/upgrading-to-subtext-2.0-fail.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/89.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/89.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/08/15/upgrading-to-subtext-2.0-fail.aspx</feedburner:origLink></item>
        <item>
            <title>NHibernate Type Safety using Lambda Expressions</title>
            <category>.NET</category>
            <category>Code Snippets</category>
            <category>NHibernate</category>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/342002219/nhibernate-type-safety-using-lamba-expressions.aspx</link>
            <description>&lt;p&gt;I can't remember if this has been around before, I do vaguely remember seeing something like it. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;However, I just wanted to apply a snippet of code I found on &lt;a href="http://www.paulstovell.com/blog/strongly-typed-property-names"&gt;Paul's blog&lt;/a&gt; the other day to NHibernate. Of course we will definitely have type safety in queries when Linq-to-NHibernate is completed. But surely linq-to-nhibernate is not going to be the _only_ way of writing queries.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Using the original code snippet 'as is' would look something like this:&lt;/p&gt;
&lt;pre class="c-sharp" name="code"&gt;ICriteria c = session.CreateCriteria(typeof(Person));&lt;br /&gt;c.Add(Restrictions.Eq(Property.GetFor(() =&amp;gt; new Person().FirstName), "John"));&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;This is ok, but a little long winded, so I implemented another class called RestrictBy which can break down a simple lambda expression. So now I can use:&lt;br /&gt;
&lt;/p&gt;
&lt;pre class="c-sharp" name="code"&gt;ICriteria c = session.CreateCriteria(typeof(Person));&lt;br /&gt;c.Add(RestrictBy.Eq(() =&amp;gt; new Person().FirstName == "John"));&lt;br /&gt;c.UniqueResult();&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;This also means you'll get compile time errors for incompatible types such as:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Lamba expression error" src="http://www.kowitz.net/images/kowitz_net/nhibernate_lamba_type_error.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Using the lambda expression we get to evaluate the _actual_ property and that property's type. If you wanted to clean this up some more, its not hard to then go and add some extension methods to ICriteria to produce:&lt;/p&gt;
&lt;pre class="c-sharp" name="code"&gt;ICriteria c = session.CreateCriteria(typeof(Person));&lt;br /&gt;c.AddEq(() =&amp;gt; new Person().FirstName == "John");&lt;br /&gt;c.UniqueResult();&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;So that's it, a simple example at the moment, but it might be an option to look into a little more because the ICriteria interface is still NHibernate's native querying interface and still provides a lot of power, flexibility and programmatic building of queries.&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;Sourcecode:&lt;/h2&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://code.google.com/p/systembusinessobjects/source/browse/trunk/System.BusinessObjects.Framework/Helpers/RestrictBy.cs?r=79"&gt;RestrictBy.cs&lt;/a&gt; also a couple of unit tests &lt;a href="http://code.google.com/p/systembusinessobjects/source/browse/trunk/BusinessObject.Framework.Tests/RestrictionHelperTests.cs?r=79"&gt;here&lt;/a&gt;&lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.paulstovell.com/blog/strongly-typed-property-names"&gt;Paul's Property.GetFor()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-weight: bold;"&gt; EDIT: &lt;/span&gt;For further reading, see the &lt;a href="http://www.kowitz.net/archive/2008/08/17/what-would-nhibernate-icriteria-look-like-in-.net-3.5.aspx"&gt;follow up&lt;/a&gt; post.&lt;img src="http://kowitz.net/aggbug/88.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=JYyfO"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=JYyfO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=M7woo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=M7woo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=V5PLo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=V5PLo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/342002219" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/07/22/nhibernate-type-safety-using-lamba-expressions.aspx</guid>
            <pubDate>Mon, 21 Jul 2008 21:38:48 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/88.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/07/22/nhibernate-type-safety-using-lamba-expressions.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/88.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/88.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/07/22/nhibernate-type-safety-using-lamba-expressions.aspx</feedburner:origLink></item>
        <item>
            <title>How to Import Data From MindManager 7 Lite Into Project 2007</title>
            <category>General</category>
            <category>Product Reviews</category>
            <category>Project Management</category>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/337527333/howto-import-data-from-mindmanager-7-lite-into-project-2007.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.mindjet.com/"&gt;MindManager&lt;/a&gt; is a very slick product, it looks and feel like every other Office application. I've used this product for a few university project management assignments to create things such as work breakdown structures (WBS) as well as just general information organisation.&lt;/p&gt;
&lt;p&gt;The version I'm using is the Lite version (heaps cheaper) which still carries a lot of features but lacks the integration to other office products. It also lacks the additional information you are able to attribute to the topic nodes such as start, finish dates, time estimates and resources. Although these would also be nice to have from a project point of view, I guess I can live without doing it directly in MindManager as they sound a lot more like scheduling tasks to me. Which is where MS Project Integration would be awesome.&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/HowtoImportDataFromMindManager7LiteIntoP_6E84/image_2.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="406" alt="image" width="431" border="0" src="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/HowtoImportDataFromMindManager7LiteIntoP_6E84/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;To bridge this gap for the Lite version I've decided to write a plug-in for Microsoft Project to import the information directly out of MindManager.&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/HowtoImportDataFromMindManager7LiteIntoP_6E84/image_4.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="86" alt="image" width="596" border="0" src="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/HowtoImportDataFromMindManager7LiteIntoP_6E84/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Then viola, you can even use the relationship links between the nodes to create task predecessors automatically. As much as I've enjoyed using Mind Manager, re-entering this task information would be a real negative to actually using it productively. So you should be able to use this little plug-in if you're unsure you want to spend the additional $250US right away but still want some form of Project Integration. Oh and its only one way, no pushing information back.&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/HowtoImportDataFromMindManager7LiteIntoP_6E84/image_6.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="464" alt="image" width="483" border="0" src="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/HowtoImportDataFromMindManager7LiteIntoP_6E84/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The plug-in can be downloaded here, should work with both MindManager Lite and Pro. Of course, this is a free util, no warrenty or support.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Get the &lt;a href="http://www.kowitz.net/files/MindManagerLiteImporter.zip"&gt;Plugin&lt;/a&gt; or Browse the &lt;a href="http://code.google.com/p/overthecode/source/browse/#svn/trunk/MindManagerToProject/MindManagerImport"&gt;source code&lt;/a&gt;&lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/87.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=xJRvO"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=xJRvO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=p5Jgo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=p5Jgo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=8raDo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=8raDo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/337527333" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/07/17/howto-import-data-from-mindmanager-7-lite-into-project-2007.aspx</guid>
            <pubDate>Wed, 16 Jul 2008 21:52:31 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/87.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/07/17/howto-import-data-from-mindmanager-7-lite-into-project-2007.aspx#feedback</comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/87.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/87.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/07/17/howto-import-data-from-mindmanager-7-lite-into-project-2007.aspx</feedburner:origLink></item>
        <item>
            <title>NHibernate Compatible Shared Hosts</title>
            <category>General</category>
            <category>.NET</category>
            <category>Internet</category>
            <category>ASP.NET</category>
            <category>NHibernate</category>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/259639500/nhibernate-compatible-shared-hosts.aspx</link>
            <description>&lt;p&gt;NHibernate is a remarkable ORM, however with all the magic comes a few caveats, these being the difficulties running NHibernate apps in a shared hosting environment. I'm still convinced that it's entirely possible, so I've decided to start compiling a list of success and failures that others (and myself) have had in getting things working.&lt;/p&gt;
&lt;h2&gt;Compatible Shared Hosts&lt;/h2&gt;
&lt;table width="400" cellspacing="0" cellpadding="2" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="134" valign="top"&gt;&lt;strong&gt;Host Name&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="145" valign="top"&gt;&lt;strong&gt;Comment&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="119" valign="top"&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="134" valign="top"&gt;&lt;a href="http://www.webhost4life.com/" target="_blank"&gt;Webhost4life&lt;/a&gt; &lt;/td&gt;
            &lt;td width="157" valign="top"&gt;Reportedly works with "no hacks"&lt;/td&gt;
            &lt;td width="151" valign="top"&gt;[&lt;a href="http://www.gavaghan.org/blog/2007/08/21/nhibernate-in-a-medium-trust-environment/" target="_blank"&gt;ref&lt;/a&gt;]&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="vertical-align: top;"&gt;&lt;a href="http://www.discountasp.net/" target="_blank"&gt;DiscountAsp&lt;/a&gt;&lt;/td&gt;
            &lt;td style="vertical-align: top;"&gt;I think this should work with IIS7 / Win 2008&lt;/td&gt;
            &lt;td style="vertical-align: top;"&gt;[&lt;a href="http://kb.discountasp.net/article.aspx?id=10574"&gt;ref&lt;/a&gt;]&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="vertical-align: top;"&gt;&lt;a href="http://www.xhostsolutions.com/" target="_blank"&gt;XHostSolutions&lt;/a&gt;&lt;/td&gt;
            &lt;td style="vertical-align: top;"&gt;Simply email support and ask to have your application run as Full Trust&lt;br /&gt;
            &lt;/td&gt;
            &lt;td style="vertical-align: top;"&gt; This is the host I use.&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Shared Hosts known &lt;strong&gt;not&lt;/strong&gt; to work&lt;/h2&gt;
&lt;table width="400" cellspacing="0" cellpadding="2" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="132" valign="top"&gt;&lt;strong&gt;Host Name&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="133" valign="top"&gt;&lt;strong&gt;Comment&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="133" valign="top"&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="132" valign="top"&gt;&lt;a href="http://www.godaddy.com/" target="_blank"&gt;Godaddy&lt;/a&gt; &lt;/td&gt;
            &lt;td width="149" valign="top"&gt; &lt;/td&gt;
            &lt;td width="165" valign="top"&gt;[&lt;a href="http://forum.hibernate.org/viewtopic.php?t=980538&amp;amp;highlight=medium+trust" target="_blank"&gt;ref&lt;/a&gt;]&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="132" valign="top"&gt;&lt;a href="http://www.crystaltech.com/" target="_blank"&gt;Crystaltech&lt;/a&gt; &lt;/td&gt;
            &lt;td width="149" valign="top"&gt; &lt;/td&gt;
            &lt;td width="165" valign="top"&gt;
            &lt;p&gt;[&lt;a href="http://forum.castleproject.org/viewtopic.php?t=3104" target="_blank"&gt;ref&lt;/a&gt;]&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Untested / Unknown&lt;/h2&gt;
&lt;table width="400" cellspacing="0" cellpadding="2" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="133" valign="top"&gt;&lt;strong&gt;Host Name&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="133" valign="top"&gt;&lt;strong&gt;Comment&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="133" valign="top"&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="133" valign="top"&gt;&lt;a href="http://www.discountasp.net/" target="_blank"&gt;DiscountAsp&lt;/a&gt;&lt;/td&gt;
            &lt;td width="133" valign="top"&gt; &lt;/td&gt;
            &lt;td width="133" valign="top"&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Useful References / Alternate Ideas&lt;/h2&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://blechie.com/WPierce/archive/2008/02/17/Lazy-Loading-with-nHibernate-Under-Medium-Trust.aspx"&gt;Lazy Loading with nHibernate Under Medium Trust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://kowitz.net/aggbug/84.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=fwFpmJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=fwFpmJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=ZBuTLj"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=ZBuTLj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=6PYZ0j"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=6PYZ0j" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/259639500" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/03/28/nhibernate-compatible-shared-hosts.aspx</guid>
            <pubDate>Fri, 28 Mar 2008 13:21:04 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/84.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/03/28/nhibernate-compatible-shared-hosts.aspx#feedback</comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/84.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/84.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/03/28/nhibernate-compatible-shared-hosts.aspx</feedburner:origLink></item>
        <item>
            <title>Graffiti Cms by Telligent</title>
            <category>ASP.NET</category>
            <category>Product Reviews</category>
            <category>SEO.NET</category>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/238760926/graffiti-cms-by-telligent.aspx</link>
            <description>&lt;p&gt;There are a fair few CMS solutions floating around in .NET at the moment, a good general comparison tool can be found at &lt;a href="http://www.cmsmatrix.org/"&gt;CmsMatrix.org&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cuyahoga&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the past, the &lt;a target="_blank" href="http://www.cuyahoga-project.org/"&gt;Cuyahoga Website Framework&lt;/a&gt; has looked always fairly interesting, it is also built on &lt;a target="_blank" href="http://www.nhibernate.org/"&gt;NHibernate&lt;/a&gt; which to me is a plus. Most things I've done with NHibernate have generally "just worked", maybe it's because NHibernate development is pounded with unit tests, whatever it is, it works.&lt;/p&gt;
&lt;p&gt;I haven't had any experience developing any extensions for Cuyahoga, so I don't know exactly how extensible it is yet. In terms of usability, I did find the interface a little confusing at first. The admin section is only used to configure modules/pages..etc.. but to actually edit the content I needed to visit the actual page in admin mode and click edit module (DNN Style).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Graffiti&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://graffiticms.com"&gt;Graffiti CMS&lt;/a&gt; has only recently come to my attention. I remember only in the later half of last year reading about &lt;a target="_blank" href="http://telligent.com/"&gt;Telligent&lt;/a&gt; acquiring Dozing Dogs CMS and wondering at the time, what they were going to do with it, well, now days, there is no sign of Dozing Dogs. Instead, earlier this week Telligent released Graffiti CMS which appears to be completely new as a full version 1.0.&lt;/p&gt;
&lt;p&gt;Graffiti supports a variety of databases including VistaDB (default), MS Sql and MySql. Not only that, but they claim its mono-compatible, so it is able to be run on linux and other mono supported platforms.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test Run of Graffiti&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Setup was really simple, xcopy, run. With not much more thought then that, your away. &lt;/p&gt;
&lt;p&gt;The dashboard of Graffiti looks fantastic. I've always been a fan of having an area dedicated to admin tasks, as opposed to having admin controls stuffed into a site's design, as done by DNN. The only thing that wasn't obvious in Graffiti is the fact that there are no "pages". All content appears to be considered a "post". The "posts" are configurable in a way that is easy to set them up in a blog style behavior, or leave them detached, essentially making them pages.&lt;/p&gt;
&lt;p&gt;Some of the highlights that stood out to me immediately&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Seems to use NVelocity templates to render out HTML, meaning it's lean and clean &lt;/li&gt;
    &lt;li&gt;Supports a programmable API -- MetaWeblog &lt;/li&gt;
    &lt;li&gt;Supports its own extensibility though Widgets &lt;/li&gt;
    &lt;li&gt;Widgets can be installed in literally 2 clicks &lt;/li&gt;
    &lt;li&gt;Admin dashboard is slick &lt;/li&gt;
    &lt;li&gt;Free express version &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Again, from observation, there are a couple of cons too&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;"Posts" appear to be rendered out into files on the disk, (like MovableType) this certainly got people that owned large blogs into trouble. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/GraffitiCmsbyTelligent_137A9/image_4.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="248" alt="Graffiti Dashboard" width="496" border="0" src="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/GraffitiCmsbyTelligent_137A9/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;I did get the feeling that I'd seen an admin area that looked similar...Graffiti even has fading panels at the top of the screen when you make a change...&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/GraffitiCmsbyTelligent_137A9/image_6.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="216" alt="Wordpress Dashboard" width="499" border="0" src="http://kowitz.net/images/kowitz_net/WindowsLiveWriter/GraffitiCmsbyTelligent_137A9/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;In any case, Graffiti seems like something that should be watched in future. It may already be a great solution for a small - medium site. I do think that a site with a lot of pages may become a little unwieldy in the current interface, especially if changes need to be made across many pages, or you want to switch to a new theme. &lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/83.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=XzUGO"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=XzUGO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=yAAGo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=yAAGo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=zYezo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=zYezo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/238760926" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2008/02/21/graffiti-cms-by-telligent.aspx</guid>
            <pubDate>Thu, 21 Feb 2008 12:16:05 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/83.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2008/02/21/graffiti-cms-by-telligent.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/83.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/83.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2008/02/21/graffiti-cms-by-telligent.aspx</feedburner:origLink></item>
        <item>
            <title>Linq to Sql for other databases</title>
            <link>http://feeds.feedburner.com/~r/OverTheCode/~3/202397068/linq-to-sql-for-other-databases.aspx</link>
            <description>&lt;p&gt;The &lt;a href="http://blogs.msdn.com/adonet/archive/2007/12/17/the-ado-net-entity-framework-not-just-for-sql-server.aspx" target="_blank"&gt;ADO.NET team blog have posted&lt;/a&gt; about a number of vendors who are currently working on Linq-to-sql providers for other databases, some of these include Oracle, Informix, Ingres, Sybase, MySQL, PostgreSQL, DB2, Progress and Microsoft SQL Server databases. &lt;/p&gt; &lt;p&gt;I won't be getting too excited as most of these more due to come within 3 months of the official VS2008 release. Come to think of it, I think this is when most vendors are planning to release new versions, including other cool plug-ins like Resharper.&lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/82.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=ST8YO"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=ST8YO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=RQlIo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=RQlIo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OverTheCode?a=5iYto"&gt;&lt;img src="http://feeds.feedburner.com/~f/OverTheCode?i=5iYto" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OverTheCode/~4/202397068" height="1" width="1"/&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid isPermaLink="false">http://kowitz.net/archive/2007/12/19/linq-to-sql-for-other-databases.aspx</guid>
            <pubDate>Tue, 18 Dec 2007 21:26:34 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/82.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2007/12/19/linq-to-sql-for-other-databases.aspx#feedback</comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/82.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/82.aspx</trackback:ping>
        <feedburner:origLink>http://kowitz.net/archive/2007/12/19/linq-to-sql-for-other-databases.aspx</feedburner:origLink></item>
    </channel>
</rss>
