<rss version="2.0" 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/">
    <channel>
        <title>Internet</title>
        <link>http://www.kowitz.net/category/8.aspx</link>
        <description>Internet</description>
        <language>en-AU</language>
        <copyright>Brendan Kowitz</copyright>
        <managingEditor>brendan@kowitz.net</managingEditor>
        <generator>Subtext Version 2.0.0.43</generator>
        <item>
            <title>NHibernate Compatible Shared Hosts</title>
            <link>http://kowitz.net/archive/2008/03/28/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;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid>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>
        </item>
        <item>
            <title>Safari treks onto windows</title>
            <link>http://kowitz.net/archive/2007/06/12/safari-treks-onto-windows.aspx</link>
            <description>&lt;p&gt;I've mentioned &lt;a href="http://www.kowitz.net/archive/2006/08/22/khtml-webkit-swift.aspx"&gt;previously&lt;/a&gt;, there has been some experimentation around with getting WebKit to work on windows. I just didn't really expect Apple to release a full &lt;a href="http://www.apple.com/safari/download/"&gt;Safari for Windows&lt;/a&gt;. So naturally owning a MacBook that I use to run both OSX and Windows, I downloaded both versions. Although the Windows version gives you a taste, it just doesn't 'feel right'. Not sure what it is, but Safari just seems so much smoother in it's native OSX. I'm sure future versions will improve on this, but wow, cool.&lt;/p&gt;
&lt;p&gt;Another feature of Leopard that I'm pretty impressed with is the ability to have &lt;a href="http://www.apple.com/macosx/leopard/features/desktop.html"&gt;'Piles' or 'Stacks'&lt;/a&gt; of icons and files. This is &lt;a href="http://www.bumptop.com/"&gt;not&lt;/a&gt; entirely a new idea, but I'm not aware of a decent usable implementation that has full integration into a consumer desktop. Knowing Apple, it's probably pretty smooth with all the appropriate transition effects and bling.&lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/73.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid>http://kowitz.net/archive/2007/06/12/safari-treks-onto-windows.aspx</guid>
            <pubDate>Mon, 11 Jun 2007 21:39:55 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/73.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2007/06/12/safari-treks-onto-windows.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/73.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/73.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP.NET 2.0 Mozilla Browser Detection Hole</title>
            <link>http://kowitz.net/archive/2006/12/11/asp.net-2.0-mozilla-browser-detection-hole.aspx</link>
            <description>&lt;p&gt;It has recently come to my attention that there is something drastically wrong with the way search engines have been indexing my ASP.NET 2.0 blog.&lt;/p&gt;
