<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nurm's blog &#187; development</title>
	<atom:link href="http://norman.rasmussen.co.za/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://norman.rasmussen.co.za</link>
	<description>surfing on the bleeding edge of technology, food, and spirituality</description>
	<lastBuildDate>Mon, 15 Feb 2010 00:01:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>blog.unpickle()</title>
		<link>http://norman.rasmussen.co.za/154/blog-unpickle/</link>
		<comments>http://norman.rasmussen.co.za/154/blog-unpickle/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 22:50:16 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[weblinks]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/?p=154</guid>
		<description><![CDATA[It's been a while, a long while.  This post is a summary of my professional, spiritual, nutritional and personal life over the last 2 and a bit years.  Read the article for the full impact, but if you're lazy, here's the short version: Changed jobs, found the <a href="http://modernmysteryschool.com/">Mystery School</a>, I exercise (and kick-ass), I eat better, and I got married!]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:6ca64f62982b3f9d93f6132911ca547a69906ec3'><p>It&#8217;s been a while, a long while.  This post is a summary of my professional, spiritual, nutritional and personal life over the last 2 and a bit years.</p>
<p>The last serious set of blogging I did was about two years ago before I left Open Box Software (<a href="http://www.openboxsoftware.co.za/">hip south african site</a>, <a href="http://www.openboxsoftware.com/">boring international site</a>) to join <a href="http://www.informationlogistics.co.za/">Information Logistics</a>.  I moved from company which had just passed the 50 person mark (busy shifting from being a big-small company to a small-medium company), to a company of 4 (of which I was the fourth).  (Re)learning how to work in a small company has been a challenging experience &#8211; it&#8217;s been interesting to see how the two companies differ and where they are the same.</p>
<p>At the same time, I&#8217;ve been evolving spiritually: quite serendipitously I came across the only open ancient mystery school in about October of 2006 (via Caroline, see below if you&#8217;re wondering who this is).  The <a href="http://www.rmmsint.com/">Rocky Mountain Mystery School</a> has recently relaunched as the <a href="http://modernmysteryschool.com/">Modern Mystery School</a> and over the last two and a bit years I&#8217;ve found that the ideas and teachings they offer have significant value in my life.  Towards the end of 2006 I was frustrated that there wasn&#8217;t anything important to do in the world, I guess you could phrase it as: What is my purpose in life?  Two years later, the answer to that question is not much clearer, but I am more certain about Who I am, and What I am, Where I came from, and Where I&#8217;m going.  Starting to answer the former question is a lot easier when you can orient yourself with the latter four.  Today I&#8217;m an initiated Adept, Teacher and Ritual Master, and can offer this amazing life changing empowerment called the <a href="http://modernmysteryschool.com/service_dna_activation.html">22-strand DNA activation</a>.</p>
<p>In January 2007, I started Kung Fu at the <a href="http://www.cmahc.co.za/">Chinese Martial Arts and Health Center</a> in Obs, Cape Town, and between Kung Fu and Tai Chi (which I&#8217;d already been doing for about 6 months with a private acupuncture practitioner in Wynberg) I&#8217;m amazed at how much I&#8217;ve developed physically and mentally over the last two years.  Martial Arts (taught correctly) can give you an amazing appreciation for the human body and it&#8217;s capabilities.  Traditional western upbringings lack the depth of body knowledge that eastern culture seems to be ingrained with.  I grade to Yellow (about ~2.5 years into system) in May <img src='http://norman.rasmussen.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>September 2007 saw Caroline and I educating ourselves about <a href="http://en.wikipedia.org/wiki/Raw_veganism">Raw Food</a> via the <a href="http://www.superfoods.co.za/elements.htm">Elements of Health</a> course run by <a href="http://www.superfoods.co.za/">Soaring Free Superfoods</a>.  I&#8217;d already been vegetarian for about 4 years, so the transition to Raw Vegan wasn&#8217;t hard.  I found that after going raw, my cravings for protein (about 4 burger patties/sausages per day) disappeared completely.  I also dropped about 10 kg in a few months, and settled at about my perfect weight!  (No change in exercise, this was only due to change in diet).  Recently movies such as <a href="http://www.rawfor30days.com/">Simply Raw</a> and <a href="http://www.foodmatters.tv/">Food Matters</a> are starting to break into the more public consciousness, but it&#8217;s a slow process.  Raw may not be for everyone, but the sheer number of uninformed people who think that Diabetes, Cancer, Heart Disease, Depression, etc are untreatable is staggering.  We now get mostly all of our food from <a href="http://www.ethical.org.za/">The Ethical Co-op</a>, topping up on essentials from the <a href="http://www.woolworths.co.za/">Wollies </a>organic section, and once a month we visit <a href="http://www.picknpay.co.za/">Pick n Pay</a> for non-food items.</p>
<p>I proposed to Caroline in October 2007 (during our first <a href="http://www.modernmysteryschool.com/school_kabbalah.html">Kabbalah</a> retreat weekend), and we set the date for November 2008, most of 2008 was spent going up our second Kabbalah tree, and sorting out wedding arrangements.  The wedding was held at the picturesque <a href="http://www.picardie.co.za/">Picardie </a> guest farm in Suider Paarl and was amazing.  Honeymoon was a week in Mozambique at the <a href="http://www.pestana.com/hotels/en/hotels/africa/InhacaHotels/Inhaca/Home/">Pestana Inhaca Lodge</a> and was breathtaking (even though the commute there was a little painful).</p>
<p>Looking forwards, there&#8217;s so much work to do, that I have to be ruthless in deciding exactly what&#8217;s important and what&#8217;s not,  I have choice and I everything I choose to do I have fun doing!  I hope to bring some of that enthusiasm to the rest of Cape Town, and South Africa and the World.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/154/blog-unpickle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I call dibs on noticing GTalk/Yahoo integration first</title>
		<link>http://norman.rasmussen.co.za/138/i-call-dibs-on-noticing-gtalk-yahoo-integration-first/</link>
		<comments>http://norman.rasmussen.co.za/138/i-call-dibs-on-noticing-gtalk-yahoo-integration-first/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 21:46:53 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[jabber]]></category>
		<category><![CDATA[transports]]></category>
		<category><![CDATA[gtalk]]></category>
		<category><![CDATA[xmpp]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/?p=138</guid>
		<description><![CDATA[This XML was recently caught exposing a bug in xmpp.py:
&#60;presence type="unavailable" from="user@gmail.com/resource" to="yahoo.transport"
xmlns:ses="yahoogoogle:session" ses:terminated="true"/&#62;
also seen here and here.
The question remains: Are Google and Yahoo up to something?

]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:fbf755b6ed9de07fe37526fd626480f1bbf63aec'><p>This XML was recently <a href="http://groups.google.com/group/py-transports/browse_thread/thread/c2fe0c3d2e688170#b799d90c22fea558">caught exposing</a> a bug in <a href="http://xmpppy.sourceforge.net/">xmpp.py</a>:</p>
<blockquote><p><code>&lt;presence type="unavailable" from="user@gmail.com/resource" to="yahoo.transport"<br />
<strong>xmlns:ses="yahoogoogle:session" ses:terminated="true"</strong>/&gt;</code></p></blockquote>
<p>also seen <a href="http://jabberd2.xiaoka.com/ticket/267">here</a> and <a href="http://groups.google.com/group/google-forum-ru/browse_thread/thread/9175918d9739387e#9ed2f2329d81a227">here</a>.</p>
<p>The question remains: Are Google and Yahoo up to something?</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/138/i-call-dibs-on-noticing-gtalk-yahoo-integration-first/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Connecting to .Net 3.0/Soap1.2/WS-*/svc/WCF services from legacy .Net 2.0/Soap1.0/Soap1.1/asmx clients</title>
		<link>http://norman.rasmussen.co.za/132/connecting-to-net-30soap12ws-svcwcf-services-from-legacy-net-20soap10soap11asmx-clients/</link>
		<comments>http://norman.rasmussen.co.za/132/connecting-to-net-30soap12ws-svcwcf-services-from-legacy-net-20soap10soap11asmx-clients/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 12:43:06 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[asmx]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/?p=132</guid>
		<description><![CDATA[Use BasicHttpBinding:
The BasicHttpBinding uses HTTP as the transport for sending SOAP 1.1 messages. A service can use this binding to expose endpoints that conform to WS-I BP 1.1, such as those that ASMX clients consume. Similarly, a client can use the BasicHttpBinding to communicate with services exposing endpoints that conform to WS-I BP 1.1, such [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:4d43e098fbddfe53d7df79cf8a8223476b81fcab'><p>Use BasicHttpBinding:</p>
<blockquote><p>The BasicHttpBinding uses HTTP as the transport for sending SOAP 1.1 messages. A service can use this binding to expose endpoints that conform to WS-I BP 1.1, such as those that ASMX clients consume. Similarly, a client can use the BasicHttpBinding to communicate with services exposing endpoints that conform to WS-I BP 1.1, such as ASMX Web services or Windows Communication Foundation (WCF) services configured with the BasicHttpBinding.</p></blockquote>
<p>We came across this one at work while trying to test our brand new WCF services using standard web service test tools that have not been updated to know about Soap1.2.  I finally figured it out after I read <a href="http://geekswithblogs.net/claeyskurt/archive/2008/04/22/121508.aspx">Kurt&#8217;s Post</a> comparing BasicHttpBinding to WSHttpBinding at the packet level.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/132/connecting-to-net-30soap12ws-svcwcf-services-from-legacy-net-20soap10soap11asmx-clients/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google App Engine memcache keys</title>
		<link>http://norman.rasmussen.co.za/119/google-app-engine-memcache-keys/</link>
		<comments>http://norman.rasmussen.co.za/119/google-app-engine-memcache-keys/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 18:39:54 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[google appengine memcache]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/?p=119</guid>
		<description><![CDATA[This only works on the development web server, but it enables you to see what the keys of the memcache are.  Paste it into the Interactive Console (part of the Development Console) for instant gratification.

from google.appengine.api.apiproxy_stub_map import apiproxy
print apiproxy.GetStub(&apos;memcache&apos;)._the_cache.keys()

(before anyone asks, this only works on the development server, you can&#8217;t do this on a [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:6463ca712100d73f453cd8b9eac18f8f5c642701'><p>This only works on the <a href="http://code.google.com/appengine/docs/thedevwebserver.html">development web server</a>, but it enables you to see what the keys of the memcache are.  Paste it into the Interactive Console (part of the <a href="http://code.google.com/appengine/docs/thedevwebserver.html#The_Development_Console">Development Console</a>) for instant gratification.<br />
<code><br />
from google.appengine.api.apiproxy_stub_map import apiproxy<br />
print apiproxy.GetStub(&apos;memcache&apos;)._the_cache.keys()<br />
</code><br />
(before anyone asks, this only works on the development server, you can&#8217;t do this on a live site because of the implementation differences)<br />
update: seem that in the new sdk the cache is organised differently, so you need to add [''] like this:<br />
<code><br />
from google.appengine.api.apiproxy_stub_map import apiproxy<br />
print apiproxy.GetStub(&apos;memcache&apos;)._the_cache[&apos;&apos;].keys()<br />
</code></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/119/google-app-engine-memcache-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mirroring a subversion repository</title>
		<link>http://norman.rasmussen.co.za/112/mirroring-a-subversion-repository/</link>
		<comments>http://norman.rasmussen.co.za/112/mirroring-a-subversion-repository/#comments</comments>
		<pubDate>Fri, 13 Apr 2007 07:40:19 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/112/mirroring-a-subversion-repository/</guid>
		<description><![CDATA[Some tools like Trac require a local copy of your Subversion repository (this requirement might be fixed in a newer version of Trac I guess, but for now it&#8217;s an example).  If your server is running Subversion version 1.4 or higher then you can happily use svnsync to create a read-only mirror of the [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:20447f8c542c50eaeae70cd02e15324d6fab8358'><p>Some tools like <a href="http://trac.edgewall.org/">Trac</a> require a local copy of your Subversion repository (this requirement might be fixed in a newer version of Trac I guess, but for now it&#8217;s an example).  If your server is running Subversion version 1.4 or higher then you can happily use svnsync to create a read-only mirror of the repo, but what if it isn&#8217;t?</p>
<p>Well, then the trick is to use <a href="http://www.howtoforge.com/read_only_svn_mirror_with_svk">svk to create the read-only mirror</a>.  There&#8217;s just one catch (there always is right?)  When you init the local svk repo it writes a commit, so when you pull remote changeset #1 it commits it locally as changeset #2 (ugh, that breaks all the Trac links now).  With a bit of cunning, you can pass `-s 2` to ask svk to skip the initial commit in your source repository, and start at commit #2.</p>
<p>So the first two commits are rolled up, and committed as changeset #2, and then all following commits are imported with matching changeset numbers!</p>
<p>Things to note: You MUST mirror the root of the repository, otherwise changesets will again go out of sync.  (svnsync has the same restriction, so it&#8217;s not like svk is worse off here or anything)</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/112/mirroring-a-subversion-repository/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chromeless Meebo gets a facelift</title>
		<link>http://norman.rasmussen.co.za/108/chromeless-meebo-gets-a-facelift/</link>
		<comments>http://norman.rasmussen.co.za/108/chromeless-meebo-gets-a-facelift/#comments</comments>
		<pubDate>Tue, 02 Jan 2007 19:51:05 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[meebo]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/108/chromeless-meebo-gets-a-facelift/</guid>
		<description><![CDATA[Meebo got a facelift back in October, but I didn&#8217;t have the time to update my Chromeless Meebo Browser at the time.  I found some time this weekend to sit down and figure out what needed doing, and went ahead and did it!
The new version doesn&#8217;t really have any new features compared to the [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:6e7f52c3cec161a7403c39dd4c76da173a07cd61'><p><a href="http://www.meebo.com/">Meebo</a> got a facelift back in October, but I didn&#8217;t have the time to update my <a href="http://norman.rasmussen.co.za/chromeless-meebo/">Chromeless Meebo Browser</a> at the time.  I found some time this weekend to sit down and figure out what needed doing, and went ahead and did it!</p>
<p>The new version doesn&#8217;t really have any new features compared to the previous one:  It supports the new meebo interface better, it has a new tray icon menu, with some new options.  The biggest change is that most of the code is now written in JavaScript loaded off my server.  This means that it&#8217;s much easier to change, and to deploy directly to all you guys.  It also means it&#8217;s easier for someone else to pick up a pre-compiled copy, change a few config settings, and start tweaking the source for themself (i.e. no need to recompile the .Net code)</p>
<p>As time allows, I will be adding new features, but for now enjoy!</p>
<p>(oh, the Mozilla control doesn&#8217;t support nearly enough methods to make this version work correctly, so it&#8217;s back to IE for now <img src='http://norman.rasmussen.co.za/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> . If you&#8217;ve been using the ClickOnce installer with the Mozilla control and want to keep using Mozilla, then you&#8217;ll need to download the offline version of v6)</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/108/chromeless-meebo-gets-a-facelift/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>XMPP auth for OpenID</title>
		<link>http://norman.rasmussen.co.za/107/xmpp-auth-for-openid/</link>
		<comments>http://norman.rasmussen.co.za/107/xmpp-auth-for-openid/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 09:50:25 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/107/xmpp-auth-for-openid/</guid>
		<description><![CDATA[OpenID is a decentralized digital identity system, in which any user&#8217;s online identity is given by URL (such as for a blog or a home page) [...], and can be verified by any server running the protocol. (wikipedia)
Okay so that&#8217;s cool &#8211; the idea is that you want to sign in on a web-site that [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:150da96550c27c54ff3ede6884fd252ef157f5e1'><blockquote><p>OpenID is a decentralized digital identity system, in which any user&#8217;s online identity is given by URL (such as for a blog or a home page) [...], and can be verified by any server running the protocol. (<a href="http://en.wikipedia.org/wiki/OpenID">wikipedia</a>)</p></blockquote>
<p>Okay so that&#8217;s cool &#8211; the idea is that you want to sign in on a web-site that you&#8217;ve never seen before, so you give it your OpenID and *poof* you&#8217;re in.  As part of the package, the web-site can also request some profile information from your OpenID provider, so you don&#8217;t have to re-type it.  Lots of work has happened behind the scenes to make sure who you say you are is valid, so that the web-site can trust your OpenID.</p>
<p>Unfortunatly you still have to log into <em>your</em> OpenID provider with a username and password.  &#8220;I thought OpenID was supposed to help with this horrid multiple username and password problem&#8221;, I hear you cry &#8211; at least you (hopefully) trust your OpenID provider more than you do some abritary web-site.</p>
<blockquote><p>Unlike most single sign-on architectures, OpenID does not specify the authentication mechanism. (<a href="http://en.wikipedia.org/wiki/OpenID">wikipedia</a>)</p></blockquote>
<p>Cool! So we can pick our own.  How about a password-less authentication, that uses your instant messenger identity to confirm your OpenID?  </p>
<p>It&#8217;s actually easy, you just take a copy of the <a href="http://www.openidenabled.com/openid/php-standalone-openid-server/">PHP Standalone OpenID Server</a>, add the required <a href="http://www.openidenabled.com/openid/libraries/php">PHP OpenID library</a>, and add a sprinkle of <a href="http://www.xmpp.org/extensions/xep-0070.html">XMPP XEP-0070</a> support in form of a <a href="http://www.darkskies.za.net/~norman/jabber/openid/">patch</a>.  Bake for a short while, and be sure to <a href="http://openid.xmpp.za.net/">serve hot</a> <img src='http://norman.rasmussen.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/107/xmpp-auth-for-openid/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PreAuthenticate doesn&#8217;t</title>
		<link>http://norman.rasmussen.co.za/106/preauthenticate-doesnt/</link>
		<comments>http://norman.rasmussen.co.za/106/preauthenticate-doesnt/#comments</comments>
		<pubDate>Wed, 29 Nov 2006 15:04:44 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/106/preauthenticate-doesnt/</guid>
		<description><![CDATA[So we&#8217;ve been trying to interop with a web service at work that requires Basic authentication.  Unfortunately we get one of the following errors (depending on if we&#8217;re going via our ISA proxy server or not):

System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. &#8212;> System.IO.IOException: Unable to read data [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:4f6e2303b63d0edca384ffc8bd52e07f4593f62f'><p>So we&#8217;ve been trying to interop with a web service at work that requires Basic authentication.  Unfortunately we get one of the following errors (depending on if we&#8217;re going via our ISA proxy server or not):</p>
<ul>
<li>System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. &#8212;> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. &#8212;> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host</li>
<li>System.Net.WebException: The request failed with HTTP status 502: Proxy Error ( The specified network name is no longer available.  ).</li>
</ul>
<p>It turns out (thanks to <a href="http://www.ethereal.com/">ethereal</a>), that for some reason the .Net Framework is ignoring the &#8216;401 Access Denied&#8217; reply and assuming that the web service is usable.  Oddly enough Squid handles the request perfectly, so does just bouncing the request via another box &#8211; so there&#8217;s clearly something odd going on inside the framework.</p>
<p>So no problem, we&#8217;ll just set PreAuthenticate to true.  Except that only affects secondary requests:</p>
<p>&#8220;With the exception of the first request, the PreAuthenticate property indicates whether to send authentication information with subsequent requests to the specific Uri without waiting to be challenged by the server.&#8221;  </p>
<p><img src='http://norman.rasmussen.co.za/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /></p>
<p>The <a href="http://www.thescripts.com/forum/threadnav376018-2-10.html">solution</a> is rather hackish, but works while we wait for MS to code and test a real solution:</p>
<p><span id="more-106"></span>Paste this code into your web service proxy class, or preferably create a new file and extend the partial class.  This means your code won&#8217;t be erased when the proxy class is recreated when you update the web reference.<br />
<code><br />
protected override WebRequest GetWebRequest(Uri uri)<br />
{<br />
&nbsp;&nbsp;WebRequest webRequest = base.GetWebRequest(uri);<br />
&nbsp;&nbsp;NetworkCredential credentials = Credentials as NetworkCredential;<br />
&nbsp;&nbsp;if (credentials != null)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;string authInfo =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((credentials.Domain != null) &#038;&#038; (credentials.Domain.Length > 0) ?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;credentials.Domain + @"\" : string.Empty) +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;credentials.UserName + ":" + credentials.Password;<br />
&nbsp;&nbsp;&nbsp;&nbsp;authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));<br />
&nbsp;&nbsp;&nbsp;&nbsp;webRequest.Headers["Authorization"] = "Basic " + authInfo;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return webRequest;<br />
}<br />
</code></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/106/preauthenticate-doesnt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Live ADSL statistics</title>
		<link>http://norman.rasmussen.co.za/105/live-adsl-statistics/</link>
		<comments>http://norman.rasmussen.co.za/105/live-adsl-statistics/#comments</comments>
		<pubDate>Sat, 25 Nov 2006 18:47:21 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/105/live-adsl-statistics/</guid>
		<description><![CDATA[The SAIX ADSL User Statistics page is great (ADSL account details required). The Firefox Mimimeter plugin shows the current month&#8217;s details in you Firefox status bar, but something was lacking.  Ahhh &#8211; it&#8217;s the disclaimer of &#8220;the above data does not include any active sessions&#8221;.
So I went an wrote a little php script that [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:e7e4cc71b4891c253dc660ab17190e6cc34d0841'><p>The <a href="http://userstats.adsl.saix.net">SAIX ADSL User Statistics</a> page is great (ADSL account details required). The Firefox <a href="http://code.google.com/p/minimeter/">Mimimeter</a> plugin shows the current month&#8217;s details in you Firefox status bar, but something was lacking.  Ahhh &#8211; it&#8217;s the disclaimer of &#8220;the above data does not include any active sessions&#8221;.</p>
<p>So I went an wrote a little <a href="http://www.darkskies.za.net/~norman/scripts/userstats.phps">php script</a> that retrieves the data from the SAIX site, and adds in the current connection&#8217;s statistics. This way, the numbers in Firefox&#8217;s status bar match my real ADSL usage <img src='http://norman.rasmussen.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Changelog:</p>
<ul>
<li>v5: added logout link to make it much easier to swap between accounts</li>
<li>v4: the default month is now the month when the connection started, not the current month</li>
<li>v3: only display modified stats for the connections month</li>
<li>v2: whitespace trim for young connections</li>
<li>v1: initial release</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/105/live-adsl-statistics/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>chromeless meebo gets mozilla support</title>
		<link>http://norman.rasmussen.co.za/102/chromeless-meebo-gets-mozilla-support/</link>
		<comments>http://norman.rasmussen.co.za/102/chromeless-meebo-gets-mozilla-support/#comments</comments>
		<pubDate>Sat, 26 Aug 2006 22:43:15 +0000</pubDate>
		<dc:creator>Nurm</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[meebo]]></category>

		<guid isPermaLink="false">http://norman.rasmussen.co.za/102/chromless-meebo-gets-mozilla-support/</guid>
		<description><![CDATA[I&#8217;ve previously commented that I was working on Mozilla rendering support for my Chromeless Meebo Browser, well now it&#8217;s here.
To enable it you will need my upgraded version of the Mozilla ActiveX Control (As usual all the required files are in the distribution folder).  Source diff is attached to bugzilla bug 340277.
You will need [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:d69338ad8e8996f395badbb2b989bfa401dbfdc3'><p>I&#8217;ve <a href="http://norman.rasmussen.co.za/98/chromeless-meebo-20/#comment-3618">previously commented</a> that I was working on Mozilla rendering support for my <a href="http://norman.rasmussen.co.za/chromeless-meebo/">Chromeless Meebo Browser</a>, well now it&#8217;s here.</p>
<p>To enable it you will need my upgraded version of the <a href="http://www.iol.ie/~locka/mozilla/control.htm">Mozilla ActiveX Control</a> (As usual all the required files are in the <a href="http://norman.rasmussen.co.za/dl/meebo/">distribution folder</a>).  Source diff is attached to <a title="Mozilla ActiveX Control is unuseable as a subclassed control in .Net 2.0" href="https://bugzilla.mozilla.org/show_bug.cgi?id=340277">bugzilla bug 340277</a>.</p>
<p>You will need to hand edit the configuration file to change the Engine setting from Microsoft to Mozilla.  If you&#8217;re using ClickOnce to launch the Meebo Browser, then you can find the configuration file under &#8216;C:\Documents and Settings\YourName\Local Settings\Apps\2.0\RandomId\RandomId\Somewhere&#8217;, just look for the lastest configuration file you can find and edit that one.  I am planning to add a sort of configuration window to be able to change these settings from the frontend, once I&#8217;m happy that everything is working well.</p>
<p>Known Issues:</p>
<ul>
<li>There seems to be a problem with getting the cursor to appear in the text boxes so that you can log into you IM account.  The work around is to swap to another application (even Notepad), and then back to MeeboBrowser &#8211; sometimes I&#8217;ve had to do this two or three times to get the cursor to appear.</li>
<li>The tab key gets swallowed often, making it almost impossible to use.</li>
<li>Tooltips don&#8217;t show.</li>
<li>Clicked links don&#8217;t launch in a new browser window.  (You can right click and select &#8216;Open&#8217;, but then you&#8217;re logged out of Meebo <img src='http://norman.rasmussen.co.za/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> )</li>
</ul>
<p>These are all caused by bugs and missing code in the Mozilla ActiveX Control.  If you&#8217;d like to help out, please don&#8217;t hesitate.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://norman.rasmussen.co.za/102/chromeless-meebo-gets-mozilla-support/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
