<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D04HQ3g_eSp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572</id><updated>2011-11-28T10:18:52.641+11:00</updated><category term="PostSharp" /><category term="AOP" /><category term="Cartesian Product" /><category term="Installer" /><category term="New Project" /><category term="Software Development" /><category term="MVC2" /><category term="Code Snippet" /><category term="Paging" /><category term="MultiCriteria" /><category term="how to become a hacker" /><category term="Partial Views" /><category term="Data Presentation" /><category term="Beginning" /><category term="Ajax.ActionLink" /><category term="ASP.NET" /><category term="Open Source" /><category term="C#" /><category term="JQuery" /><category term="Reflection" /><category term="Learning" /><category term="Languages" /><category term="non technical" /><category term="WiX" /><category term="Lambda" /><category term="hobby" /><category term="ship" /><category term="NHibernate" /><category term="wind down" /><category term="Hans Rosling" /><category term="IIS6" /><category term="ASP.MVC" /><category term="TED" /><category term=".NET" /><category term="Extension Method" /><category term="Intentions" /><title>Crossing the Schism</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://crossingtheschism.blogspot.com/" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/CrossingTheSchism" /><feedburner:info uri="crossingtheschism" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkYFR3sycCp7ImA9WhZTEUs.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-4212049717972798996</id><published>2011-03-15T13:29:00.014+11:00</published><updated>2011-03-15T15:41:56.598+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-15T15:41:56.598+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ship" /><category scheme="http://www.blogger.com/atom/ns#" term="hobby" /><category scheme="http://www.blogger.com/atom/ns#" term="non technical" /><category scheme="http://www.blogger.com/atom/ns#" term="wind down" /><title>Pandora's Box</title><content type="html">About 3 years ago, I worked in Sydney and commuted to work by train. I spent many hours on the train due to the 2.5hr commute and got home late every night. I found that I didn't have much of an opportunity to wind down at the end of the day and catching up with friends was hard because it was late by the time I got home.&lt;br /&gt;&lt;br /&gt;So I decided to take up a hobby.&lt;br /&gt;&lt;br /&gt;Watching the TV one morning before heading off to the train station I saw an ad for one of those build an &amp;lt;insert crafty thing here&amp;gt; magazine subscription. This one in particular was a model of an aircraft carrier and I was inspired. I bought the first magazine for $2.95 or whatever the reduced first magazine hook price it was and then proceeded to read up about it. I soon discovered that the price of the next edition was obscenely more ($15 or so) and that the number of magazines in the subscription was around 100........... i.e. $1500 to get all the parts of the ship!!!!!!&lt;br /&gt;&lt;br /&gt;This price did not include tools, glue, paints, etc. but rather just the parts that made up the ship. Not exactly the investment I was looking for. So a quick trip down to the local hobby shop one weekend and I found that they supplied a whole stack of model boats/ships/etc. of different skill levels, complexity and quality.&lt;br /&gt;&lt;br /&gt;The attendant at the shop advised me to take on one of the smaller, less complicated boats as my first attempt into the world of model ship building but I wasn't listening to that.&lt;br /&gt;&lt;br /&gt;Now being the technical &lt;strike&gt;Genius&lt;/strike&gt; (ahem cough splutter) type of person I figured that I had some sort of a clue to how things are made. This was also fueled by the fact that I took Design and Technology (Workshop  for those of you who are not in the Australian school system) at School and I decided that I had a fighting chance at building one of the slightly more adventurous ships on display.&lt;br /&gt;&lt;br /&gt;Ultimately my intent was not so much of buying a kit that I could quickly put together, rather I was more focused on the process of building the model as a pass time. So I selected a ship that looked pretty and was in my budget rather then trying to match one to my &lt;em&gt;perceived&lt;/em&gt; skill level.&lt;br /&gt;&lt;br /&gt;The kit I ended up buying was produced by a company called Constructo and it is a model of the HMS Pandora which I later discovered played a minor role in Australian history.&lt;br /&gt;&lt;br /&gt;And so I began.&lt;br /&gt;&lt;br /&gt;Now for the first little while I went really well, I put in an hour or two every night after work and the ship took shape. I discovered that one of the parts from the magazine subscription came in really handy (a part of the deck laser cut into a piece of plywood) and keeping this piece in its original state it made a great surface for steaming the planks of wood on with my mums clothes iron.&lt;br /&gt;&lt;br /&gt;But there were changes on the horizon.&lt;br /&gt;&lt;br /&gt;Not too long after buying this kit I decided to leave my job in Sydney after finding about an opening with where I work now. And soon after fell in love with my beautiful wife, and the time I dedicated to my project dwindled to nothing.&lt;br /&gt;&lt;br /&gt;After a while I packed up my incomplete ship into a box and stored it away hoping to return to it when things settled down after my wedding. The house we moved into as newlyweds was rather small and we never fully unpacked there. Then after a year our circumstances changed and we were able to afford to live in our own home.&lt;br /&gt;&lt;br /&gt;A few months passed since moving in and I remembered my ship and decided to work on it again. So I cleared some room in my study and set up a card table and unpacked my ship.&lt;br /&gt;&lt;br /&gt;Since then I have completed the the hull, and started to add the detail to it. I have a long way to go to complete it as I have to cut out all the little bits, paint the various metal parts, sew the sails and tie all the rigging, but it is slowly taking shape, and I am having a ball working on it once again.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/82413336@N00/sets/72157626269905396/"&gt;So here is the progress of my ship so far&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope you enjoyed.&lt;br /&gt;&lt;br /&gt;Cheers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-4212049717972798996?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3bn7pSGKTtMtgEpl7O_J2AgWNCA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3bn7pSGKTtMtgEpl7O_J2AgWNCA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3bn7pSGKTtMtgEpl7O_J2AgWNCA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3bn7pSGKTtMtgEpl7O_J2AgWNCA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/WjD5XqXJ4do" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/4212049717972798996/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2011/03/pandoras-box.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/4212049717972798996?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/4212049717972798996?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/WjD5XqXJ4do/pandoras-box.html" title="Pandora's Box" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2011/03/pandoras-box.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkECSXg7fyp7ImA9Wx9WEk4.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-7236471029582131715</id><published>2011-01-17T13:23:00.012+11:00</published><updated>2011-01-17T14:24:28.607+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-17T14:24:28.607+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WiX" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Development" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Installer" /><title>Uninstalling Web Applications using WiX</title><content type="html">I have recently been playing around with windows installers at work for our projects. I have never before had much success with this as I never put much effort into learning about creating installation files. So when a colleague turned up a Visual Studio project type called &lt;a href="http://www.blogger.com/wix.sourceforge.net/"&gt;WiX&lt;/a&gt; i had a look.&lt;br /&gt;&lt;br /&gt;Now using WiX is much the same as using MSBuild as it is all written in XML. I have never really liked XML based scripting as it is very verbose but WiX seems ok.&lt;br /&gt;&lt;br /&gt;At work I we create installers for all of our web applications and have always had the problem of not being able to specify a custom name for the app in the installer as we were not able to uninstall it. So I reciently set about finding a solution.&lt;br /&gt;&lt;br /&gt;After a few hours of googling I found this &lt;a href="http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Removing-WebVirtualDir-WebApplication-on-uninstall-only-td3816665.html"&gt;post &lt;/a&gt;on the WiX message board. The post was basically states that you store the custom name in a registry entry and call it back on uninstall. The example was a little bit unformatted for my liking but I managed to get the general idea of it.&lt;br /&gt;&lt;br /&gt;After a bit of hacking I came up with this solution:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;&amp;lt;Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"&lt;br /&gt;     xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"&amp;gt;&lt;br /&gt;  &amp;lt;Product Id="new guid here" Name="Product Name" &amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;Property id="WEBAPPNAME"&amp;gt;&lt;br /&gt;      &amp;lt;RegistrySearch id="WebAppName" root="HKLM" key="Software\[Manufacturer]\[ProductName]" name="WebAppName" type="raw"&amp;gt;&amp;lt;/RegistrySearch&amp;gt;&lt;br /&gt;    &amp;lt;/Property&amp;gt;&lt;br /&gt;    &amp;lt;SetProperty id="WEBAPPNAME" value="WebAppName" after="AppSearch"&amp;gt;WEBAPPNAME=""&amp;lt;/SetProperty&amp;gt;&lt;br /&gt;&lt;br /&gt;    ... Any extra properties and conditions here ...&lt;br /&gt;&lt;br /&gt;    &amp;lt;Media id="1" cabinet="media1.cab" embedcab="yes"&amp;gt;&amp;lt;/Media&amp;gt;&lt;br /&gt;    &amp;lt;Directory id="TARGETDIR" name="SourceDir"&amp;gt;&lt;br /&gt;      &amp;lt;Directory id="ProgramFilesFolder"&amp;gt;&lt;br /&gt;        &amp;lt;Directory id="INSTALLLOCATION" name="[ProductName]"&amp;gt;&lt;br /&gt;          .... Add Files using components here ...&lt;br /&gt;&lt;br /&gt;          &amp;lt;Component id="WebAppNameComponent" guid="new guid here"&amp;gt;&lt;br /&gt;            &amp;lt;RegistryValue id="WebAppName" root="HKLM" key="Software\[Manufacturer]\[ProductName]" name="WebAppName" type="string" value="[WEBAPPNAME]"&amp;gt;&amp;lt;/RegistryValue&amp;gt;&lt;br /&gt;          &amp;lt;/Component&amp;gt;&lt;br /&gt;          &amp;lt;Component id="WebAppSetupIIS" guid="new guild here" keypath="yes"&amp;gt;&lt;br /&gt;            &amp;lt;iis:WebVirtualDir id="WebApplicationDirectory" alias="[WEBAPPNAME]" Directory="[ProductName]" website="DefaultWebSite"&amp;gt;&lt;br /&gt;              &amp;lt;iis:WebApplication id="WebApplication" name="[WEBAPPNAME]"&amp;gt;&lt;br /&gt;                ... IIS Settings here ...&lt;br /&gt;              &amp;lt;/iis:WebApplication&amp;gt;&lt;br /&gt;            &amp;lt;/iis:WebVirtualDir&amp;gt;&lt;br /&gt;          &amp;lt;/Component&amp;gt;&lt;br /&gt;        &amp;lt;/Directory&amp;gt;&lt;br /&gt;      &amp;lt;/Directory&amp;gt;&lt;br /&gt;    &amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;iis:WebSite id="DefaultWebSite" description="Default Web Site"&amp;gt;&lt;br /&gt;      &amp;lt;iis:WebAddress id="AllUnassigned" port="80"&amp;gt;&amp;lt;/iis:WebAddress&amp;gt;&lt;br /&gt;    &amp;lt;/iis:WebSite&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;Feature id="Complete"&amp;gt;&lt;br /&gt;      &amp;lt;ComponentRef id="WebAppSetupIIS"&amp;gt;&amp;lt;/ComponentRef&amp;gt;&lt;br /&gt;      &amp;lt;ComponentRef id="WebAppNameComponent"&amp;gt;&amp;lt;/ComponentRef&amp;gt;&lt;br /&gt;    &amp;lt;/Feature&amp;gt;&lt;br /&gt;&lt;br /&gt;    ... Any UI stuff here ...&lt;br /&gt;  &amp;lt;/Product&amp;gt;&lt;br /&gt;&amp;lt;/Wix&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So Basically I start a new WiX file and add a Product as you normally would in WiX.&lt;br /&gt;&lt;br /&gt;I added a new Property called WEBAPPNAME (All in caps for some reason in WiX I have yet to research). And in this Property I do a RegistrySearch (search in the Windows Registry) for a key that is defaulted to the product name with a value for the WebAppName.&lt;br /&gt;&lt;br /&gt;And since this has not been set in the initial installation of this product I perform a SetProperty and give it a default value. However this will overwrite any value that may exist so I put a condition on it that specifies that WEBAPPNAME has no value. And tell it to execute after an event called AppSearch which is when the registry is searched.&lt;br /&gt;&lt;br /&gt;I then set up the directory structure of the install and add some Components to the directory.&lt;br /&gt;&lt;br /&gt;The first Component is the WebAppNameComponent and this creates a value in the registry to the value of WEBAPPNAME. This registry value will also be removed on uninstall but exists solely to provide the name of the application at uninstall time.&lt;br /&gt;&lt;br /&gt;The next Component is the WebAppSetupIIS component and this creates the entry in IIS providing the current directory as a virtual directory in IIS and sets the name of the virtual directory to the value of WEBAPPNAME.&lt;br /&gt;&lt;br /&gt;Next I specified the WebSite that the web application would reside in and finally added the two components above into the feature by using the ComponentRef tags.&lt;br /&gt;&lt;br /&gt;The rest of the file was just setting up the user interface and other things.&lt;br /&gt;&lt;br /&gt;The final thing worth mentioning is that I added an entry in the UI to be able to change the name of the Virtual Directory in the installer.&lt;br /&gt;&lt;br /&gt;All I needed to do was add these lines of code to the Dialog file in my project:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;&amp;lt;Control Id="WebAppNameLabel" Type="Text" Text="Web Application Name:" /&amp;gt;&lt;br /&gt;&amp;lt;Control Id="WebAppNameEdit"  Type="Edit" Text="[WEBAPPNAME]" Property="WEBAPPNAME" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;em&gt;NOTE: Positioning and Size information removed for brevity from these tags&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Well that is about it for uninstalling web applications with custom names.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-7236471029582131715?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LyrBqlRNH7EKLplWHjeiF206a6w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LyrBqlRNH7EKLplWHjeiF206a6w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LyrBqlRNH7EKLplWHjeiF206a6w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LyrBqlRNH7EKLplWHjeiF206a6w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/3NjdteY75hU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/7236471029582131715/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2011/01/uninstalling-web-applications-using-wix.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/7236471029582131715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/7236471029582131715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/3NjdteY75hU/uninstalling-web-applications-using-wix.html" title="Uninstalling Web Applications using WiX" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2011/01/uninstalling-web-applications-using-wix.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYCQXg4fyp7ImA9Wx5VGU4.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-245031998286081330</id><published>2010-10-13T10:27:00.024+11:00</published><updated>2010-10-13T13:16:00.637+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-13T13:16:00.637+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IIS6" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax.ActionLink" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Partial Views" /><category scheme="http://www.blogger.com/atom/ns#" term="MVC2" /><title>MVC on IIS6 Blues</title><content type="html">I have recently been working on a project where I have just converted an old ASP.NET WebForms app to use MVC 2. I developed it on my local machine which is running Windows 7 and hence IIS7 which has been great.&lt;br /&gt;&lt;br /&gt;I got it all working properly and now I have just been working on getting it deployed onto a test server. This is when I realised that Production is running IIS6.&lt;br /&gt;&lt;br /&gt;So I fire up Google and search for running MVC 2 apps on IIS6 and found a lot of great advice, in particular Phil Haack's great walk through on &lt;a href="http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx"&gt;ASP.NET MCV on IIS 6&lt;/a&gt; which was most helpful on getting the routing working MVC style.&lt;br /&gt;&lt;br /&gt;However I ran into a problem when I started to try and navigate through my Partial Views, of which I had a few all working on a single page using Ajax. I found that the ActionLink's didn't work how I had anticipated as I had set them to replace the contents of a particular div. Instead they rendered as a new page.&lt;br /&gt;&lt;br /&gt;I tried Googling this issue and nothing seemed to come up anywhere, so I looked a little closer in my application. I opened up the Internet Explorer 8 Developer Tools and found that I was getting a Javascript Error:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Line: 90&lt;br /&gt;Error: 'Sys' is undefined&lt;/pre&gt;A quick Google bought up a whole bunch of results talking about Script Managers and not having the latest version of ASP.NET AJAX Extensions, but checking through these wielded no success.&lt;br /&gt;&lt;br /&gt;Again to IE8 Developer Tools. I opened up the Script tab in the Developer Tools and found the drop down list of all the Scripts on the page.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5527330632469078290" border="0" alt="" src="http://4.bp.blogspot.com/_BqvfjiBbdjI/TLUF7Nh0YRI/AAAAAAAAAAw/uXYyWnPKIV0/s320/DevToolsScriptListing.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;What I noticed was this:&lt;br /&gt;The first set of entries (above the divider) was for the address of the page. http://localhost/&amp;lt;site name&amp;gt;/Home.&lt;br /&gt;&lt;br /&gt;And the second set of entries (below the divider) was the address of the list of scripts that were referenced by the page. http://localhost/Scripts.&lt;br /&gt;&lt;br /&gt;This reveled the problem immediately as the scripts address was missing the &amp;lt;site name&amp;gt; in the URL.&lt;br /&gt;&lt;br /&gt;My problems lay in the head tag of my MasterPage and the way that IIS6 performs the&lt;br /&gt;routing.&lt;br /&gt;&lt;br /&gt;The standard markup that comes out of the box is:&lt;br /&gt;&lt;pre class="brush: html"&gt;&amp;lt;script src="../../Scripts/MicrosoftAjax.debug.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../../Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../../Scripts/jquery-1.4.1.min-vsdoc.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../../Scripts/jquery-ui-1.8rc3.custom.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;Whereas to get it working I needed to remove the first ../ from the src property in each of the script tags:&lt;br /&gt;&lt;pre class="brush: html"&gt;&amp;lt;script src="../Scripts/MicrosoftAjax.debug.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../Scripts/MicrosoftMvcAjax.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../Scripts/MicrosoftAjax.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../Scripts/jquery-1.4.1.min-vsdoc.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="../Scripts/jquery-ui-1.8rc3.custom.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;This resulted in the script files being properly referenced and everything just worked as if by magic.&lt;br /&gt;&lt;br /&gt;I hope that this can be a help for anyone else that has experienced the same problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-245031998286081330?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RicC8wcr-rQ1fmwEgKgxq8RSZRA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RicC8wcr-rQ1fmwEgKgxq8RSZRA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RicC8wcr-rQ1fmwEgKgxq8RSZRA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RicC8wcr-rQ1fmwEgKgxq8RSZRA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/ImfImdrns7s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/245031998286081330/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2010/10/mvc-in-iis6-blues.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/245031998286081330?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/245031998286081330?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/ImfImdrns7s/mvc-in-iis6-blues.html" title="MVC on IIS6 Blues" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_BqvfjiBbdjI/TLUF7Nh0YRI/AAAAAAAAAAw/uXYyWnPKIV0/s72-c/DevToolsScriptListing.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2010/10/mvc-in-iis6-blues.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMCRXo8cCp7ImA9WxFUEko.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-7812083158818736403</id><published>2010-06-23T15:54:00.011+10:00</published><updated>2010-06-23T17:01:04.478+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-23T17:01:04.478+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code Snippet" /><category scheme="http://www.blogger.com/atom/ns#" term="Extension Method" /><category scheme="http://www.blogger.com/atom/ns#" term="Reflection" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Lambda" /><title>Compile-safe MemberInfo Selection</title><content type="html">I have been playing around with Windows Forms in .NET and in particular the ComboBox control.&lt;br /&gt;&lt;br /&gt;I decided to initialise the combo box like so:&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;private void SetComboData(IList&amp;lt;SupporterRecord&amp;gt; supporters)&lt;br /&gt;{&lt;br /&gt;    var bindingSource = new BindingSource { DataSource = supporters };&lt;br /&gt;    comboBox1.DisplayMember = "OpportunityName";&lt;br /&gt;    comboBox1.ValueMember = "SupporterId";&lt;br /&gt;    comboBox1.DataSource = bindingSource;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Notice how the DisplayMember and ValueMember variables are being set by hardcoding the string name of the property that exists on the SupporterRecord class.&lt;br /&gt;&lt;br /&gt;This is horrible because I get no compile-time checking of the Property names.&lt;br /&gt;&lt;br /&gt;I want to be able to use a Lambda expression to do something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;// get the Property item via reflection&lt;br /&gt;MemberInfo member = SupporterNumber.GetMemberinfo(s &amp;eq;&amp;gt; s.OpportunityName);&lt;br /&gt;&lt;br /&gt;// and get the name of the property&lt;br /&gt;string name = member.Name;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I found a &lt;a href="http://stackoverflow.com/questions/1984165/strong-typing-a-property-name-in-net"&gt;code snippet&lt;/a&gt; on the StackOverflow site to almost do this.&lt;br /&gt;&lt;br /&gt;Thinking about this further I also want to be able to do this in the general case for all object types. In comes Extension Methods.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp" name="code"&gt;&lt;br /&gt;public static class ClassExtensions&lt;br /&gt;{&lt;br /&gt;    public static MemberInfo GetMemberInfo&amp;lt;TSupporterRecord&amp;gt;(this TSupporterRecord r, Expression&amp;lt;func&amp;lt;TSupporterRecord, object&amp;gt;&amp;gt; expression)&lt;br /&gt;    {&lt;br /&gt;        var member = expression.Body as MemberExpression;&lt;br /&gt;        if (member == null)&lt;br /&gt;            throw new ArgumentException("expression returns no member.", "expression");&lt;br /&gt;&lt;br /&gt;        return member.Member;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Usage is as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;private void SetComboData(IList&amp;lt;SupporterRecord&amp;gt supporters){&lt;br /&gt;    var bindingSource = new BindingSource { DataSource = supporters };&lt;br /&gt;    comboBox1.DisplayMember = ((SupporterRecord)null).GetMemberInfo(s =&amp;gt; s.OpportunityName).Name;&lt;br /&gt;    comboBox1.ValueMember = ((SupporterRecord)null).GetMemberInfo(s =&amp;gt; s.SupporterId).Name;&lt;br /&gt;    comboBox1.DataSource = bindingSource;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now it is not entirely the way I want it but it is getting close as I want:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;MemberInfo member = SupporterNumber.GetMemberinfo(s =&amp;gt; s.OpportunityName);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;which is a static method on the class so I started Googling for static extension methods but there is currently no implementation of this, but a number of people saying how cool it would be to have it.&lt;br /&gt;&lt;br /&gt;Maybe in later releases of .NET we will see this and I'll be able to perfect my API.&lt;br /&gt;&lt;br /&gt;Cheers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-7812083158818736403?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7pbIpXeaj1F6W8e9S_wslEIU0jo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7pbIpXeaj1F6W8e9S_wslEIU0jo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7pbIpXeaj1F6W8e9S_wslEIU0jo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7pbIpXeaj1F6W8e9S_wslEIU0jo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/_lRVYS6p0iI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/7812083158818736403/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2010/06/compile-safe-memberinfo-selection.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/7812083158818736403?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/7812083158818736403?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/_lRVYS6p0iI/compile-safe-memberinfo-selection.html" title="Compile-safe MemberInfo Selection" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2010/06/compile-safe-memberinfo-selection.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUNQng8fCp7ImA9WxNQEEU.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-7277271501764109913</id><published>2009-09-16T16:17:00.006+10:00</published><updated>2009-09-16T16:24:53.674+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-16T16:24:53.674+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="New Project" /><category scheme="http://www.blogger.com/atom/ns#" term="JQuery" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.MVC" /><title>New Project: Idea: FreeSummit</title><content type="html">I have decided that I am going to start on a new project. I have been trying to think up ideas of what I am going to base my project on and have come up with an enterprise application based on where I currently work and how I would like the current software to run. I am wanting to base it on Microsofts ASP.MVC and see if I can use JQuery.&lt;br /&gt;&lt;br /&gt;I intend this to be a learning excercise and a chance to cement much of my current learnings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-7277271501764109913?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/guPkqdCSMx7VhQNDdfuj3Narxgs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/guPkqdCSMx7VhQNDdfuj3Narxgs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/guPkqdCSMx7VhQNDdfuj3Narxgs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/guPkqdCSMx7VhQNDdfuj3Narxgs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/7DAjTcHm_X8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/7277271501764109913/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2009/09/new-project-idea-freesummit.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/7277271501764109913?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/7277271501764109913?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/7DAjTcHm_X8/new-project-idea-freesummit.html" title="New Project: Idea: FreeSummit" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2009/09/new-project-idea-freesummit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYBRng9fyp7ImA9WxVbFEo.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-4921211280696759089</id><published>2009-03-31T16:16:00.007+11:00</published><updated>2009-03-31T16:42:37.667+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-31T16:42:37.667+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Languages" /><category scheme="http://www.blogger.com/atom/ns#" term="how to become a hacker" /><category scheme="http://www.blogger.com/atom/ns#" term="Learning" /><title>Future Learnings</title><content type="html">I am a big advocate of self continuous improvement, and I am constantly looking for new resources for learning my trade.&lt;br /&gt;&lt;br /&gt;This morning in my daily web trawl I came across this &lt;a href="http://www.catb.org/%7Eesr/faqs/hacker-howto.html"&gt;link&lt;/a&gt; talking about how to become a hacker.&lt;br /&gt;&lt;br /&gt;And it inspired me to use some of my spare time to learn a few more programming languages.&lt;br /&gt;&lt;br /&gt;In the article Eric gives his recommendations on what languages to learn:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.research.att.com/%7Ebs/C++.html"&gt;C/C++&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/"&gt;Java&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.perl.com/"&gt;Pearl&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://savannah.gnu.org/projects/gcl"&gt;LISP&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;So far the programming languages under my belt are (I have left out scripting languages such as HTML):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;C# .NET (this is my current language of choice)&lt;/li&gt;&lt;li&gt;Java (My University had a bend towards teaching Java as a first language then really didn't touch on other languages too much).&lt;/li&gt;&lt;li&gt;BASIC&lt;/li&gt;&lt;li&gt;Javascript&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I started programming at the command prompt of an old Apple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;IIe&lt;/span&gt; then progressed to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;QBASIC&lt;/span&gt; then Visual Basic before going to uni and learning Java and seeing the light ahem... discovering new more powerful languages.&lt;br /&gt;&lt;br /&gt;I'm also wanting to delve deeper into multi threaded and parallel programming as I can see that the future is in spanning across multiple &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;CPU&lt;/span&gt; cores.&lt;br /&gt;&lt;br /&gt;Well &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;that's&lt;/span&gt; about all for today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-4921211280696759089?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ieP42cHe4_iRG2UUilqJ9MR9yUA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ieP42cHe4_iRG2UUilqJ9MR9yUA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ieP42cHe4_iRG2UUilqJ9MR9yUA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ieP42cHe4_iRG2UUilqJ9MR9yUA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/65piO-OZy6A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/4921211280696759089/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2009/03/future-learnings.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/4921211280696759089?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/4921211280696759089?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/65piO-OZy6A/future-learnings.html" title="Future Learnings" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2009/03/future-learnings.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIFQX8yeCp7ImA9WxVUGEo.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-3592664287802443993</id><published>2009-03-24T16:31:00.003+11:00</published><updated>2009-03-24T17:01:50.190+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-24T17:01:50.190+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TED" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="Hans Rosling" /><title>He who holds the data</title><content type="html">Just this morning, my colleague Justin passed me this &lt;a href="http://www.ted.com/index.php/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html"&gt;link&lt;/a&gt; to a talk by Hans Rosling at &lt;a href="http://www.ted.com"&gt;TED&lt;/a&gt;. I was very impressed by Hans' presentation on multiple levels:&lt;br /&gt;&lt;br /&gt;As a worker for a humanitarian organisation:&lt;br /&gt;* data showing the shift in the poverty margin of countries around the world.&lt;br /&gt;&lt;br /&gt;As a software professional:&lt;br /&gt;* Data Representation and Presentation&lt;br /&gt;* and the sourcing of the data and Hans' ideas on opening up data on publicly funded research projects to be searchable by the public.&lt;br /&gt;&lt;br /&gt;And as a member of the wider audience:&lt;br /&gt;* How Hans did his presentation.&lt;br /&gt;&lt;br /&gt;I was very encouraged by the data around the shift of where poverty laid in the world. It showed that the general trend was that poverty was somewhat on the decline, at least under the variables Hans provided (Life expectancy and wealth).&lt;br /&gt;&lt;br /&gt;Hans presented a very humorous and entertaining, whilst informative and very pointed talk. His focus being on how preconceived ideas effects how we view situations and how data presented properly can debunk these ideas and educate people on the real state of affairs.&lt;br /&gt;&lt;br /&gt;The software Hans used in his talk was very eye opening. It was cool to display trends by selecting items and tracking them over time using animations, as well as the ability to drill down further into the data.&lt;br /&gt;&lt;br /&gt;But the real crunch was at the end when Hans started talking about how the "curators" of publicly funded research were refusing to make it possible for the general public to search. I honestly believe that research done with public funding, should be made available to the public. Now I can understand that the databases containing this data can often contain information that needs explanation as to what it actually means, but this should really be documented.&lt;br /&gt;&lt;br /&gt;When I finished watching this video, I was left with an overwhelming feeling of WOW and what do I do with this information now.&lt;br /&gt;&lt;br /&gt;I think this needs more pondering.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-3592664287802443993?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-SO4pSM2jzo7oLYMoobuaFUfMB0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-SO4pSM2jzo7oLYMoobuaFUfMB0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-SO4pSM2jzo7oLYMoobuaFUfMB0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-SO4pSM2jzo7oLYMoobuaFUfMB0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/Vn9QqXYf8IM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/3592664287802443993/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2009/03/he-who-holds-data.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/3592664287802443993?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/3592664287802443993?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/Vn9QqXYf8IM/he-who-holds-data.html" title="He who holds the data" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2009/03/he-who-holds-data.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIHSHs-eCp7ImA9WxFUEko.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-362076407671693936</id><published>2009-03-17T16:19:00.011+11:00</published><updated>2010-06-23T16:28:59.550+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-23T16:28:59.550+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software Development" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="Paging" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Lambda" /><title>Layer Transparent Paging</title><content type="html">I am currently working on an issue where I am processing large amounts of data. So I have decided to implement a paging strategy.&lt;br /&gt;&lt;br /&gt;Now my issue was that I am wanting to pass this paging strategy from my Data Access Layer (DAL) to my Buisness Logic Layer (BLL) without exposing my underlying framework which happens to be NHibernate.&lt;br /&gt;&lt;br /&gt;So I have devised the interface:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;public interface IPagedResult&amp;lt;T&amp;gt; : IEnumerator&amp;lt;IList&amp;lt;T&amp;gt;&amp;gt;&lt;br /&gt;{&lt;br /&gt; int PageSize { get; }&lt;br /&gt; IPageSession Session { get; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;This I can then pass through to my BLL to iterate through the results like so:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;using (var pagedResults = DAL.GetPagedResultsForSomething())&lt;br /&gt;{&lt;br /&gt; while (pagedResults.MoveNext())&lt;br /&gt; {&lt;br /&gt;   foreach (var item in pagedResults.Current)&lt;br /&gt;   {&lt;br /&gt;     doSomethingWithItem(item);&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Allowing the PagedResult object to handle all session and transaction issues.&lt;br /&gt;&lt;br /&gt;I also devised a way to put my query into the PagedResult object using Lambdas:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;public class PagedResult&amp;lt;T&amp;gt; : IPagedResult&amp;lt;T&amp;gt;&lt;br /&gt;{&lt;br /&gt; private int currentResult = 0;&lt;br /&gt; public delegate ICriteria QueryFunction(ISession session);&lt;br /&gt;&lt;br /&gt; public PagedResult(int pageSize, ISession session, QueryFunction query)&lt;br /&gt; { ... snip ... }&lt;br /&gt;&lt;br /&gt; public vool MoveNext()&lt;br /&gt; {&lt;br /&gt;   try&lt;br /&gt;   {&lt;br /&gt;     Current = query(session)&lt;br /&gt;       .SetFirstResult(currentResult)&lt;br /&gt;       .setMaxResults(PageSize)&lt;br /&gt;       .List&amp;lt;Statement&amp;lt;T&amp;gt;();&lt;br /&gt;&lt;br /&gt;     if ((Current == null)  (Current.Count == 0))&lt;br /&gt;     {&lt;br /&gt;       Current = null;&lt;br /&gt;       return false;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     currentResult += PageSize;&lt;br /&gt;     return true;&lt;br /&gt;   }&lt;br /&gt;   catch&lt;br /&gt;   {&lt;br /&gt;     session.Transaction.RollBack();&lt;br /&gt;     throw;&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; ... snip ...&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This allows me to use it as such:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;var statementId = 1;&lt;br /&gt;var pageSize = 10;&lt;br /&gt;new PagedResult&amp;lt;Statement&amp;gt;(&lt;br /&gt; pageSize,&lt;br /&gt; new Session(),&lt;br /&gt; s =&gt;&lt;br /&gt;   s.CreateCriteria(typeof(Statement), "statement")&lt;br /&gt;   .SetResultTransformer(CriteriaUtil.DistinctRootEntity)&lt;br /&gt;   .Add(Restrictions.Eq("statement.Id", statementId))&lt;br /&gt; );&lt;br /&gt;&lt;/pre&gt;What do people think?&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;&lt;br /&gt;Erik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-362076407671693936?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XeOJPdlfRqAL0hDXxaNuCVTK6x8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XeOJPdlfRqAL0hDXxaNuCVTK6x8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XeOJPdlfRqAL0hDXxaNuCVTK6x8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XeOJPdlfRqAL0hDXxaNuCVTK6x8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/W3j2_nO9LDs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/362076407671693936/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2009/03/layer-transparent-paging.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/362076407671693936?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/362076407671693936?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/W3j2_nO9LDs/layer-transparent-paging.html" title="Layer Transparent Paging" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2009/03/layer-transparent-paging.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQNSH89fip7ImA9WxVVFUo.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-5696847226634033803</id><published>2009-03-09T16:35:00.006+11:00</published><updated>2009-03-09T16:59:59.166+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-09T16:59:59.166+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="MultiCriteria" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Cartesian Product" /><title>Handling Cartesian Products in NHibernate</title><content type="html">I have been using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;NHibernate&lt;/span&gt; for a little while now, but I am mostly self taught in this. I have recently done a course on ADO.NET to try and understand some of the basics of data access that I may have missed, and also to get a little of an understanding of the core technologies behind &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;NHibernate&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I was reading a post on &lt;a href="http://feedproxy.google.com/%7Er/Devlicious/%7E3/NUFXCeq8oIw/eager-loading-a-one-to-many-collection-w-nhibernate.aspx"&gt;Eager Loading&lt;/a&gt; by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Derik&lt;/span&gt; Whittaker on the &lt;a href="http://devlicio.us/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Devlicio&lt;/span&gt;.us&lt;/a&gt; site where &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Derik&lt;/span&gt; was talking about returning a list of objects using the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;CreateCriteria&lt;/span&gt; query method. His issue was that when he used Eager Loading, he got more rows back then expected. This was due to the Cartesian Product issue where the join on the tables caused extra rows to be returned for a single object and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;NHibernate&lt;/span&gt; hydrating an object for each row. His solution was to include the command:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SetResultTransformer&lt;/span&gt;( new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DistinctRootEntityResultTransformer&lt;/span&gt;() )&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;which can be shortened to:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;SetResultTransformer&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;CriteriaUtil&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;DistinctRootEntity&lt;/span&gt;)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;While reading through the comments on this post I found that someone had posted:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Why didn't you use the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;CreateMultiCriteria&lt;/span&gt; method?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;This got me thinking. I have heard of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;MultiCriteria&lt;/span&gt; before but never realised that you could use it to solve the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;Cartesian&lt;/span&gt; Product problem before.&lt;br /&gt;&lt;br /&gt;So to Google I went and I found the &lt;a href="http://www.nhforge.org/doc/nh/en/index.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;NHibernate&lt;/span&gt; Documentation&lt;/a&gt; and to my surprise I found the example under &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;CreateMultiQuery&lt;/span&gt;. I had never found this before because I had always limited my reading to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;CreateMultiCriteria&lt;/span&gt; (which is a more fluent version of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;MultiQuery&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;So now the challenge I have set myself is to sit down and try to get some examples of this working.&lt;br /&gt;&lt;br /&gt;Till next time.&lt;br /&gt;&lt;br /&gt;Erik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-5696847226634033803?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MIqABCuvKtyhJwJWaU9yY-lA_Pk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MIqABCuvKtyhJwJWaU9yY-lA_Pk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MIqABCuvKtyhJwJWaU9yY-lA_Pk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MIqABCuvKtyhJwJWaU9yY-lA_Pk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/cYxbjAC1ySI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/5696847226634033803/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2009/03/handling-cartesian-products-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/5696847226634033803?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/5696847226634033803?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/cYxbjAC1ySI/handling-cartesian-products-in.html" title="Handling Cartesian Products in NHibernate" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2009/03/handling-cartesian-products-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYGQ3oycSp7ImA9WxVVEk4.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-2309399102215719117</id><published>2009-03-05T16:33:00.007+11:00</published><updated>2009-03-05T16:48:42.499+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-05T16:48:42.499+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PostSharp" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Development" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="AOP" /><title>New Findings: AOP &amp; PostSharp</title><content type="html">I was just browsing through the latest &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MSDN&lt;/span&gt; magazine today while waiting for a rather long integration test to run, and I found an article on Aspect-Oriented Programming (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;AOP&lt;/span&gt;). Now I have heard of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;AOP&lt;/span&gt; and have been told that it is a very effective programming paradigm, but have never fully looked into it before. In the article the author (&lt;a href="http://scottonwriting.net/"&gt;Scott Michell&lt;/a&gt;) presents an open source framework called &lt;a href="http://www.postsharp.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;PostSharp&lt;/span&gt;&lt;/a&gt;. Now I spent a good while looking through the website and some examples and I am impressed. The power with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;PostSharp&lt;/span&gt; is that you define a custom attribute which extends from one of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;PostSharps&lt;/span&gt; base classes and you can write code for cross cutting concerns such as logging, security, etc into this attribute and place the attribute on the properties in your class and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;PostSharp&lt;/span&gt;.Core puts your code into the class at compile time.&lt;br /&gt;&lt;br /&gt;I'm looking forward to sitting down and having a play with this framework as it looks really positive. Anything that promises to improve my coding practices is worth a bit of my time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-2309399102215719117?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RQzS0BDyOIROOTXVdB6Ke9EyfzY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RQzS0BDyOIROOTXVdB6Ke9EyfzY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RQzS0BDyOIROOTXVdB6Ke9EyfzY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RQzS0BDyOIROOTXVdB6Ke9EyfzY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/JerwGw8NpRA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/2309399102215719117/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2009/03/new-findings-aop-postsharp.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/2309399102215719117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/2309399102215719117?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/JerwGw8NpRA/new-findings-aop-postsharp.html" title="New Findings: AOP &amp; PostSharp" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2009/03/new-findings-aop-postsharp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFQn89eip7ImA9WxVWEEw.&quot;"><id>tag:blogger.com,1999:blog-180879897118730572.post-1237022463697477475</id><published>2009-02-19T13:43:00.000+11:00</published><updated>2009-02-19T13:53:33.162+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-19T13:53:33.162+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Intentions" /><category scheme="http://www.blogger.com/atom/ns#" term="Beginning" /><title>Division or Disunion</title><content type="html">This is by no means the first time that I have attempted to start a blog. I have started blogs in the past but have never made it past the first blog. This time I have decided that I will spend the last fifteen minutes of each day to write about something I have learned for the day.&lt;br /&gt;&lt;br /&gt;Hence the name "Crossing the &lt;a href="http://dictionary.reference.com/browse/schism"&gt;Schism&lt;/a&gt;" where I see this particular schism as being my best intended but ultimately unsuccessful attempts to join the wider &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Internet&lt;/span&gt; community by  writing my thoughts down.&lt;br /&gt;&lt;br /&gt;Right now I am due for a meeting.&lt;br /&gt;&lt;br /&gt;So until next time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/180879897118730572-1237022463697477475?l=crossingtheschism.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qBb1G9qpZElLh2P9c-47tUG3Oeg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qBb1G9qpZElLh2P9c-47tUG3Oeg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qBb1G9qpZElLh2P9c-47tUG3Oeg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qBb1G9qpZElLh2P9c-47tUG3Oeg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CrossingTheSchism/~4/pE1BIB00rzo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://crossingtheschism.blogspot.com/feeds/1237022463697477475/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://crossingtheschism.blogspot.com/2009/02/division-or-disunion.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/1237022463697477475?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/180879897118730572/posts/default/1237022463697477475?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CrossingTheSchism/~3/pE1BIB00rzo/division-or-disunion.html" title="Division or Disunion" /><author><name>Erik Nilsson</name><uri>http://www.blogger.com/profile/16610241098230526042</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://crossingtheschism.blogspot.com/2009/02/division-or-disunion.html</feedburner:origLink></entry></feed>