&lt;p&gt;As I've started to &lt;a href="http://www.kowitz.net/2006/12/7/Cleaning+Up+ASPNET+Sessions+in+Google.aspx"&gt;explain previously&lt;/a&gt;, this is because of the way the browser detection is set up. To give a brief rundown ASP.NET 2.0 has a default &lt;a href="http://msdn2.microsoft.com/en-us/library/ms228122(VS.80).aspx"&gt;browser definition&lt;/a&gt; which seems to assume that the default browser is fairly capable and supports common things such as javascript and cookies. A browser definition can get inherited into other definitions which can then override specific properties to update it for that specific browser or browser version.&lt;/p&gt;
&lt;p&gt;Apparently in around &lt;a href="http://www.mattcutts.com/blog/q-a-thread-march-27-2006/"&gt;March 2006&lt;/a&gt; Google started rolling out updates that changed the Googlebot's useragent string from:&lt;/p&gt;
&lt;p&gt;"Googlebot/2.1 (+http://www.googlebot.com/bot.html)" to&lt;br /&gt;
"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"&lt;/p&gt;
&lt;p&gt;Now the reason for this is so the Googlebot could identify itself as being Mozilla/5.0 compliant which should allow it to be accepted by more webservers. However this breaks the detection pattern in ASP.NET. (And was always broken in Yahoo Slurp, I just don't know if anyone ever noticed).&lt;/p&gt;
&lt;p&gt;When the useragent was just "Googlebot/2.1" it wasn't able to be matched and used the "default.browser" detection file which defaulted to a browser of reasonable capabilities. After the change it found itself in the "mozilla.browser" file because it was detected on the "Mozilla" word. So all the following sets of instructions in the "mozilla.browser" file try to establish exactly what platform and variant of Mozilla it is, for example, if its Firefox running on OSX, or if it's the older Mozilla Gecko rendering engine. But because there is no definition for a Generic Mozilla/5.0 compatible browser it gets the most relevant match, being the lowest Mozilla/1.0 compatible settings. Bad!&lt;/p&gt;
&lt;p&gt;Because of this bad detection the default Mozilla/1.0 settings assume NO COOKIES and insert the session ID into the url then issues a response status 302 (content temporarily moved). What makes this situation even worse is that the default behavior of search engines is to &lt;a href="http://www.mattcutts.com/blog/seo-advice-discussing-302-redirects/"&gt;follow these redirects&lt;/a&gt; and index the content on the other side. So basically everytime some random User-agent that claims to be Mozilla/5.0 compliant hits the site it gets Mozilla/1.0 capabilities. What is needed is something to bridge this gap.&lt;/p&gt;
&lt;p&gt;Fortunately there is something that can be done that won't even require a recompile of your ASP.NET 2.0 application. Simply create a "genericmozilla5.browser" file in your "/App_Browsers" folder in the root of your application with the following in contents:&lt;/p&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;browsers&amp;gt;
&amp;lt;browser id="GenericMozilla5" parentID="Mozilla"&amp;gt;
&amp;lt;identification&amp;gt;
&amp;lt;userAgent match="Mozilla/5\.(?'minor'\d+).*[C|c]ompatible; ?(?'browser'.+); ?\+?(http://.+)\)" /&amp;gt;
&amp;lt;/identification&amp;gt;
&amp;lt;capabilities&amp;gt;
&amp;lt;capability name="majorversion" value="5" /&amp;gt;
&amp;lt;capability name="minorversion" value="${minor}" /&amp;gt;
&amp;lt;capability name="browser" value="${browser}" /&amp;gt;
&amp;lt;capability name="Version" value="5.${minor}" /&amp;gt;
&amp;lt;capability name="activexcontrols" value="true" /&amp;gt;
&amp;lt;capability name="backgroundsounds" value="true" /&amp;gt;
&amp;lt;capability name="cookies" value="true" /&amp;gt;
&amp;lt;capability name="css1" value="true" /&amp;gt;
&amp;lt;capability name="css2" value="true" /&amp;gt;
&amp;lt;capability name="ecmascriptversion" value="1.2" /&amp;gt;
&amp;lt;capability name="frames" value="true" /&amp;gt;
&amp;lt;capability name="javaapplets" value="true" /&amp;gt;
&amp;lt;capability name="javascript" value="true" /&amp;gt;
&amp;lt;capability name="jscriptversion" value="5.0" /&amp;gt;
&amp;lt;capability name="supportsCallback" value="true" /&amp;gt;
&amp;lt;capability name="supportsFileUpload" value="true" /&amp;gt;
&amp;lt;capability name="supportsMultilineTextBoxDisplay" value="true" /&amp;gt;
&amp;lt;capability name="supportsMaintainScrollPositionOnPostback" value="true" /&amp;gt;
&amp;lt;capability name="supportsVCard" value="true" /&amp;gt;
&amp;lt;capability name="supportsXmlHttp" value="true" /&amp;gt;
&amp;lt;capability name="tables" value="true" /&amp;gt;
&amp;lt;capability name="vbscript" value="true" /&amp;gt;
&amp;lt;capability name="w3cdomversion" value="1.0" /&amp;gt;
&amp;lt;capability name="xml" value="true" /&amp;gt;
&amp;lt;capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" /&amp;gt;
&amp;lt;/capabilities&amp;gt;
&amp;lt;/browser&amp;gt;
&amp;lt;/browsers&amp;gt;
&lt;/pre&gt;
&lt;p&gt;This will match generic Mozilla compatible browsers and spiders with user-agents strings such as:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) &lt;/li&gt;
    &lt;li&gt;Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) &lt;/li&gt;
    &lt;li&gt;Mozilla/5.0 (compatible; AbiLogicBot/1.0; +http://www.abilogic.com/bot.html) &lt;/li&gt;
    &lt;li&gt;Mozilla/5.0 (compatible; AnyApexBot/1.0; +http://www.anyapex.com/bot.html) &lt;/li&gt;
    &lt;li&gt;Mozilla/5.0 (compatible; BecomeBot/3.0; MSIE 6.0 compatible; +http://www.become.com/site_owners.html) &lt;/li&gt;
    &lt;li&gt;Mozilla/5.0 (compatible; MojeekBot/2.0; http://www.mojeek.com/bot.html) &lt;/li&gt;
    &lt;li&gt;Mozilla/5.0 (compatible; Scrubby/2.2; +http://www.scrubtheweb.com/) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Other Notes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The MSNBOT also never had this problem because it like the original Googlebot string was never detected and thus received the "default.browser" file settings which support the cookies.&lt;/p&gt;
My solution is not a complete fix, I think Microsoft could have done one thing better here. Because the browser string goes into the "mozilla.browser" file, they need another level where when it knows its Mozilla/5.0 compliant it gets the appropriate defaults before it starts to figure out exactly what browser it is. Even though with this approach the exact browsing useragent wouldn't be established, it would at least support future browsers claiming to be compliant at a higher level then just "Mozilla".
&lt;p&gt;&lt;strong&gt;Downloads&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.kowitz.net/files/genericmozilla5.zip"&gt;genericmozilla5.browser&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; &lt;/pre&gt;
&lt;pre&gt; &lt;/pre&gt;&lt;img src="http://kowitz.net/aggbug/64.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Brendan Kowitz</dc:creator>
            <guid>http://kowitz.net/archive/2006/12/11/asp.net-2.0-mozilla-browser-detection-hole.aspx</guid>
            <pubDate>Mon, 11 Dec 2006 02:58:54 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/64.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2006/12/11/asp.net-2.0-mozilla-browser-detection-hole.aspx#feedback</comments>
            <slash:comments>11</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/64.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/64.aspx</trackback:ping>
        </item>
        <item>
            <title>KHTML, Webkit, Swift</title>
            <link>http://kowitz.net/archive/2006/08/22/khtml-webkit-swift.aspx</link>
            <description>
		&lt;p&gt; I found this project the other day while I was searching for something about kde, it's the &lt;a title="" href="http://www.getswift.org/" target=""&gt;Swift&lt;/a&gt; web browser. Swift is a shell for the Win32 port from the open source &lt;a title="" href="http://webkit.opendarwin.org/" target=""&gt;WebKit&lt;/a&gt; project. WebKit is the rendering engine used in Safari and Shiira, which is based on the source from the Linux rendering engine KHTML used in browsers such as &lt;a title="" href="http://www.konqueror.org/" target="_blank"&gt;Konqueror&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One thing that I've always admired about the output from Safari is the smooth aliased appearance of the page and in particular the page text. Couple this with KHTML's standards complaint track record Swift may be a neat little browser some day in the future.&lt;/p&gt;
		&lt;p&gt;
				&lt;img alt="Webkit windows, the Swift web browser" hspace="0" src="http://kowitz.net/Data/Images/webkit_swift_for_windows_comp.jpg" align="baseline" border="1" /&gt;
		&lt;/p&gt;
&lt;img src="http://kowitz.net/aggbug/56.aspx" width="1" height="1" /&gt;</description>
            <guid>http://kowitz.net/archive/2006/08/22/khtml-webkit-swift.aspx</guid>
            <pubDate>Mon, 21 Aug 2006 17:37:43 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/56.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2006/08/22/khtml-webkit-swift.aspx#feedback</comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/56.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/56.aspx</trackback:ping>
        </item>
        <item>
            <title>TrekXP, A Concept and Initial Idea</title>
            <link>http://kowitz.net/archive/2006/06/07/trekxp-a-concept-and-initial-idea.aspx</link>
            <description>
		&lt;p&gt;
				&lt;strong&gt;Foreword:&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="/data/Images/IssueTrekXP01.jpg"&gt;
						&lt;img alt="" hspace="0" src="http://kowitz.net/Data/Images/issuetrekxp_small.jpg" align="right" border="1" /&gt;
				&lt;/a&gt;Below is a description of a bug tracking and project management concept that I think would help handle business driven development for an internal software development unit. It is understandable that IT will of course be needed to make recommendations (forceful decisions in some cases) over what needs to be developed next, however in general the overall product should mainly be driven by the user's highest priorities and desired features.&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Description:&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;There seems to be a lot of bug tracking software out there, however, I'm struggling to find an extensible package that properly incorporates some kind of XP model. &lt;/p&gt;
		&lt;p&gt;TrekXP is an issue management and development tool focused around the XP model, this allows for proper facilitation of Use Cases, Iterations and Acceptance Testing. Issue tracking will also be built in along side this and will more focus towards helping the developers manage technical aspects. TrekXP will use this issue data and progress information to update the project timeline and provide statistics for the set iterations and use cases available to the customer side.&lt;/p&gt;
		&lt;p&gt;An actual product or interim release could be set up as a milestone, a milestone may contain many iterations and an iteration can contain many use cases. &lt;/p&gt;
		&lt;p&gt;Both an iteration and milestone are able to be given set timeframes, this correlates directly with the time estimates a developer has given to each use case. The goal of this is to create iterations that are realistic and achievable. &lt;/p&gt;
		&lt;p&gt;This setup will allow the customer role to be involved during the entire development process leading up to a milestone release.&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Areas that need work:&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;I'd have to say I'm not entirely sure my model will satisfy the requirement for proper Use Acceptance Testing or time tracking.  I think I'll need to work through this some more.&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Some of the reports that should hopefully be extractable:&lt;/strong&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Current open tickets 
&lt;/li&gt;
				&lt;li&gt;Tickets by developer 
&lt;/li&gt;
				&lt;li&gt;... All other ticket statuses and options... 
&lt;/li&gt;
				&lt;li&gt;Predicted completion date vs specified date 
&lt;/li&gt;
				&lt;li&gt;Team efficiency 
&lt;/li&gt;
				&lt;li&gt;Team velocity 
&lt;/li&gt;
				&lt;li&gt;Percentage Project/Milestone/Iteration/Usecase/Ticket completed &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
				&lt;strong&gt;Related Links:&lt;/strong&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;
						&lt;a href="http://www.edgewall.com/trac/"&gt;Trac&lt;/a&gt; - Trac is a great project management tool that uses a simplistic approach.  It also incudes some great features such as a Wiki and integration with SVN. 
&lt;/li&gt;
				&lt;li&gt;
						&lt;a href="http://www.xplanner.org/index.html"&gt;XPlanner&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
						&lt;a href="http://www.scrumworks.com/"&gt;Scrum&lt;/a&gt;
				&lt;/li&gt;
		&lt;/ul&gt;
&lt;img src="http://kowitz.net/aggbug/49.aspx" width="1" height="1" /&gt;</description>
            <guid>http://kowitz.net/archive/2006/06/07/trekxp-a-concept-and-initial-idea.aspx</guid>
            <pubDate>Wed, 07 Jun 2006 01:51:31 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/49.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2006/06/07/trekxp-a-concept-and-initial-idea.aspx#feedback</comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/49.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/49.aspx</trackback:ping>
        </item>
        <item>
            <title>Online Presence Webpart</title>
            <link>http://kowitz.net/archive/2006/05/27/online-presence-webpart.aspx</link>
            <description>
		&lt;p&gt;
        You may have noticed that over the past few weeks I have been trying to build more
        interactive elements into this blog, some of these include.&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Most viewed posts webpart.&lt;/li&gt;
				&lt;li&gt;Rate a post.&lt;/li&gt;
				&lt;li&gt;Highest Rated posts webpart.&lt;/li&gt;
				&lt;li&gt;Concurrent user indicator.&lt;/li&gt;
				&lt;li&gt;MSN client, online / offline status.&lt;/li&gt;
				&lt;li&gt;Sessions per hour graph. &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
        My intention was that this blog would start to expose more of the interesting content
        and create a slight online presence awareness by subtly reacting to how it is interacted
        with.&lt;/p&gt;
		&lt;p&gt;
        Most of the features I just listed are part of a Sqlite stats database that I’ve
        been logging certain sessions/hits/ratings to. I hope to make this available in
        the near future with a slightly improved version of the Sqlite datalayer.&lt;/p&gt;
		&lt;p&gt;
        But for now here is how to install the code I am using to control the MSN client
        and a preview of the Concurrent user indicator.&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;
            How to install this webpart.&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Step 1:&lt;/strong&gt; Create yourself a new ‘bot’ msn account that your website
        will use, than add yourself to the bot’s contact list.&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Step 2:&lt;/strong&gt; Add these 2 events to your Global.asax file&lt;/p&gt;
		&lt;font color="#0000ff"&gt;protected&lt;/font&gt;
		&lt;font color="#0000ff"&gt;void&lt;/font&gt; Session_OnStart()&lt;br /&gt;
    {
    &lt;br /&gt;
    kowitz.SingleUserBlog.Services.&lt;font color="#008080"&gt;OnlineUsers&lt;/font&gt; RecordUser(Session.SessionID);&lt;br /&gt;
    kowitz.WebsiteMSN.&lt;font color="#008080"&gt;MSNInstance&lt;/font&gt;.SignOn();&lt;br /&gt;
    }
    &lt;p&gt;&lt;font color="#0000ff"&gt;protected&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; Session_OnEnd()&lt;br /&gt;
    {&lt;br /&gt;
    kowitz.SingleUserBlog.Services. &lt;font color="#008080"&gt;OnlineUsers&lt;/font&gt;.DeleteUser(Session.SessionID);&lt;br /&gt;&lt;font color="#0000ff"&gt;   if&lt;/font&gt; (kowitz.SingleUserBlog.Services.&lt;font color="#008080"&gt;SqliteBlogStatRecorder&lt;/font&gt;.ConcurrentUsers() &amp;lt;= 0)&lt;br /&gt;
      {&lt;br /&gt;
        kowitz.WebsiteMSN.&lt;font color="#008080"&gt;MSNInstance&lt;/font&gt; SignOff();&lt;br /&gt;
      }
    &lt;br /&gt;
    }&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt;  Copy the webpart control into the Webparts folder.
        Copy the images into your images directory and copy the two dlls (kowitz.WebsiteMSN.dll
        and XihSolutions.DotMSN.dll) into your Bin directory.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Add the webpart to your Masterpage’s catalogue zone.&lt;/p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;uc1&lt;/font&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;font color="#800000"&gt;MessengerOnlinePresence&lt;/font&gt;&lt;font color="#ff0000"&gt;ID&lt;/font&gt;&lt;font color="#0000ff"&gt;="MessengerOnlinePresence1"&lt;/font&gt;&lt;font color="#ff0000"&gt;Title&lt;/font&gt;&lt;font color="#0000ff"&gt;="Messenger Online Presence"&lt;/font&gt;&lt;font color="#ff0000"&gt;runat&lt;/font&gt;&lt;font color="#0000ff"&gt;="server"/&amp;gt;&lt;/font&gt;&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Add this to your BlogConfiguration.xml file:&lt;/p&gt;&lt;font color="#0000ff"&gt;
        &amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;MyMSNAccount&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
    MyMSNAccount@hotmail.com &lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;MyMSNAccount&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br /&gt;
        &amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;BotMSNAccount&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;
    msnbot@mywebsite.net&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;BotMSNAccount&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br /&gt;
        &amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;BotMSNPassword&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;mybotspassword&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;BotMSNPassword&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;p&gt;&lt;strong&gt;Step 6,&lt;/strong&gt; Allowing your bot to message you when someone leaves feedback:
                    Add this line to the
                
    &lt;font color="#0000ff"&gt;void &lt;/font&gt;CommentForm1_CommentAdded() function
        (just after the call to "&lt;font color="#008080"&gt;Notifications&lt;/font&gt;.NotifyAdministrator(subject,
    body);") in your Posts.aspx page.&lt;br /&gt;
    kowitz.WebsiteMSN.&lt;font color="#008080"&gt;MSNInstance&lt;/font&gt;.SendMeAMessage(body);&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Finally&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;
        Your blog should now be logging onto MSN when there is at least 1 active session
        on your site.&lt;/p&gt;&lt;p&gt;
        As I mentioned before, a lot more of the things I’ve added are part of the Sqlite
        stats db / blog datalayer I’ve been making and hopefully I’ll also be releasing
        this soon.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="/files/BlogWebsiteMSN.zip"&gt;MessengerOnlinePresence webpart&lt;/a&gt;&lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/47.aspx" width="1" height="1" /&gt;</description>
            <guid>http://kowitz.net/archive/2006/05/27/online-presence-webpart.aspx</guid>
            <pubDate>Fri, 26 May 2006 21:30:10 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/47.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2006/05/27/online-presence-webpart.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/47.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/47.aspx</trackback:ping>
        </item>
        <item>
            <title>Your Blog has signed-in</title>
            <link>http://kowitz.net/archive/2006/05/21/your-blog-has-signed-in.aspx</link>
            <description>
		&lt;p&gt;
				&lt;img alt="You blog has signed-in" hspace="0" src="http://kowitz.net/Data/Images/www_signin.jpg" align="right" border="0" /&gt;Today I was browsing the website &lt;a href="http://www.programmableweb.com/apilist"&gt;ProgrammableWeb&lt;/a&gt;, which lists the Web APIs by a lot of well known sites. One of the things that caught my eye was MSN, and then I noticed they had a listing for Messenger. After clicking details I soon found it was only a description of how Javascript can invoke a chat window from the installed messenger client. &lt;/p&gt;
		&lt;p&gt;I wanted to take this idea further and maybe integrate something Messengery into SUB. After a single search I come across &lt;a href="http://www.xihsolutions.net/dotmsn/"&gt;DotMSN&lt;/a&gt;, a C# library for Messenger. So&amp;amp; as an experiment I've integrated the library into SUB. When someone begins to browse my site (like you are now), the first person there invokes the blog to sign-in. After the blog has signed in, it then checks the accounts in its contact list to check if I'm online, so without doing anything, you know if I'm on the net, and I know somebody is on my blog. &lt;/p&gt;
		&lt;p&gt;So how can we communicate? Well for now I've added some functionality into the comments event, when you leave a comment, SUB will send it via Messenger to me as well as to my set up email account as normal. &lt;/p&gt;
		&lt;p&gt;I guess there are limitless things you could do with a blog that signs into msn but I think I'll leave it at that for now and see how it goes. What do you think? &lt;/p&gt;
		&lt;p&gt;
				&lt;img alt="Your blog has sent you an instant message" hspace="0" src="http://kowitz.net/Data/Images/comment_by_msn.jpg" border="0" /&gt;
		&lt;/p&gt;
&lt;img src="http://kowitz.net/aggbug/46.aspx" width="1" height="1" /&gt;</description>
            <guid>http://kowitz.net/archive/2006/05/21/your-blog-has-signed-in.aspx</guid>
            <pubDate>Sat, 20 May 2006 23:20:48 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/46.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2006/05/21/your-blog-has-signed-in.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/46.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/46.aspx</trackback:ping>
        </item>
        <item>
            <title>Webparts without SqlExpress or SqlServer</title>
            <link>http://kowitz.net/archive/2006/05/01/webparts-without-sqlexpress-or-sqlserver.aspx</link>
            <description>		&lt;p&gt;One of the things that has been annoying me for some time about Webparts is that silly dependency on SqlExpress/SqlServer. My webhosting at Jumba comes with MySQL or something and not SqlServer. So up until this point to get around the dependency on SqlServer I simply disabled all the calls from SqlBlogPersonalizationProvider and that did the trick, but I had to manually do all the layout stuff and couldn’t use the webparts properly. A while ago when Microsoft released the source code for the old &lt;a href="http://msdn.microsoft.com/asp.net/downloads/providers/default.aspx"&gt;AccessPersonalizationProvider from Beta 1&lt;/a&gt; I thought I’d come back and address this issue. &lt;/p&gt;
		&lt;p&gt;Here’s what happened. &lt;br /&gt;I plugged the Access providers into SUB, it all compiled started to run, then Bang! It all broke. Apparently I need an existing Access database with the correct schema and tables. I’m sure this wouldn’t have been very difficult to put together but I don’t have that much time anymore. &lt;/p&gt;
		&lt;p&gt;Fortunately I found this &lt;a href="http://weblogs.asp.net/dr.netjes/archive/2005/03/10/391621.aspx"&gt;blog entry where Dion &lt;/a&gt;provides details on how to store the serialized byte array that the provider outputs as a Base64 string in the aspx page. I didn’t exactly want the page modifying itself so I simply modified it to store all the goodies in an Xml document in the App_Data folder. &lt;/p&gt;
		&lt;p&gt;Yey, so now I can use the Shared-Scope webpart features without SqlServer. Another advantage of this is my Xml document is around 5kb where I know the starting size for that SqlExpress db is 10mb. In future I would like to get a portable database solution working such as the Access one or even a Sqlite version.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="/files/source/XmlFilePersonalizationProvider.cs.txt"&gt;View XmlFilePersonalizationProvider Source&lt;/a&gt;
		&lt;/p&gt;
&lt;img src="http://kowitz.net/aggbug/41.aspx" width="1" height="1" /&gt;</description>
            <guid>http://kowitz.net/archive/2006/05/01/webparts-without-sqlexpress-or-sqlserver.aspx</guid>
            <pubDate>Mon, 01 May 2006 11:34:13 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/41.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2006/05/01/webparts-without-sqlexpress-or-sqlserver.aspx#feedback</comments>
            <slash:comments>19</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/41.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/41.aspx</trackback:ping>
        </item>
        <item>
            <title>Photocasting and Crazy Stick People</title>
            <link>http://kowitz.net/archive/2006/04/02/photocasting-and-crazy-stick-people.aspx</link>
            <description>&lt;p&gt;When Apple release iLife '06 it included a "feature" in iPhoto called photocasting (similar to the all successful podcasting).  So basically I'm guessing it's just iPhoto subscribing to some rss feed right?  I was initially interested in how this worked, so I've had a quick google search to see what sorts of things come up.  Here the summary of a user that was posted on ones of Apple's mailing lists:&lt;/p&gt;
&lt;p&gt;"To sum up, the "photocasting" feature centers around a single&lt;br /&gt;undocumented extension element in a namespace that doesn't need to be&lt;br /&gt;declared.  iPhoto 6 doesn't understand the first thing about HTTP, the&lt;br /&gt;first thing about XML, or the first thing about RSS.  It ignores&lt;br /&gt;features of HTTP that Netscape 4 supported in 1996, and mis-implements&lt;br /&gt;features of XML that Microsoft got right in 1997.  It ignores 95% of&lt;br /&gt;RSS and Atom and gets most of the remaining 5% wrong.", &lt;a href="http://lists.apple.com/archives/syndication-dev/2006/Jan/msg00020.html"&gt;http://lists.apple.com/archives/syndication-dev/2006/Jan/msg00020.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A comment on that post also mentions that Flickr is able to output iPhoto rss streams.  So my investigation ended when I got distracted and started browsing through the interesting photos links. Here's a sample of an interesting collection of crazy signs I came across:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/groups/stickfiguresinperil/pool/" target="_blank"&gt;&lt;img alt="Stick Figures in Peril" hspace="0" src="http://www.kowitz.net/Attachment.ashx?id=crazy_stick_people.jpg" align="baseline" border="0" /&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Seems like its not a good day to be a stick person.  &lt;/p&gt;
&lt;p&gt;As for photocasting, I think I'll be leaving iPhoto alone on this one.  I think just a simple blog producing standard rss has this area covered.  The only convenience Apple has provided is the fact that it imports directly into iPhoto which means you can do other funky iPhoto things, but if you don't own a Mac, that's pretty useless too.&lt;/p&gt;&lt;img src="http://kowitz.net/aggbug/39.aspx" width="1" height="1" /&gt;</description>
            <guid>http://kowitz.net/archive/2006/04/02/photocasting-and-crazy-stick-people.aspx</guid>
            <pubDate>Sun, 02 Apr 2006 02:57:20 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/39.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2006/04/02/photocasting-and-crazy-stick-people.aspx#feedback</comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/39.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/39.aspx</trackback:ping>
        </item>
        <item>
            <title>We have a winner</title>
            <link>http://kowitz.net/archive/2006/03/10/we-have-a-winner.aspx</link>
            <description>
		&lt;p&gt;Just an observation, and of course I'm not expecting any miracles in this department.  But from the 15 days I've had this new site running the msn.com search has indexed 74 pages (basically the entire site) and google.com is currently sitting on 3.  I must admit I had my hopes pinned on google to be the first to index everything.&lt;span style="mso-spacerun: yes"&gt;  I e&lt;/span&gt;ven went to the trouble of providing google with a &lt;a href="/GSiteMap.ashx"&gt;sitemap&lt;/a&gt;.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Oh well…I guess in terms of speed of inclusion into a search engine, we have a winner…&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;img src="http://kowitz.net/aggbug/36.aspx" width="1" height="1" /&gt;</description>
            <guid>http://kowitz.net/archive/2006/03/10/we-have-a-winner.aspx</guid>
            <pubDate>Fri, 10 Mar 2006 02:00:53 GMT</pubDate>
            <wfw:comment>http://kowitz.net/comments/36.aspx</wfw:comment>
            <comments>http://kowitz.net/archive/2006/03/10/we-have-a-winner.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://kowitz.net/comments/commentRss/36.aspx</wfw:commentRss>
            <trackback:ping>http://kowitz.net/services/trackbacks/36.aspx</trackback:ping>
        </item>
    </channel>
</rss>