<?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>Circles and Crosses &#187; Announcements</title>
	<atom:link href="http://ox.no/posts/category/announcements/feed" rel="self" type="application/rss+xml" />
	<link>http://ox.no</link>
	<description>Håvard Stranden&#039;s website</description>
	<lastBuildDate>Sat, 20 Aug 2011 00:11:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>OpenID for Node.js v0.2.0 released</title>
		<link>http://ox.no/posts/openid-for-node-js-v0-2-0-released</link>
		<comments>http://ox.no/posts/openid-for-node-js-v0-2-0-released#comments</comments>
		<pubDate>Tue, 21 Jun 2011 19:58:21 +0000</pubDate>
		<dc:creator>Håvard</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://ox.no/?p=315</guid>
		<description><![CDATA[I am pleased to announce the release of OpenID for Node.js v0.2.0. It deserves a blog post since the new version is a bump of the minor version number. What does this mean to the users of the library? API &#8230; <a href="http://ox.no/posts/openid-for-node-js-v0-2-0-released">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am pleased to announce the release of OpenID for Node.js v0.2.0. It deserves a blog post since the new version is a bump of the minor version number. What does this mean to the users of the library?</p>

<h2>API changes</h2>

<p>The API of the entire thing has changed. All callbacks exposed and used by the library are now on the form <code>callback(error, args)</code>. This convention is familiar to Node.js developers, and gives us the advantage of simpler integration with other libraries, as well as a slight increase in the fidelity of error messages.</p>

<h3>What has changed?</h3>

<ul>
<li><code>authenticate</code> now expects a callback which will be called with <code>(error, authUrl)</code>. Existing code which expects <code>(authUrl)</code> will not get an authUrl (but possibly an error instead), and so authentication won&#8217;t work after upgrade until you change your code.</li>
<li><code>verifyAssertion</code> also expects a callback of the same form, which will be called with <code>(error, result)</code>. Again, existing code depends on receiving a <code>(result)</code> call, and will break.</li>
<li><code>loadAssociation</code> and <code>saveAssociation</code> must now accept a callback on the form <code>(error, result)</code> as an additional parameter. Previously, these functions were synchronous, so existing implementations will have to adapt so they call the callback rather than return.</li>
</ul>

<h2>What is new?</h2>

<p>As usual, we have fixed several bugs. The library is gaining a community, and there have been several contributions along the 0.1 release path leading up to 0.2.0. Thank you all for your participation!</p>

<p>Apart from the changes above, 0.2.0 also introduces a discovery cache for caching discovered information. This cache is used to avoid additional HTTP requests when verifying assertions from the OpenID providers. The default cache is an in-memory cache, but you can implement your own by overloading two functions:</p>

<ul>
<li><code>loadDiscoveredInformation(claimedIdentifier, callback)</code> is expected to look for and load a cached <code>provider</code> for the given <code>claimedIdentifier</code>. It is expected to call <code>callback(error, provider)</code> when finished, with either an error or a provider (duh).</li>
<li><code>saveDiscoveredInformation(provider, callback)</code> is expected to cache the given <code>provider</code>. The key for this object is <code>provider.claimedIdentifier</code>, which <code>loadDiscoveredInformation</code> uses for lookup. After saving, the function is expected to call <code>callback(error)</code> with an error if something failed, or nothing if all went well. </li>
</ul>

<p>I have been very reluctant to make these significant API changes, but the recent development, reported issues, and feature requests have convinced me that a unified API, and a more familiar API for Node.js developers, is the right way. Also, adapting to the new API is a pretty easy process. I hope you agree with me that the introduction of these changes is best in the long run.</p>
]]></content:encoded>
			<wfw:commentRss>http://ox.no/posts/openid-for-node-js-v0-2-0-released/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Diffie-Hellman support in Node.js</title>
		<link>http://ox.no/posts/diffie-hellman-support-in-node-js</link>
		<comments>http://ox.no/posts/diffie-hellman-support-in-node-js#comments</comments>
		<pubDate>Tue, 10 May 2011 11:43:07 +0000</pubDate>
		<dc:creator>Håvard</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ox.no/?p=302</guid>
		<description><![CDATA[Yay! My patch implementing support for Diffie-Hellman key exchange in Node.js has finally been merged into the Node.js master branch. This will simplify the OpenID for Node.js codebase a lot. It will also make the OpenID association phase run a &#8230; <a href="http://ox.no/posts/diffie-hellman-support-in-node-js">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yay! My patch implementing support for Diffie-Hellman key exchange in Node.js has finally been <a href="https://github.com/joyent/node/commit/9f0b1a9bc60f70b7c5c014743eb1edd69c36db76">merged into the Node.js master branch</a>. This will simplify the <a href="https://github.com/havard/node-openid">OpenID for Node.js</a> codebase a lot. It will also make the OpenID association phase run a lot faster, since the current code does Diffie-Hellman in Javascript while the Node.js crypto version does it all in native code using OpenSSL.</p>

<p>A brief API overview:</p>

<ul>
<li><code>crypto.createDiffieHellman(prime_length)</code>

<ul>
<li>Creates a Diffie-Hellman key exchange object and generates a prime of the given bit length. The generator used is <code>2</code>.</li>
</ul></li>
<li><code>crypto.createDiffieHellman(prime, encoding='binary')</code>

<ul>
<li>Creates a Diffie-Hellman key exchange object using the supplied prime. The generator used is <code>2</code>. Encoding can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>.</li>
</ul></li>
<li><code>diffieHellman.generateKeys(encoding='binary')</code>

<ul>
<li>Generates private and public Diffie-Hellman key values, and returns the public key in the specified encoding. This key should be transferred to the other party. Encoding can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>.</li>
</ul></li>
<li><code>diffieHellman.computeSecret(other_public_key, input_encoding='binary', output_encoding=input_encoding)</code>

<ul>
<li>Computes the shared secret using <code>other_public_key</code> as the other party&#8217;s public key and returns the computed shared secret. Supplied key is interpreted using specified <code>input_encoding</code>, and secret is encoded using specified <code>output_encoding</code>. Encodings can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>. If no output encoding is given, the input encoding is used as output encoding.</li>
</ul></li>
<li><code>diffieHellman.getPrime(encoding='binary')</code>

<ul>
<li>Returns the Diffie-Hellman prime in the specified encoding, which can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>.</li>
</ul></li>
<li><code>diffieHellman.getGenerator(encoding='binary')</code>

<ul>
<li>Returns the Diffie-Hellman prime in the specified encoding, which can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>.</li>
</ul></li>
<li><code>diffieHellman.getPublicKey(encoding='binary')</code>

<ul>
<li>Returns the Diffie-Hellman public key in the specified encoding, which can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>.</li>
</ul></li>
<li><code>diffieHellman.getPrivateKey(encoding='binary')</code>

<ul>
<li>Returns the Diffie-Hellman private key in the specified encoding, which can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>.</li>
</ul></li>
<li><code>diffieHellman.setPublicKey(public_key, encoding='binary')</code>

<ul>
<li>Sets the Diffie-Hellman public key. Key encoding can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>.</li>
</ul></li>
<li><code>diffieHellman.setPrivateKey(public_key, encoding='binary')</code>

<ul>
<li>Sets the Diffie-Hellman private key. Key encoding can be <code>'binary'</code>, <code>'hex'</code>, or <code>'base64'</code>.</li>
</ul></li>
</ul>

<p><strong>NOTE</strong>: The API is still subject to change.</p>

<p>I would appreciate getting a note if you actually do something useful with it. <img src='http://ox.no/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Play around with it and let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://ox.no/posts/diffie-hellman-support-in-node-js/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenID for node.js</title>
		<link>http://ox.no/posts/openid-for-node-js</link>
		<comments>http://ox.no/posts/openid-for-node-js#comments</comments>
		<pubDate>Sat, 08 Jan 2011 22:16:09 +0000</pubDate>
		<dc:creator>Håvard</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[node.js nodejs openid software library client javascript code]]></category>

		<guid isPermaLink="false">http://ox.no/?p=275</guid>
		<description><![CDATA[I am happy to announce the immediate availability of my implementation of OpenID for node.js. I&#8217;ve spent a few nights working on this, which is my first node.js library, and I finally got to the point where the library was &#8230; <a href="http://ox.no/posts/openid-for-node-js">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am happy to announce the immediate availability of my implementation of <strong>OpenID for node.js</strong>. I&#8217;ve spent a few nights working on this, which is my first node.js library, and I finally got to the point where the library was complete enough for a first public release.</p>

<h2>Installation</h2>

<p>Installing is very simple using <a href="http://npmjs.org"><code>npm</code></a>:</p>

<pre><code>npm install openid 
</code></pre>

<p>If you don&#8217;t use npm, you can of course just download and <code>require</code>. Remember dependencies from the <code>lib</code> folder, and remember adding paths to <code>require.paths</code> if necessary.</p>

<h2>Usage</h2>

<p>One of the main design goals for the library has been simplicity. Using OpenID for node.js is pretty simple, here&#8217;s a minimal sample server:</p>

<pre><code>var openid = require('openid');
var url = require('url');
var server = require('http').createServer(
    function(req, res)
    {
        var parsedUrl = url.parse(req.url, true);
        if(parsedUrl.pathname == '/verify')
        {
            // Verify identity assertion
            var result = openid.verifyAssertion(req); // or req.url
            res.writeHead(200);
            res.end(result.authenticated ? 'Success <img src='http://ox.no/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ' : 'Failure <img src='http://ox.no/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> ');
        }
        else if(parsedUrl.pathname == '/authenticate')
        {
            // Resolve identifier, associate, build authentication URL
            openid.authenticate(
                parsedUrl.query.openid_identifier, // user supplied identifier
                'http://example.com/verify', // our callback URL
                null, // realm (optional)
                false, // attempt immediate authentication first?
                function(authUrl)
                {
                    res.writeHead(302, { Location: authUrl });
                    res.end();
                });
        }
        else
        {
            // Deliver an OpenID form on all other URLs
            res.writeHead(200);
            res.end('&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;body&gt;'
                + '&lt;form method="get" action="/authenticate"&gt;'
                + '&lt;p&gt;Login using OpenID&lt;/p&gt;'
                + '&lt;input name="openid_identifier" /&gt;'
                + '&lt;input type="submit" value="Login" /&gt;'
                + '&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;');
        }
    });
server.listen(80);
</code></pre>

<h2>Source</h2>

<p>I use GitHub for source control, so you can follow <a href="http://github.com/havard">me</a> and the <a href="http://github.com/havard/node-openid">node-openid</a> repository there.</p>

<h2>Licensing</h2>

<p>OpenID for node.js is licensed under the MIT license. Details can be found in the <a href="http://github.com/havard/node-openid/raw/master/LICENSE"><code>LICENSE</code></a> file on GitHub. The library includes third-party code released under the MIT and BSD licenses, see <a href="http://github.com/havard/node-openid/raw/master/README.md">README</a> for details.</p>

<h2>Wishes for node.js</h2>

<p>I&#8217;ve come across a couple of missing features which I&#8217;d love to see in node.js in the near future:</p>

<ul>
<li>The <code>crypto</code> module should support Diffie-Hellman key exchange (OpenSSL supports it, so please provide bindings)</li>
<li>A big integer library should be available alongside the <code>crypto</code> module, and preferably seamlessly integrated with the <code>crypto</code> module &#8211; perhaps bindings to the <a href="http://gmplib.org/">GMP</a> library could suffice?</li>
<li>More seamless unit testing libraries would be good</li>
</ul>

<p>In addition, I would love to see a tailored IDE for node.js applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://ox.no/posts/openid-for-node-js/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Continuous Testing for Visual Studio</title>
		<link>http://ox.no/posts/continuous-testing-for-visual-studio</link>
		<comments>http://ox.no/posts/continuous-testing-for-visual-studio#comments</comments>
		<pubDate>Sat, 08 May 2010 00:36:27 +0000</pubDate>
		<dc:creator>Håvard</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Continuous Testing]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://ox.no/?p=161</guid>
		<description><![CDATA[The other night is was playing around with a side project. I try to use a rather strict TDD approach for these projects, and so I run my tests a lot of times as I move forward, and spend quite &#8230; <a href="http://ox.no/posts/continuous-testing-for-visual-studio">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The other night is was playing around with a side project. I try to use a rather strict TDD approach for these projects, and so I run my tests <em>a lot</em> of times as I move forward, and spend quite some time waiting for the result before I move forward. This is a tedious and frankly unnecessary manual step; what I needed was continuous testing &#8211; unit tests that test themselves continuously, making sure I don&#8217;t break anything.</p>

<p>I remembered reading about <a href="http://www.threeriversinstitute.org/junitmax/subscribe.html">JUnit Max</a> by <a href="http://www.threeriversinstitute.org/">Kent Beck</a>, a continuous testing plugin for Eclipse, that runs your unit tests in the background and unobtrusively tells you when a test fails, allowing you to do what you do best: write code. JUnit Max seems like a great thing, and now I needed the same thing for Visual Studio. A quick Google didn&#8217;t yield any add-ins, extensions or packages, so I decided to create one.</p>

<p>The result is Continuous Testing for Visual Studio, a small extension which runs your unit tests each time you build your solution, and reports failing tests to the error list so you can navigate to the line that failed and make the test pass. The extension significantly improves my workflow by removing a tedious manual step of running unit tests, so I encourage you to take it for a spin. Continuous Testing can be downloaded for <a href="/downloads/Continuous+Testing+for+Visual+Studio+2008">Visual Studio 2008</a> and <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/c074d3c6-71e2-4628-9e7c-7690e706aef4">Visual Studio 2010</a>. Future updates and versions will be announced on the <a href="/software/continuoustesting">Continuous Testing home page</a>.</p>

<p><strong>UPDATE Jun 17th, 2010</strong>: I&#8217;ve receive a lot of feedback through various solutions online. To be able to help you and/or improve Continuous Testing for Visual Studio, I need samples from you that reproduce the problems you are experiencing. Do not hesitate to leave a comment  here, and provide your e-mail address when commenting, and you will receive a reply.</p>
]]></content:encoded>
			<wfw:commentRss>http://ox.no/posts/continuous-testing-for-visual-studio/feed</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Copyable available on GitHub</title>
		<link>http://ox.no/posts/copyable-available-on-github</link>
		<comments>http://ox.no/posts/copyable-available-on-github#comments</comments>
		<pubDate>Thu, 10 Dec 2009 23:10:29 +0000</pubDate>
		<dc:creator>Håvard</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[copyable]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://ox.no/?p=144</guid>
		<description><![CDATA[People actually download and use Copyable, and they tend to use it in scenarios I haven&#8217;t used it in. This results in bug reports and patch submissions. So far, these have been given to me by e-mail or by blog &#8230; <a href="http://ox.no/posts/copyable-available-on-github">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>People actually download and use Copyable, and they tend to use it in scenarios I haven&#8217;t used it in. This results in bug reports and patch submissions. So far, these have been given to me by e-mail or by blog comment, neither of which is a particularly great way of receiving them. So after receiving another one today, I finally got around to putting Copyable on <a href="http://github.com">GitHub</a>.</p>

<p>The version I put up includes several enhancements from the latest release:</p>

<ul>
<li>It uses <code>FormatterServices.GetUninitializedObject</code> and hence does not depend on a parameterless constructor or custom instance provider (but you can of course still create an instance provider if you want to control object initialization)</li>
<li>The bug with copy semantics for already visited objects submitted by Walter Oesch has been fixed</li>
<li>The bug with inherited fields found by Alex, and the patch submitted for it, has been incorporated</li>
</ul>

<p>Bleeding edge Copyable can be found at <a href="http://github.com/havard/copyable">http://github.com/havard/copyable</a>. The clone URL is <a href="git://github.com/havard/copyable.git">git://github.com/havard/copyable.git</a>. Now go fix your own bugs! Or even better, enhance the framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://ox.no/posts/copyable-available-on-github/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Silverlight Project Template for Visual Studio 2005</title>
		<link>http://ox.no/posts/silverlight-project-template-for-visual-studio-2005</link>
		<comments>http://ox.no/posts/silverlight-project-template-for-visual-studio-2005#comments</comments>
		<pubDate>Mon, 20 Aug 2007 22:00:57 +0000</pubDate>
		<dc:creator>Håvard</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://ox.no/posts/silverlight-project-template-for-visual-studio-2005</guid>
		<description><![CDATA[For those of you who do not want to grab the Visual Studio 2008 beta and/or wait for the release, I have created a Silverlight Project Template for Visual Studio 2005. This template makes it possible to develop Silverlight solutions &#8230; <a href="http://ox.no/posts/silverlight-project-template-for-visual-studio-2005">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For those of you who do not want to grab the Visual Studio 2008 beta and/or wait for the release, I have created a Silverlight Project Template for Visual Studio 2005. This template makes it possible to develop Silverlight solutions under Visual Studio 2005. Grab the installer <a href="http://ox.no/files/SilverlightProjectTemplate.msi">here</a> if you can&#8217;t wait, or read on for further information.</p>

<!-- more -->

<p>In case you are not familiar with Silverlight, here&#8217;s the short version: Silverlight is Microsoft&#8217;s new cross-browser, cross-platform plugin for creating rich interactive applications. Silverlight implements a subset of the .NET runtime and Windows Presentation Foundation in particular. Cross-platform means Windows and Mac OS X, so there is no Linux support yet, but the Mono project are working on their own implementation of Silverlight, dubbed <a href="http://www.mono-project.com/Moonlight">Moonlight</a>.</p>

<p>What I find particularly interesting is that Silverlight implements a new runtime platform known as the DLR, which makes it possible to use (and blend) dynamic languages such as Python, Ruby, and Jscript when creating Silverlight applications. More generally, the DLR is a runtime for dynamic languages of any kind, which makes it one of the most interesting recent additions to the programming universe.</p>

<p>Longing to fiddle with Silverlight, I came across documentation on <a href="http://weblogs.asp.net/mschwarz/archive/2007/06/04/silverlight-with-visual-studio-net-2005.aspx">how to create Silverlight assemblies in Visual Studio 2005</a> written by Michael Schwarz, and created the project template based on that.</p>

<p>To ease the task of creating Silverlight projects, the template includes a wizard which asks for the path to your Silverlight installation, and remembers it for the future if it is correct. No further input is needed.</p>

<!--adsense-->

<p>Note that debugging Silverlight assemblies is not possible under Visual Studio 2005, to my knowledge. If I am wrong, let me know, and I will try to add support for out-of-the-box debugging when launching the project from Visual Studio 2005. For now, you will have to point your browser to the <code>Default.html</code> file included in each project.</p>
]]></content:encoded>
			<wfw:commentRss>http://ox.no/posts/silverlight-project-template-for-visual-studio-2005/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>&#8230;and we&#8217;re back!</title>
		<link>http://ox.no/posts/and-were-back</link>
		<comments>http://ox.no/posts/and-were-back#comments</comments>
		<pubDate>Wed, 18 Jul 2007 21:31:39 +0000</pubDate>
		<dc:creator>Håvard</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://ox.no/http:/ox.no/posts/and-were-back</guid>
		<description><![CDATA[Cross the ceiling and circle the calendar! The site is back after being down for close to 6 months. I hope you still enjoy the stuff that are here, and hope to bring you more interesting stuff in the future.]]></description>
			<content:encoded><![CDATA[<p>Cross the ceiling and circle the calendar!</p>

<p>The site is back after being down for close to 6 months. I hope you still enjoy the stuff that are here, and hope to bring you more interesting stuff in the future.</p>

<!--adsense-->
]]></content:encoded>
			<wfw:commentRss>http://ox.no/posts/and-were-back/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Master of Technology</title>
		<link>http://ox.no/posts/master-of-technology</link>
		<comments>http://ox.no/posts/master-of-technology#comments</comments>
		<pubDate>Wed, 14 Jun 2006 14:32:20 +0000</pubDate>
		<dc:creator>Håvard</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://ox.no/posts/master-of-technology</guid>
		<description><![CDATA[I delivered my master&#8217;s thesis today. To everyone I know who have delivered their thesis and completed their degree: Picture courtesy of Andreas Berg, showing some of those who have held lectures for my class through the years, each of &#8230; <a href="http://ox.no/posts/master-of-technology">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I delivered my master&#8217;s thesis today. To everyone I know who have delivered their thesis and completed their degree:</p>

<p><a href="http://ox.no/files/masters.jpg"><img src="/files/masters.jpg" alt="Gratulerer siving2006" width="450" /></a></p>

<p>Picture courtesy of Andreas Berg, showing some of those who have held lectures for my class through the years, each of them holding a letter to create the phrase &#8220;Congratulations, Masters of Technology 2006!&#8221; <img src='http://ox.no/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<!--adsense-->
]]></content:encoded>
			<wfw:commentRss>http://ox.no/posts/master-of-technology/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

