<?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>Inadvertent incorrectness &#187; Personal</title>
	<atom:link href="http://ken.friislarsen.net/blog/category/personal/feed/" rel="self" type="application/rss+xml" />
	<link>http://ken.friislarsen.net/blog</link>
	<description>... but that doesn&#039;t matter, because I turn it into a sexy dance</description>
	<lastBuildDate>Thu, 29 Sep 2011 12:16:51 +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>ICFP Contest 2006, Team KFL</title>
		<link>http://ken.friislarsen.net/blog/2006/07/27/icfp-contest-2006-team-kfl/</link>
		<comments>http://ken.friislarsen.net/blog/2006/07/27/icfp-contest-2006-team-kfl/#comments</comments>
		<pubDate>Thu, 27 Jul 2006 11:37:39 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[SML]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/2006/07/27/icfp-contest-2006-team-kfl/</guid>
		<description><![CDATA[In 1967, during excavation for the construction of a new shopping center in Monroeville, Pennsylvania, workers uncovered a vault containing a cache of ancient scrolls. Most were severely damaged, but those that could be recovered confirmed the existence of a &#8230; <a href="http://ken.friislarsen.net/blog/2006/07/27/icfp-contest-2006-team-kfl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>In 1967, during excavation for the construction of a new shopping center in Monroeville, Pennsylvania, workers uncovered a vault containing a cache of ancient scrolls. Most were severely damaged, but those that could be recovered confirmed the existence of a secret society long suspected to have been active in the region around the year 200 BC.</em></p>
<p><em>Based on a translation of these documents, we now know that the society, the Cult of the Bound Variable, was devoted to the careful study of computation, over two millennia before the invention of the digital computer.<br />
<a href="http://www.boundvariable.org/task.shtml">&#8230;</a><br />
</em></p></blockquote>
<p>Like <a href="http://ken.friislarsen.net/blog/2005/06/27/team-what-a-summer-party-round-1/">last year</a> the prospects for my participation in the <a href="http://www.boundvariable.org">ICFP Contest</a> was not looking good.  None of my team mates from last year&#8217;s team seemed to be able to participate, and neither did I myself.  The weekend of the contest was packed with family business.  And on top of that, when the weekend arrived I was sick Friday night and Saturday.</p>
<p>However, Sunday evening I had some free time and I decided that I would take a crack a the contest just to see what it was about.  Judging from the discussion mailing-list it quite fun and interesting.  The first phase of the contest task was to implement a 14-instruction virtual machine called UM and when that was running you should use it for running the provided codex for the operating system UMIX.</p>
<p>So I registered my team KFL and started to implement my UM in SML.  The first thing I did was to implement an instruction decoder that could translate a 32-bit word into an SML datatype.  Then I wrote a function that read in a file of 32-bit words encoded in big-endian as four 8-bit words each.  And then <code>map</code>ed my decode function over the Vector of words.  For this task the SML Basis Library really shined:</p>
<pre>
fun readFile filename =
    let val dev = BinIO.openIn filename
        val all = BinIO.inputAll dev before BinIO.closeIn dev
        val words = Vector.tabulate(Word8Vector.length all div 4,
                                    fn i =&gt; Word32.fromLarge(PackWord32Big.subVec(all,i)))
    in  Vector.map decode words
    end</pre>
<p>Time spend: 1 hour.</p>
<p>Unfortunately, this did not work.  My decoding function failed after 1675 instructions or so, complaining about illegal instructions.  And indeed the 32-bit word it complained about did not seem to encode a legal instruction.  I tried to reimplement the conversion from 8-bit words to 32-bit words, in case <code>PackWord32Big</code> worked different than I thought.  But I still got the same error.  Thus, I gave up and went to bed.</p>
<p>Time spend: 2 hours.</p>
<p>Monday morning I had to see to some other things first, but then I had some time to spend on the contest.  Even after I had slept on the problem I still couldn&#8217;t figure out what was wrong.  So I asked my colleague <a href="http://itu.dk/people/panic">Arne</a> if he had 10 minutes to help me debug my program.  I explained him the problem, show him my code (actually my debug output, and then we looked at the codex in a hex-editor.  He confirmed that from my explanation, my program appeared to be working correctly, and it looked as if there was an illegal instruction in the codex, if all instructions really was encoded a single 32-word.  Hence, one or more of my assumptions had to wrong (is was easy to rule out that the codex was wrong, because more than a hundred teams were able to run the codex). Then it occurred to me, the codex was not required to only contain valid instructions, maybe the code would jump over damaged parts of the codex and part of the contest would be to repair the codex.  Thus, I changed my code to only decode instructions on demand, and kept the whole program as an array of 32-bit words.  Lo and behold  the machine was able to start running the codex!  However it failed in the self-check the codex performed. After some debugging I found one place where as I used the name of an register (registers in the UM is named by integers) as a value rather than using the value contained in the register. And now my UM was able to run the codex and the SANDmark (a debug and benchmark suite provided by the contest managers).</p>
<p>Time spend: 2 hours.</p>
<p>My first version ran the SANDmark in a bit more than 18 minutes (14 min user and 4 min sys) , 768 seconds user time according to MLton&#8217;s profiler.  Which was not to bad but I&#8217;d seen on the discussion list, that other participants had UMs that ran the SANDmark in a couple of minutes.  Thus, I decided to profile my UM to see where the time was spend.  To my surprise the top function in the profile was my decode function, a function that took a 32-bit word and translates it to an SML datatype.  Here are the first few lines of <code>decode</code> together with the helper function <code>standardRegs</code> that fetches out the register names:</p>
<pre>
fun standardRegs w =
    let open Word32
        val A = (w &lt;&lt; 0w23) &gt;&gt; 0w29
        val B = (w &lt;&lt; 0w26) &gt;&gt; 0w29
        val C = andb(w, 0w7)
    in (toInt A, toInt B, toInt C)
    end

fun decode w =
    let open Word32
        val opr = w &gt;&gt; 0w28
    in case opr of
           0w0  =&gt; CMove(standardRegs w)
         | 0w1  =&gt; ARead(standardRegs w)
         | 0w2  =&gt; AWrite(standardRegs w)
         ...</pre>
<p>And the top of my interpreter loop looked like this:</p>
<pre>
      while true do
             case spin() of
                 CMove(A,B,C) =&gt; if $C = 0w0 then ()
                                 else A &lt; - $B
               | ARead(A,B,C) =&gt; A &lt; - $$B sub (W32.toInt($C))
               | AWrite(A,B,C) =&gt; Array.update($$A, W32.toInt($B), $C)
               ...
</pre>
<p>Where <code>spin</code> is the function that reads the current word at the program counter, updates the program counter, decodes the word, and return the instruction.  But how could 19% of the time be spend in the <code>decode</code>.  I moved the call to decode from spin to my interpreter loop to aid the MLton optimisers:</p>
<pre>
      while true do
             case decode(spin()) of
</pre>
<p>This made the SANDmark 5 minutes faster wall clock time, that is 13 minutes.  Or in MLton profiler time 529 seconds. 30% improvement just for moving a function around.  Not bad.</p>
<p>Time spend: 30 minutes.</p>
<p>After this optimisation my UM was fast enough that I thought I&#8217;d try to solve some of the puzzles. So I logged into the UMIX OS using the guest account and started to poke around and collect points.  The first real puzzle was to fix a password cracker written in a weird Basic dialect that used roman numerals instead of decimal notation for integer literals (including for the line numbers).</p>
<p>Time spend: 1½ hour.  Collected points 230.</p>
<p>Then I had to go home, and while I cooked dinner (I was baking pita bread, and while the dough was rising I had time to hack) I was able to write an improved password cracker&#8212;in this weired roman numerals Basic: <a href="http://ken.friislarsen.net/blog/images/hack2.bas">hack2.bas</a>. This gained me an other 100 points, just before the contest ended (the contest ended at 18:00 in <a href="http://www.timeanddate.com/library/abbreviations/timezones/eu/cest.html">CEST</a>)</p>
<p>Time spend 45 min.  Collected points in total 330.</p>
<p>All in all not bad to make 330 points after spending only seven hours and 45 minutes of rather fragmented time.</p>
<p>After dinner I was able to gain an other 35 points by writing a list reversal program in a graphical 2D language: <a href="http://ken.friislarsen.net/blog/images/rev.2d">rev.2d</a>.  It took half an hour or so.</p>
<p>The setup for the contest was absolutely amazing and most entertaining.  My account of it here does not do it justice.  An incredible ammount of work must have gone into the preparation of it.  I&#8217;m looking forward for the final debriefing from the Contest Organizers.</p>
<p>Yesterday, I tried for fun to optimise my UM program a bit more.  Programs running on the UM are able to allocate and free arrays.  In my original implementation I used a ref to a functional Red-Black tree to keep track of the mapping from UM-pointers to arrays.  I know, not the best choice of data structure, but I was just trying to get a &#8220;got enough&#8221; UM up and running.  From the profile it was obvious that lots of time and memory was spend on keeping the Red-Black trees balanced.  Thus, I replaced this code with an array, and a free-list for reusing UM-pointers (32-bit words).  Thus, my code for managing the &#8220;heap&#8221; when from 12 lines of code (not counting the code in the Red-Black tree library) to 28 lines of code.  This small changed made the SANDmark run in 4 minutes wall clock(175 seconds of MLton profiler time) an improvement of almost 67%.  Looking at the profile, I could see that <code>decode</code> was again on top of the list (using 42% of the time).  Thus, I decided to inline <code>decode</code> and deforest the instruction datatype by hand.  This made my code 68 lines smaller, and the SANDmark ran in 2.50 minutes (134 seconds of MLton profiler time), 23% improvement. Almost four times faster than the UM I participated in the contest with.   Time spend 1½ hour.</p>
<ul>
<li>Code for the UM I participated with: <a href="http://ken.friislarsen.net/blog/images/um2.sml">um2.sml</a></li>
<li>Code with improve heap handling: <a href="http://ken.friislarsen.net/blog/images/um3.sml">um3.sml</a></li>
<li>Code with inlined decode function: <a href="http://ken.friislarsen.net/blog/images/um4.sml">um4.sml</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2006/07/27/icfp-contest-2006-team-kfl/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Team &#8220;What A Summer Party&#8221;, Round 1</title>
		<link>http://ken.friislarsen.net/blog/2005/06/27/team-what-a-summer-party-round-1/</link>
		<comments>http://ken.friislarsen.net/blog/2005/06/27/team-what-a-summer-party-round-1/#comments</comments>
		<pubDate>Mon, 27 Jun 2005 20:25:46 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/2005/06/27/team-what-a-summer-party-round-1/</guid>
		<description><![CDATA[I have hangovers. Not from partying, but from lack of sleep and bad nutrition. The contest was lots of fun. Despite that the end-result for our team was rather disappointing. Below the description I wrote for our team. The Story &#8230; <a href="http://ken.friislarsen.net/blog/2005/06/27/team-what-a-summer-party-round-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have hangovers.</p>
<p>Not from partying, but from lack of sleep and bad nutrition.  The contest was lots of fun.  Despite that the end-result for our team was rather disappointing.  Below the description I wrote for our team.</p>
<blockquote><p><strong style="font-variant: small-caps">The Story Of Team &#8220;What A Summer Party&#8221;</strong></p>
<p><strong>Round 1</strong></p>
<p>The prospect for the ICFP contest was looking bleak.  The net was down and the annual faculty summer party started an hour before the contest.  Thus, Ken, Martin, and Henning went to the party and soon forgot all about the contest.  The BBQ was sizzling hot and the beers were cold, life was good.</p>
<p>Then suddenly Carsten crashed the party and dumped a huge pile of print-outs with the frightening title &#8220;Cops &#038; Robbers, The ICFP 2005 Programming Contest Task&#8221;.  From that moment the easy life stopped. We started to gulp down huge amounts of candy, chips, and various beverages while we discussed strategies and suggestions for implementation details.  Henning had tried to refuse to participate on the team, giving hollow-sounding excuses like: 3-week old baby, twins with ear infections, and exam preparation.  But he was sucked in by the exciting discussion, and after a frantic programming session where he tried to hammer out a parser in zero time, his laptop lost the keys &#8220;P&#8221; and &#8220;L&#8221;.  The rest of us piled useful library modules into the repository.</p>
<p>Saturday, none of us spend much time on the contest.  Instead, we spend some quality time with the family, travelled to the other end of the country to party with old friends from high school, and attended unavoidable social obligations.  Henning, against all expectations, made a surprise virtual appearance and offered an almost working parser, this gave him a seat on the team, despite that it was against his wishes.</p>
<p>Sunday, we realised that we didn&#8217;t have a working cop nor a working robber.  We worked hard and was able to make our first submission with working (but non-moving) cop and robber.  And a few hours after the submission the first working robber appeared.  This robber was looting the banks like crazy (easy because the cops still didn&#8217;t move) and there was much rejoicing.</p>
<p>Monday, we just panicked.  We managed to put all the pieces for the cop together, and made the final submission just two minutes after deadline (which according the contest mailing list should be acceptable).  However, there was no end to the disappointment when we realised that the fancy cop we had assembled in the last minute still didn&#8217;t move.  After half an hour we had a stupid cop who just walk from bank to bank (making illegal moves along the way, but as we have learned from the movies that is OK for a cop to do, as long as he has good intentions).  This, rather dense, cop still managed to catch our super robber.  As I said, there was no end to the disappointment.</p>
<p>It is a good thing that there is a round two in two weeks&#8230;.</p>
<p><strong>The Team consists of the follow persons:</strong></p>
<ul>
<li> Ken Friis Larsen (Release Manager and Storyteller)</li>
<li> Martin Elsman (Protector of Good and Right)</li>
<li> Carsten Varming (Evil Mastermind)</li>
<li> Henning Niss (Cheerleader and Parser constructor)</li>
</ul>
</blockquote>
<p>Thanks for a fun weekend guys.</p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2005/06/27/team-what-a-summer-party-round-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cops and Robbers</title>
		<link>http://ken.friislarsen.net/blog/2005/06/25/cops-and-robbers/</link>
		<comments>http://ken.friislarsen.net/blog/2005/06/25/cops-and-robbers/#comments</comments>
		<pubDate>Sat, 25 Jun 2005 09:11:06 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/2005/06/25/cops-and-robbers/</guid>
		<description><![CDATA[Live update from the life of Ken. I&#8217;m currently participating in the ICFP 2005 Contest on a team of colleagues from the IT University. The task in the contest is to make robot brains for cop robots and robber robots. &#8230; <a href="http://ken.friislarsen.net/blog/2005/06/25/cops-and-robbers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Live update from the life of Ken. I&#8217;m currently participating in the <a href="http://icfpc.plt-scheme.org">ICFP 2005 Contest</a> on a team of colleagues from the <a href="http://www.itu.dk">IT University</a>.</p>
<p>The task in the contest is to make robot brains for cop robots and robber robots.  We have a bunch of wild ideas, but it is by no means clear (to me) if we&#8217;ll be able to make a competitive entry.</p>
<p>More later&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2005/06/25/cops-and-robbers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>That is the Xmas spirit</title>
		<link>http://ken.friislarsen.net/blog/2004/12/10/that-is-the-xmas-spirit/</link>
		<comments>http://ken.friislarsen.net/blog/2004/12/10/that-is-the-xmas-spirit/#comments</comments>
		<pubDate>Fri, 10 Dec 2004 21:52:14 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/?p=24</guid>
		<description><![CDATA[Today Maria took care of most of the Xmas present for the children we know. We left the presents in the trunk of our car while we had dinner, so that Kamille would see them. After Kamille was put to &#8230; <a href="http://ken.friislarsen.net/blog/2004/12/10/that-is-the-xmas-spirit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today Maria took care of most of the Xmas present for the children we know. We left the presents in the trunk of our car while we had dinner, so that Kamille would see them. After Kamille was put to bed I went out to get the presents.  What I found was our car with the smacked window to trunk and no presents.  Nice.</p>
<p>The burglars only got a bunch of children presents, mostly for younger children.  Thus, they didn&#8217;t get anything of high value, they even left the car radio.</p>
<p>Now we properly won&#8217;t have time to go out an buy new presents and send them to our friends overseas in time for Xmas. Way, way, <em>way</em> annoying. We are not looking forward to all the insurance hassle and so on.</p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2004/12/10/that-is-the-xmas-spirit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Half a year</title>
		<link>http://ken.friislarsen.net/blog/2004/09/24/half-a-year/</link>
		<comments>http://ken.friislarsen.net/blog/2004/09/24/half-a-year/#comments</comments>
		<pubDate>Fri, 24 Sep 2004 20:05:37 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/?p=16</guid>
		<description><![CDATA[These days it is six months since I started working at Laerdal Sophus. It is amazing how quickly that time has passed. So far it has been just as educational and fun as I had hoped for.]]></description>
			<content:encoded><![CDATA[<p>These days it is six months since I started working at Laerdal Sophus.  It is amazing how quickly that time has passed. So far it has been just as educational and fun as I had hoped for.</p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2004/09/24/half-a-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ida has left the country</title>
		<link>http://ken.friislarsen.net/blog/2004/09/21/ida-has-left-the-country/</link>
		<comments>http://ken.friislarsen.net/blog/2004/09/21/ida-has-left-the-country/#comments</comments>
		<pubDate>Tue, 21 Sep 2004 21:12:11 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/?p=15</guid>
		<description><![CDATA[Today my littlesister left Danmark to travel around in New Zealand for three months. I already miss her.]]></description>
			<content:encoded><![CDATA[<p>Today my littlesister left Danmark  to travel around in New Zealand for three months.  I already miss her.</p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2004/09/21/ida-has-left-the-country/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The birth of Naja</title>
		<link>http://ken.friislarsen.net/blog/2004/09/21/the-birth-of-naja/</link>
		<comments>http://ken.friislarsen.net/blog/2004/09/21/the-birth-of-naja/#comments</comments>
		<pubDate>Tue, 21 Sep 2004 21:08:48 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/?p=14</guid>
		<description><![CDATA[A bit delayed, but here is the account of Naja&#8217;s birth. Maria started to have contractions Monday (the 13&#8242;th) morning. While the contractions where painful, they where also short of of duration and irregular in frequency. In the evening Kamille &#8230; <a href="http://ken.friislarsen.net/blog/2004/09/21/the-birth-of-naja/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A bit delayed, but here is the account of Naja&#8217;s birth.</p>
<p>Maria started to have contractions Monday (the 13&#8242;th) morning.  While the contractions where painful, they where also short of of duration and irregular in frequency.  In the evening Kamille showed the first symptoms of chickenpox.</p>
<p>Tuesday morning Kamille was showing quite a few chickenpox.  Maria continued to have irregular and short of duration contractions during the day.</p>
<p>The night to Wednesday was horrible: Maria&#8217;s contractions got worse and so did Kamille&#8217;s chickenpox.  Thankfully, my parents was able to come and pick up Kamille in the morning.</p>
<p>At 11 o&#8217;clock Wednesday (the 15&#8242;th) the water broke and the contractions got worse, longer in duration, and with higher frequency.  At 12:30 we went to the hopital and at 15:10 Naja was born.   The birth went well with no complications, and the midwife and midwife student were really nice.</p>
<p align="center"><a href="http://pictures.friislarsen.net/naja-birth/img003.jpeg.html"><img src="http://ken.friislarsen.net/blog/images/img_0354-thumbnail.jpg" alt="Naja latched on to Maria" /></a></p>
<p>Naja latched on to Maria without any problems and started to suck away immediately, within 10&nbsp;mins after the birth. Naja&#8217;s weight was 3806g and she was 54cm long.</p>
<p align="center"><a href="http://pictures.friislarsen.net/naja-birth/img006.jpeg.html"><img src="http://ken.friislarsen.net/blog/images/img_0357-thumbnail.jpg" alt="Naja and Maria" /></a></p>
<p>At six o&#8217;clock Kamille, our parents and siblings came to greet Naja welcome to the world.  Kamille demanded right away to hold Naja, and that wish was granted.</p>
<p align="center"><a href="http://pictures.friislarsen.net/naja-birth/img013.jpeg.html"><img src="http://ken.friislarsen.net/blog/images/img_0365-thumbnail.jpg" alt="Kamille and Naja"/></a></p>
<p>Maria, Naja, and I spend the night at the hospital in a so-called &#8220;family-room&#8221; (Kamille wasn&#8217;t allowed at that ward because of the chickenpox.  At 9:30 Thursday morning we left the hospital and I picked Kamille up at my parents.  Dispite the chickenpox Kamille had an enourmous reserve of love for her littlesister.  The first few days was a bit stressful because of the chickenpox (Naja was an angel).  On saturday the chikenpox finally got better, and so did family life.
</p>
<p align="center"><a href="http://pictures.friislarsen.net/naja-birth/img039.jpeg.html"><img src="http://ken.friislarsen.net/blog/images/img_0391-thumbnail.jpg" alt="Kamille kissing Naja" /></a></p>
<p>I have uploaded an <a href="http://pictures.friislarsen.net/naja-birth/">album</a> with 43 pictures from the birth.</p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2004/09/21/the-birth-of-naja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tucking in early&#8230;</title>
		<link>http://ken.friislarsen.net/blog/2004/09/13/tucking-in-early/</link>
		<comments>http://ken.friislarsen.net/blog/2004/09/13/tucking-in-early/#comments</comments>
		<pubDate>Mon, 13 Sep 2004 19:58:44 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/?p=13</guid>
		<description><![CDATA[We are tucking in early tonight. Because, judging the signs, we will have to get up during the night&#8230;. Update 2004-09-14: No we did not need to get up during the night.]]></description>
			<content:encoded><![CDATA[<p>We are tucking in early tonight.  Because, judging the signs, we will have to get up during the night&#8230;.</p>
<p><strong>Update 2004-09-14:</strong> No we did not need to get up during the night. </p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2004/09/13/tucking-in-early/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing website</title>
		<link>http://ken.friislarsen.net/blog/2004/09/12/changing-website/</link>
		<comments>http://ken.friislarsen.net/blog/2004/09/12/changing-website/#comments</comments>
		<pubDate>Sun, 12 Sep 2004 20:31:36 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/?p=12</guid>
		<description><![CDATA[It is just a small change, yet it feels like a big step. This evening I made a new (sketchy) webpage in the friislarsen.net domain, and redirected my old page at the IT University to the new page. Now I &#8230; <a href="http://ken.friislarsen.net/blog/2004/09/12/changing-website/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It is just a small change, yet it feels like a big step.  This evening I made a new (sketchy) <a href="http://ken.friislarsen.net">webpage</a> in the friislarsen.net domain, and redirected my old page at the <a href="http://www.itu.dk">IT University</a> to the new page.</p>
<p>Now I just need to fill the new page with some content.</p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2004/09/12/changing-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pictures from Kamille&#8217;s birthday</title>
		<link>http://ken.friislarsen.net/blog/2004/09/02/pictures-from-kamilles-birthday/</link>
		<comments>http://ken.friislarsen.net/blog/2004/09/02/pictures-from-kamilles-birthday/#comments</comments>
		<pubDate>Thu, 02 Sep 2004 19:43:32 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://ken.friislarsen.net/blog/?p=10</guid>
		<description><![CDATA[I have uploaded a new photo album with pictures from Kamille&#8217;s birthday and two short movies with Kamille saying &#8220;thank you&#8221; to her friends from Utah who sent her a lovely dress.]]></description>
			<content:encoded><![CDATA[<p>I have uploaded a new photo album with pictures from <a href="http://pictures.friislarsen.net/kamille-3-years">Kamille&#8217;s birthday</a> and <a href="http://pictures.friislarsen.net/for-hanna-and-zoe">two short movies</a> with Kamille saying &#8220;thank you&#8221; to her friends from Utah who sent her a lovely dress.</p>
]]></content:encoded>
			<wfw:commentRss>http://ken.friislarsen.net/blog/2004/09/02/pictures-from-kamilles-birthday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

