<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>librador.com</title>
        <link>https://www.librador.com</link>
        <description>Martin Vilcans about stuff that may be interesting</description>
        <generator>Zola</generator>
        <language>en</language>
        <atom:link href="https://www.librador.com/rss.xml" rel="self" type="application/rss+xml"/>
        <lastBuildDate>Wed, 27 Dec 2023 00:00:00 +0000</lastBuildDate>
        <item>
            <title>Rust crates I used for Advent of Code 2023</title>
            <pubDate>Wed, 27 Dec 2023 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/rust-crates-i-used-for-advent-of-code/</link>
            <guid>https://www.librador.com/rust-crates-i-used-for-advent-of-code/</guid>
            <description>&lt;p&gt;It&#x27;s that time of the year when it&#x27;s time to look back and
think about how you did on this year&#x27;s
&lt;a href=&quot;https:&#x2F;&#x2F;adventofcode.com&#x2F;2023&quot;&gt;Advent of Code&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;3757e9c9dcd0a7d100.png&quot; alt=&quot;My results on Advent of Code 2023&quot;&#x2F;&gt;
&lt;&#x2F;p&gt;</description>
        </item>
        <item>
            <title>Rust&#x2F;C# hybrid in game project</title>
            <pubDate>Sat, 11 Jun 2022 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/rust-csharp-hybrid-in-game/</link>
            <guid>https://www.librador.com/rust-csharp-hybrid-in-game/</guid>
            <description>&lt;p&gt;In a game project we&#x27;re working on, we&#x27;re using
Rust for core game logic, together with Unity and C# for the visuals and user interaction.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Alt Cure - a demo for Amiga 500</title>
            <pubDate>Sun, 11 Jul 2021 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/alt-cure/</link>
            <guid>https://www.librador.com/alt-cure/</guid>
            <description>&lt;p&gt;Our demo group Five Finger Punch released the demo &lt;a href=&quot;https:&#x2F;&#x2F;www.pouet.net&#x2F;prod.php?which=89410&quot;&gt;Alt Cure&lt;&#x2F;a&gt; for the Amiga 500.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;dc0b866817e7b87b00.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;</description>
        </item>
        <item>
            <title>Programming a VR game using Rust</title>
            <pubDate>Mon, 14 Jun 2021 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/programming-a-vr-game-using-rust/</link>
            <guid>https://www.librador.com/programming-a-vr-game-using-rust/</guid>
            <description>&lt;p&gt;I was interviewed on Resolution Games&#x27; web page about &lt;a href=&quot;https:&#x2F;&#x2F;www.resolutiongames.com&#x2F;blog&#x2F;programming-a-vr-game-using-rust&quot;&gt;Programming a VR game using Rust&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Demeo launch trailer</title>
            <pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/demeo-launch-trailer/</link>
            <guid>https://www.librador.com/demeo-launch-trailer/</guid>
            <description>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;TurA7Jt284g&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;
</description>
        </item>
        <item>
            <title>My game for ZX Spectrum 48 for Ludum Dare 48</title>
            <pubDate>Tue, 27 Apr 2021 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/my-game-for-zx-spectrum-48-for-ludum-dare-48/</link>
            <guid>https://www.librador.com/my-game-for-zx-spectrum-48-for-ludum-dare-48/</guid>
            <description>&lt;p&gt;I made a game for ZX Spectrum 48 for the Ludum Dare 48 competition:
&lt;a href=&quot;https:&#x2F;&#x2F;ldjam.com&#x2F;events&#x2F;ludum-dare&#x2F;48&#x2F;crown-of-the-mountain-king&quot;&gt;Crown of the Mountain King&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;img src=&quot;&#x2F;images&#x2F;blog&#x2F;crown-of-the-mountain-king.gif&quot; &#x2F;&gt;
</description>
        </item>
        <item>
            <title>Whale Dive - a game for Atari 2600</title>
            <pubDate>Tue, 21 Apr 2020 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/whale-dive-a-game-for-atari-2600/</link>
            <guid>https://www.librador.com/whale-dive-a-game-for-atari-2600/</guid>
            <description>&lt;p&gt;I made this game for the Ludum Dare 46 competition:
&lt;a href=&quot;https:&#x2F;&#x2F;ldjam.com&#x2F;events&#x2F;ludum-dare&#x2F;46&#x2F;whale-dive&quot;&gt;Whale Dive&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;8372479685a49bfe00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;</description>
        </item>
        <item>
            <title>Legally Dead - my game for Ludum Dare 45</title>
            <pubDate>Tue, 08 Oct 2019 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/legally-dead-my-game-for-ludum-dare-45/</link>
            <guid>https://www.librador.com/legally-dead-my-game-for-ludum-dare-45/</guid>
            <description>&lt;p&gt;I made this game for the Ludum Dare 45 competition:
&lt;a href=&quot;https:&#x2F;&#x2F;ldjam.com&#x2F;events&#x2F;ludum-dare&#x2F;45&#x2F;legally-dead&quot;&gt;Legally Dead&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Playing the game I made as a kid in the 80&#x27;s: Ninja - You Must Kill</title>
            <pubDate>Sat, 27 Jul 2019 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/ninja-you-must-kill/</link>
            <guid>https://www.librador.com/ninja-you-must-kill/</guid>
            <description>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;OXuPSRgcpuE&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;&#x2F;iframe&gt;
</description>
        </item>
        <item>
            <title>Interview about 2018 AD - our demo for Laser 200</title>
            <pubDate>Sat, 04 May 2019 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/interview-about-2018ad/</link>
            <guid>https://www.librador.com/interview-about-2018ad/</guid>
            <description>&lt;p&gt;Me and Morbid were interviewed by
&lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;WauloK&quot;&gt;Jason Oakley&lt;&#x2F;a&gt;
about the demo Five Finger Punch made for Laser 200 which has been found now by VZ200 enthusiasts.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>2018 AD - a demo for Laser 200 (and VZ200)</title>
            <pubDate>Sun, 22 Jul 2018 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2018ad-a-demo-for-laser-200/</link>
            <guid>https://www.librador.com/2018ad-a-demo-for-laser-200/</guid>
            <description>&lt;p&gt;I found a Laser 200 at
&lt;a href=&quot;http:&#x2F;&#x2F;retrogathering.se&#x2F;&quot;&gt;Retrogathering&lt;&#x2F;a&gt;
and thought that little computer looked cute.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;c58a449f45df484f00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Naturally I wanted to code something for it,
so we in Five Finger Punch created this demo.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Rhythm Rogue - my game for Ludum Dare 41</title>
            <pubDate>Tue, 24 Apr 2018 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/rhythm-rogue-my-game-for-ludum-dare-41/</link>
            <guid>https://www.librador.com/rhythm-rogue-my-game-for-ludum-dare-41/</guid>
            <description>&lt;p&gt;I made this game for the Ludum Dare 41 competition:
&lt;a href=&quot;https:&#x2F;&#x2F;ldjam.com&#x2F;events&#x2F;ludum-dare&#x2F;41&#x2F;rhythm-rogue&quot;&gt;Rhythm Rogue&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;2627b985a0e3591d00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;</description>
        </item>
        <item>
            <title>I&#x27;m Driving My Truck - my game for Ludum Dare 40</title>
            <pubDate>Tue, 05 Dec 2017 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/im-driving-my-truck-my-game-for-ludum-dare-40/</link>
            <guid>https://www.librador.com/im-driving-my-truck-my-game-for-ludum-dare-40/</guid>
            <description>&lt;p&gt;I made this game for the Ludum Dare 40 competition:
&lt;a href=&quot;https:&#x2F;&#x2F;ldjam.com&#x2F;events&#x2F;ludum-dare&#x2F;40&#x2F;im-driving-my-truck&quot;&gt;I&#x27;m Driving My Truck&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>What we learned creating some of the most downloaded mobile VR games</title>
            <pubDate>Wed, 15 Feb 2017 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/creating-some-of-the-most-downloaded-mobile-vr-games/</link>
            <guid>https://www.librador.com/creating-some-of-the-most-downloaded-mobile-vr-games/</guid>
            <description>&lt;p&gt;Me trying to explain how we at Resolution Games create VR games at VR Connects London 2017.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Video Games Are My Life - my game for Ludum Dare 37</title>
            <pubDate>Fri, 11 Nov 2016 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/video-games-are-my-life-my-game-for-ludum-dare-37/</link>
            <guid>https://www.librador.com/video-games-are-my-life-my-game-for-ludum-dare-37/</guid>
            <description>&lt;p&gt;If you&#x27;re locked up in a room with no console, how do you play your favorite genre - a platform game?&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;76d149dc0b37348800.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;</description>
        </item>
        <item>
            <title>Euclid Geomorph - my game for Ludum Dare 35</title>
            <pubDate>Mon, 18 Apr 2016 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/euclid-geomorph-my-game-for-ludum-dare-35/</link>
            <guid>https://www.librador.com/euclid-geomorph-my-game-for-ludum-dare-35/</guid>
            <description>&lt;p&gt;Meet Euclid Geomorph, an ordinary geometric figure trying to get by in a stressful world. Some say he is square. Other know his rounded personality (he is an excellent jumper). Few know that he can be sharp and destructive. In this mood, he can smash and destroy anything not made of metal.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;21882790db62083e00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;</description>
        </item>
        <item>
            <title>Unintended acceleration - my game for Ludum Dare 34</title>
            <pubDate>Mon, 14 Dec 2015 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/unintended-acceleration-my-game-for-ludum-dare-34/</link>
            <guid>https://www.librador.com/unintended-acceleration-my-game-for-ludum-dare-34/</guid>
            <description>&lt;p&gt;Oh no! The accelerator on my car is stuck! I can only control it by turning.&lt;&#x2F;p&gt;
&lt;p&gt;I can choose whether I&#x27;ll just make the car stop and save myself, or I can choose to finish my job of collecting 40 orange cones. One small success, or a huge accomplishment!&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The Path of Least Resentment - my game for Ludum Dare 32</title>
            <pubDate>Mon, 20 Apr 2015 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/the-path-of-least-resentment-my-game-for-ludum-dare-32/</link>
            <guid>https://www.librador.com/the-path-of-least-resentment-my-game-for-ludum-dare-32/</guid>
            <description>&lt;p&gt;I made this game for the Ludum Dare 32 competition:
&lt;a href=&quot;http:&#x2F;&#x2F;ludumdare.com&#x2F;compo&#x2F;ludum-dare-32&#x2F;?action=preview&amp;amp;uid=10862&quot;&gt;The Path of Least Resentment&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Virtual reality tricks: Asynchronous timewarp and late latching</title>
            <pubDate>Tue, 10 Mar 2015 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2015/03/10/Asynchronous-timewarp-and-late-latching/</link>
            <guid>https://www.librador.com/2015/03/10/Asynchronous-timewarp-and-late-latching/</guid>
            <description>
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;a11d1f4c9c49a15700.jpg&quot; alt=&quot;Me trying out the Sixense STEM&quot;&#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Last week&#x27;s &lt;a href=&quot;http:&#x2F;&#x2F;www.gdconf.com&#x2F;&quot;&gt;Game Developers Conference&lt;&#x2F;a&gt;
was very much about VR.
It looks like the timing of our new startup
&lt;a href=&quot;http:&#x2F;&#x2F;www.resolutiongames.com&quot;&gt;Resolution Games&lt;&#x2F;a&gt;
is perfect.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Why I switched from Sublime to Vim</title>
            <pubDate>Wed, 24 Sep 2014 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2014/09/24/Why-I-switched-from-Sublime-to-Vim/</link>
            <guid>https://www.librador.com/2014/09/24/Why-I-switched-from-Sublime-to-Vim/</guid>
            <description>&lt;p&gt;I have been looking for the perfect text editor for quite some time.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;ve been pretty happy with &lt;a href=&quot;http:&#x2F;&#x2F;www.sublimetext.com&#x2F;&quot;&gt;Sublime&lt;&#x2F;a&gt; for a few years,
but it&#x27;s not free&#x2F;open source and doesn&#x27;t work over ssh.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Book review: The ZX Spectrum ULA: How to Design a Microcomputer</title>
            <pubDate>Fri, 05 Sep 2014 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2014/09/05/Book-review-The-ZX-Spectrum-ULA/</link>
            <guid>https://www.librador.com/2014/09/05/Book-review-The-ZX-Spectrum-ULA/</guid>
            <description>
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;89d21b96e0d2fd9300.jpg&quot; alt=&quot;Chris Smith: The ZX Spectrum ULA: How to design a Microcomputer&quot;&#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;This book was my summer reading.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Joining Dramatify</title>
            <pubDate>Thu, 04 Sep 2014 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2014/09/04/Joining-Dramatify/</link>
            <guid>https://www.librador.com/2014/09/04/Joining-Dramatify/</guid>
            <description>&lt;p&gt;So, I&#x27;m in a startup again.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Does anyone use RSS&#x2F;Atom?</title>
            <pubDate>Wed, 03 Sep 2014 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2014/09/03/Does-anyone-use-RSS-Atom/</link>
            <guid>https://www.librador.com/2014/09/03/Does-anyone-use-RSS-Atom/</guid>
            <description>&lt;p&gt;Are you reading this in a feed reader?
Maybe you&#x27;re the only one.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Variable scope in list comprehension vs. generator expression</title>
            <pubDate>Thu, 10 Jul 2014 13:00:00 +0000</pubDate>
            <link>https://www.librador.com/2014/07/10/Variable-scope-in-list-comprehension-vs-generator-expression/</link>
            <guid>https://www.librador.com/2014/07/10/Variable-scope-in-list-comprehension-vs-generator-expression/</guid>
            <description>&lt;p&gt;I just got bitten by a subtle difference between
Python&#x27;s list comprehensions and generator expressions.&lt;&#x2F;p&gt;
&lt;p&gt;First let me explain what those are,
in case you haven&#x27;t heard those terms before.&lt;&#x2F;p&gt;
&lt;p&gt;This is a &lt;em&gt;list comprehension&lt;&#x2F;em&gt;:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;[a * 2 for a in (1, 2, 3)]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This means, create a list where
for every item &lt;code&gt;a&lt;&#x2F;code&gt; in the sequence (1, 2, 3),
the corresponding value will be &lt;code&gt;a * 2&lt;&#x2F;code&gt;.
So when you run this, you&#x27;ll get:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&amp;gt;&amp;gt;&amp;gt; [a * 2 for a in (1, 2, 3)]
&lt;&#x2F;span&gt;&lt;span&gt;[2, 4, 6]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;In Python 2, this is implemented very much like a &lt;code&gt;for..in&lt;&#x2F;code&gt; loop.
The loop variable &lt;code&gt;a&lt;&#x2F;code&gt; is in scope even after the list comprehension is finished:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&amp;gt;&amp;gt;&amp;gt; a
&lt;&#x2F;span&gt;&lt;span&gt;3
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This, on the other hand, is a &lt;em&gt;generator expression&lt;&#x2F;em&gt;:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;(b * 2 for b in (1, 2, 3))
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;(The parenthesis aren&#x27;t part of the generator expression per se,
but as a generator expression has to be surrounded by parenthesis,
you certainly get that impression.)&lt;&#x2F;p&gt;
&lt;p&gt;The result of this is not a list, but a &lt;em&gt;generator&lt;&#x2F;em&gt;.
You can get the values out of a generator by applying the &lt;code&gt;list&lt;&#x2F;code&gt; function on it:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&amp;gt;&amp;gt;&amp;gt; list(b * 2 for b in (1, 2, 3))
&lt;&#x2F;span&gt;&lt;span&gt;[2, 4, 6]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The result seems to be the same,
but there is a subtle difference:
When you use a generator expression, the loop variable does not &amp;quot;leak&amp;quot; into the current scope:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&amp;gt;&amp;gt;&amp;gt; b
&lt;&#x2F;span&gt;&lt;span&gt;Traceback (most recent call last):
&lt;&#x2F;span&gt;&lt;span&gt;  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;NameError: name &amp;#39;b&amp;#39; is not defined
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I was surprised to find out this after trying to figure out why I got this strange error
in a Django application:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;TypeError: &amp;#39;class Meta&amp;#39; got invalid attribute(s): p
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The code causing this was an attempt at using Django 1.7&#x27;s new feature
where you can specify a set of default permissions.
The code went something like this:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;class MyModel(models.Model):
&lt;&#x2F;span&gt;&lt;span&gt;    class Meta:
&lt;&#x2F;span&gt;&lt;span&gt;        # Declare the available permissions
&lt;&#x2F;span&gt;&lt;span&gt;        permissions = (
&lt;&#x2F;span&gt;&lt;span&gt;            (&amp;#39;update_project&amp;#39;, &amp;#39;Can update project&amp;#39;),
&lt;&#x2F;span&gt;&lt;span&gt;            (&amp;#39;invite_to_project&amp;#39;, &amp;#39;Can invite members to project&amp;#39;),
&lt;&#x2F;span&gt;&lt;span&gt;            (&amp;#39;delete_project&amp;#39;, &amp;#39;Can delete project&amp;#39;),
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;        # Include all of the permissions in the defaults
&lt;&#x2F;span&gt;&lt;span&gt;        default_permissions = [p[0] for p in permissions]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The error was caused by the variable &lt;code&gt;p&lt;&#x2F;code&gt; leaking into the scope of the &lt;code&gt;Meta&lt;&#x2F;code&gt; class
and appearing as an attribute of it.
As Django expects all attributes of the &lt;code&gt;Meta&lt;&#x2F;code&gt; class to have some meaning,
and it doesn&#x27;t understand the meaning of &lt;code&gt;p&lt;&#x2F;code&gt;, I got the error above.
It took me some time to figure out why my little variable name
inside my little list comprehension appeared in an error message.&lt;&#x2F;p&gt;
&lt;p&gt;The solution? Use a generator expression instead of a list comprehension.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;        default_permissions = list(p[0] for p in permissions)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Alternatively, switch to Python 3, where loop variables never leak like this,
even in list comprehensions.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Class diagrams as notes to self</title>
            <pubDate>Fri, 11 Apr 2014 21:59:59 +0000</pubDate>
            <link>https://www.librador.com/2014/04/11/Class-diagrams-as-notes-to-self/</link>
            <guid>https://www.librador.com/2014/04/11/Class-diagrams-as-notes-to-self/</guid>
            <description>&lt;p&gt;Cleaning out my desk at my last day at
&lt;a href=&quot;http:&#x2F;&#x2F;www.gootechnologies.com&#x2F;&quot;&gt;Goo Technologies&lt;&#x2F;a&gt;,
I found some notes about how Amazon&#x27;s overly complex
&lt;a href=&quot;http:&#x2F;&#x2F;aws.amazon.com&#x2F;cloudformation&#x2F;&quot;&gt;CloudFormation&lt;&#x2F;a&gt;
format is constructed.&lt;&#x2F;p&gt;
&lt;p&gt;Normally, I think this is where UML (-like) diagrams belong;
scribbled on paper or a whiteboard
to explain and clarify.
Though, in this case I may have appreciated an offical diagram
to quickly get an overview of how all these classes fit together.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;4795c3ba5a6a066900.jpg&quot; alt=&quot;CloudFormation class diagram&quot;&#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;(This diagram is far from complete.)&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Configure Lenovo Thinkpad X240 trackpad in Linux Mint</title>
            <pubDate>Thu, 10 Apr 2014 18:50:00 +0000</pubDate>
            <link>https://www.librador.com/2014/04/10/Configure-Lenovo-Thinkpad-X240-Trackpad-in-Linux-Mint/</link>
            <guid>https://www.librador.com/2014/04/10/Configure-Lenovo-Thinkpad-X240-Trackpad-in-Linux-Mint/</guid>
            <description>&lt;p&gt;I recently got a new laptop,
and (as usual) it was a Lenovo Thinkpad.
This time I wanted an Ultrabook, so I chose the X240.
I&#x27;m a fan of the red pointing stick of Thinkpads
as it allows me to move the mouse without
moving my hands from the keyboard.
Unfortunately, on the X240 there are no physical mouse buttons,
except that the whole trackpad serves as one big pushbutton.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;858618ec1e1cd92400.jpg&quot; alt=&quot;Lenovo Thinkpad X240 trackpad&quot;&#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;After installing Linux Mint, I had problems clicking,
as when I clicked on the trackpad, it also registered
as a mouse movement, so I had no precision at all when clicking.&lt;&#x2F;p&gt;
&lt;p&gt;The red markings on the trackpad suggest the top part
of the trackpad is supposed to be used as buttons.
If you buy it with a pre-installed OS,
it&#x27;s probably configured that way out of the box,
but I neither wanted nor got a pre-installed OS,
so I figured out how to set it up in Linux Mint.
(The following probably applies to many other distros
such as Ubuntu.)&lt;&#x2F;p&gt;
&lt;p&gt;Just copy the following to
&lt;code&gt;&#x2F;usr&#x2F;share&#x2F;X11&#x2F;xorg.conf.d&#x2F;52-thinkpad.conf&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;Section &amp;quot;InputClass&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;  Identifier &amp;quot;Fixing clickpad buttons&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;  MatchDriver &amp;quot;synaptics&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;  # Use the top area of the trackpad as mouse buttons.
&lt;&#x2F;span&gt;&lt;span&gt;  # The meaning of these eight values are:
&lt;&#x2F;span&gt;&lt;span&gt;  # Right button: left, right, top, bottom
&lt;&#x2F;span&gt;&lt;span&gt;  # Middle button: left, right, top, bottom
&lt;&#x2F;span&gt;&lt;span&gt;  Option &amp;quot;SoftButtonAreas&amp;quot; &amp;quot;60% 0 0 5% 40% 60% 0 5%&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;  # Don&amp;#39;t use the top of the trackpad for mouse movement
&lt;&#x2F;span&gt;&lt;span&gt;  Option &amp;quot;AreaTopEdge&amp;quot; &amp;quot;5%&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;EndSection
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This reserves the top 5% of the trackpad
to be used for left, middle and right mouse buttons,
while the rest of the trackpad can be used for moving the mouse pointer.&lt;&#x2F;p&gt;
&lt;p&gt;You&#x27;ll have to restart X for the settings to have an effect.&lt;&#x2F;p&gt;
&lt;p&gt;For more information about the settings possible in
this configuration file, run &lt;code&gt;man synaptics&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;This was based on
Gabriel Saldaña&#x27;s blog post about
&lt;a href=&quot;http:&#x2F;&#x2F;blog.gabrielsaldana.org&#x2F;debian-on-lenovo-thinkpad-x240&#x2F;&quot;&gt;Debian on Lenovo Thinkpad X240&lt;&#x2F;a&gt;
which got the information from
Luigi Massa Gallerano&#x27;s &lt;a href=&quot;http:&#x2F;&#x2F;mydevelopedworld.wordpress.com&#x2F;2013&#x2F;11&#x2F;30&#x2F;how-to-configure-new-lenovo-x240-touchpad-on-ubuntu-13-10&#x2F;&quot;&gt;How to configure new Lenovo x240 touchpad on Ubuntu 13.10&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;They propose editing an existing file (&lt;code&gt;50-synaptics.conf&lt;&#x2F;code&gt;),
but as that file&#x27;s header says that it may be overwritten
by updates, I thought it was safer (and easier) to put it in a separate file.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Avoid pull&#x2F;merge mess in Git</title>
            <pubDate>Fri, 15 Nov 2013 11:47:00 +0000</pubDate>
            <link>https://www.librador.com/2013/11/15/Avoid-pull-merge-mess-in-Git/</link>
            <guid>https://www.librador.com/2013/11/15/Avoid-pull-merge-mess-in-Git/</guid>
            <description>&lt;p&gt;Git&#x27;s default behaviour when running the &lt;code&gt;pull&lt;&#x2F;code&gt; command is to merge the remote branch into the tracking branch. This gives a lot of merge commits in the history that provide no information and just clutter the history. Here&#x27;s an example of what I found in a repository:&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;5f60d19cace15e3b00.png&quot; alt=&quot;Graphical view of a repository with a merge mess&quot;&#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;You can change this behaviour by adding the --rebase flag to &lt;code&gt;git pull&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;git pull --rebase
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This &lt;em&gt;rebases&lt;&#x2F;em&gt; the tracking branch on the remote branch. It&#x27;s more convenient to change the default so you don&#x27;t have to add this flag every time you do a pull. To do this, run:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;git config --global branch.autosetuprebase always
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you have already cloned a repository, this will have no effect on that repo.
You&#x27;ll have to edit the &lt;code&gt;.git&#x2F;config&lt;&#x2F;code&gt; file in the repo to have the rebase setting for all tracking branches set to true, e.g.:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;[branch &amp;quot;master&amp;quot;]
&lt;&#x2F;span&gt;&lt;span&gt;    remote = origin
&lt;&#x2F;span&gt;&lt;span&gt;    merge = refs&#x2F;heads&#x2F;master
&lt;&#x2F;span&gt;&lt;span&gt;    rebase = true
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;After this, you only need to make sure that everyone else in your team has those settings too, so you don&#x27;t have to see every pull they did in your history.&lt;&#x2F;p&gt;
&lt;p&gt;EDIT Febrary 16, 2015: I had written that &lt;code&gt;branch.autosetuprebase&lt;&#x2F;code&gt; should be set to &lt;code&gt;true&lt;&#x2F;code&gt;. I&#x27;m not sure if that was a mistake
or if it worked in earlier Git versions. Anyway, it should be set to &lt;code&gt;always&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Arduino + motor + solenoid + piezo = music</title>
            <pubDate>Sun, 07 Apr 2013 17:00:00 +0000</pubDate>
            <link>https://www.librador.com/2013/04/07/Arduino-motor-solenoid-piezo-music/</link>
            <guid>https://www.librador.com/2013/04/07/Arduino-motor-solenoid-piezo-music/</guid>
            <description>&lt;p&gt;My first experiment with an Arduino, made at the Instrumenthack day at Plan 8 in Stockholm. The Arduino controls a motor, a solenoid and a piezo to create percussion and a melody.&lt;&#x2F;p&gt;
&lt;iframe src=&quot;http:&#x2F;&#x2F;player.vimeo.com&#x2F;video&#x2F;60996936&quot; width=&quot;500&quot; height=&quot;281&quot; frameborder=&quot;0&quot; webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;&#x2F;iframe&gt; &lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;60996936&quot;&gt;Arduino + motor + solenoid + piezo = music&lt;&#x2F;a&gt; from &lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;mvilcans&quot;&gt;Martin Vilcans&lt;&#x2F;a&gt; on &lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&quot;&gt;Vimeo&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Not one of those posts</title>
            <pubDate>Wed, 12 Dec 2012 22:55:00 +0000</pubDate>
            <link>https://www.librador.com/2012/12/12/Not-one-of-those-posts/</link>
            <guid>https://www.librador.com/2012/12/12/Not-one-of-those-posts/</guid>
            <description>&lt;p&gt;You know when you visit a web site,
and on the front page the latest news item goes something like,
&amp;quot;I&#x27;m sorry there have been no updates here lately.
I have been busy with real life,
but I promise I&#x27;ll post more frequently in the future.&amp;quot;
Posted in 2009.&lt;&#x2F;p&gt;
&lt;p&gt;This is not one of those posts.&lt;&#x2F;p&gt;
&lt;p&gt;But it&#x27;s been a while.&lt;&#x2F;p&gt;
&lt;p&gt;I &lt;em&gt;have&lt;&#x2F;em&gt; been busy.
Here&#x27;s a summary of the updates:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;I started my own business as a freelance programmer
(or consultant&#x2F;contractor but that doesn&#x27;t sound as creative).&lt;&#x2F;li&gt;
&lt;li&gt;I got an assignment at &lt;a href=&quot;http:&#x2F;&#x2F;www.gootechnologies.com&quot;&gt;Goo Technologies&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;I got stuck at Goo because it&#x27;s a great company and now I work there as the Head of Development.&lt;&#x2F;li&gt;
&lt;li&gt;I participated in Ludum Dare 24 and &lt;a href=&quot;http:&#x2F;&#x2F;http:&#x2F;&#x2F;www.ludumdare.com&#x2F;compo&#x2F;2012&#x2F;08&#x2F;26&#x2F;i-give-up-10&#x2F;&quot;&gt;failed&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;I took a course in &lt;a href=&quot;https:&#x2F;&#x2F;www.edx.org&#x2F;ai&quot;&gt;Artificial Intelligence at edX&lt;&#x2F;a&gt;.
I really recommend that course. This form of distance learning works very well.&lt;&#x2F;li&gt;
&lt;li&gt;I changed the engine behind this blog from Jekyll to &lt;a href=&quot;http:&#x2F;&#x2F;nanoc.stoneship.org&#x2F;&quot;&gt;nanoc&lt;&#x2F;a&gt;.
It&#x27;s still a statically generated site, but nanoc is faster and more flexible.
This may mean that the site&#x27;s feed will have gotten what looks like lots of unread articles.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;And if you see this post at the top of the front page some time in 2015, you&#x27;re allowed to punch me.
Just not that hard. And not in the face.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Initializr cleanup</title>
            <pubDate>Thu, 16 Aug 2012 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2012/08/16/Initializr-cleanup/</link>
            <guid>https://www.librador.com/2012/08/16/Initializr-cleanup/</guid>
            <description>&lt;p&gt;If you have used the code from &lt;a href=&quot;http:&#x2F;&#x2F;www.initializr.com&quot;&gt;Initializr&lt;&#x2F;a&gt;,
you may have noticed that some of the files have DOS-style line endings (CR+LF)
instead of Unix-style line endings (LF).
See the Initializr bug report
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;verekia&#x2F;initializr&#x2F;issues&#x2F;40&quot;&gt;All output files should have Unix-style line-endings&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;This is annoying to no end because once you notice it,
you may already have committed and made changes to the code.
Changing the code then may cause conflicts in your version control.&lt;&#x2F;p&gt;
&lt;p&gt;Another issue is that Initializr&#x27;s code mixes tabs and spaces,
and some files have lines ending with spaces.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;vilcans&#x2F;initializr-cleanup&#x2F;blob&#x2F;master&#x2F;initializr-cleanup&quot;&gt;This little script&lt;&#x2F;a&gt; i wrote fixes these problems.
Just download it,
&lt;code&gt;cd&lt;&#x2F;code&gt; to the directory where you extracted the zip file from Initializr
and run it.&lt;&#x2F;p&gt;
&lt;p&gt;The script requires the commands &lt;code&gt;dos2unix&lt;&#x2F;code&gt;, &lt;code&gt;sed&lt;&#x2F;code&gt; and &lt;code&gt;expand&lt;&#x2F;code&gt;.
I have only tested it on Linux,
so please let me know if it works or not on Macs.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Creating an interactive CV</title>
            <pubDate>Tue, 31 Jul 2012 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2012/07/31/Creating-an-Interactive-CV/</link>
            <guid>https://www.librador.com/2012/07/31/Creating-an-Interactive-CV/</guid>
            <description>&lt;p&gt;After having worked with software and web development for a number of years,
it becomes difficult to write a good CV
if you have worked on several projects,
at several companies
and with several technologies.&lt;&#x2F;p&gt;
&lt;p&gt;As a CV shouldn&#x27;t be longer than a couple of pages,
you have to cut down on the information.
In my traditional (&lt;a href=&quot;http:&#x2F;&#x2F;www.vilcon.se&#x2F;Martin-Vilcans-CV.pdf&quot;&gt;PDF CV&lt;&#x2F;a&gt;),
I chose to keep most of the projects I&#x27;ve worked on,
but I didn&#x27;t keep the information about the technologies
I worked on for each of them.&lt;&#x2F;p&gt;
&lt;p&gt;But I work with computers.
I should be able to create an interactive CV
that contains &lt;em&gt;all&lt;&#x2F;em&gt; the information about projects, organizations and technologies
and the relationship between them.&lt;&#x2F;p&gt;
&lt;p&gt;This lends itself naturally to visualization as a graph,
I thought.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;beb5233726ff76f600.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;So I created the &lt;a href=&quot;http:&#x2F;&#x2F;www.vilcon.se&#x2F;cv&#x2F;&quot;&gt;interactive CV&lt;&#x2F;a&gt;
where each project, organization and technology
is a node in a graph.
Click on a node to focus on it and see what it is related to.
(Note: Clicking doesn&#x27;t work on iOS and Android;
you have to drag a node to select it.
And it&#x27;s untested on IE.)&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m not sure the experiment was succesful.
Even though I only added data for the projects
from my last three employments,
the graph got pretty tangled,
but as the developer I&#x27;m not the right person to do a usability test.
Let me know what you think!&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Prioritizing Screenplain features</title>
            <pubDate>Sun, 22 Jul 2012 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2012/07/22/Prioritizing-Screenplain-features/</link>
            <guid>https://www.librador.com/2012/07/22/Prioritizing-Screenplain-features/</guid>
            <description>&lt;p&gt;I got an email with the question when I&#x27;m going to implement the following features in Screenplain.
(&lt;a href=&quot;http:&#x2F;&#x2F;www.screenplain.com&quot;&gt;Screenplain&lt;&#x2F;a&gt; is a utility I made for converting a movie screenplay from a simple text file to a good looking format.)&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Output as text and PDF&lt;&#x2F;li&gt;
&lt;li&gt;Title page output&lt;&#x2F;li&gt;
&lt;li&gt;Notes&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;My current plans are as follows:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;&#x2F;strong&gt; will be the first one I&#x27;ll implement, as that is required to support Fountain completely. It&#x27;s a pretty simple fix, so there are no excuses.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Title page output&lt;&#x2F;strong&gt; shouldn&#x27;t be too much work to implement. I&#x27;m not 100% sure how it should look, so it will require some research.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Output as text and PDF&lt;&#x2F;strong&gt; is more complicated, especially PDF, as the logic for where the page breaks should appear can be pretty complex.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m working on Screenplain in my spare time while I&#x27;m starting my own business as a contractor,
so it&#x27;s difficult to say how much time I&#x27;ll have for working on it.
If you have suggestions for what I should focus on,
please let me know as I prioritize the work based on the input I get.
That&#x27;s why I made FDX output higher priority than PDF in the first place!&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>No, that&#x27;s not why OO sucks</title>
            <pubDate>Mon, 16 Jul 2012 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2012/07/16/No-thats-not-why-OO-sucks/</link>
            <guid>https://www.librador.com/2012/07/16/No-thats-not-why-OO-sucks/</guid>
            <description>&lt;p&gt;&lt;strong&gt;EDIT April 22nd, 2019:&lt;&#x2F;strong&gt; After learning of Joe Armstrong&#x27;s passing I came to think of this post again. According to some of the comments below, Armstrong&#x27;s original post, already old when I wrote this, is not representative of the quality of his work. It would be a shame if it made the rounds in Twitter, Hacker News, and Reddit again.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Many programmers are fed up with dogmatic application of object orientation, which may be why Joe Armstrong&#x27;s article &lt;a href=&quot;http:&#x2F;&#x2F;harmful.cat-v.org&#x2F;software&#x2F;OO_programming&#x2F;why_oo_sucks&quot;&gt;Why OO Sucks&lt;&#x2F;a&gt; has caused so much discussion around the Internet lately.&lt;&#x2F;p&gt;
&lt;p&gt;Armstrong claims that object oriented programming is bad. &lt;a href=&quot;&#x2F;2009&#x2F;09&#x2F;29&#x2F;Object-orientation-not-as-natural-as-we-thought&#x2F;&quot;&gt;I&#x27;m no huge fan of OO either&lt;&#x2F;a&gt;, but unfortunately Armstrong&#x27;s objections against it are not backed by any clear reasoning. Let&#x27;s have a look at his four objections.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;objection-1-data-structure-and-functions-should-not-be-bound-together&quot;&gt;Objection 1 -- Data structure and functions should not be bound together&lt;&#x2F;h2&gt;
&lt;p&gt;Armstrong claims that data structures and functions are very different. Data structures just contain data, and don&#x27;t do anything. Functions do stuff. This is obviously true, but Armstrong then goes on to claim that this is a reason to keep them separate. He doesn&#x27;t give any explanation how he came to that conclusion.&lt;&#x2F;p&gt;
&lt;p&gt;For organizing your code, I don&#x27;t see why it is a bad idea to to keep data structures and the functions that manipulate them in one place. Classes is one of the ways to do that. Modules is another. For example, it&#x27;s not uncommon in C programs to keep declarations of data structures and functions that manipulate those data structures in a single header file. It&#x27;s not called object orientation, but the basic idea is the same.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;objection-2-everything-has-to-be-an-object&quot;&gt;Objection 2 -- Everything has to be an object&lt;&#x2F;h2&gt;
&lt;p&gt;Armstrong says:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Consider &amp;quot;time&amp;quot;. In an OO language &amp;quot;time&amp;quot; has to be an object. But in a non OO language a &amp;quot;time&amp;quot; is a instance of a data type. &lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;This doesn&#x27;t make any sense. In many OO programming languages, a class &lt;em&gt;is&lt;&#x2F;em&gt; a data type, so an object &lt;em&gt;is&lt;&#x2F;em&gt; an instance of a data type.&lt;&#x2F;p&gt;
&lt;p&gt;Armstrong still has a point, but it&#x27;s just in this objection&#x27;s heading. He doesn&#x27;t argue for it well, but in a pure OO language, you are forced to put all functionality inside objects. This can be more (Java) or less (Ruby) annoying.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;objection-3-in-an-oopl-data-type-definitions-are-spread-out-all-over-the-place&quot;&gt;Objection 3 -- In an OOPL data type definitions are spread out all over the place&lt;&#x2F;h2&gt;
&lt;p&gt;If I understand this correctly, Armstrong prefers putting the definitions of all data structures in a limited number of source files. In OO you typically don&#x27;t do that since in OO, you&#x27;d want to put the functions that operate on those data structures in the same file. That would make the file pretty big, which is impractical.&lt;&#x2F;p&gt;
&lt;p&gt;But this is just a matter of preference and programming style. Armstrong provides no argument as to how a different organization would make a programming paradigm suck.&lt;&#x2F;p&gt;
&lt;p&gt;He then writes:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;In an OOPL I have to choose some base object in which I will define the ubiquitous data structure, all other objects that want to use this data structure must inherit this object. Suppose now I want to create some &amp;quot;time&amp;quot; object, where does this belong and in which object...&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Just like the paragraph I quoted under Objection 2, this doesn&#x27;t make sense. I don&#x27;t have to create a base object to put my data structures in. An object &lt;em&gt;is&lt;&#x2F;em&gt; a data structure. And if you want to create a &amp;quot;time&amp;quot; object, just create a Time class. There is no need for inheritance. (Giving Armstrong the benefit of a doubt, perhaps he meant aggregation instead of inheritance. Inheritance is not as central to OO as many people believe, and there&#x27;d be no reason to use inheritance in the example that he gives.)&lt;&#x2F;p&gt;
&lt;h2 id=&quot;objection-4-objects-have-private-state&quot;&gt;Objection 4 -- Objects have private state&lt;&#x2F;h2&gt;
&lt;p&gt;Armstrong argues that state is evil, and that we should avoid state. OO&#x27;s tradition of hiding state inside objects makes it less obvious that there are states involved, and hence more difficult to try to avoid them.&lt;&#x2F;p&gt;
&lt;p&gt;This argument is a good one, but it&#x27;s not an argument against OO per se. It is possible to program in an OO way using only immutable objects, and avoiding state.&lt;&#x2F;p&gt;
&lt;p&gt;The basic idea of OO is that data and functions are bundled together, which is an idea that Armstrong seems to hold a grudge against (objection 1). But he gives no arguments as to &lt;em&gt;why&lt;&#x2F;em&gt; this is a bad idea.&lt;&#x2F;p&gt;
&lt;p&gt;There are several good arguments against dogmatic OO, but Armstrong doesn&#x27;t seem to be the one to educate us about them.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Ludum Dare 23 postmortem</title>
            <pubDate>Sun, 29 Apr 2012 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2012/04/29/Ludum-Dare-23-postmortem/</link>
            <guid>https://www.librador.com/2012/04/29/Ludum-Dare-23-postmortem/</guid>
            <description>
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;40ba20ff9f47c08700.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Last weekend, I took part in the the 48 hour online game competition
&lt;a href=&quot;http:&#x2F;&#x2F;www.ludumdare.com&quot;&gt;Ludum Dare&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The result of the theme voting was announced at 3 a.m. Saturday morning (Swedish time).
I spent the morning without working on the game, but thinking a little about the theme,
which was &lt;em&gt;tiny world&lt;&#x2F;em&gt;.
My first idea, and the one I went for,
was a cross between two old games: Ports of Call and Elite.
Ports of Call because it would be about shipping cargo across the world,
and Elite because of the trading aspect,
coupled with real-time driving of the vessels.
In the end, it turned out less like a strategy game and
more like a driving game compared to my original idea.
All for the better, I think.&lt;&#x2F;p&gt;
&lt;p&gt;The competition entry can be &lt;a href=&quot;http:&#x2F;&#x2F;ld23.librador.com&quot;&gt;played online&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I spent most of the time working on the game at different cafés in Stockholm.
Two friends joined, so we could work on our respective games
while chatting and drinking coffee.&lt;&#x2F;p&gt;
&lt;p&gt;I posted about &lt;a href=&quot;http:&#x2F;&#x2F;www.ludumdare.com&#x2F;compo&#x2F;2012&#x2F;04&#x2F;16&#x2F;im-in-html-game-or-not&#x2F;&quot;&gt;the technology I was going to use&lt;&#x2F;a&gt; on the Ludum Dare site,
and those are the tools I actually ended up using,
so I actually made an HTML&#x2F;JavaScript&#x2F;WebGL based game
instead of chickening out and using proved technology.&lt;&#x2F;p&gt;
&lt;p&gt;Let me tell you a bit about the tools:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.initializr.com&#x2F;&quot;&gt;Initializr&lt;&#x2F;a&gt;:
Generates a set of files that&#x27;s a template for an HTML project.
Perhaps not that necessary for a one page game,
but it comes with some useful functionality,
like build scripts for minifying JavaScript code.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;coffeescript.org&quot;&gt;CoffeeScript&lt;&#x2F;a&gt;:
A programming language that is a very thin layer on top of JavaScript.
Think of it like JavaScript with better syntax and fewer pitfalls.
CoffeeScript can be set up to watch for changes in your CoffeeScript source files,
and compile them into JavaScript as soon as they change.
This works well, except that in my setup, I only got an error message in the console
only if there was a compilation error.
In the future, I&#x27;ll make sure it pops up a notification (Growl style)
so I won&#x27;t miss compilation errors and wonder why my code changes don&#x27;t
do anything.
CoffeeScript the programming language works well.
It has some syntactic quirks, but it still is better than pure JavaScript.
Debugging reminds me about old times when I had to look at disassembled code
to debug code written in C++,
but now I have to look at JavaScript code to debug code
originally written in CoffeeScript.
I don&#x27;t consider this much of a problem,
because the CoffeeScript code and JavaScript code are pretty similar.
It&#x27;s mostly a matter of line numbers that don&#x27;t match up.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;mrdoob.github.com&#x2F;three.js&#x2F;&quot;&gt;three.js&lt;&#x2F;a&gt;:
A library for 3D graphics in JavaScript
that takes care of some low-level details in WebGL.
Unfortunately it doesn&#x27;t have &lt;em&gt;any&lt;&#x2F;em&gt; API documentation,
but the code is easy to read, so it isn&#x27;t a huge problem.
I didn&#x27;t try anything advanced with three.js,
but it served my purposes well.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;pivotal.github.com&#x2F;jasmine&#x2F;&quot;&gt;Jasmine&lt;&#x2F;a&gt;:
A JavaScript testing framework
(or &lt;em&gt;BDD framework&lt;&#x2F;em&gt; as they call it; the difference is philosophical).
I set this up beforehand in case I would write code that would benefit from tests.
In the end, I used it very little,
but I think it is the best testing framework that I&#x27;ve seen in any language,
and I&#x27;ll continue using it for future projects.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;fabfile.org&quot;&gt;Fabric&lt;&#x2F;a&gt;:
Basically just a way to write scripts that run on remote hosts,
using Python instead of something like Bash.
I prepared Fabric tasks beforehand for uploading the project to my server,
so I could deploy a new version with a single command.
It was useful to easily deploy once in a while so that other people
could test the game.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;analytics.google.com&quot;&gt;Google Analytics&lt;&#x2F;a&gt;:
Used to track the number of visitors that has WebGL enabled,
the number of visitors that started the game,
and the number that finished it.
This is just to satisfy my curiosity.
I would like to add error reporting, so that every error that occurs
is reported so I get to know about it.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.drpetter.se&#x2F;project_sfxr.html&quot;&gt;sfxr&lt;&#x2F;a&gt;:
For creating the sound effects.
It is a sound synthesizer with a confusing interface,
but with just a few clicks you can get a useful sound.
If you like 80&#x27;s style sound effects, that is.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.blender.org&quot;&gt;Blender&lt;&#x2F;a&gt;:
For creating the 3D model for the ships.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.gimp.org&quot;&gt;Gimp&lt;&#x2F;a&gt;:
For general image manipulation.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.adobe.com&#x2F;products&#x2F;photoshop.html&quot;&gt;Photoshop&lt;&#x2F;a&gt;:
For painting the Earth texture.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;linuxmint.com&quot;&gt;Linux Mint&lt;&#x2F;a&gt;:
Primary development OS (laptop).&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.ubuntu.com&quot;&gt;Ubuntu&lt;&#x2F;a&gt;:
Secondary development OS (desktop).&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;windows.microsoft.com&quot;&gt;Windows&lt;&#x2F;a&gt;:
For running Photoshop and sfxr.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;git-scm.com&quot;&gt;Git&lt;&#x2F;a&gt; on &lt;a href=&quot;https:&#x2F;&#x2F;github.com&quot;&gt;GitHub&lt;&#x2F;a&gt;:
Version control. &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;vilcans&#x2F;LD23&quot;&gt;Here&#x27;s the repository&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;fx&#x2F;&quot;&gt;Firefox&lt;&#x2F;a&gt;
with &lt;a href=&quot;http:&#x2F;&#x2F;getfirebug.com&quot;&gt;Firebug&lt;&#x2F;a&gt;:
Main development browser.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.google.com&#x2F;chrome&quot;&gt;Google Chrome&lt;&#x2F;a&gt;
and &lt;a href=&quot;http:&#x2F;&#x2F;www.chromium.org&#x2F;Home&quot;&gt;Chromium&lt;&#x2F;a&gt;: For testing.
Chrome has better performance than Firefox,
but I&#x27;m so used to developing with Firefox, so that&#x27;s what I used.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.gnu.org&#x2F;software&#x2F;make&#x2F;&quot;&gt;Gnu Make&lt;&#x2F;a&gt;:
Build scripts.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.vorbis.com&#x2F;&quot;&gt;vorbis-tools&lt;&#x2F;a&gt;: For converting audio from wav to ogg.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Some lessons learned:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;HTML text elements on top of WebGL canvas drastically reduced performance.
In Chrome, using requestAnimationFrame helped, but not in Firefox.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;It is possible to play sound clips by
programatically creating a new &lt;code&gt;&amp;lt;audio&amp;gt;&lt;&#x2F;code&gt; element for every sound,
but every time I do that,
the browser connects to the server and gives visible stutter.
It may be possible to make it work smoothly by
setting cache headers properly on the audio URLs.
Another untested idea is to use data URLs instead of HTTP URLs.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Caching &lt;code&gt;&amp;lt;audio&amp;gt;&lt;&#x2F;code&gt; elements does not work.
When you call the &lt;code&gt;play&lt;&#x2F;code&gt; function on the element, the sound does not always play.
This is probably because there needs to be some time between every call
to &lt;code&gt;play&lt;&#x2F;code&gt; for one element.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Considering my relatively relaxed attitude towards the competition,
the game turned out pretty well.
As always at the end of one of these competitions,
I have lots of plans for how the game can be improved and
that I should make a real polished game out of it.&lt;&#x2F;p&gt;
&lt;p&gt;I just know how that normally turns out.
You know, there are so many other games to be made!&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>I&#x27;m in Ludum Dare 23</title>
            <pubDate>Thu, 19 Apr 2012 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2012/04/19/Im-in-Ludum-Dare-23/</link>
            <guid>https://www.librador.com/2012/04/19/Im-in-Ludum-Dare-23/</guid>
            <description>&lt;p&gt;I&#x27;ll be competing in the 10 year anniversary of
the online game competition &lt;a href=&quot;http:&#x2F;&#x2F;www.ludumdare.com&quot;&gt;Ludum Date&lt;&#x2F;a&gt;.
This will be my first time in that competition, but
as you surely remember, I took part in
&lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2006&#x2F;11&#x2F;21&#x2F;The-72-Hour-Game-Development-Competition&#x2F;&quot;&gt;another rapid game development competition&lt;&#x2F;a&gt;
a while back.&lt;&#x2F;p&gt;
&lt;p&gt;Oh, it was six years ago...&lt;&#x2F;p&gt;
&lt;p&gt;Time flies.&lt;&#x2F;p&gt;
&lt;p&gt;Anyway:&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;ve posted a bit about what
&lt;a href=&quot;http:&#x2F;&#x2F;www.ludumdare.com&#x2F;compo&#x2F;2012&#x2F;04&#x2F;16&#x2F;im-in-html-game-or-not&#x2F;&quot;&gt;technology I&#x27;ll use for this competition&lt;&#x2F;a&gt;
at the Ludum Date site.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Screenplain towards 1.0</title>
            <pubDate>Sun, 26 Feb 2012 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2012/02/26/Screenplain-towards-1.0/</link>
            <guid>https://www.librador.com/2012/02/26/Screenplain-towards-1.0/</guid>
            <description>&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.screenplain.com&quot;&gt;Screenplain&lt;&#x2F;a&gt; is a utility I made for converting a movie screenplay from a simple text file to a good looking format.&lt;&#x2F;p&gt;
&lt;p&gt;Since my previous post &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2011&#x2F;12&#x2F;09&#x2F;SPMD-Screenplain-and-Marked&#x2F;&quot;&gt;SPMD, Screenplain and Marked&lt;&#x2F;a&gt;, the specification of the text format has changed somewhat since screenwriter
&lt;a href=&quot;http:&#x2F;&#x2F;johnaugust.com&#x2F;&quot;&gt;John August&lt;&#x2F;a&gt; joined the collaborative effort of creating a simple text format for screenplays. It also has changed its name from Screenplay Markdown to &lt;a href=&quot;http:&#x2F;&#x2F;fountain.io&#x2F;&quot;&gt;Fountain&lt;&#x2F;a&gt;, which as you can see has its own web site now.&lt;&#x2F;p&gt;
&lt;p&gt;Screenplain now can read and understand most features of the Fountain format. Here’s a screenshot of the HTML output from a document with &lt;em&gt;sections&lt;&#x2F;em&gt;, which allow you to structure your screenplay:&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;7ef75358f883bf8000.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;http:&#x2F;&#x2F;www.candlerblog.com&#x2F;&quot;&gt;Jonathan Poritsky&lt;&#x2F;a&gt; for the work on the CSS for Screenplain’s HTML output.&lt;&#x2F;p&gt;
&lt;p&gt;Try &lt;a href=&quot;http:&#x2F;&#x2F;www.screenplain.com&#x2F;&quot;&gt;Screenplain online&lt;&#x2F;a&gt; or download the
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;vilcans&#x2F;screenplain&quot;&gt;code from Github&lt;&#x2F;a&gt;.
The code is still work in progress, but it can be used today as a command-line program. It can also be used as a library, but the API may change, so I don’t guarantee that it’s stable yet.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>So much better: Fincher&#x27;s The Girl with the Dragon Tattoo</title>
            <pubDate>Sun, 29 Jan 2012 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2012/01/29/Finchers-Girl-with-the-Dragon-Tattoo-So-much-better/</link>
            <guid>https://www.librador.com/2012/01/29/Finchers-Girl-with-the-Dragon-Tattoo-So-much-better/</guid>
            <description>
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;a82a326eb5ad65bb00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;In a previous rant I posed the question,
&lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2011&#x2F;03&#x2F;22&#x2F;What-is-wrong-with-The-Girl-with-the-Dragon-Tattoo&#x2F;&quot;&gt;&amp;quot;What is wrong with The Girl with the Dragon Tattoo&amp;quot;&lt;&#x2F;a&gt; (the Swedish version, directed by Niels Arden Oplev) and proceeded
with trying to figure out why I didn&#x27;t care very much for this
successful film.&lt;&#x2F;p&gt;
&lt;p&gt;I was pretty sure that David Fincher&#x27;s re-adaptation of the novel
would be better.&lt;&#x2F;p&gt;
&lt;p&gt;And boy, was I right. I love it when that happens.
(Although I&#x27;m getting used to it.)&lt;&#x2F;p&gt;
&lt;p&gt;Minor spoilers ahead!&lt;&#x2F;p&gt;
&lt;p&gt;The story is very much the same. The differences between the two
versions is more about the details. The mise en scène, costumes,
writing, cinematography and editing just feels much more solid.
(Especially the writing and editing. In Fincher&#x27;s version we don&#x27;t get
stupid lines like &amp;quot;Do you have a negative scanner?&amp;quot; followed by an
pointless scene showing the main character scanning old photos.)&lt;&#x2F;p&gt;
&lt;p&gt;First of all, there&#x27;s the &lt;a href=&quot;http:&#x2F;&#x2F;www.youtube.com&#x2F;watch?feature=player_detailpage&amp;amp;v=tcp9Ysi75f0&quot;&gt;title sequence&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;object style=&quot;height: 390px; width: 640px&quot;&gt;
  &lt;param name=&quot;movie&quot; value=&quot;http:&#x2F;&#x2F;www.youtube.com&#x2F;v&#x2F;tcp9Ysi75f0?version=3&amp;amp;feature=player_detailpage&quot; &#x2F;&gt;
  &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; &#x2F;&gt;
  &lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; &#x2F;&gt;
  &lt;embed src=&quot;http:&#x2F;&#x2F;www.youtube.com&#x2F;v&#x2F;tcp9Ysi75f0?version=3&amp;amp;feature=player_detailpage&quot; type=&quot;application&#x2F;x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowScriptAccess=&quot;always&quot; width=&quot;640&quot; height=&quot;360&quot; &#x2F;&gt;
&lt;&#x2F;object&gt;
&lt;p&gt;Fincher&#x27;s movie starts out with pretty much the same scenes
as Oplev&#x27;s version, but this dark, oily and disturbing James Bondesque
sequence makes up for the lack of an opening scene that gives a
hint about the events that will follow.&lt;&#x2F;p&gt;
&lt;p&gt;When the story starts to unfold, it is exciting even though
having seen Oplev&#x27;s version, I know what will happen.
(I guess that was &amp;quot;everone else&#x27;s&amp;quot; experience of the Swedish film,
as &amp;quot;everyone else&amp;quot; had already read the book and loved the film. See
&lt;a href=&quot;&#x2F;2011&#x2F;03&#x2F;22&#x2F;What-is-wrong-with-The-Girl-with-the-Dragon-Tattoo&#x2F;&quot;&gt;my old post&lt;&#x2F;a&gt;.)&lt;&#x2F;p&gt;
&lt;p&gt;I didn&#x27;t count, but I think Fincher cut down on the number of
characters, and certainly tells a tighter story. The story with
Salander&#x27;s supervisor was good in Oplev&#x27;s film (the best part of the
film actually), but felt disconnected from the rest of the story.
Fincher manages to keep it all together. And he makes Bjurman the
rapist a more interesting character.&lt;&#x2F;p&gt;
&lt;p&gt;Talking about characters, Fincher&#x27;s Salander shows more of a character
arc. She starts out harsh and unpleasant, but by the end she shows
more emotions and we end up feeling sorry for her. In Oplev&#x27;s version
she she&#x27;s sort of an asshole through the whole movie. That&#x27;s cool too,
but we humans love to see people change for the better.&lt;&#x2F;p&gt;
&lt;p&gt;All in all, Fincher&#x27;s film is a better watch than Oplev&#x27;s. With seven
times the budget, anything else would have been embarassing.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>SPMD, Screenplain and Marked</title>
            <pubDate>Fri, 09 Dec 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/12/09/SPMD-Screenplain-and-Marked/</link>
            <guid>https://www.librador.com/2011/12/09/SPMD-Screenplain-and-Marked/</guid>
            <description>&lt;p&gt;It&#x27;s about time I tell you about one project that I&#x27;ve been working on
from time to time for the last months. It&#x27;s called Screenplain,
and its purpose in life is to take an input file in a simple text format
and output a properly formatted screenplay.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;745631de484528e000.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Screenplain can create files in HTML and FDX format (a file format used by Final
Draft, which is commonly used in the film industry), but the most interesting
story is perhaps the one about the &lt;em&gt;input&lt;&#x2F;em&gt; format.&lt;&#x2F;p&gt;
&lt;p&gt;The idea is that a plain text format is flexible. It can be edited on almost any
computer or mobile device. If you&#x27;re on the go and there&#x27;s no screenwriting
software for your smartphone, you can still edit plain text files with it. The
problem with text files is that it can be difficult to comply with the standard
screenplay format. With Screenplain you don&#x27;t have to. Just write your script as
plain text, and Screenplain takes care of formatting it so it looks good.&lt;&#x2F;p&gt;
&lt;p&gt;I started working on Screenplain this summer, and at the same time
&lt;a href=&quot;http:&#x2F;&#x2F;prolost.com&quot;&gt;Stu Maschwitz&lt;&#x2F;a&gt; pulled a lazyweb and basically wrote, &amp;quot;&lt;a href=&quot;http:&#x2F;&#x2F;prolost.com&#x2F;blog&#x2F;2011&#x2F;8&#x2F;9&#x2F;screenplay-markdown.html&quot;&gt;wouldn&#x27;t it be great
if there was some screenplay software that could work with plain
text?&lt;&#x2F;a&gt;&amp;quot; He had given
much more thought to the idea and even wrote a formal specification of the text
format. He called the format Screenplay Markdown (SPMD) as it is inspired by
John Gruber&#x27;s popular
&lt;a href=&quot;http:&#x2F;&#x2F;daringfireball.net&#x2F;projects&#x2F;markdown&#x2F;&quot;&gt;Markdown&lt;&#x2F;a&gt; (which I&#x27;m
incidentally using to write this very blog post). Great! I rewrote Screenplain
to use his format instead of the one that I had come up with.&lt;&#x2F;p&gt;
&lt;p&gt;Then I created an &lt;a href=&quot;http:&#x2F;&#x2F;www.screenplain.com&quot;&gt;online version of Screenplain&lt;&#x2F;a&gt;
so that people can try it out without having to install anything.
That caught some interest.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.candlerblog.com&#x2F;&quot;&gt;Jonathan Poritsky&lt;&#x2F;a&gt; did a great job on creating a
style sheet so that Screenplain&#x27;s HTML output looks as close as possible to an
actual screenplay. (This is tricky to do in HTML.)
He also made sure that Brett Terpstra&#x27;s Markdown editor &lt;a href=&quot;http:&#x2F;&#x2F;markedapp.com&#x2F;&quot;&gt;Marked&lt;&#x2F;a&gt;
got &lt;a href=&quot;http:&#x2F;&#x2F;support.markedapp.com&#x2F;kb&#x2F;how-to-tips-and-tricks&#x2F;using-screenplay-markdown-with-marked&quot;&gt;support for SPMD&lt;&#x2F;a&gt;
through Screenplain.&lt;&#x2F;p&gt;
&lt;p&gt;There is still lots to do with Screenplain. I&#x27;d like to add PDF output support
and perhaps make it more friendly for people who aren&#x27;t that familiar with
the command line (though if you have a Mac, Marked should be easy to use).
If it weren&#x27;t for Stu&#x27;s and Jonathan&#x27;s enthusiastic support and work, I still
wouldn&#x27;t have considered Screenplain ready for release. But as people say:
Release early, release often. And I did -- the former. And I understood that
Screenplain is already pretty damn useful. Please let me know what &lt;em&gt;you&lt;&#x2F;em&gt; think.&lt;&#x2F;p&gt;
&lt;p&gt;Screenplain is licensed under MIT and the code is
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;vilcans&#x2F;screenplain&quot;&gt;available at Github&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Today, Jonathan and Brett made a second release of SPMD for Marked (which uses Screenplain).
See their posts:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Jonathan Poritsky&#x27;s &lt;a href=&quot;http:&#x2F;&#x2F;www.candlerblog.com&#x2F;2011&#x2F;12&#x2F;08&#x2F;screenplay-markdown-for-marked-is-here&#x2F;&quot;&gt;post about SPMD for Marked&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Brett Terpstra&#x27;s &lt;a href=&quot;http:&#x2F;&#x2F;brettterpstra.com&#x2F;calling-screenwriter-nerds&#x2F;&quot;&gt;post about SPMD for Marked&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
        </item>
        <item>
            <title>Usability and terminology in Git</title>
            <pubDate>Sat, 23 Jul 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/07/23/Usability-and-terminology-in-Git/</link>
            <guid>https://www.librador.com/2011/07/23/Usability-and-terminology-in-Git/</guid>
            <description>&lt;p&gt;&lt;em&gt;&amp;quot;A rose by any other name would smell just as sweet.&amp;quot;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;True, but in usability you shouldn&#x27;t get too poetic with what you
call things. It&#x27;s easier to grasp concepts in a piece of software if
it is consistent in what words it uses to describe them. One piece of
software that is notoriously bad at consistent wording is Git.&lt;&#x2F;p&gt;
&lt;p&gt;Being new to version control using Git can be confusing. There are
many concepts that may be foreign if you&#x27;re used to centralized
version control systems. More so if you haven&#x27;t used version control
at all before. Unfortunately, Git doesn&#x27;t make the transition very
smooth as it has some serious usability problems related to
terminology. This makes it harder than necessary to learn the concepts
in Git, even though they actually aren&#x27;t that complex. That&#x27;s a shame
since Git is a very nice version control system.&lt;&#x2F;p&gt;
&lt;p&gt;Just to make it clear, I&#x27;m a pretty competent Git user. People tend to
think that if you complain about the usability of a piece or software,
you&#x27;re just not very good at it. When I say that C++ sucks for
instance, it&#x27;s based on 15 years of experience with it. So while I
personally have no problems (any more) with the usability issues I&#x27;ll
discuss in this post, I can still see that they are problems as they
make it harder to teach and learn Git.&lt;&#x2F;p&gt;
&lt;p&gt;To start working on a git repository, you typically clone an existing one.
Easy, just use the clone command and give it the URL of the repository:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;$ git clone &#x2F;path&#x2F;to&#x2F;some_project.git
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;So, what does Git answer to the above command?&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;Initialized empty Git repository in &#x2F;home&#x2F;martin&#x2F;some_project&#x2F;.git
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;WTF? I expected it to create a clone of a repository, not create an
empty repository. Well, it did actually create a clone. The confusing
message is from the &lt;code&gt;git init&lt;&#x2F;code&gt; command that is run as a first step
before git fetches and merges the other repository.&lt;&#x2F;p&gt;
&lt;p&gt;Anyway, on to my point about terminology. Let&#x27;s create a file:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;$ echo Hello &amp;gt;foo.txt
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;...and use the &lt;code&gt;git status&lt;&#x2F;code&gt; command to check the state of the project:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;# On branch master
&lt;&#x2F;span&gt;&lt;span&gt;# Untracked files:
&lt;&#x2F;span&gt;&lt;span&gt;#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)
&lt;&#x2F;span&gt;&lt;span&gt;#
&lt;&#x2F;span&gt;&lt;span&gt;#	foo.txt
&lt;&#x2F;span&gt;&lt;span&gt;nothing added to commit but untracked files present (use &amp;quot;git add&amp;quot; to track)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;So now Git tells us that our new file is &amp;quot;untracked.&amp;quot; Sounds
reasonable. We haven&#x27;t added it to version control yet. Git is
friendly and tells us to use &lt;code&gt;git add&lt;&#x2F;code&gt; to add the file. OK, let&#x27;s do
that and check the status again:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;$ git add foo.txt
&lt;&#x2F;span&gt;&lt;span&gt;$ git status
&lt;&#x2F;span&gt;&lt;span&gt;# On branch master
&lt;&#x2F;span&gt;&lt;span&gt;# Changes to be committed:
&lt;&#x2F;span&gt;&lt;span&gt;#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)
&lt;&#x2F;span&gt;&lt;span&gt;#
&lt;&#x2F;span&gt;&lt;span&gt;#	new file:   foo.txt
&lt;&#x2F;span&gt;&lt;span&gt;#
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;We have now &amp;quot;added&amp;quot; the file. It appears under &amp;quot;Changes to be
committed.&amp;quot; And Git&#x27;s helpful output from the status command tells us
how to &amp;quot;unstage&amp;quot; it.&lt;&#x2F;p&gt;
&lt;p&gt;As a Git user, you&#x27;d know that the &lt;code&gt;git add&lt;&#x2F;code&gt; command adds the file to
the &amp;quot;index.&amp;quot; Contrary to its name, the &amp;quot;index&amp;quot; does not just hold the
names of the files to be committed. It actually contains the content
of the files as well. It is sometimes called the &amp;quot;staging area&amp;quot;
instead, which is a better name, as it reflects what it is for: It is
an area where you prepare your next commit. Note that neither the word
index &amp;quot;index&amp;quot; nor the full term &amp;quot;staging area&amp;quot; has been used in the
commands or output so far.&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s see what we&#x27;re going to commit. The following command will show
the differences between the last commit and the contents of the
&amp;quot;index&amp;quot; a.k.a. the &amp;quot;staging area&amp;quot;:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;$ git diff --cached
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;OK, so you add the &lt;code&gt;--cached&lt;&#x2F;code&gt; flag to see the difference between the
&amp;quot;index&amp;quot;&#x2F;&amp;quot;staging area&amp;quot; and the previous commit. So I guess the
&amp;quot;index&amp;quot;&#x2F;&amp;quot;staging area&amp;quot; can be called the &amp;quot;cache&amp;quot; too? Even though it&#x27;s
in no way similar to what you usually mean when you use the word
&amp;quot;cache&amp;quot; in a computer context? (In all fairness, &lt;code&gt;--staged&lt;&#x2F;code&gt; is a
synonym to &lt;code&gt;--cached&lt;&#x2F;code&gt;, which maps much better to the terminology used
in the rest of the user interface.)&lt;&#x2F;p&gt;
&lt;p&gt;If we edit a file that was already in the project, we get:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;$ git status
&lt;&#x2F;span&gt;&lt;span&gt;# On branch master
&lt;&#x2F;span&gt;&lt;span&gt;# Changed but not updated:
&lt;&#x2F;span&gt;&lt;span&gt;#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)
&lt;&#x2F;span&gt;&lt;span&gt;#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)
&lt;&#x2F;span&gt;&lt;span&gt;#
&lt;&#x2F;span&gt;&lt;span&gt;#	modified:   a.txt
&lt;&#x2F;span&gt;&lt;span&gt;#
&lt;&#x2F;span&gt;&lt;span&gt;no changes added to commit (use &amp;quot;git add&amp;quot; and&#x2F;or &amp;quot;git commit -a&amp;quot;)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now, Git says that the file is modified. It also says that it&#x27;s
&amp;quot;changed but not updated.&amp;quot; So, what&#x27;s up with &amp;quot;updated&amp;quot;? That&#x27;s the
same thing as &amp;quot;staged,&amp;quot; right?&lt;&#x2F;p&gt;
&lt;p&gt;To sum this up, you &amp;quot;add&amp;quot; an &amp;quot;untracked&amp;quot; file to the &amp;quot;index&amp;quot; (bad
name) a.k.a. &amp;quot;staging area&amp;quot; (good name) a.k.a. &amp;quot;cache&amp;quot; (lousy name).
Then it becomes a &amp;quot;change to be committed&amp;quot; that can be &amp;quot;unstaged&amp;quot;
using the &amp;quot;reset&amp;quot; command. If you change an existing file, it becomes
&amp;quot;changed&amp;quot;&#x2F;&amp;quot;modified&amp;quot; and needs to be &amp;quot;updated&amp;quot; (which you do with
&amp;quot;add&amp;quot;).&lt;&#x2F;p&gt;
&lt;p&gt;Can you see the problem here?&lt;&#x2F;p&gt;
&lt;p&gt;(Based on Git version 1.7.0.4.)&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>How to run Django without a database</title>
            <pubDate>Mon, 23 May 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/05/23/How-to-run-Django-tests-without-a-database/</link>
            <guid>https://www.librador.com/2011/05/23/How-to-run-Django-tests-without-a-database/</guid>
            <description>&lt;p&gt;Django is an all-in one solution for building interactive web sites.
It&#x27;s very good for a typical setup with a web server and a database.
But what if you don&#x27;t need a database, for example if you get all the
data through external services? Or if you&#x27;re using Django with a NoSQL
database, not using Django&#x27;s built-in support for data models?&lt;&#x2F;p&gt;
&lt;p&gt;It is possible to run Django without setting up a database.
In settings.py, just set DATABASES to an empty dictionary:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;DATABASES = {}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Much of the default functionality in Django expects there to be a
database. The following common applications will not work
with this configuration because they require a database:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;auth&lt;&#x2F;li&gt;
&lt;li&gt;contenttypes&lt;&#x2F;li&gt;
&lt;li&gt;sites&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;These applications have to be disabled.&lt;&#x2F;p&gt;
&lt;p&gt;The following applications can be used without a database:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;sessions: Can be
&lt;a href=&quot;http:&#x2F;&#x2F;docs.djangoproject.com&#x2F;en&#x2F;1.3&#x2F;topics&#x2F;http&#x2F;sessions&#x2F;#using-cached-sessions&quot;&gt;configured&lt;&#x2F;a&gt;
to use a file or the cache instead of the database.&lt;&#x2F;li&gt;
&lt;li&gt;messages: Does not use any storage directly, but depends on sessions
by default. This can be
&lt;a href=&quot;http:&#x2F;&#x2F;docs.djangoproject.com&#x2F;en&#x2F;1.3&#x2F;ref&#x2F;contrib&#x2F;messages&#x2F;#storage-backends&quot;&gt;configured&lt;&#x2F;a&gt;
though.&lt;&#x2F;li&gt;
&lt;li&gt;staticfiles: Does not use the database.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The only problem left is that Django&#x27;s test runner sets up a database
when you run the command &lt;code&gt;manage.py test&lt;&#x2F;code&gt;. It is simple to disable
that behaviour.&lt;&#x2F;p&gt;
&lt;p&gt;Just create the file &lt;code&gt;testing.py&lt;&#x2F;code&gt; with the following contents:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&amp;quot;&amp;quot;&amp;quot;Support for testing.&amp;quot;&amp;quot;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;from django.test.simple import DjangoTestSuiteRunner
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;class DatabaselessTestRunner(DjangoTestSuiteRunner):
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&amp;quot;&amp;quot;A test suite runner that does not set up and tear down a database.&amp;quot;&amp;quot;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    def setup_databases(self):
&lt;&#x2F;span&gt;&lt;span&gt;        &amp;quot;&amp;quot;&amp;quot;Overrides DjangoTestSuiteRunner&amp;quot;&amp;quot;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;        pass
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    def teardown_databases(self, *args):
&lt;&#x2F;span&gt;&lt;span&gt;        &amp;quot;&amp;quot;&amp;quot;Overrides DjangoTestSuiteRunner&amp;quot;&amp;quot;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;        pass
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then in settings.py, make the following setting:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;TEST_RUNNER = &amp;#39;testing.DatabaselessTestRunner&amp;#39;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;That&#x27;s it. Now the test runner will not set up and tear down a
database.&lt;&#x2F;p&gt;
&lt;p&gt;Even though you can&#x27;t use Django&#x27;s models (the object&#x2F;relational
mapper), you will still need to create a file called &lt;code&gt;models.py&lt;&#x2F;code&gt; in
the application directory. This is so the test runner searches for the
tests in the corresponding &lt;code&gt;tests.py&lt;&#x2F;code&gt; file. The &lt;code&gt;models.py&lt;&#x2F;code&gt; file can
be empty.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>My most popular posts</title>
            <pubDate>Fri, 20 May 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/05/20/My-most-popular-posts/</link>
            <guid>https://www.librador.com/2011/05/20/My-most-popular-posts/</guid>
            <description>&lt;p&gt;Statistics is more interesting than you might think, at least when it
is about things that affect you. I have been using Google Analytics on
this site since April 2007, so I have gathered some data about what
posts visitors read, what keywords they used to find it, where they
are from and what browser they are using. Sometimes the statistics
surprise you.&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s the list of my most popular blog posts since April 2007. (The total number of pageviews is in parenthesis.)&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;28 Feb 2008 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2008&#x2F;02&#x2F;28&#x2F;Make3D-Creates-3D-Models-from-Photos&#x2F;&quot;&gt;Make3D Creates 3D Models from Photos&lt;&#x2F;a&gt; (2570)&lt;&#x2F;li&gt;
&lt;li&gt;06 Dec 2007 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2007&#x2F;12&#x2F;06&#x2F;Fotowoosh-released-as-Facebook-app&#x2F;&quot;&gt;Fotowoosh released as Facebook app&lt;&#x2F;a&gt; (1609)&lt;&#x2F;li&gt;
&lt;li&gt;17 Aug 2009 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2009&#x2F;08&#x2F;17&#x2F;Jekyll-blogging-like-a-hacker&#x2F;&quot;&gt;Jekyll: Blogging like a hacker&lt;&#x2F;a&gt; (1140)&lt;&#x2F;li&gt;
&lt;li&gt;14 Jun 2009 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2009&#x2F;06&#x2F;14&#x2F;How-to-enable-remote-desktop-on-headless-Mac&#x2F;&quot;&gt;How to enable remote desktop on headless Mac&lt;&#x2F;a&gt; (1091)&lt;&#x2F;li&gt;
&lt;li&gt;01 Feb 2008 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2008&#x2F;02&#x2F;01&#x2F;The-Real-Problem-with-Software-Piracy&#x2F;&quot;&gt;The Real Problem with Software Piracy&lt;&#x2F;a&gt; (1004)&lt;&#x2F;li&gt;
&lt;li&gt;08 Aug 2007 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2007&#x2F;08&#x2F;08&#x2F;The-Confusing-Mouseover&#x2F;&quot;&gt;The Confusing Mouseover&lt;&#x2F;a&gt; (723)&lt;&#x2F;li&gt;
&lt;li&gt;16 Jan 2009 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2009&#x2F;01&#x2F;16&#x2F;The-frame-rate-of-the-universe&#x2F;&quot;&gt;The frame rate of the universe&lt;&#x2F;a&gt; (637)&lt;&#x2F;li&gt;
&lt;li&gt;14 Jun 2008 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2008&#x2F;06&#x2F;14&#x2F;Set-maximum-threads-in-Blender%21&#x2F;&quot;&gt;Set maximum threads in Blender!&lt;&#x2F;a&gt; (578)&lt;&#x2F;li&gt;
&lt;li&gt;26 Feb 2009 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2009&#x2F;02&#x2F;26&#x2F;Meme-time-Wikipedia-album-generator&#x2F;&quot;&gt;Meme time: Wikipedia album generator&lt;&#x2F;a&gt; (520)&lt;&#x2F;li&gt;
&lt;li&gt;26 Apr 2008 » &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2008&#x2F;04&#x2F;26&#x2F;3D-Movies-Mainstream-or-Gimmick&#x2F;&quot;&gt;3D Movies - Mainstream or Gimmick?&lt;&#x2F;a&gt; (474)&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;From the top two posts, it&#x27;s obvious that creating 3D models from
photos is a popular subject.&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s a bit depressing to see that nothing I&#x27;ve written here since 2009 has been very popular. But then again, these are accumulated statistics over a long time, and it&#x27;s natural that older posts have had the time to get more views.&lt;&#x2F;p&gt;
&lt;p&gt;At least those posts reflect the content of this blog pretty well.
That is, it&#x27;s very unfocused. The only post I&#x27;m not very happy about
being on this list is &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2007&#x2F;08&#x2F;08&#x2F;The-Confusing-Mouseover&#x2F;&quot;&gt;The Confusing
Mouseover&lt;&#x2F;a&gt;,
because the only reason that it&#x27;s popular is that lots of people
google Microsoft Powerpoint. Perhaps I should set up
robots.txt so that search engines don&#x27;t index that page to
avoid disappointing people. Or I could use that Google juice to
promote my own alternative to Powerpoint. I just need to create one.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Stockholm Python User Group</title>
            <pubDate>Fri, 15 Apr 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/04/15/Stockholm-Python-User-Group/</link>
            <guid>https://www.librador.com/2011/04/15/Stockholm-Python-User-Group/</guid>
            <description>&lt;p&gt;Less than a month ago I was looking for a Python user group in
Stockholm, without finding any. One week ago, the local Django group
changed its name to &lt;a href=&quot;https:&#x2F;&#x2F;groups.google.com&#x2F;group&#x2F;python-stockholm&quot;&gt;Stockholm Python User
Group&lt;&#x2F;a&gt;, which made
my day.  I didn&#x27;t know that they were more like a Python group anyway.
Yesterday&#x27;s meetup, which was the first I attended, was informal and
spawned some interesting discussions.&lt;&#x2F;p&gt;
&lt;p&gt;This post is my attempt at making the group easier to find.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Higher frame rates in upcoming blockbusters</title>
            <pubDate>Wed, 13 Apr 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/04/13/Higher-frame-rates-in-upcoming-blockbusters/</link>
            <guid>https://www.librador.com/2011/04/13/Higher-frame-rates-in-upcoming-blockbusters/</guid>
            <description>&lt;p&gt;It&#x27;s not just
&lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2008&#x2F;10&#x2F;24&#x2F;Increase-the-frame-rate-or-be-boring-and-conservative&#x2F;&quot;&gt;me&lt;&#x2F;a&gt; any more.  Prominent people in the movie
industry are proposing higher frame rates for movies. &lt;a href=&quot;http:&#x2F;&#x2F;www.bleedingcool.com&#x2F;2011&#x2F;04&#x2F;12&#x2F;peter-jacksons-statement-on-why-the-hobbit-is-being-filmed-at-48-fps&#x2F;&quot;&gt;Peter Jackson is shooting The Hobbit at 48 fps&lt;&#x2F;a&gt;
and &lt;a href=&quot;http:&#x2F;&#x2F;www.hollywoodreporter.com&#x2F;news&#x2F;james-cameron-urges-industry-use-173577&quot;&gt;James Cameron considers 48 or 60 fps&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Critics say that film has been viewed at 24 fps for 90 years and it
has worked just fine. True, but why not aim for better image quality?
Filmmakers have done that since the medium was invented.  It&#x27;s not like
film stock and lenses didn&#x27;t evolve since the 1920&#x27;s. They also say
that higher frame rates look like soap operas shot on video. The
notion that higher frame rates look cheap will for sure be proved
wrong when The Hobbit and Avatar 2 premieres.&lt;&#x2F;p&gt;
&lt;p&gt;The most interesting idea comes from the conspiracy theorists that say
that increasing the frame rate is a way for the big studios to produce
movies with technology too expensive for independents. Following the
digital revolution in filmmaking you can get camera gear that is just
as good (or the same) as the equipment used by the major studios for
relatively little money. Today there&#x27;s no reason that there should be
differences in the image quality between high and low budget
films. Unless of course the major studios start shooting at 60 fps,
which the indies can&#x27;t afford, which is the whole point of this
according to the conspiracy theory.&lt;&#x2F;p&gt;
&lt;p&gt;My view on this is that we may have to accept that. And it may not be
a bad thing.&lt;&#x2F;p&gt;
&lt;p&gt;In the future, there may be a more visible difference between high and
low budget movies. Hollywood blockbusters will be 60 fps and 3D, while
indies will be 24 fps and 2D. There&#x27;s nothing wrong with that. In the
60&#x27;s, many low budget movies were still shot in black and white. It
didn&#x27;t make them worse than the expensive ones, although they had a
clearly different look. And as always, &lt;em&gt;different&lt;&#x2F;em&gt; doesn&#x27;t equal &lt;em&gt;worse&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>New job at Wussap</title>
            <pubDate>Tue, 12 Apr 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/04/12/New-job-at-Wussap/</link>
            <guid>https://www.librador.com/2011/04/12/New-job-at-Wussap/</guid>
            <description>&lt;p&gt;Yesterday was the last day of my paternity leave. I&#x27;m not going back
to &lt;a href=&quot;http:&#x2F;&#x2F;www.hiq.se&quot;&gt;HiQ&lt;&#x2F;a&gt;, which is a bit sad since I have had a
bunch of great colleagues there. But I have a good reason. My new job
is as the CTO of the web startup &lt;a href=&quot;http:&#x2F;&#x2F;www.wussap.com&quot;&gt;Wussap&lt;&#x2F;a&gt;. I
love being in charge of software development with a small and focused
team, so I couldn&#x27;t say no to this opportunity. I think we&#x27;ll be able
to release a great product, but it&#x27;s too early for me to say when.
I&#x27;ll keep you updated.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>What is wrong with The Girl with the Dragon Tattoo</title>
            <pubDate>Tue, 22 Mar 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/03/22/What-is-wrong-with-The-Girl-with-the-Dragon-Tattoo/</link>
            <guid>https://www.librador.com/2011/03/22/What-is-wrong-with-The-Girl-with-the-Dragon-Tattoo/</guid>
            <description>
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;a4d1f66b8bbbe78c00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;I must be wrong.&lt;&#x2F;p&gt;
&lt;p&gt;The 2009 film The Girl with the Dragon Tattoo (Swedish: &lt;em&gt;Män som hatar
kvinnor&lt;&#x2F;em&gt;) was a box-office smash hit both in its native Sweden and
abroad. Not only has it been popular among the audience, but it has
received plenty of good reviews and awards. The book upon which it is
based will be adapted again by no-one less than David Fincher.&lt;&#x2F;p&gt;
&lt;p&gt;So I must be wrong when I thought The Girl with the Dragon Tattoo
wasn&#x27;t a very good film. I didn&#x27;t think it was bad. Even a little
bit better than most of all of the police movies that we produce in
this country. I just didn&#x27;t think it was very special.&lt;&#x2F;p&gt;
&lt;p&gt;Perhaps I just don&#x27;t understand its greatness.  It could be, because
&lt;em&gt;I&#x27;m the single person in Sweden who hasn&#x27;t read the book&lt;&#x2F;em&gt;. That
must be it.  You need to be prepared for this kind of film.  You can&#x27;t
go to the cinema without any previous understanding of the story.&lt;&#x2F;p&gt;
&lt;p&gt;Yeah, that must be the problem.&lt;&#x2F;p&gt;
&lt;p&gt;Only, is it a good idea to require the audience to have read the book
to enjoy its adaptation? What is the point of the movie then?&lt;&#x2F;p&gt;
&lt;p&gt;Here is my &lt;em&gt;very humble&lt;&#x2F;em&gt; opinion (I&#x27;m very humble here as I&#x27;m
contradicting the collected opinion of critics and audience as well as
David bloody Fincher): An adaptation should stand on its own.  You
shouldn&#x27;t have to have read the book to enjoy the movie.&lt;&#x2F;p&gt;
&lt;p&gt;A common problem with movies adapted from books seem to be that the
filmmakers are afraid to upset those who have read the book.  People may
have favourite sequences or characters, so it&#x27;s safest to keep
everything from the book.  It&#x27;s just that everything can&#x27;t fit into
the length of a feature film, so the result is an unfocused story with
many subplots and characters.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m hoping that Fincher will dare to create a more focused story,
possibly disappointing those who will miss their favourite scene.&lt;&#x2F;p&gt;
&lt;p&gt;Since Fincher&#x27;s readaptation will hit the cinemas this year, I&#x27;ll now
go into details about what bothered me with the Swedish version, and
we&#x27;ll see later on if Fincher&#x27;s version is better in those
respects. The following will be somewhat spoilerish, so if you haven&#x27;t
seen it (unlikely if you&#x27;re Swedish), I suggest you stop now. You&#x27;ll
need to have seen it to understand what I&#x27;m talking about anyway.  It
will be quite long too. Sorry about that.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;plot&quot;&gt;Plot&lt;&#x2F;h2&gt;
&lt;p&gt;The main story of the movie is about how journalist Mikael
Blomkvist tries to find out what happened to the girl Harriet Vanger,
of the wealthy Vanger family, who disappeared 40 years ago.  The movie
is busy presenting characters and subplots for the first 80 minutes or
so. A telling quote from when Blomkvist is having dinner with Martin
and Cecilia Vanger at about 47 minutes into the movie: &lt;em&gt;&amp;quot;Om jag ska
vara helt ärlig så har jag inte hittat någonting.&amp;quot;&lt;&#x2F;em&gt; (&amp;quot;To be honest, I
haven&#x27;t found anything.&amp;quot;)&lt;&#x2F;p&gt;
&lt;p&gt;So Blomkvist doesn&#x27;t find out much in the beginning, but then he
discovers a series of cold-case murders that seem to be connected to
the girl&#x27;s disappearance. The story gets more interesting after this,
and a little tickling gruesome. (Not as much as an average episode of
CSI, mind you.) When I went to this movie, I was a little surprised by
this, as there is no hint in the first 30 minutes or so that there
will be anything gruesome in it.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;f37bad111c1084c500.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Movies often begin with a scene that gives the audience a feel for
what kind of movie this is.  (In Swedish this is called &lt;em&gt;anslag&lt;&#x2F;em&gt;; I
can&#x27;t find the English word right now, please help me!)  A simple
example is the opening scene before the credits of many James Bond
movies. This scene can be short and doesn&#x27;t have to be that much
connected to the actual story of the film.  Its purpose is to give the
audience a promise about what kind of movie they&#x27;re going to see.
Even &lt;a href=&quot;https:&#x2F;&#x2F;secure.wikimedia.org&#x2F;wikipedia&#x2F;en&#x2F;wiki&#x2F;La_vita_%C3%A8_bella&quot;&gt;Life is
Beautiful&lt;&#x2F;a&gt;
(&lt;em&gt;La Vita è Bella&lt;&#x2F;em&gt;) which begins as a slapstick comedy and ends as a
concentration camp drama begins with a short scene that gives a hint
of what will happen later on.  So even though scenes 2 through 10 are
about showing the mundane everyday life of the main character, scene 1
should give a hint about what we will see after that.&lt;&#x2F;p&gt;
&lt;p&gt;The Girl with the Dragon Tattoo could have begun with a short scene
with an anonymous girl trapped in the murderer&#x27;s cage.  That would
have created interest and give a foreshadowing of the gruesomeness to
come.&lt;&#x2F;p&gt;
&lt;p&gt;Anyway, Blomkvist together with hacker&#x2F;weirdo Lisbeth Salander finally
find the murderer, and since he hadn&#x27;t had a lot of screen time before
that, I didn&#x27;t care very much about it.  I was neither surprised nor
knew from the start who the murderer was.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;characters&quot;&gt;Characters&lt;&#x2F;h2&gt;
&lt;p&gt;The Girl with the Dragon Tattoo has one strong
character, Lisbeth Salander. She is the one you remember after seeing
the movie, and most of the talk about the movie has been about her and
the actress Noomi Rapace.  (By the way, she prepared for the role by
losing several kilos.  Gaining and losing weight is the kind of
preparation that gets you Oscars!)  The other characters are quite
plain in comparison with Salander.  That&#x27;s all nice and well. Not
every character can be extreme in a movie that&#x27;s supposed to be
realistic.&lt;&#x2F;p&gt;
&lt;p&gt;I could argue that there are two many characters, which is a common
problem with book adaptations. That would perhaps just reveal my
inability to keep track of more than a couple of main characters, so
we will go on to...&lt;&#x2F;p&gt;
&lt;h2 id=&quot;exposition&quot;&gt;Exposition&lt;&#x2F;h2&gt;
&lt;p&gt;How, as a filmmaker, do you get information across to
the audience?  For example, to understand the story the audience needs
to know why two characters hate each other, who the owner of a certain
car is, or where the keys to the wine cellar are.&lt;&#x2F;p&gt;
&lt;p&gt;Getting the information across to the audience is called
exposition. This can be done in interesting ways, or it can be deadly
boring to the audience.  The &amp;quot;correct&amp;quot; way to give the audience
information is to apply age-old dramaturgical patterns that keep the
audience interested in getting the information.  Getting information
across to the audience through the dialogue between two conflicting
characters is one way. Or only giving out small hints, one at a time,
so the audience &lt;em&gt;wants&lt;&#x2F;em&gt; to find out more.  As a filmmaker, if a
character just holds a monologue about how it is, you&#x27;re probably
boring the audience.&lt;&#x2F;p&gt;
&lt;p&gt;In The Girl with the Dragon Tattoo, there are several sequences of
obvious exposition. For example when Henrik Vanger (the elderly CEO of
the Vanger company) tells the story about the disappearance of Harriet
Vanger.  Director Niels Arden Oplev uses voice-over monologues and
elements like black and white portraits on a wall and some small gauge
footage shot at the day of the girl&#x27;s disappearance. It&#x27;s a cheap and
fast way to get the information across. It&#x27;s definitely not a visual
experience, and feels a lot like a low-budget educational video for
viewing in schools. If they had simplified the story, much of this
exposition would have been unnecessary, so the information that still
would have to come across could be presented in a more interesting
way.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;subplots&quot;&gt;Subplots&lt;&#x2F;h2&gt;
&lt;p&gt;Movies often contain parallel storylines. Subplots can
provide depth make by telling a story that is thematically similar to
the main storyline. They can be used as something to cut away to so
that slow parts of the main story can be skipped.  Or they can be used
to create tension by cutting away from the main storyline when it&#x27;s
getting exciting.  But what if the subplot is more interesting than
the main story? Shouldn&#x27;t then the subplot have been the main story
instead?&lt;&#x2F;p&gt;
&lt;p&gt;In The Girl with the Dragon Tattoo, there is a subplot about Lisbeth
Salander and her supervisor, the creepy sadist&#x2F;rapist Bjurman.  It&#x27;s a
subplot that takes quite a lot of screen time, which adds to the
already (too) long length of the movie.  Unfortunately, it&#x27;s the most
interesting story in the movie, so I don&#x27;t think it should be cut.
The main storyline about Harriet&#x27;s disappearance is far from as
interesting as this one. Question is, will Fincher be able to make the
main story as interesting as Salander&#x27;s?&lt;&#x2F;p&gt;
&lt;p&gt;There are hints of other subplots in the movie. There is a suggestion
that Cecilia Vanger is romantically interested in Blomkvist.  At
approximately 49 minutes into the movie, she invites Blomkvist for a
glass of wine. He politely denies, and what seems to be the beginning
of a subplot ends up nowhere. I guess this scene is probably a remnant
from the book, where this subplot probably led somewhere.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;3391700251c6904300.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;The movie is bookended by the story about how Blomkvist has been setup
by powerful industrialist Hans-Erik Wennerström and will have to go to
jail for libel. There&#x27;s nothing dramaturgically wrong with bookends
unrelated to the main story, although I think the events around it get
a bit too much screen time in a movie that is already too long.  It
serves as a setup for the sequels, but setting things up for a sequel
often makes a movie worse.  What would The Matrix be if they have
included the Architect and the Merovingian in the first movie?&lt;&#x2F;p&gt;
&lt;p&gt;This is just the ramblings of a confused Swede. I must be
wrong. Everyone else loved this movie.  And the book is great, I&#x27;m
sure. I still haven&#x27;t read it.&lt;&#x2F;p&gt;
&lt;p&gt;I actually have high hopes about David Fincher&#x27;s readaptation.  He&#x27;s a
great director. I mean, he even managed to make a movie about the
development of a freaking web site exciting. So perhaps he&#x27;ll make The
Girl with the Dragon Tattoo justice. I&#x27;m crossing my fingers.&lt;&#x2F;p&gt;
&lt;p&gt;UPDATE: See &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2012-01-29-Finchers-Girl-with-the-Dragon-Tattoo-So-much-better&quot;&gt;the follow up post&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Dangers of SVG and the img tag</title>
            <pubDate>Wed, 09 Mar 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/03/09/Dangers-of-SVG-and-the-img-tag/</link>
            <guid>https://www.librador.com/2011/03/09/Dangers-of-SVG-and-the-img-tag/</guid>
            <description>&lt;p&gt;At this week&#x27;s meeting at &lt;a href=&quot;http:&#x2F;&#x2F;www.owasp.org&#x2F;index.php&#x2F;Sweden&quot;&gt;OWASP Sweden&lt;&#x2F;a&gt;,
security researcher Mario Heiderich held a presentation about
the security implications of SVG support in modern web browsers.&lt;&#x2F;p&gt;
&lt;p&gt;SVG (Scalable Vector Graphics) is based on XML
and is typically considered an
image format, just like JPEG or PNG, only that it is based
on vector graphics instead of bitmaps. But there is
a big difference: &lt;strong&gt;SVG files can contain code&lt;&#x2F;strong&gt;.
The code is in JavaScript and may be in &amp;lt;script&amp;gt; tags
or otherwise embedded in the SVG.&lt;&#x2F;p&gt;
&lt;p&gt;The immediate danger of this is that any site that allows
a user to upload or link to an image may be open for
cross site scripting attacks. For example, an attacker can
upload an SVG file to Wikipedia and have its code executed
in an unsuspecting victim&#x27;s browser. Or an attacker can just post a link
to an SVG image on a forum. If the forum software links
to images with the &amp;lt;img&amp;gt; tag, the users&#x27; browsers will load the SVG and
possibly execute the code. (Security measures have been added to
avoid this, but according to Mario Heiderich they are
easy to circumvent.)&lt;&#x2F;p&gt;
&lt;p&gt;My main takeaway from the presentation was that the &amp;lt;img&amp;gt;
tag is not as harmless as it may seem after SVG support
was added. You need to be careful with it!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Added March 11th:&lt;&#x2F;strong&gt; Here is &lt;a href=&quot;http:&#x2F;&#x2F;www.owasp.org&#x2F;images&#x2F;0&#x2F;03&#x2F;Mario_Heiderich_OWASP_Sweden_The_image_that_called_me.pdf&quot;&gt;Mario&#x27;s presentation about SVG&lt;&#x2F;a&gt;. He also held a &lt;a href=&quot;http:&#x2F;&#x2F;www.owasp.org&#x2F;images&#x2F;a&#x2F;a3&#x2F;Mario_Heiderich_OWASP_Sweden_Locking_the_throneroom.pdf&quot;&gt;presentation about protecting against XSS with Object.defineProperty&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Media center&#x27;s standby power consumption</title>
            <pubDate>Sat, 05 Mar 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/03/05/Media-centers-power-consumption/</link>
            <guid>https://www.librador.com/2011/03/05/Media-centers-power-consumption/</guid>
            <description>&lt;p&gt;I wrote previously about my &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2011&#x2F;01&#x2F;18&#x2F;Computer%27s-Standby-Power-Consumption&#x2F;&quot;&gt;computer system&#x27;s power consumption in standby mode&lt;&#x2F;a&gt;,
where I noted that my computer and peripherals used 13.5 watts when it
was switched &amp;quot;off&amp;quot;.&lt;&#x2F;p&gt;
&lt;p&gt;Next, I tested on our media center (which is just a fancy name
for our TV and its connected devices).&lt;&#x2F;p&gt;
&lt;p&gt;Here are the results:&lt;&#x2F;p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Device&lt;&#x2F;th&gt;&lt;th&gt;Switched On&lt;&#x2F;th&gt;&lt;th&gt;In Standby&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;46&quot; plasma TV&lt;&#x2F;td&gt;&lt;td&gt;200 W&lt;&#x2F;td&gt;&lt;td&gt;0.5 W&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Cable box&lt;&#x2F;td&gt;&lt;td&gt;10 W&lt;&#x2F;td&gt;&lt;td&gt;8 W&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Stereo amplifier&lt;&#x2F;td&gt;&lt;td&gt;Depends&lt;&#x2F;td&gt;&lt;td&gt;7 W&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Nintendo Wii&lt;&#x2F;td&gt;&lt;td&gt;15 W&lt;&#x2F;td&gt;&lt;td&gt;1 or 6 W&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;PS3 Slim&lt;&#x2F;td&gt;&lt;td&gt;64 W&lt;&#x2F;td&gt;&lt;td&gt;0.5 W&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;DVD&#x2F;hard disk recorder&lt;&#x2F;td&gt;&lt;td&gt;31 W&lt;&#x2F;td&gt;&lt;td&gt;3 W&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr class=&quot;sum&quot;&gt;&lt;td&gt;Total&lt;&#x2F;td&gt;&lt;td&gt;319+ W&lt;&#x2F;td&gt;&lt;td&gt;23.5 or 36 W&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;
&lt;&#x2F;table&gt;
&lt;p&gt;The measurement for the TV is approximate since a plasma
TV uses more or less power depending on the brightness
of whatever it&#x27;s displaying. The drain in standby mode
is just half a watt, which is very good. There are new
rules within the European Union that devices should
not use more than 0.5 watts in standby mode, and since
the TV is new, it complies with this.&lt;&#x2F;p&gt;
&lt;p&gt;The Wii&#x27;s power consumption in standby depends
on whether the &lt;em&gt;standby connection&lt;&#x2F;em&gt; is enabled.
(It&#x27;s in Wii Settings → Settings → WiiConnect24.)&lt;&#x2F;p&gt;
&lt;p&gt;The cable box is suprisingly bad. It hardly consumes any
less energy in standby mode than when it&#x27;s switched on.
The stereo amplifier is very bad too. I don&#x27;t use it that
often, and it has a real, physical off button, so
I don&#x27;t mind it so much.&lt;&#x2F;p&gt;
&lt;p&gt;For the computer, I bought a power strip that automatically
cuts the power to the peripherals when the computer is
switched off. I&#x27;m not very fond of the idea of doing this for the TV.
It doesn&#x27;t seem safe to cut the power to the game consoles
if you switch off the TV, accidentally or not.
Also, the cable box requires up to a minute to boot
after the power has been cut. Our family watch TV
a lot, so it has to be fast and easy to switch on and off.
I have no good solution to this.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Git vs Mercurial presentation</title>
            <pubDate>Fri, 04 Mar 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/03/04/Git-vs-Mercurial-presentation/</link>
            <guid>https://www.librador.com/2011/03/04/Git-vs-Mercurial-presentation/</guid>
            <description>&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;a&#x2F;zoom.nu&#x2F;present&#x2F;view?id=dg5jzx2c_9chxw5mtz&quot;&gt;Here&#x27;s the presentation&lt;&#x2F;a&gt;
that I and Johan Maasing held at yesterday&#x27;s
&lt;a href=&quot;https:&#x2F;&#x2F;sites.google.com&#x2F;site&#x2F;stockholmgtug&#x2F;&quot;&gt;Google Technology User Group Stockholm&lt;&#x2F;a&gt;
meeting. It&#x27;s a brief comparison of the Git and Mercurial
version control systems.
I guess it won&#x27;t give you much unless you
a) understand Swedish and b) attended the talk,
as most of the interesting parts were in the whiteboard
presentation and the interaction with the audience.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Computer&#x27;s standby power consumption</title>
            <pubDate>Tue, 18 Jan 2011 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2011/01/18/Computer&apos;s-Standby-Power-Consumption/</link>
            <guid>https://www.librador.com/2011/01/18/Computer&apos;s-Standby-Power-Consumption/</guid>
            <description>&lt;p&gt;I guess you know that many electronic devices 
aren&#x27;t really switched &lt;em&gt;off&lt;&#x2F;em&gt; when you switch them off.
Sometimes this is convenient. It is easier to switch on the TV
with the remote than pressing a button on the set.
This requires the device to be in standby mode to
be able to receive the signal. The problem is that
standby mode consumes power. Even many devices that you
switch on with a physical button are in standby mode.
The button is more like a key that the electronics
in the device is constantly waiting for you to press.
Few devices today, except for lamps, have a &lt;em&gt;real&lt;&#x2F;em&gt; button that 
physically disconnects the power.
(I have a network switch that is marketed as &amp;quot;green&amp;quot;
because it has this environmentally friendly feature,
an &lt;em&gt;actual&lt;&#x2F;em&gt; on&#x2F;off button.)&lt;&#x2F;p&gt;
&lt;p&gt;In total, there is a lot of power consumed by all those devices
that are in standby. I bought a cheap power consumption meter
to see how much power my electronics use when I&#x27;m not using them.&lt;&#x2F;p&gt;
&lt;p&gt;I tested it on my desktop computer. I don&#x27;t use the computer daily,
and only in the evenings, so it is switched off most of the time.&lt;&#x2F;p&gt;
&lt;p&gt;Or is it really switched &lt;em&gt;off&lt;&#x2F;em&gt;? I measured the amount of
power used after I shut down the computer.&lt;&#x2F;p&gt;
&lt;p&gt;When the computer is in standby, the whole system still
consumes 13.5 watts. By switching devices off, I found
out the power consumption for each of them:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Computer: 2 watts&lt;&#x2F;li&gt;
&lt;li&gt;Two monitors: 3 watts (1 watt in standby mode initiated with button)&lt;&#x2F;li&gt;
&lt;li&gt;Powered USB hub: .5 watts&lt;&#x2F;li&gt;
&lt;li&gt;Eight port gigabit switch: 8 watts&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;As you can see, most of the power is used by the switch. This
makes sense, since it doesn&#x27;t have a standby mode, and it&#x27;s still on.
This is not the &amp;quot;green&amp;quot; switch I was talking about before,
so to turn this one off, I&#x27;d have to pull the plug.&lt;&#x2F;p&gt;
&lt;p&gt;The monitors enter some kind of power saving state when
I switch off the computer. An interesting discovery was
that when I press the standby button on the monitors,
they enter a &amp;quot;deeper&amp;quot; standby state that uses less power.
The monitor still uses power while keeping itself busy
waiting for me to press the button again.&lt;&#x2F;p&gt;
&lt;p&gt;OK, 13.5 watts is not a huge number, but it is unnecessary
since I don&#x27;t use this computer that much. In the future,
I&#x27;ll be more careful switching off the whole system with
the button on the power strip.&lt;&#x2F;p&gt;
&lt;p&gt;Some more &amp;quot;fascinating facts&amp;quot;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &amp;quot;micro monitor&amp;quot; speakers use 10 watts when not in use, but they have a
real power button and I remember to switch them off most of the time.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;The whole system uses 230 watts when the computer is on and idle,
134 watts when it&#x27;s idle with screen saver (the kind that puts
the monitor in the &amp;quot;light&amp;quot; standby state).&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;When the computer is in sleep mode, the system uses 1.5 watts more
than when the computer is switched &amp;quot;off.&amp;quot;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
        </item>
        <item>
            <title>Alex Ferrari&#x27;s Red Princess Blues</title>
            <pubDate>Tue, 30 Nov 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/11/30/Alex-Ferraris-Red-Princess-Blues/</link>
            <guid>https://www.librador.com/2010/11/30/Alex-Ferraris-Red-Princess-Blues/</guid>
            <description>&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;cdb6e07eff05d9cd00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
I received a copy of Alex Ferrari&#x27;s new short film
&lt;a href=&quot;http:&#x2F;&#x2F;www.redprincessblues.com&quot;&gt;Red Princess Blues&lt;&#x2F;a&gt;
in the mail. Yes, snail mail still exists, and it is a good way
to get someone&#x27;s attention. As I prefer watching movies on the TV
instead of the computer, I&#x27;m thankful for that. So what can I say
about the film?&lt;&#x2F;p&gt;
&lt;p&gt;Well, there are two kinds of short films: the ones that
use the short format to tell an interesting story,
and the ones that are more like a showcase for a feature.
OK, there are more kinds, like art films that don&#x27;t
bother to tell a story at all, but let&#x27;s leave that aside.
I have the impression that American shorts more often
than not are the showcase kind, that are supposed to be a &amp;quot;demo&amp;quot;
for the real deal, which is the feature. Producing a short
is a way to show that you have the skills to produce a good feature.
In Europe, shorts are more regarded as an art form in itself.
In my opinion, many European shorts are too much &lt;em&gt;art&lt;&#x2F;em&gt; and
too little &lt;em&gt;movie&lt;&#x2F;em&gt;, but the good ones deliver a cinematic
experience that works with the short format instead of
feeling just like a trimmed down feature.&lt;&#x2F;p&gt;
&lt;p&gt;I have written previously about Ferrari&#x27;s shorts
&lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2005&#x2F;11&#x2F;04&#x2F;Broken&#x2F;&quot;&gt;Broken&lt;&#x2F;a&gt;
and &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;2007&#x2F;07&#x2F;11&#x2F;Cyn&#x2F;&quot;&gt;Cyn&lt;&#x2F;a&gt;.
I thought Broken was a great action&#x2F;effects sequence, but
it didn&#x27;t deliver what felt like a complete story. It was
more like a sequence taken from an action movie, hence
a feature showcase. Cyn was more like a real (European style if you will)
short film as it told a short but complete story.&lt;&#x2F;p&gt;
&lt;p&gt;So what about Red Princess Blues? It&#x27;s a tale of Zoe,
a young innocent girl who goes to some seedy carnival backstage bar.
She meets the sleazy carnival worker Rimo. Being sleazy is
like a rule at this place, so everyone is dripping of
grease and sweat. Several scenes in Robert Rodriguez&#x27;s movies
come to mind, like in the bar in From Dusk Till Dawn.
Anyway, a young innocent girl in a shabby bar; that
can only end in trouble. And it does. Fortunately for
Zoe, the mysterious Princess is there to help her out of
the situation. The film&#x27;s climax is a fight scene with
(for a short) impressive stunts and choreography.&lt;&#x2F;p&gt;
&lt;p&gt;What makes this short stand out from so many others is
the production design. The bar with the old
and worn posters for carnival attractions looks great.
There&#x27;s also good acting from Richard Tyson (Rimo, the seedy carny)
and some well-written dialogue.&lt;&#x2F;p&gt;
&lt;p&gt;So, in what category does this short belong? Does it feel
like a demo for a feature? The answer to that is, yes, definitely.
It is actually supposed to be the first scene in a feature film.
Perhaps it&#x27;s unfair to judge it as a short for this reason, but sorry, Alex,
I&#x27;m European. I look at shorts as independent works of themselves.&lt;&#x2F;p&gt;
&lt;p&gt;Even though the movie&#x27;s runtime is only 11 minutes, the story moves along a
bit too slowly. After the first minute, you pretty much know
what will happen. The title character, Princess, doesn&#x27;t get much
screen time until the last third of the movie, which is problematic since
in any movie there isn&#x27;t much drama until the protagonist
and antagonist start their conflict.
Spending seven minutes before introducing the protagonist would not
be a good idea even in a long format film, so I hope Ferrari will
reconsider this if he gets to make a feature.&lt;&#x2F;p&gt;
&lt;p&gt;Apart from there being not much of a story, I was impressed by this film.
It was shot in two days at a budget of $10,000, which is low
but not ultra-low, and the production values are great.&lt;&#x2F;p&gt;
&lt;p&gt;The film, together with behind the scenes material,
is sold as an iPhone application, an interesting way to market
and sell a short. It&#x27;s only 99 cents, but with enough downloads
it may be a way to finance a movie.&lt;&#x2F;p&gt;
&lt;p&gt;So, does Red Princess Blues work as a stand-alone short film?
Not really. But as a &amp;quot;demo&amp;quot; to attract attention and financing for a
feature? Absolutely.&lt;&#x2F;p&gt;
&lt;p&gt;Go have a look at the &lt;a href=&quot;http:&#x2F;&#x2F;www.redprincessblues.com&quot;&gt;film&#x27;s web site&lt;&#x2F;a&gt;,
and also take a look at the animated prequel
&lt;em&gt;Red Princess Blues Animated&lt;&#x2F;em&gt; which is available on
&lt;a href=&quot;http:&#x2F;&#x2F;www.myspace.com&#x2F;video&#x2F;vid&#x2F;53030642&quot;&gt;MySpace&lt;&#x2F;a&gt;
and &lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;video&#x2F;wab&#x2F;vi3392864793&#x2F;&quot;&gt;IMDB&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Copyright works both ways</title>
            <pubDate>Sun, 28 Nov 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/11/28/Copyright-works-both-ways/</link>
            <guid>https://www.librador.com/2010/11/28/Copyright-works-both-ways/</guid>
            <description>&lt;p&gt;This week there were upset voices on Twitter 
about copyright infringement. Copyright infringement? On the internet?
Doesn&#x27;t that happen all the time? Does anyone care? you may ask.&lt;&#x2F;p&gt;
&lt;p&gt;Well, those two cases retrieved attention from the internet crowd
because the roles were reversed. (Of course, the people on the net
are individuals with differing opinions. I use the term internet crowd
as a sweeping generalization for the general views that are
shared by most of the people active on Twitter, blogs etc.)&lt;&#x2F;p&gt;
&lt;p&gt;In the &lt;a href=&quot;http:&#x2F;&#x2F;illadore.livejournal.com&#x2F;30674.html&quot;&gt;first case&lt;&#x2F;a&gt;,
food blogger Monica Gaudio discovered that an article she
had written had been republished by a magazine without her
permission or knowledge; a clear case of copyright infringement.
In the &lt;a href=&quot;http:&#x2F;&#x2F;www.dagensmedia.se&#x2F;nyheter&#x2F;kampanjer&#x2F;article3024183.ece&quot;&gt;other case&lt;&#x2F;a&gt; (in Swedish), a web agency asked an applicant for a web design
position to design a sample web site for one of their clients.
The agency then sold the applicant&#x27;s sample as their own to the client
without paying or even telling the applicant.&lt;&#x2F;p&gt;
&lt;p&gt;Both these cases are the kind that cause uproar among the internet crowd.
All while the very same crowd defends the organized copyright infringement
on a grand scale that is known as file sharing.
This phenomenon is understandable.
In the case of the &amp;quot;little man&amp;quot; versus the powerful enemy,
we humans tend to side with the underdog. But with millions of
&amp;quot;little men&amp;quot; with the power of communication offered by the internet,
they are more empowered than ever and can take down even a large corporation.
It is not David versus Goliath anymore.&lt;&#x2F;p&gt;
&lt;p&gt;Copyright itself doesn&#x27;t take sides. We need to remember
that copyright is not only for the big corporations to abuse.
There is some idea of fairness about it as well, an idea
that the internet crowd seems to agree on.
In the discussions about copyright and so called piracy,
we need to keep in mind that copyright works both ways.
It gives rights not only to the large corporations,
but also to the little man.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Programming podcasts</title>
            <pubDate>Wed, 17 Nov 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/11/17/Programming-podcasts/</link>
            <guid>https://www.librador.com/2010/11/17/Programming-podcasts/</guid>
            <description>&lt;p&gt;I find podcasts a convenient way to get information when
I don&#x27;t have my hands and eyes free to read a book
or browse the web.&lt;&#x2F;p&gt;
&lt;p&gt;Here are the podcasts about programming that I&#x27;m
currently subscribed to.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;twit.tv&#x2F;FLOSS&quot;&gt;FLOSS Weekly&lt;&#x2F;a&gt; (&lt;a href=&quot;http:&#x2F;&#x2F;leoville.tv&#x2F;podcasts&#x2F;floss.xml&quot;&gt;RSS feed&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Randal Schwartz and co-hosts interview people in the free&#x2F;open source software
community. The target audience is obviously pretty technical,
as they often talk about programming-related subjects.
Since I am pretty technical, I don&#x27;t mind, but to make free&#x2F;open source
software more popular among non-techies, a podcast with
a user perspective would complement this very well.
But perhaps only technical people listen to podcasts to begin with,
I don&#x27;t know.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.se-radio.net&#x2F;&quot;&gt;Software Engineering Radio&lt;&#x2F;a&gt; (&lt;a href=&quot;http:&#x2F;&#x2F;feeds.feedburner.com&#x2F;se-radio&quot;&gt;feed&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Two German guys talk about serious software development.
As you might guess, it does get a bit dull sometimes.
They do have some interesting guests and subjects though,
so it&#x27;s worth a listen. Since they often discuss fundamental topics
instead of the latest fad, this podcast would be a good listen
for someone wanting to break into software engineering.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.hanselminutes.com&quot;&gt;Hanselminutes&lt;&#x2F;a&gt; (&lt;a href=&quot;http:&#x2F;&#x2F;feeds.feedburner.com&#x2F;HanselminutesCompleteMP3&quot;&gt;feed&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;I don&#x27;t usually program for Windows specifically, and never for .Net,
but this podcast is so well done that I enjoy it anyway.
Many episodes are not about Windows development at all,
and those are of course the most interesting ones.&lt;&#x2F;p&gt;
&lt;p&gt;So, what are &lt;em&gt;your&lt;&#x2F;em&gt; favourite podcasts? I&#x27;d like to listen to more
good ones, so I appreciate tips.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Dynamic Stockholm</title>
            <pubDate>Fri, 22 Oct 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/10/22/Dynamic-Stockholm/</link>
            <guid>https://www.librador.com/2010/10/22/Dynamic-Stockholm/</guid>
            <description>&lt;p&gt;There was a mini-conference a couple of days ago called Dynamic Stockholm,
which was about dynamic programming languages.&lt;&#x2F;p&gt;
&lt;p&gt;It started at four o&#x27;clock, and I missed the first presentation
by &lt;a href=&quot;http:&#x2F;&#x2F;divineprogrammer.blogspot.com&quot;&gt;Mikael Kindborg&lt;&#x2F;a&gt;.
I guess it was similar to the one I have heard before.&lt;&#x2F;p&gt;
&lt;p&gt;I arrived at the venue at
&lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Kastellholmen&quot;&gt;Kastellholmen&lt;&#x2F;a&gt;
(an islet close to the city center), midway through
Niklas Björnerstedt&#x27;s talk about agile software releases.
It didn&#x27;t seem that connected to the theme,
but Niklas&#x27;s Twitter handle is &lt;a href=&quot;http:&#x2F;&#x2F;twitter.com&#x2F;smalltalk80&quot;&gt;smalltalk80&lt;&#x2F;a&gt;,
so I guess that&#x27;s his connection to the event.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;blog.fitzell.ca&#x2F;&quot;&gt;Julian Fitzell&lt;&#x2F;a&gt;&#x27;s talk about Seaside
was interesting, because it&#x27;s a web framework with a different
approach, using a programming language with a different approach; Smalltalk.&lt;&#x2F;p&gt;
&lt;p&gt;The most interesting talk this day was about Groovy.
I didn&#x27;t expect much, but &lt;a href=&quot;http:&#x2F;&#x2F;twitter.com&#x2F;niklasl&quot;&gt;Niklas Lindström&lt;&#x2F;a&gt;&#x27;s
presentation convinced me that Groovy is a much more powerful language
than I had wrongly assumed. If you&#x27;re in a Java environment, it&#x27;s
definitely worth a look.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;twitter.com&#x2F;hankhero&quot;&gt;Henrik Hjelte&lt;&#x2F;a&gt; spoke about Common Lisp.
I was hoping to get an understanding about what&#x27;s so great about it,
because some people are so in love with it. Sure, macros
seem great, but if it comes at the price of unreadable code,
I&#x27;m not so sure that it&#x27;s worth it. Unfortunately Henrik&#x27;s speedy presentation
didn&#x27;t help improving this picture much, as in my eyes and ears it
was difficult to follow. The audiovisual presentation style, using heavy metal
music and images, was a fun though.&lt;&#x2F;p&gt;
&lt;p&gt;I think &lt;a href=&quot;http:&#x2F;&#x2F;twitter.com&#x2F;jonasbeckman&quot;&gt;Jonas Beckman&lt;&#x2F;a&gt;&#x27;s talk
would have been difficult to follow too if I hadn&#x27;t been very familiar
with Python already. Python is a difficult language to impress people
with since it doesn&#x27;t have one single feature that&#x27;s really cool.
Instead, Python is a pragmatic language that is well designed, has
great standard and third party libraries, is easy to learn and has lots of
useful features. Jonas still made a heroic attempt at showing one specific
cool feature of Python: generators.
It was interesting since it made me think about generators
a little differently. I&#x27;m not so sure that it &amp;quot;sold&amp;quot; the language to
the other attendees though.&lt;&#x2F;p&gt;
&lt;p&gt;Björn Eiderbäck&#x27;s final talk about Smalltalk was inspiring.
Smalltalk is a nice language. For good or bad, it has the idea
that it is not only a programming language, but a complete
environment. You don&#x27;t just edit Smalltalk in a text editor
and compile it on the command line. The development environment
and the runtime is tightly coupled in a way that provides some
very nice dynamic features for development and debugging.
At the same time, you&#x27;re very much tied to the environment,
so if you don&#x27;t like its text editor for example, you&#x27;re
not going to be happy. The whole idea is perhaps too different,
especially if you&#x27;re a text editor and command-line person.
For example, Björn briefly showed the built-in version control
of the Smalltalk environment, something that I would prefer to
use an external tool for. (Here I admittedly express the kind of conservatism
that suppresses progress.)&lt;&#x2F;p&gt;
&lt;p&gt;Unfortunately there is no web page for the event, so it&#x27;s difficult
to tell if there will be more of them. I hope so,
because it&#x27;s always fun to hear about ideas and views from like-minded
people.&lt;&#x2F;p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;http:&#x2F;&#x2F;www.highlevelbits.com&#x2F;2010&#x2F;10&#x2F;dynmaic-stockholm-2010.html&quot;&gt;froderik&#x27;s post about the event&lt;&#x2F;a&gt; for helping me remembering people&#x27;s names.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Mobile friendlier site with media query in CSS</title>
            <pubDate>Sat, 05 Jun 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/06/05/Mobile-friendlier-site-with-media-query-in-CSS/</link>
            <guid>https://www.librador.com/2010/06/05/Mobile-friendlier-site-with-media-query-in-CSS/</guid>
            <description>&lt;p&gt;I got a HTC Desire phone today after living with an old
non-smart SonyEricson for a while, so I thought it was
time to update this site so it looks better on mobile
phones.&lt;&#x2F;p&gt;
&lt;p&gt;The design of my site is based on
&lt;a href=&quot;http:&#x2F;&#x2F;quotedprintable.com&#x2F;pages&#x2F;scribbish&quot;&gt;Scribbish&lt;&#x2F;a&gt;
which was originally a theme for the Typo blog engine
that I &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;vilcans&#x2F;scribbish-jekyll&quot;&gt;ported&lt;&#x2F;a&gt;
to the site generator &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;mojombo&#x2F;jekyll&#x2F;&quot;&gt;Jekyll&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Scribbish has a fixed layout that is 900 pixels wide, which is
too much for the iPhone and Android browsers. You would have to either
scroll around horizontally to see the whole page, or zoom out and make the
text unreadable. (Browsers for less powerful phones actually
can handle this better by not even trying to render the pages
the same as in a desktop browser.)&lt;&#x2F;p&gt;
&lt;p&gt;A fixed layout isn&#x27;t very friendly to people who don&#x27;t want
to run their web browser maximized. For some reason, web
designers are very curious about what resolution people have
on their monitors, so they know how wide they can make their
designs. The resolution of the screen is irrelevant.
What matters is the size of the browser window!&lt;&#x2F;p&gt;
&lt;p&gt;To make this site look better on a device with less than 900
horizontal pixels, or in a window less than 900 pixels wide,
I made some changes to the CSS of the site. If the width
is at least 950 pixels, the sidebar is located to the right.
In a thinner display window, it is placed at the bottom of
the page instead to give more horizontal room.&lt;&#x2F;p&gt;
&lt;p&gt;I have tested the changes in Firefox, Chrome, IE6, IE8,
on an iPod Touch and Android and it looks fine.
Internet Explorer doesn&#x27;t support the &lt;em&gt;media query&lt;&#x2F;em&gt;
feature of CSS, so it will not move the sidebar to the
bottom if the window is thin, but the page is not worse
off than it was before.&lt;&#x2F;p&gt;
&lt;p&gt;Please let me know if you find any problems with the new design!&lt;&#x2F;p&gt;
&lt;p&gt;For the ones curious about how the media query looks,
here&#x27;s what I added to the stylesheet to override the styles
for devices with a width of less than 950 pixels:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;@media all and (max-width: 950px) {
&lt;&#x2F;span&gt;&lt;span&gt;  #header {
&lt;&#x2F;span&gt;&lt;span&gt;    height: auto;
&lt;&#x2F;span&gt;&lt;span&gt;    padding-bottom: 12px;
&lt;&#x2F;span&gt;&lt;span&gt;  }
&lt;&#x2F;span&gt;&lt;span&gt;  #container, #content, #sidebar {
&lt;&#x2F;span&gt;&lt;span&gt;    float: none;
&lt;&#x2F;span&gt;&lt;span&gt;    width: 100%;
&lt;&#x2F;span&gt;&lt;span&gt;    padding: 0;
&lt;&#x2F;span&gt;&lt;span&gt;    border: none;
&lt;&#x2F;span&gt;&lt;span&gt;    margin: 0;
&lt;&#x2F;span&gt;&lt;span&gt;  }
&lt;&#x2F;span&gt;&lt;span&gt;  #sidebar {
&lt;&#x2F;span&gt;&lt;span&gt;    border-top: 1px solid black;
&lt;&#x2F;span&gt;&lt;span&gt;    padding-top: 5px;
&lt;&#x2F;span&gt;&lt;span&gt;  }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
        </item>
        <item>
            <title>Use web technologies for GUI development!</title>
            <pubDate>Thu, 03 Jun 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/06/03/Use-web-technologies-for-GUI-development/</link>
            <guid>https://www.librador.com/2010/06/03/Use-web-technologies-for-GUI-development/</guid>
            <description>&lt;p&gt;HTML, CSS and JavaScript is the future for GUI programming.
This is one message I got out of the
&lt;a href=&quot;http:&#x2F;&#x2F;www.swdc-central.com&quot;&gt;Scandinavian Web Developer Conference&lt;&#x2F;a&gt;
this week.&lt;&#x2F;p&gt;
&lt;p&gt;It used to be difficult to create web pages that looked and
behaved like desktop applications. But since web applications
became more popular, the tools and practices improved.
Today, using web technologies to make user interfaces may
not only be as easy as using a GUI framework for desktop applications.
It may even be easier to use HTML and CSS for the GUI design
and JavaScript for the logic. Think about it:
There are probably more people that know HTML and CSS than there are
people who know how to create a GUI in Java Swing, Qt,
Adobe Flex or .net. There is plenty of information online
about HTML and CSS. There are good libraries that facilitates
making application-style GUIs in HTML.&lt;&#x2F;p&gt;
&lt;p&gt;And when it comes to JavaScript, it is becoming a mature language.
Large complex applications are written in JavaScript.
It&#x27;s not only about mouseovers and drop-down menus any more.
FireBug for Firefox and Google Chrome&#x27;s debugger are some of
the great development tools avaiable. The edit&#x2F;run cycle is very short.
And as far as programming languages goes, while not being perfect,
JavaScript is a quite nice language.&lt;&#x2F;p&gt;
&lt;p&gt;Then there&#x27;s the platform independence, which has become
even more important after Microsoft lost their total dominance
on user-facing operating systems. They have lost some users
to Mac, but today there are many other platforms that people use
every day. I&#x27;m thinking about mobile devices, which is a
diverse market with several platforms that have little in common
except one thing: They all support HTML, CSS and JavaScript in
their browsers.&lt;&#x2F;p&gt;
&lt;p&gt;Even though it is problematic
to create a web page that renders exactly the same on all browsers
on all operating systems, HTML+CSS+JS has achived something that
no other framework has done: It has good portability
while allowing you to create beautiful and sleek user interfaces.&lt;&#x2F;p&gt;
&lt;p&gt;Web technologies are definitely worth a look when considering
what user interface framework to use for your next project.
Even an off-line desktop application, or a mobile &amp;quot;app&amp;quot; may
be conveniently implemented in HTML, CSS and JavaScript.&lt;&#x2F;p&gt;
&lt;p&gt;Perhaps I need to sleep off that cool-aid from the conference now.
Anyway, thanks to &lt;a href=&quot;http:&#x2F;&#x2F;unclescript.blogspot.com&#x2F;&quot;&gt;Peter Svensson&lt;&#x2F;a&gt;
for arranging and to the speakers for the inspirational talks.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>A new photographic guideline?</title>
            <pubDate>Thu, 13 May 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/05/13/A-new-photographic-guideline/</link>
            <guid>https://www.librador.com/2010/05/13/A-new-photographic-guideline/</guid>
            <description>&lt;p&gt;&amp;quot;Make sure the subject fills 10%, 56% or 80% of the frame.&amp;quot;
Can this be a new guideline that photographers should know about?
A research paper presented at last week&#x27;s
&lt;a href=&quot;http:&#x2F;&#x2F;www.eurographics2010.se&quot;&gt;Eurographics&lt;&#x2F;a&gt; seems to suggest so.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.math.zju.edu.cn&#x2F;ligangliu&#x2F;CAGD&#x2F;Projects&#x2F;Composition&#x2F;&quot;&gt;Optimizing Photo Composition&lt;&#x2F;a&gt;
by Dr. Ligang Liu et al describes an algorithm that
measures how well a photograph is composed.
For this they use photographic &amp;quot;rules&amp;quot; that professional photographers
know and use because they are known to give aestethically pleasing results.
One of them is the &amp;quot;rule of thirds&amp;quot;,
where you draw four imaginary lines to divide the image into a
3 by 3 grid and place the subject close to one of the intersections.
Liu et als algorithm measures how well a photo adheres to this and
other guidelines that are known to create a good balance in the image.&lt;&#x2F;p&gt;
&lt;p&gt;An interesting result of their research is
that they seem to have discovered a rule of photographic composition
that was previously unknown.&lt;&#x2F;p&gt;
&lt;p&gt;In their algorithm, they measure the number of pixels occupied by
the photographic subject (the &amp;quot;salient region&amp;quot;) relative to the size
of the whole photo. This gives how large the subject is in the picture.
When measuring this on several professional photographs, they found
that this &amp;quot;fill ratio&amp;quot; was not evenly distributed or followed
a simple bell curve. Instead, some ratios were obviously more common
than others. See the histogram below, taken from their paper.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;29892c65ad21252e00.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Can this be a photographic guideline that professional photographers
so far have followed intuitively? Should it be included in
photographic tutorials, along with the rule of thirds?&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>This kicks content-aware fill&#x27;s ass!</title>
            <pubDate>Wed, 12 May 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/05/12/This-kicks-content-aware-fills-ass/</link>
            <guid>https://www.librador.com/2010/05/12/This-kicks-content-aware-fills-ass/</guid>
            <description>&lt;p&gt;Last week I went to &lt;a href=&quot;http:&#x2F;&#x2F;www.eurographics2010.se&#x2F;&quot;&gt;Eurographics 2010&lt;&#x2F;a&gt;.
I&#x27;m not currently working with anything related to advanced
graphics research, so I didn&#x27;t have to consider what information
would be useful and could choose sessions completely based
on my personal interests.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;%7Eefros&#x2F;&quot;&gt;Alexei Efros&lt;&#x2F;a&gt; keynote
was about how data from large online image collections
(such as &lt;a href=&quot;http:&#x2F;&#x2F;www.flickr.com&#x2F;&quot;&gt;flickr&lt;&#x2F;a&gt;) can be used to
do the seemingly impossible task of removing an object from a
photograph and replacing it with a plausible background.
If you thought Photoshop&#x27;s new
&lt;a href=&quot;http:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=NH0aEp1oDOI&amp;amp;feature=player_embedded&quot;&gt;content-aware fill&lt;&#x2F;a&gt;
was amazing, wait until you see this. It&#x27;s close to magic.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;8a840a96f1f75cdc00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Shown in the image: Original image, masked image, candidate replacements
and final result. See the &lt;a href=&quot;http:&#x2F;&#x2F;graphics.cs.cmu.edu&#x2F;projects&#x2F;scene-completion&#x2F;&quot;&gt;paper and presentations&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Back to school</title>
            <pubDate>Thu, 08 Apr 2010 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2010/04/08/Back-to-school/</link>
            <guid>https://www.librador.com/2010/04/08/Back-to-school/</guid>
            <description>&lt;p&gt;This is another one of those &amp;quot;long time, no see&amp;quot; posts.
My wife and I got our second son in November.
Wonderful as he is, he still requires plenty of attention.
After he&#x27;s asleep for the night (between 8 and 11 pm), I
have taken classes in Nuke and RenderMan at &lt;a href=&quot;http:&#x2F;&#x2F;fxphd.com&#x2F;&quot;&gt;fxphd&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;So as you can guess, I&#x27;ve been busy. I haven&#x27;t had the time to write more than
&lt;a href=&quot;http:&#x2F;&#x2F;twitter.com&#x2F;vilcans&quot;&gt;140 characters at a time&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;But now I&#x27;m doing something very different and exciting.
I&#x27;m taking time off work to go back to university and write a thesis.
The subject is &lt;strong&gt;open source software in visual effects for motion pictures&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m also producing a new short film which will be more ambitious than
anything I&#x27;ve done before. The project is in an early phase, and we haven&#x27;t
settled for a title yet. I will have to get back with more information later on.&lt;&#x2F;p&gt;
&lt;p&gt;So I will still be busy, obviously, but I&#x27;m planning to write here about
the progress of both the thesis and the film project.&lt;&#x2F;p&gt;
&lt;p&gt;And by the way, this evening I will be holding a short presentation about
&lt;a href=&quot;http:&#x2F;&#x2F;code.google.com&#x2F;apis&#x2F;maps&#x2F;documentation&#x2F;geocoding&#x2F;index.html&quot;&gt;Google&#x27;s geocoding service&lt;&#x2F;a&gt;
at &lt;a href=&quot;http:&#x2F;&#x2F;sites.google.com&#x2F;site&#x2F;stockholmgtug&#x2F;&quot;&gt;Stockholm Google Technology User Group&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Visual poetry</title>
            <pubDate>Wed, 18 Nov 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/11/18/Visual-poetry/</link>
            <guid>https://www.librador.com/2009/11/18/Visual-poetry/</guid>
            <description>&lt;p&gt;Here&#x27;s a short film I took part in. It&#x27;s a parody of some kind of deep cultural public service
television programme.
I play the poet Stang, and Henrik Elmér is the litterature professor.
It&#x27;s (quite cleverly) written and directed by Mattias Reinholdsson.
Unfortunately it&#x27;s impossible to give all the nuances of the language
in the subtitles, so if you understand Swedish, I suggest you
watch it &lt;a href=&quot;http:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4ex9IpH3wZw&quot;&gt;without subtitles&lt;&#x2F;a&gt;.
I also recommend watching it more than once, since it is quite subtle!&lt;&#x2F;p&gt;
&lt;p&gt;This video should have English subtitles by default:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;object width=&quot;580&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http:&#x2F;&#x2F;www.youtube-nocookie.com&#x2F;v&#x2F;4ex9IpH3wZw&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;border=1&amp;amp;cc_load_policy=1&quot;&gt;&lt;&#x2F;param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;&#x2F;param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;&#x2F;param&gt;&lt;embed src=&quot;http:&#x2F;&#x2F;www.youtube-nocookie.com&#x2F;v&#x2F;4ex9IpH3wZw&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;border=1&quot; type=&quot;application&#x2F;x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;580&quot; height=&quot;360&quot;&gt;&lt;&#x2F;embed&gt;&lt;&#x2F;object&gt;&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Go — why do we care?</title>
            <pubDate>Wed, 11 Nov 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/11/11/Go-why-do-we-care/</link>
            <guid>https://www.librador.com/2009/11/11/Go-why-do-we-care/</guid>
            <description>&lt;p&gt;In the early days of computers, programmers wrote code in machine code. It is a
complicated and difficult way of programming, but it gives you full control over
the machine. Later, higher level languages were invented. One of those, C,
became a very popular programming language in the 1980&#x27;s. It was easy to learn
and close enough to the hardware that you could use it for system-level
programming, like for example developing an operating system, a device driver or
inner loops in a game engine. Its successor C++ is more or less a superset of C
and can be used just as well for system-level programming.&lt;&#x2F;p&gt;
&lt;p&gt;During its heydays C was also used for more &amp;quot;regular&amp;quot; programming,
but today most business-level code is written in higher level languages.
There is still need for system-level programming, but many programmers
feel that C is too low-level and C++ is too complicated. There seems to
be a market for a programming language that is low-level enough to
give good control over the hardware, while being easy to use and
designed for modern development situations.&lt;&#x2F;p&gt;
&lt;p&gt;It is in light of this we need to see Google&#x27;s programming language
&lt;a href=&quot;http:&#x2F;&#x2F;golang.org&quot;&gt;Go&lt;&#x2F;a&gt; that has gained a lot of attention lately. It promises
to be a system-level language that is simple, fast and safe and has good support
for concurrency. They also claim Go is a joy to use.&lt;&#x2F;p&gt;
&lt;p&gt;System-level programmers should be happy, right? Not so much.&lt;&#x2F;p&gt;
&lt;p&gt;The reaction from people who have actually taken the time to read the
documentation on the Go site hasn&#x27;t been overwhelmingly positive.
Most comments I have seen have been more along the lines of &amp;quot;another language
— so what?&amp;quot;&lt;&#x2F;p&gt;
&lt;p&gt;The reason is that Go is far from the first language that tries to be
a successor to C and C++. Here&#x27;s just a few other languages that I can think of:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;digitalmars.com&#x2F;d&#x2F;index.html&quot;&gt;D&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.cosc.canterbury.ac.nz&#x2F;greg.ewing&#x2F;python&#x2F;Pyrex&#x2F;&quot;&gt;Pyrex&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;delight.sourceforge.net&#x2F;&quot;&gt;Delight&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;force7.de&#x2F;nimrod&#x2F;&quot;&gt;Nimrod&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;felix.sourceforge.net&#x2F;&quot;&gt;Felix&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Of those, D is often mentioned as a worthy successor of C and C++, but none of
these languages has received very much traction. C and C++ still rule; old, ugly and
complicated as they may be.&lt;&#x2F;p&gt;
&lt;p&gt;In my opinion Go has several improvements over C++, like modules (which tremendosly
reduces compilation time for large projects), a first-class array type,
and good concurrency support using so called &lt;em&gt;goroutines&lt;&#x2F;em&gt;.
Unfortunately, Go doesn&#x27;t innovate very much in other areas, and
misses some features that even C++ has. Compared to D, Go misses even more useful
features.&lt;&#x2F;p&gt;
&lt;p&gt;From a purely technical view, I would still prefer programming in Go
rather than in C or C++. But chosing a programming language is about so much
more than the features of the languages themselves. C and C++
are more mature and well-known and have plenty of code written in them.
Switching to a new programming language is not an easy choice to make in
important projects.&lt;&#x2F;p&gt;
&lt;p&gt;So why do we care about Go at all when there have been other languages that
tried (and failed?) to replace C++? The only reason I can see for the attention Go has received
is its association with the Google brand. Its feature set alone is not
impressive enough to warrant a switch for most system-level programmers.&lt;&#x2F;p&gt;
&lt;p&gt;But who knows, Go may become popular just &lt;em&gt;because&lt;&#x2F;em&gt; it&#x27;s a Google product.
All for the better. The world needs a modern system-level language.
I&#x27;m just hoping that it will be a bigger step from C than Go currently is.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Which browser is this?</title>
            <pubDate>Fri, 06 Nov 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/11/06/Which-browser-is-this/</link>
            <guid>https://www.librador.com/2009/11/06/Which-browser-is-this/</guid>
            <description>&lt;p&gt;Can you guess which web browser boasts the following features?&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Personal annotations with GUI annotation entry dialog; annotations
can later be edited or deleted, and hyperlinks to existing annotations
are inlined into subsequent accesses of an annotated document. (Note:
any document from any server via any access method can be
annotated.)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Audio (voice) annotations with GUI for controlling recording process.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Annotating web pages is a useful feature. I personally don&#x27;t feel much need for
audio annotations, but you may if you&#x27;re a doctor or a dyslectic. Or if you&#x27;re browsing on
a device without a proper keyboard, like mobile phone or tablet PC (which seem to be on
their way to a comeback).&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Support for accessing documents and data through Gopher, WAIS,
World Wide Web, FTP, NNTP&#x2F;Usenet news, Techinfo, TeXinfo,
Telnet, tn3270, Archie, NCSA DMF, local files, and other sources.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;That&#x27;s an impressive list of protocols, but I miss XMPP.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;No config or resource file installation required; self-contained executable.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Good for running from a USB stick!&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Transparent and automatic uncompression of compressed (.Z) and
gzip&#x27;d (.z) files.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Nice feature, although zip support would be useful too.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Inlined images in formatted (HTML) text: X bitmaps and GIF images
can be included anywhere inside a document, and can act as hyperlink
anchors. Image files themselves can be located anywhere on the
network.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;What!? Is the &lt;code&gt;img&lt;&#x2F;code&gt; tag a feature worthy of being on a feature list?&lt;&#x2F;p&gt;
&lt;p&gt;Yes, it is. Or at least it &lt;em&gt;was&lt;&#x2F;em&gt; when this browser was released.
Support for the &lt;code&gt;img&lt;&#x2F;code&gt; tag was new back then.
I recommend &lt;a href=&quot;http:&#x2F;&#x2F;diveintomark.org&#x2F;archives&#x2F;2009&#x2F;11&#x2F;02&#x2F;why-do-we-have-an-img-element&quot;&gt;this post by Mark Pilgrim&lt;&#x2F;a&gt;
about the history of the &lt;code&gt;img&lt;&#x2F;code&gt; tag. The answer to the question is:&lt;&#x2F;p&gt;
&lt;p&gt;These are the relase notes for the &lt;strong&gt;beta version of Mosaic 0.10&lt;&#x2F;strong&gt;. Released in 1993.&lt;&#x2F;p&gt;
&lt;p&gt;There are a few features on the list that modern browsers don&#x27;t support.
Document annotations are one. Here&#x27;s another:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Integrated with NCSA Collage and NCSA DTM to broadcast
documents into real-time networked workgroup collaboration
sessions.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I&#x27;m not sure exactly what this is, but collaborative document editing was a
feature that the web was designed for from the start. That&#x27;s why the HTTP
protocol includes a PUT verb. Unfortunately collaborative editing didn&#x27;t take off until the
Wiki was invented.&lt;&#x2F;p&gt;
&lt;p&gt;Below are some of my favourites that new browser&#x27;s wouldn&#x27;t
boast about in their feature lists.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Fully 8-bit clean for formatted and plain text.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Today you can&#x27;t trust all applications to support Unicode. Back in the days, you
couldn&#x27;t even trust them to support 8-bit character sets.
(&lt;a href=&quot;&#x2F;2009&#x2F;05&#x2F;13&#x2F;7-bit-characters-today&#x2F;&quot;&gt;And there still is software that doesn&#x27;t!&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Friendly X&#x2F;Motif user interface.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Color and monochrome default X resource settings.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Ah, support for monochrome displays! Good for the Kindle!&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Multiple independent toplevel windows.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Hotlist&#x2F;bookmark capability -- keep list of interesting documents,
add&#x2F;remove items, list is persistent across sessions.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;In-document search capability.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Windows! Bookmarks! &amp;quot;Find&amp;quot; command! Not that impressive by today&#x27;s standards.&lt;&#x2F;p&gt;
&lt;p&gt;The original Usenet post is &lt;a href=&quot;http:&#x2F;&#x2F;groups.google.com&#x2F;group&#x2F;alt.hypertext&#x2F;msg&#x2F;7fde2f6d4d5dc4e7&quot;&gt;available on Google Groups&lt;&#x2F;a&gt;,
but since &lt;a href=&quot;http:&#x2F;&#x2F;www.wired.com&#x2F;epicenter&#x2F;2009&#x2F;10&#x2F;usenet&#x2F;&quot;&gt;Google don&#x27;t seem to care much for the Usenet archive&lt;&#x2F;a&gt;,
I&#x27;m posting a copy below. Have fun and be amazed both at how much has happened
since back then, and how much &lt;em&gt;hasn&#x27;t&lt;&#x2F;em&gt; happened.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;Newsgroups: comp.infosystems.gopher,comp.infosystems.wais,comp.infosystems,alt.hypertext,comp.windows.x
&lt;&#x2F;span&gt;&lt;span&gt;Path: sparky!uunet!wupost!zaphod.mps.ohio-state.edu!uwm.edu!linac!uchinews!ux1.cso.uiuc.edu!news.cso.uiuc.edu!128.174.5.61!marca
&lt;&#x2F;span&gt;&lt;span&gt;From: ma...@ncsa.uiuc.edu (Marc Andreessen)
&lt;&#x2F;span&gt;&lt;span&gt;Subject: NCSA Mosaic for X 0.10 available.
&lt;&#x2F;span&gt;&lt;span&gt;Date: Mon, 15 Mar 1993 03:56:00 GMT
&lt;&#x2F;span&gt;&lt;span&gt;Message-ID: &amp;lt;MARCA.93Mar14225600@wintermute.ncsa.uiuc.edu&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;Sender: use...@news.cso.uiuc.edu (Net Noise owner)
&lt;&#x2F;span&gt;&lt;span&gt;X-Md4-Signature: b3b784c3820df435ac2ef2cc3f6f802f
&lt;&#x2F;span&gt;&lt;span&gt;Organization: Nat&amp;#39;l Center for Supercomputing Applications
&lt;&#x2F;span&gt;&lt;span&gt;Lines: 154
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Beta version 0.10 of Mosaic, NCSA&amp;#39;s X&#x2F;Motif-based networked
&lt;&#x2F;span&gt;&lt;span&gt;information systems browser, including full source code and binaries
&lt;&#x2F;span&gt;&lt;span&gt;(for SunOS 4.x, SGI IRIX 4.x, AIX 3.2, and DEC Ultrix), is now at
&lt;&#x2F;span&gt;&lt;span&gt;ftp.ncsa.uiuc.edu in &#x2F;Web&#x2F;xmosaic:
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;file:&#x2F;&#x2F;ftp.ncsa.uiuc.edu&#x2F;Web&#x2F;xmosaic&#x2F;xmosaic-0.10.tar.Z
&lt;&#x2F;span&gt;&lt;span&gt;                         ...&#x2F;xmosaic&#x2F;binaries-0.10&#x2F;xmosaic-sun.Z
&lt;&#x2F;span&gt;&lt;span&gt;                         ...&#x2F;xmosaic&#x2F;binaries-0.10&#x2F;xmosaic-sgi.Z
&lt;&#x2F;span&gt;&lt;span&gt;                         ...&#x2F;xmosaic&#x2F;binaries-0.10&#x2F;xmosaic-ibm.Z
&lt;&#x2F;span&gt;&lt;span&gt;                         ...&#x2F;xmosaic&#x2F;binaries-0.10&#x2F;xmosaic-dec.Z
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;NCSA Mosaic provides a consistent and easy-to-use hypermedia-based
&lt;&#x2F;span&gt;&lt;span&gt;interface into a wide variety of information sources, including
&lt;&#x2F;span&gt;&lt;span&gt;Gopher, WAIS, World Wide Web, NNTP&#x2F;Usenet news, Techinfo, TeXinfo,
&lt;&#x2F;span&gt;&lt;span&gt;FTP, local filesystems, Archie, telnet, tn3270, and others.  A list of
&lt;&#x2F;span&gt;&lt;span&gt;changes made since version 0.9 follows this canonical features list:
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt; o Support for accessing documents and data through Gopher, WAIS,
&lt;&#x2F;span&gt;&lt;span&gt;   World Wide Web, FTP, NNTP&#x2F;Usenet news, Techinfo, TeXinfo,
&lt;&#x2F;span&gt;&lt;span&gt;   Telnet, tn3270, Archie, NCSA DMF, local files, and other sources.
&lt;&#x2F;span&gt;&lt;span&gt; o Friendly X&#x2F;Motif user interface.
&lt;&#x2F;span&gt;&lt;span&gt; o Color and monochrome default X resource settings.
&lt;&#x2F;span&gt;&lt;span&gt; o Multiple independent toplevel windows.
&lt;&#x2F;span&gt;&lt;span&gt; o History list per window (both &amp;#39;where you&amp;#39;ve been&amp;#39; and &amp;#39;where you
&lt;&#x2F;span&gt;&lt;span&gt;   can go&amp;#39;).
&lt;&#x2F;span&gt;&lt;span&gt; o Global history with previously visited locations visually distinct;
&lt;&#x2F;span&gt;&lt;span&gt;   global history is persistent across sessions.
&lt;&#x2F;span&gt;&lt;span&gt; o Hotlist&#x2F;bookmark capability -- keep list of interesting documents,
&lt;&#x2F;span&gt;&lt;span&gt;   add&#x2F;remove items, list is persistent across sessions.
&lt;&#x2F;span&gt;&lt;span&gt; o Personal annotations with GUI annotation entry dialog; annotations
&lt;&#x2F;span&gt;&lt;span&gt;   can later be edited or deleted, and hyperlinks to existing annotations
&lt;&#x2F;span&gt;&lt;span&gt;   are inlined into subsequent accesses of an annotated document. (Note:
&lt;&#x2F;span&gt;&lt;span&gt;   any document from any server via any access method can be
&lt;&#x2F;span&gt;&lt;span&gt;   annotated.)
&lt;&#x2F;span&gt;&lt;span&gt; o Audio (voice) annotations with GUI for controlling recording process
&lt;&#x2F;span&gt;&lt;span&gt;   (SGI and Sun only).
&lt;&#x2F;span&gt;&lt;span&gt; o Support for recognizing and handling GIF, JPEG, TIFF, audio, AIFF,
&lt;&#x2F;span&gt;&lt;span&gt;   DVI, MPEG, MIME, XWD, RGB, PostScript documents and forking
&lt;&#x2F;span&gt;&lt;span&gt;   off appropriate viewers.
&lt;&#x2F;span&gt;&lt;span&gt; o Transparent and automatic uncompression of compressed (.Z) and
&lt;&#x2F;span&gt;&lt;span&gt;   gzip&amp;#39;d (.z) files.
&lt;&#x2F;span&gt;&lt;span&gt; o Inlined images in formatted (HTML) text: X bitmaps and GIF images
&lt;&#x2F;span&gt;&lt;span&gt;   can be included anywhere inside a document, and can act as hyperlink
&lt;&#x2F;span&gt;&lt;span&gt;   anchors. Image files themselves can be located anywhere on the
&lt;&#x2F;span&gt;&lt;span&gt;   network.
&lt;&#x2F;span&gt;&lt;span&gt; o Binary transfer mode, for pulling down arbitrary binary files and
&lt;&#x2F;span&gt;&lt;span&gt;   saving them to local disk without viewing them.
&lt;&#x2F;span&gt;&lt;span&gt; o In-document search capability.
&lt;&#x2F;span&gt;&lt;span&gt; o Fully 8-bit clean for formatted and plain text.
&lt;&#x2F;span&gt;&lt;span&gt; o Options for new window per document (aka TurboGopher interface)
&lt;&#x2F;span&gt;&lt;span&gt;   -- always, or via middle mouse button.
&lt;&#x2F;span&gt;&lt;span&gt; o On-the-fly font and hyperlink style selection.
&lt;&#x2F;span&gt;&lt;span&gt; o Many common document and data source choices accessible via
&lt;&#x2F;span&gt;&lt;span&gt;   menubar.
&lt;&#x2F;span&gt;&lt;span&gt; o Keyword search capability (for WAIS, Gopher, Archie, etc.).
&lt;&#x2F;span&gt;&lt;span&gt; o Cut and paste formatted text into other X windows.
&lt;&#x2F;span&gt;&lt;span&gt; o Smart handling of documents too big for single X window -- virtual
&lt;&#x2F;span&gt;&lt;span&gt;   document pages via inlined hypertext.
&lt;&#x2F;span&gt;&lt;span&gt; o Save&#x2F;mail&#x2F;print documents in several formats.
&lt;&#x2F;span&gt;&lt;span&gt; o Online hypertext help and FAQ list.
&lt;&#x2F;span&gt;&lt;span&gt; o No config or resource file installation required; self-contained
&lt;&#x2F;span&gt;&lt;span&gt;   executable.
&lt;&#x2F;span&gt;&lt;span&gt; o Extremely customizable.
&lt;&#x2F;span&gt;&lt;span&gt; o Integrated with NCSA Collage and NCSA DTM to broadcast
&lt;&#x2F;span&gt;&lt;span&gt;   documents into real-time networked workgroup collaboration
&lt;&#x2F;span&gt;&lt;span&gt;   sessions.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;A list of changes made from version 0.9 to version 0.10 follows:
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt; o Support for &amp;lt;IMG&amp;gt; tag: inlined images in HTML documents.
&lt;&#x2F;span&gt;&lt;span&gt;    o Handles X bitmap and GIF formats so far.
&lt;&#x2F;span&gt;&lt;span&gt;    o New resource, colorsPerInlinedImage, can be used to restrict
&lt;&#x2F;span&gt;&lt;span&gt;      color use of inlined images -- default is 50.
&lt;&#x2F;span&gt;&lt;span&gt;    o Image files can be located anywhere on the net (pointed to by
&lt;&#x2F;span&gt;&lt;span&gt;      URL); image data is cached in memory for fast display and
&lt;&#x2F;span&gt;&lt;span&gt;      reuse.
&lt;&#x2F;span&gt;&lt;span&gt;    o Example of inlined bitmap: 
&lt;&#x2F;span&gt;&lt;span&gt;      &amp;lt;IMG SRC=&amp;quot;file:&#x2F;&#x2F;foobar.com&#x2F;foobar.xbm&amp;quot;&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;    o Example of inlined image serving as anchor: 
&lt;&#x2F;span&gt;&lt;span&gt;      &amp;lt;A HREF=&amp;quot;http:&#x2F;&#x2F;foobar.com&#x2F;ref.html&amp;quot;&amp;gt; 
&lt;&#x2F;span&gt;&lt;span&gt;      &amp;lt;IMG SRC=&amp;quot;file:&#x2F;&#x2F;foobar.com&#x2F;blagh.gif&amp;quot;&amp;gt; &amp;lt;&#x2F;A&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt; o Better support for acting as binary file retrieval client.
&lt;&#x2F;span&gt;&lt;span&gt;    o Each window can either be in binary transfer mode or not;
&lt;&#x2F;span&gt;&lt;span&gt;      resource binaryTransferMode controls startup value (default
&lt;&#x2F;span&gt;&lt;span&gt;      is &amp;#39;False&amp;#39;, and you probably don&amp;#39;t want to change this). A
&lt;&#x2F;span&gt;&lt;span&gt;      toggle button in the Options menu allows changing on the fly.
&lt;&#x2F;span&gt;&lt;span&gt;    o If a window is not in binary trasfer mode, data files with
&lt;&#x2F;span&gt;&lt;span&gt;      unrecognized types will be displayed in the window as either
&lt;&#x2F;span&gt;&lt;span&gt;      plain text or HTML (depending on the server type), as before.
&lt;&#x2F;span&gt;&lt;span&gt;    o If a window is in binary transfer mode, data files with
&lt;&#x2F;span&gt;&lt;span&gt;      unrecognized types will be dumped to a local file after being
&lt;&#x2F;span&gt;&lt;span&gt;      transferred over as binary data.
&lt;&#x2F;span&gt;&lt;span&gt;    o Regardless of whether a window is in binary transfer mode or
&lt;&#x2F;span&gt;&lt;span&gt;      not, files with recognizes types (images, sound, etc.) will be
&lt;&#x2F;span&gt;&lt;span&gt;      handled as usual, and uncompression will be transparent as
&lt;&#x2F;span&gt;&lt;span&gt;      usual.
&lt;&#x2F;span&gt;&lt;span&gt;    o The whole point of all this is to allow the user to select on the
&lt;&#x2F;span&gt;&lt;span&gt;      fly how a given file of an unrecognized type is to be handled.
&lt;&#x2F;span&gt;&lt;span&gt;    o Because files are currently typed by filename extension,
&lt;&#x2F;span&gt;&lt;span&gt;      binary transfer mode should generally be kept off, otherwise
&lt;&#x2F;span&gt;&lt;span&gt;      it will screw up things like WAIS searches pretty badly. Also,
&lt;&#x2F;span&gt;&lt;span&gt;      since Gopher does things differently from everyone else,
&lt;&#x2F;span&gt;&lt;span&gt;      things are different there too.
&lt;&#x2F;span&gt;&lt;span&gt;    o Setting one of the multimedia resources to the text string
&lt;&#x2F;span&gt;&lt;span&gt;      &amp;quot;dump&amp;quot; will cause files of that type to be dumped to local
&lt;&#x2F;span&gt;&lt;span&gt;      disk as though in binary transfer mode.
&lt;&#x2F;span&gt;&lt;span&gt;    o See http:&#x2F;&#x2F;hoohoo.ncsa.uiuc.edu:80&#x2F;mosaic-docs&#x2F;file-typing-issues.html 
&lt;&#x2F;span&gt;&lt;span&gt;      for a more thorough discussion of these issues.
&lt;&#x2F;span&gt;&lt;span&gt; o Audio annotations for Sun&amp;#39;s with &#x2F;usr&#x2F;demo&#x2F;SOUND&#x2F;record (or
&lt;&#x2F;span&gt;&lt;span&gt;   something similar) are now enabled. Resources
&lt;&#x2F;span&gt;&lt;span&gt;   recordCommandLocation and recordCommand are used to specify the
&lt;&#x2F;span&gt;&lt;span&gt;   command used to record sound; theoretically, this approach can be
&lt;&#x2F;span&gt;&lt;span&gt;   used on any platform with appropriate hardware and software,
&lt;&#x2F;span&gt;&lt;span&gt;   although SGI Indigo &amp;amp; Sun Sparcstation are the only two that I know
&lt;&#x2F;span&gt;&lt;span&gt;   of.
&lt;&#x2F;span&gt;&lt;span&gt; o Search capability within documents: enter search term, scrollbar
&lt;&#x2F;span&gt;&lt;span&gt;   jumps to match and match is highlighted; repeat as desired.
&lt;&#x2F;span&gt;&lt;span&gt; o Enhanced support for various Gopher types, including binary files
&lt;&#x2F;span&gt;&lt;span&gt;   and CSO phonebooks (sorry, phonebooks aren&amp;#39;t supported yet, but at
&lt;&#x2F;span&gt;&lt;span&gt;   least now an error message shows up).
&lt;&#x2F;span&gt;&lt;span&gt; o Spaces converted to +&amp;#39;s in keyword queries now.
&lt;&#x2F;span&gt;&lt;span&gt; o Scrollbar arrows now increment a reasonable amount when viewing
&lt;&#x2F;span&gt;&lt;span&gt;   large documents.
&lt;&#x2F;span&gt;&lt;span&gt; o Anonymous FTP password is now always u...@host.domain,
&lt;&#x2F;span&gt;&lt;span&gt;   enabling access to every strange FTP server out there that I know of.
&lt;&#x2F;span&gt;&lt;span&gt; o Pattern-matching to determine file type based on file name now uses
&lt;&#x2F;span&gt;&lt;span&gt;   caseless string compare.
&lt;&#x2F;span&gt;&lt;span&gt; o Better default visited anchor color for non-SGI color displays.
&lt;&#x2F;span&gt;&lt;span&gt; o Messages from libwww now show up in pop-up dialogs like they
&lt;&#x2F;span&gt;&lt;span&gt;   should.
&lt;&#x2F;span&gt;&lt;span&gt; o Telnet never gets asked to use unrecognized -l flag.
&lt;&#x2F;span&gt;&lt;span&gt; o Tar files are now always retrieved to local disk (and not displayed).
&lt;&#x2F;span&gt;&lt;span&gt; o Replacement (and better) Archie interface.
&lt;&#x2F;span&gt;&lt;span&gt; o Mail Developers window is cleared on each use.
&lt;&#x2F;span&gt;&lt;span&gt; o New resource trackVisitedAnchors; can be used to turn off tracking
&lt;&#x2F;span&gt;&lt;span&gt;   of visited anchors altogether.
&lt;&#x2F;span&gt;&lt;span&gt; o Better transparent uncompression support:
&lt;&#x2F;span&gt;&lt;span&gt;    o Gzipped (.z) files are now recognized and uncompressed on
&lt;&#x2F;span&gt;&lt;span&gt;      the fly (as well as .Z files, as before).
&lt;&#x2F;span&gt;&lt;span&gt;    o New resources uncompressCommand (default &amp;#39;uncompress&amp;#39;)
&lt;&#x2F;span&gt;&lt;span&gt;      and gunzipCommand (default &amp;#39;gunzip&amp;#39;).
&lt;&#x2F;span&gt;&lt;span&gt; o As usual, little bugfixes and cleanups.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Finally, thanks *again* to everyone who&amp;#39;s been contributing comments
&lt;&#x2F;span&gt;&lt;span&gt;and bug reports -- keep &amp;#39;em coming!
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Cheers,
&lt;&#x2F;span&gt;&lt;span&gt;Marc
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;--
&lt;&#x2F;span&gt;&lt;span&gt;Marc Andreessen
&lt;&#x2F;span&gt;&lt;span&gt;Software Development Group
&lt;&#x2F;span&gt;&lt;span&gt;National Center for Supercomputing Applications
&lt;&#x2F;span&gt;&lt;span&gt;ma...@ncsa.uiuc.edu
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
        </item>
        <item>
            <title>Styling undefined tag names in HTML</title>
            <pubDate>Tue, 20 Oct 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/10/20/Styling-undefined-tag-names-in-HTML/</link>
            <guid>https://www.librador.com/2009/10/20/Styling-undefined-tag-names-in-HTML/</guid>
            <description>&lt;p&gt;Realization after &lt;a href=&quot;http:&#x2F;&#x2F;www.molly.com&#x2F;&quot;&gt;Molly Holzschlag&lt;&#x2F;a&gt;&#x27;s
presentation about HTML5 at today&#x27;s &lt;a href=&quot;http:&#x2F;&#x2F;robertnyman.com&#x2F;geekmeet&#x2F;&quot;&gt;Geek meet&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;You can use any tag name in HTML, and it will be part of the
DOM and can be styled.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;For example, the following HTML:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;Some text in &amp;lt;red&amp;gt;another colour&amp;lt;&#x2F;red&amp;gt;!
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;...styled with the following CSS:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;red { color: red; }
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;...gives the following result:&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;c57df4dbb128b36f00.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;I have always somehow assumed that elements with unknown names (such as &lt;code&gt;red&lt;&#x2F;code&gt;)
were stripped out and ignored by the browser, but obviously they aren&#x27;t (at least not in Firefox).&lt;&#x2F;p&gt;
&lt;p&gt;The nice thing with this is that you can already start using elements that
are defined in HTML5 but that old browsers don&#x27;t recognize:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&amp;lt;header&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;lt;h1&amp;gt;My cat&amp;#39;s home page&amp;lt;&#x2F;h1&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&#x2F;header&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;p&amp;gt;&amp;lt;red&amp;gt;Meow!&amp;lt;&#x2F;red&amp;gt;&amp;lt;&#x2F;p&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;footer&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;lt;p&amp;gt;© 2009 My Cat&amp;lt;&#x2F;p&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&#x2F;footer&amp;gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Here the content of the &lt;code&gt;header&lt;&#x2F;code&gt; and &lt;code&gt;footer&lt;&#x2F;code&gt; elements will be displayed and can be styled
with CSS, even if the browser doesn&#x27;t know the semantics of them.
Newer browsers and search engines can use them to provide a better user experience.&lt;&#x2F;p&gt;
&lt;p&gt;This may be old news to some, and I just realized it today!
Well, I don&#x27;t claim to be an HTML expert either.  I don&#x27;t know if any of
this is standards-compliant &lt;del&gt;and I&#x27;ve only tested it on Firefox&lt;&#x2F;del&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Update Oct 21st&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;It works in Chrome as well.&lt;&#x2F;p&gt;
&lt;p&gt;In Internet Explorer (I tested IE6 and IE7), the &lt;code&gt;&amp;lt;red&amp;gt;&lt;&#x2F;code&gt; element is part
of the DOM and I can retrieve it with &lt;code&gt;document.getElementsByTagName(&#x27;red&#x27;)&lt;&#x2F;code&gt;.
I can set its style, but IE&#x27;s rendering engine ignores it.&lt;&#x2F;p&gt;
&lt;p&gt;As &lt;a href=&quot;http:&#x2F;&#x2F;robertnyman.com&#x2F;&quot;&gt;Robert Nyman&lt;&#x2F;a&gt; mentioned in the comments,
&lt;a href=&quot;http:&#x2F;&#x2F;ejohn.org&#x2F;blog&#x2F;html5-shiv&#x2F;&quot;&gt;there is a workaround&lt;&#x2F;a&gt;.
It is as simple as it is unexpected. Just create elements of the types you
need with Javascript:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&amp;lt;script&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;document.createElement(&amp;quot;header&amp;quot;);
&lt;&#x2F;span&gt;&lt;span&gt;document.createElement(&amp;quot;footer&amp;quot;);
&lt;&#x2F;span&gt;&lt;span&gt;document.createElement(&amp;quot;red&amp;quot;);
&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&#x2F;script&amp;gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Just creating elements, even without inserting them into the document
seems to do some magic that kicks IE into handling the previously
undefined elements.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;data&#x2F;unknown-elements.html&quot;&gt;Test file&lt;&#x2F;a&gt; (includes the IE hack)&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>“Better than nothing” error handling</title>
            <pubDate>Sat, 17 Oct 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/10/17/Better-than-nothing-error-handling/</link>
            <guid>https://www.librador.com/2009/10/17/Better-than-nothing-error-handling/</guid>
            <description>&lt;p&gt;In my current project for a client, we have a script that launches a
web server. The final lines of its output looks like this.
Sensitive information (to a paranoid client) has been edited out and
the important parts are highlighted.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;8a78bdb9c4b6c53400.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;The script runs Apache httpd as the final step. In this configuration
Apache requires the F: drive to be mapped to a specific network share.
The nice thing about the script is that it tells you exactly that,
so if you get the &lt;em&gt;DocumentRoot must be a directory&lt;&#x2F;em&gt; error you know
what the problem is. (The fact that the error message itself
is not very informative is Apache&#x27;s fault.)&lt;&#x2F;p&gt;
&lt;p&gt;Granted, it would be better if the Apache configuration didn&#x27;t
need a specific network share to be mapped. Or at least that the
script created the drive mapping automatically.&lt;&#x2F;p&gt;
&lt;p&gt;But this kind of simple error &amp;quot;handling&amp;quot; is so much better than not
handling the problem at all, which would waste time as each developer
would have to try to find out its cause without any hints.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Object orientation — not as natural as we thought?</title>
            <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/09/29/Object-orientation-not-as-natural-as-we-thought/</link>
            <guid>https://www.librador.com/2009/09/29/Object-orientation-not-as-natural-as-we-thought/</guid>
            <description>&lt;p&gt;Back in 1999 or so I held a course in object oriented (OO) programming and design.
I remember myself saying that an important idea of OO is that it reflects
how we humans think. We think of the world as consisting of
objects and how they interact. That maps well with OO&#x27;s view of a
system as a set of objects that send messages to each other.
So in theory, OO should feel natural to us humans. It should be easy
to express our thoughts as objects that pass messages to each other.&lt;&#x2F;p&gt;
&lt;p&gt;So how come object oriented programs are so riddled with classes that
are nothing but shallow wrappers for functions? Those classes don&#x27;t represent a
natural object in the problem domain. They are just clumsy object oriented
shells around a functional or procedural design. If you have programmed Java
you know what I mean; those classes that typically have names ending
in -Handler or -Manager. Their sole purpose is to provide &lt;em&gt;functionality&lt;&#x2F;em&gt;
and would be better implemented as &lt;em&gt;functions&lt;&#x2F;em&gt;. Java doesn&#x27;t allow
free functions. Instead, a function has to be a member of a class,
so typical Java code contains lots of pointless classes that just serve
as function wrappers.&lt;&#x2F;p&gt;
&lt;p&gt;Now some people say that this is not &amp;quot;proper&amp;quot; object orientation, and they would
be right. But think about it. Even though Java has practically forced us to
design computer systems based on objects and classes for over a decade now, we
still resist. We think of our systems as — at least partially — consisting of
functions and not just objects. It seems like our minds are not so naturally
inclined to solve problems by dividing them into objects after all.&lt;&#x2F;p&gt;
&lt;p&gt;OO is a powerful tool, but it probably shouldn&#x27;t be
the one and only paradigm that you use in a system. You should be
able to mix procedural, functional and OO style in a pragmatic way.
Steve Yegge&#x27;s old well written rant about the
&lt;a href=&quot;http:&#x2F;&#x2F;steve-yegge.blogspot.com&#x2F;2006&#x2F;03&#x2F;execution-in-kingdom-of-nouns.html&quot;&gt;Kingdom of Nouns&lt;&#x2F;a&gt;
says this in more clever and amusing way than I can, so I&#x27;ll leave it at that.&lt;&#x2F;p&gt;
&lt;p&gt;Instead of Java, I&#x27;d recommend programming language that allows
multi-paradigm programming. Either that, or use &lt;em&gt;proper&lt;&#x2F;em&gt; OO. Whatever that is.
One thing&#x27;s obvious: It&#x27;s not something that comes naturally to us.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Backing up DVDs in Ubuntu</title>
            <pubDate>Fri, 25 Sep 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/09/25/Backing-up-DVDs-in-Ubuntu/</link>
            <guid>https://www.librador.com/2009/09/25/Backing-up-DVDs-in-Ubuntu/</guid>
            <description>&lt;p&gt;We&#x27;re in the middle of the episode where Bamse
and his friends are trying to get rid of the huge dragon that
has claimed his place right beside grandmother&#x27;s house.
The dragon cries for more of grandmother&#x27;s meatballs, but
she can&#x27;t make enough of them. The dragon breathes fire
and makes annoying noises. This is too much even for nice old granny.
Bamse and his friends decide to visit Skalman. He is smart (although quite a bit excentric).
He must know how to get rid of the dragon.&lt;&#x2F;p&gt;
&lt;p&gt;But then the DVD stops.&lt;&#x2F;p&gt;
&lt;p&gt;My son is almost two and a half and understands that DVDs
can be broken. He just doesn&#x27;t understand that he&#x27;s the one
who breaks them by not handling them very well.&lt;&#x2F;p&gt;
&lt;p&gt;So right now I&#x27;m making backups of the rest of his movies.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m using Ubuntu 9.04 for this, and here&#x27;s my notes about it in case
I forget and&#x2F;or someone else is interested.
It may work in other Linux distributions or other versions of Ubuntu,
but I haven&#x27;t tested that.&lt;&#x2F;p&gt;
&lt;p&gt;I use command-line programs because they are quicker to run
over and over compared to GUI applications.&lt;&#x2F;p&gt;
&lt;p&gt;First, I installed &lt;code&gt;vobcopy&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;sudo apt-get install vobcopy
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Vobcopy can decrypt DVDs while copying, and needs &lt;code&gt;libdvdcss&lt;&#x2F;code&gt; for that.
Since CSS decryption code may not be allowed in some countries,
it is not included in Ubuntu&#x27;s default repositories.
It is still simple to install &lt;code&gt;libdvdcss&lt;&#x2F;code&gt;. Just run the following command
(first checking that it&#x27;s legal where you live of course).&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;sudo &#x2F;usr&#x2F;share&#x2F;doc&#x2F;libdvdread4&#x2F;install-css.sh
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now I can copy the DVD to the hard disk with the following command:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;vobcopy -m -t bamse
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The -m flag to &lt;code&gt;vobcopy&lt;&#x2F;code&gt; creates a clone of the whole DVD. The -t flag
sets the name of the directory that vobcopy creates, in this case &lt;code&gt;bamse&lt;&#x2F;code&gt;.
(The default name is the same as the DVD&#x27;s volume name, which is sometimes cryptic
and not unique.)&lt;&#x2F;p&gt;
&lt;p&gt;I can play the movie by opening the &lt;code&gt;bamse&#x2F;VIDEO_TS&lt;&#x2F;code&gt; directory in
&lt;a href=&quot;http:&#x2F;&#x2F;www.videolan.org&#x2F;vlc&#x2F;&quot;&gt;VNC&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;With backups in place, I don&#x27;t have to worry so much when my son handles his DVDs.
I&#x27;ll get back to this subject the first time I burn a DVD from a backup.
Meanwhile, I&#x27;ll check if it is somehow possible to repair a broken DVD,
or at least backup the chapters that still work. In the episode after the
one with the dragon, the dragon is gone, so probably Skalman figured out
a way to get rid of it. I honestly don&#x27;t mind so much if I never figure out
how he did it.&lt;&#x2F;p&gt;
&lt;p&gt;Information sources:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.andrews-corner.org&#x2F;burning.html&quot;&gt;CD and DVD Writing from the Linux Command Line&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.yolinux.com&#x2F;TUTORIALS&#x2F;LinuxTutorialCDBurn.html&quot;&gt;Linux Tutorial: Burning a CD or DVD&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;help.ubuntu.com&#x2F;community&#x2F;RestrictedFormats&quot;&gt;Community Ubuntu Documentation: RestrictedFormats&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
        </item>
        <item>
            <title>200 text messages a day: Young people&#x27;s mobile habits</title>
            <pubDate>Wed, 26 Aug 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/08/26/200-text-messages-a-day-Young-peoples-mobile-habits/</link>
            <guid>https://www.librador.com/2009/08/26/200-text-messages-a-day-Young-peoples-mobile-habits/</guid>
            <description>&lt;p&gt;How do you have the time to send 200 SMS messages in a day? Assuming a healthy
eight hours of sleep, 200 text messages in a day means sending at least one
every five minutes. This is a typical day for 13 year old Marina, who was
interviewed by &lt;a href=&quot;http:&#x2F;&#x2F;tomorrowstory.se&#x2F;&quot;&gt;The Tomorrow Story&lt;&#x2F;a&gt; for a report on
young people&#x27;s mobile habits. (&lt;a href=&quot;http:&#x2F;&#x2F;www.tomorrowstory.se&#x2F;files&#x2F;Unga_Mobilvanor.pdf&quot;&gt;Available as a PDF in
Swedish&lt;&#x2F;a&gt;.)
According to the report, Marina&#x27;s affection to SMS is not extreme, and typical for her
age group.&lt;&#x2F;p&gt;
&lt;p&gt;So they like Short Messaging Service, but that is low-tech. What new mobile
technology do the young people of today use? The report paints a picture of the
teenagers as a conservative bunch, tech-wise. None of them uses MMS. Very few
access the web from their phones. They are not interested in mobile television.
They don&#x27;t install applications. It seems like the young generation would be
happy with &amp;quot;old folk&amp;quot; mobiles with only phone and SMS functionality.&lt;&#x2F;p&gt;
&lt;p&gt;There is one technology that they use more than I had expected: Bluetooth. This
makes sense since kids tend to have their friends at a close distance. They see
each other every day in school, so they can wait until they meet to transfer the
music or photo they want their friends to have. On the other hand, they text to
someone a few meters away instead of waiting until class is over, so they&#x27;re
not consistently patient.&lt;&#x2F;p&gt;
&lt;p&gt;When young people&#x27;s behaviour starts getting mysterious, you&#x27;re getting old,
so I&#x27;ll better stop before I start to sound like a whining old man. But 200 text
messages a day — sheesh!&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Jekyll: Blogging like a hacker</title>
            <pubDate>Mon, 17 Aug 2009 00:00:00 +0000</pubDate>
            <link>https://www.librador.com/2009/08/17/Jekyll-blogging-like-a-hacker/</link>
            <guid>https://www.librador.com/2009/08/17/Jekyll-blogging-like-a-hacker/</guid>
            <description>&lt;p&gt;I wrote &lt;a href=&quot;&#x2F;2005&#x2F;05&#x2F;26&#x2F;PS3-and-parallell-programming&#x2F;&quot;&gt;the first post&lt;&#x2F;a&gt; on this
site in 2005 using &lt;a href=&quot;http:&#x2F;&#x2F;www.s9y.org&quot;&gt;Serendipity&lt;&#x2F;a&gt;. While Serendipity
is a completely adequate blogging engine, I have been annoyed by a few things.
All of them would apply to any popular blogging engine, which is why I
wanted something different. I have now found a tool that takes
a very different approach.&lt;&#x2F;p&gt;
&lt;p&gt;Before I go into that, let&#x27;s list the things that didn&#x27;t feel right with a
&amp;quot;classical&amp;quot; blogging engine:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Serendipity is written in PHP. This is good since there are plenty of ISPs
that can host PHP sites. Unfortunately I&#x27;m no PHP hacker myself, so it is not
easy for me to change the internal workings of the site.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;I have more interesting things to do than keeping up with the latest versions
of the software. It is especially worrying if I don&#x27;t have the time to install
security patches. This would apply no matter what blogging engine i chose. As
long as there is server-side code, there is a risk of security holes.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;I&#x27;m a programmer. I&#x27;m used to working with text files. I can manipulate them
with tools for version control, utilities like grep and sed, programming
languages like Python and Ruby and any text editor of my liking. Entering text
into a form on a web page may be easier for a non-programmer, but I have other
usability requirements. (Also, with a web form text can easily get lost. I&#x27;ve
been &lt;a href=&quot;&#x2F;2008&#x2F;12&#x2F;02&#x2F;Saved-by-tcpdump&#x2F;&quot;&gt;saved by tcpdump&lt;&#x2F;a&gt; more than once.)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Enter &lt;a href=&quot;http:&#x2F;&#x2F;jekyllrb.com&#x2F;&quot;&gt;Jekyll&lt;&#x2F;a&gt;. It works on very simple premises. A blog
post is a file. Plain and simple. It&#x27;s not hidden in a database on your ISPs
server. You can edit and manipulate the file with any tools you like. You can
write the code in HTML if you want, but most of the time I prefer
&lt;a href=&quot;http:&#x2F;&#x2F;daringfireball.net&#x2F;projects&#x2F;markdown&#x2F;&quot;&gt;Markdown&lt;&#x2F;a&gt; which is also supported
(or in fact encouraged).&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s what the file for this blog post looks like:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;---
&lt;&#x2F;span&gt;&lt;span&gt;layout: post
&lt;&#x2F;span&gt;&lt;span&gt;title: &amp;quot;Jekyll: Blogging like a hacker&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;tags:
&lt;&#x2F;span&gt;&lt;span&gt;  - jekyll
&lt;&#x2F;span&gt;&lt;span&gt;  - blogging
&lt;&#x2F;span&gt;&lt;span&gt;---
&lt;&#x2F;span&gt;&lt;span&gt;I wrote [the first post](&#x2F;2005&#x2F;05&#x2F;26&#x2F;PS3-and-parallell-programming&#x2F;) on this
&lt;&#x2F;span&gt;&lt;span&gt;site in 2005 using [Serendipity](http:&#x2F;&#x2F;www.s9y.org). While Serendipity
&lt;&#x2F;span&gt;&lt;span&gt;is a completely adequate blogging engine, I have been annoyed by a few things.
&lt;&#x2F;span&gt;&lt;span&gt;All of them would apply to any popular blogging engine, which is why I
&lt;&#x2F;span&gt;&lt;span&gt;wanted something different. I have now found a tool that takes
&lt;&#x2F;span&gt;&lt;span&gt;a very different approach.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Before I go into that, let&amp;#39;s list the things that didn&amp;#39;t feel right with a
&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;classical&amp;quot; blogging engine:
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;1. Serendipity is written in PHP. This is good since there are plenty of ISPs
&lt;&#x2F;span&gt;&lt;span&gt;that can host PHP sites. Unfortunately I&amp;#39;m no PHP hacker myself, so it is not
&lt;&#x2F;span&gt;&lt;span&gt;easy for me to change the internal workings of the site.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;2. I have more interesting things to do than keeping up with the latest versions
&lt;&#x2F;span&gt;&lt;span&gt;of the software. It is especially worrying if I don&amp;#39;t have the time to install
&lt;&#x2F;span&gt;&lt;span&gt;security patches. This would apply no matter what blogging engine i chose. As
&lt;&#x2F;span&gt;&lt;span&gt;long as there is server-side code, there is a risk of security holes.
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;3. I&amp;#39;m a programmer. I&amp;#39;m used to working with text files. I can manipulate them
&lt;&#x2F;span&gt;&lt;span&gt;with tools for version control, utilities like grep and sed, programming
&lt;&#x2F;span&gt;&lt;span&gt;languages like Python and Ruby and any text editor of my liking. Entering text
&lt;&#x2F;span&gt;&lt;span&gt;into a form on a web page may be easier for a non-programmer, but I have other
&lt;&#x2F;span&gt;&lt;span&gt;usability requirements. (Also, with a web form text can easily get lost. I&amp;#39;ve
&lt;&#x2F;span&gt;&lt;span&gt;been [saved by tcpdump](&#x2F;2008&#x2F;12&#x2F;02&#x2F;Saved-by-tcpdump&#x2F;) more than once.)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Static pages, like my &lt;a href=&quot;&#x2F;contact&#x2F;&quot;&gt;contact page&lt;&#x2F;a&gt; are generated from similar
files. When I run the &lt;em&gt;jekyll&lt;&#x2F;em&gt; command, Jekyll reads all the files and generates
static HTML files that can then be uploaded to the ISP. This means no
server-side code and no security vulnerabilities. A blog is basically a bunch of
static pages, so for a blog with low update frequency, there should be no need
to store the posts in a database. And for a high traffic site, static files is very
likely to give better performance.&lt;&#x2F;p&gt;
&lt;p&gt;The comments are the only dynamic part of this site. For those I use
&lt;a href=&quot;http:&#x2F;&#x2F;disqus.com&quot;&gt;Disqus&lt;&#x2F;a&gt;. It is convenient not to have to worry about spam
protection and server-side security holes. Hopefully the Disqus people have
more time on their hands to handle that.&lt;&#x2F;p&gt;
&lt;p&gt;The downside of Jekyll is that is is a fairly new project which is far from 1.0
status yet. Features are added, changed and even removed and some functionality
is limited. That said, &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;&quot;&gt;Github&lt;&#x2F;a&gt; uses it in production
to generate hosted pages.&lt;&#x2F;p&gt;
&lt;p&gt;If you&#x27;re interested in Jekyll, visit &lt;a href=&quot;http:&#x2F;&#x2F;jekyllrb.com&#x2F;&quot;&gt;the site&lt;&#x2F;a&gt; or
the &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;mojombo&#x2F;jekyll&#x2F;tree&#x2F;master&quot;&gt;project page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I based the theme on my site on
&lt;a href=&quot;http:&#x2F;&#x2F;quotedprintable.com&#x2F;pages&#x2F;scribbish&quot;&gt;Scribbish&lt;&#x2F;a&gt;, which is a blog theme
originally designed for &lt;a href=&quot;http:&#x2F;&#x2F;wiki.github.com&#x2F;fdv&#x2F;typo&#x2F;&quot;&gt;Typo&lt;&#x2F;a&gt;. My port is
available &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;vilcans&#x2F;scribbish-jekyll&#x2F;tree&#x2F;master&quot;&gt;here&lt;&#x2F;a&gt;, but it
currently requires &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;vilcans&#x2F;jekyll&#x2F;tree&#x2F;master&quot;&gt;my fork of
Jekyll&lt;&#x2F;a&gt;, which adds some
functionality that I need. I&#x27;m pushing for those changes to be included in the
mainline Jekyll code.&lt;&#x2F;p&gt;
&lt;p&gt;That&#x27;s it. Let me know what you think of my new site!&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>How to enable remote desktop on headless Mac</title>
            <pubDate>Sun, 14 Jun 2009 22:14:00 +0000</pubDate>
            <link>https://www.librador.com/2009/06/15/How-to-enable-remote-desktop-on-headless-Mac/</link>
            <guid>https://www.librador.com/2009/06/15/How-to-enable-remote-desktop-on-headless-Mac/</guid>
            <description>&lt;p&gt;The graphics card on my old PowerMac G5 gave up, so my Mac is now &lt;em&gt;headless&lt;&#x2F;em&gt;.
That is, it runs fine, but it can&#x27;t display anything on the screen.
It&#x27;s still possible to log on to it through SSH, but I needed to use GUI applications.
Getting a replacement graphics card proved to be difficult, so I needed to find another way.&lt;&#x2F;p&gt;
&lt;p&gt;Macs support remote desktop logins through Apple Remote Desktop, which is just a different name
for &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Vnc&quot;&gt;VNC&lt;&#x2F;a&gt;. The only problem was that
I had not enabled desktop sharing before the graphics card broke down,
and all the instructions I could find were about how to enable it in the Mac&#x27;s System Preferences.
And I can&#x27;t access the System Preferences since it&#x27;s a GUI application!&lt;&#x2F;p&gt;
&lt;p&gt;With the help of &lt;a href=&quot;http:&#x2F;&#x2F;support.apple.com&#x2F;kb&#x2F;HT2370?viewlocale=en_US&quot;&gt;this Apple Support article&lt;&#x2F;a&gt;,
I could enable the VNC server. The VNC clients I tried reported errors like &amp;quot;No matching security types&amp;quot;
and &amp;quot;Server did not offer supported security type&amp;quot;.&lt;&#x2F;p&gt;
&lt;p&gt;Finally I got it to work. The trick is to enable &amp;quot;legacy mode&amp;quot; and set a password.
This is the command that did the trick:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;sudo &#x2F;System&#x2F;Library&#x2F;CoreServices&#x2F;RemoteManagement&#x2F;ARDAgent.app&#x2F;Contents&#x2F;Resources&#x2F;kickstart -activate -configure -access -on -restart -agent -privs -all -clientopts -setvnclegacy -vnclegacy -yes -setvncpw -vncpw somesecretpassword
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I guess there are security implications with this, but as long as I don&#x27;t expose
the VNC server to untrusted computers, I guess I&#x27;m fine. Both
&lt;a href=&quot;http:&#x2F;&#x2F;projects.gnome.org&#x2F;vinagre&#x2F;&quot;&gt;Vinagre&lt;&#x2F;a&gt; (the VNC client that comes with Ubuntu) and
&lt;em&gt;xtightvncviewer&lt;&#x2F;em&gt; now work. The &lt;em&gt;vncviewer&lt;&#x2F;em&gt; command still doesn&#x27;t connect properly
for what seems to be some other reason.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>How to create a Git repository from a Subversion working copy</title>
            <pubDate>Thu, 11 Jun 2009 10:24:00 +0000</pubDate>
            <link>https://www.librador.com/2009/06/11/How-to-create-a-Git-repository-from-a-Subversion-working-copy/</link>
            <guid>https://www.librador.com/2009/06/11/How-to-create-a-Git-repository-from-a-Subversion-working-copy/</guid>
            <description>&lt;p&gt;Sometimes I want to add the files handled by one version control system into another.
Typically I have checked out files from a read-only &lt;a href=&quot;http:&#x2F;&#x2F;subversion.tigris.org&quot;&gt;Subversion&lt;&#x2F;a&gt;
repository and want to add all files to a &lt;a href=&quot;http:&#x2F;&#x2F;git-scm.com&#x2F;&quot;&gt;Git&lt;&#x2F;a&gt; repository,
so I can work with them locally.&lt;&#x2F;p&gt;
&lt;p&gt;The following command has worked for me, and perhaps you&#x27;ll find it useful.
Just change to the directory where you have your Subversion working copy.
Then create a Git repository in the same directory:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;git init
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The Git workspace will be in the same directory as the Subversion working copy.
This works fine since they store their metadata in different directories
(&lt;em&gt;.git&lt;&#x2F;em&gt; and &lt;em&gt;.svn&lt;&#x2F;em&gt; respectively).&lt;&#x2F;p&gt;
&lt;p&gt;Now, to add all files that are under Subversion control to the Git repository, execute:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;svn ls -R | grep -v &amp;#39;&#x2F;$&amp;#39; | xargs git add
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The &lt;em&gt;svn ls -R&lt;&#x2F;em&gt; command lists all files and directories,
the grep command removes the directory names from the list, and then all
the file names are sent as parameters to the &lt;em&gt;git add&lt;&#x2F;em&gt; command.
Of course, this only works if you have those commands installed.
It should work fine under Linux, OS X or other Unix variants.
I haven&#x27;t tested it with Windows ports of the same commands.&lt;&#x2F;p&gt;
&lt;p&gt;Now that the files have been added, just commit them:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;git commit -m &amp;quot;Files from Subversion revision XXXX&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Of course, you could have cloned the Subversion repository with
the &lt;a href=&quot;http:&#x2F;&#x2F;www.kernel.org&#x2F;pub&#x2F;software&#x2F;scm&#x2F;git&#x2F;docs&#x2F;git-svn.html&quot;&gt;git svn clone&lt;&#x2F;a&gt;
command to the begin with, but at least one person I know (me) isn&#x27;t always
that foresighted.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>7-bit characters today</title>
            <pubDate>Wed, 13 May 2009 21:42:00 +0000</pubDate>
            <link>https://www.librador.com/2009/05/13/7-bit-characters-today/</link>
            <guid>https://www.librador.com/2009/05/13/7-bit-characters-today/</guid>
            <description>&lt;p&gt;I got this error message when I tried to log on to my bank today:&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;d8d9235e2d4b3fd200.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s in Swedish but note the strange use of curly braces and pipe characters.
Back in the eighties it was common to have national code pages where certain
seldom used characters in the ASCII set were replaced by national characters.
For Swedish, the mapping included:&lt;&#x2F;p&gt;
&lt;p&gt;{ (left curly brace) mapped to ä (lower case a with umlaut)&lt;&#x2F;p&gt;
&lt;p&gt;} (right curly brace) mapped to å (lower case a with circle above)&lt;&#x2F;p&gt;
&lt;p&gt;| (pipe) mapped to ö (lower case o with umlaut)&lt;&#x2F;p&gt;
&lt;p&gt;It was common that software didn&#x27;t map correctly to the national characters.
Many users learned to read the braces and pipes fluently instead.
I can&#x27;t remember the last time I saw this character mapping used.
It must have been 15 years ago or so. Until today.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Meme time: Wikipedia album generator</title>
            <pubDate>Thu, 26 Feb 2009 21:38:00 +0000</pubDate>
            <link>https://www.librador.com/2009/02/26/Meme-time-Wikipedia-album-generator/</link>
            <guid>https://www.librador.com/2009/02/26/Meme-time-Wikipedia-album-generator/</guid>
            <description>&lt;p&gt;I think it originated &lt;a href=&quot;http:&#x2F;&#x2F;www.buzzfeed.com&#x2F;peggy&#x2F;wikipedia-names-your-band&quot;&gt;here&lt;&#x2F;a&gt;.
Anyway, here are the rules:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Go to Wikipedia. Hit &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Special:Random&quot;&gt;random&lt;&#x2F;a&gt;.
The first random wikipedia article you get is the name of your band.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Go to &lt;a href=&quot;http:&#x2F;&#x2F;www.quotationspage.com&#x2F;random.php3&quot;&gt;Random quotations&lt;&#x2F;a&gt;.
The last four or five words of the very last quote of the page is the title of your first album.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Go to flickr and click on &lt;a href=&quot;http:&#x2F;&#x2F;www.flickr.com&#x2F;explore&#x2F;interesting&#x2F;7days&quot;&gt;explore the last seven days&lt;&#x2F;a&gt;
Third picture, no matter what it is, will be your album cover.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Use photoshop or similar to put it all together. Preferably in a square
format layout, like a nice old-timey vinyl album cover.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Here&#x27;s my result.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;a4bd2d74468d925c00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.flickr.com&#x2F;photos&#x2F;carshamus&#x2F;3310424951&#x2F;&quot;&gt;Original photo by CarLee.&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The frame rate of the universe</title>
            <pubDate>Fri, 16 Jan 2009 00:04:00 +0000</pubDate>
            <link>https://www.librador.com/2009/01/16/The-frame-rate-of-the-universe/</link>
            <guid>https://www.librador.com/2009/01/16/The-frame-rate-of-the-universe/</guid>
            <description>&lt;p&gt;I stumbled upon &lt;a href=&quot;http:&#x2F;&#x2F;www.newscientist.com&#x2F;article&#x2F;mg20126911.300-our-world-may-be-a-giant-hologram.html?full=true&quot;&gt;this
article&lt;&#x2F;a&gt; which presents the hypothesis that the universe is a 3D projection of a 2D
surface, like a giant hologram. I like to read about modern physics. It is so weird and I can&#x27;t say
I really understand very much of it. But the descriptions provoke strange and fascinating images
and thoughts in my head. Like this one:&lt;&#x2F;p&gt;&lt;p&gt;The article mentions the &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Planck_length&quot;&gt;Planck length&lt;&#x2F;a&gt;, which as I understand it is
the smallest distance there is. It&#x27;s extremely small: 1.6 × 10&lt;sup&gt;-35&lt;&#x2F;sup&gt; meters, which makes
it billions and billions of times smaller than an atom (or even a proton). I&#x27;m used to thinking
about computer graphics, so I imagine the Planck length as the size of one &quot;pixel&quot; of the universe.
Nothing can be smaller than a pixel. (The pixels of the universe are small, I calculate the
resolution to correspond to 2.19 × 10&lt;sup&gt;33&lt;&#x2F;sup&gt; DPI.) The radius of the observable universe is
4.4 × 10&lt;sup&gt;26&lt;&#x2F;sup&gt; meters. If we want to fit the universe into a box, its sides would have to
be twice that size. That is 5.4 × 10&lt;sup&gt;61&lt;&#x2F;sup&gt; Planck lengths. So that&#x27;s the width, height and
depth of the universe in pixels. Quite a good resolution. (Actually since they are 3D cubes instead
of 2D squares, I should call them voxels instead of pixels. All 1.61 × 10&lt;sup&gt;185&lt;&#x2F;sup&gt; of
them.)&lt;&#x2F;p&gt;&lt;p&gt;There is also the &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Planck_time&quot;&gt;Planck time&lt;&#x2F;a&gt;
which is the time it takes for light to travel one Planck length. As light is fast and the Planck
length is tiny (tiniest there is!), you can image that it&#x27;s a very short period of time. Certainly.
The Planck time is 5.39 × 10&lt;sup&gt;-44&lt;&#x2F;sup&gt; seconds. No measurable time can be shorter than that
according to quantum physics. Thinking about graphics again, this is like a limit on the frame rate
of the universe. Inverting the Planck time, I get 1.855 × 10&lt;sup&gt;43&lt;&#x2F;sup&gt;. So by my surely
incorrect logic, we get the value of the universe&#x27;s frame rate:&lt;&#x2F;p&gt;&lt;p&gt;One thousand eight hundred
and fifty-five billion billion billion billion frames per second.&lt;&#x2F;p&gt;&lt;p&gt;I&#x27;ll say that
again:&lt;&#x2F;p&gt;&lt;p&gt;18.55 septillion FPS!&lt;&#x2F;p&gt;&lt;p&gt;Video cameras won&#x27;t be perfect until they can record at
that speed.&lt;&#x2F;p&gt;&lt;p&gt;I hope I got the calculations right, but I&#x27;m pretty sure my interpretation of the
quantum physics behind this are way off. It&#x27;s still fascinating to think of the universe as a
computer simulation. Modern physics make it seem more like a video game than ever.&lt;br &#x2F;&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>What are the oldest files in your home directory?</title>
            <pubDate>Thu, 08 Jan 2009 20:03:00 +0000</pubDate>
            <link>https://www.librador.com/2009/01/08/What-are-the-oldest-files-in-your-home-directory/</link>
            <guid>https://www.librador.com/2009/01/08/What-are-the-oldest-files-in-your-home-directory/</guid>
            <description>&lt;p&gt;
&lt;a href=&quot;http:&#x2F;&#x2F;www.b-list.org&#x2F;weblog&#x2F;2009&#x2F;jan&#x2F;03&#x2F;meme&#x2F;&quot;&gt;James Bennett replies&lt;&#x2F;a&gt; to &lt;a href=&quot;http:&#x2F;&#x2F;blog.doughellmann.com&#x2F;2009&#x2F;01&#x2F;new-year-meme-what-are-oldest-files-in.html&quot;&gt;Doug
Hellman&#x27;s follow up&lt;&#x2F;a&gt; on &lt;a href=&quot;http:&#x2F;&#x2F;rhodesmill.org&#x2F;brandon&#x2F;2009&#x2F;new-years-meme&#x2F;&quot;&gt;Brandon
Craig Rhodes&#x27; idea&lt;&#x2F;a&gt; &quot;What are the oldest files in your home directory?&quot;. Of course I couldn&#x27;t
resist doing the same. I won&#x27;t repeat the procedure for how I found my oldest files, since the
posts above tell you how if you want to repeat the experiment.&lt;&#x2F;p&gt;&lt;p&gt;Before I go on listing my
oldest files, I&#x27;ll tell you what files you unfortunately won&#x27;t find listed here. It must have been
around 1998 when I received an old cardboard box with the old cassette tapes containing the old
games me and my brother made for the &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;ZX_Spectrum&quot; title=&quot;Sinclair ZX Spectrum - Wikipedia, the free encyclopedia&quot;&gt;ZX Spectrum&lt;&#x2F;a&gt; 8-bit computer back
in the mid 80&#x27;s. The tapes were like ordinary audio cassettes, and I used some DOS software that
could read the Spectrum&#x27;s format through the PC&#x27;s sound card. Unfortunately the tapes had
deteriorated to the point where most of the files were unreadable. The games I got to run were
quite embarassingly bad, so I thought they were better kept in fondness in my memory instead of in
the light of a present-day emulator. I throw the box with the tapes away.&lt;&#x2F;p&gt;&lt;p&gt;Anyway, I found
some pretty old files whose timestamps have survived several computer generations. Here we
go:&lt;&#x2F;p&gt;&lt;p&gt;&lt;code&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;INLEDNIN.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;GENOM.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;KUNSKAP.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;REFERENS.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;ANALYS.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;BEGREPPS.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;GENOMFÖR.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;PLAN.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;SAMMAN.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;XJOBB2.DOC&lt;br &#x2F;&gt;
1995-08-07 .&#x2F;gammalt&#x2F;pre-2000&#x2F;exjobb&#x2F;BILAGOR.DOC&lt;br &#x2F;&gt;
&lt;&#x2F;code&gt;&lt;br &#x2F;&gt;
These files are the documentation for the degree project I did with a friend back in university. We
investigated the implications of moving from a classical two-tier client&#x2F;server architecture to a
three tier GUI&#x2F;functionality&#x2F;database model. Nobody builds two-tier systems any more, so I guess
the three-tier model won. Reading a few pages, I notice how much else that hasn&#x27;t changed. What we
discuss in this document is what today goes under names such as SOA, RIA and Ajax, and the issues
we bring up are still relevant. So much for the misconception that what you learn in university is
out of date by the time you graduate.&lt;&#x2F;p&gt;&lt;p&gt;Note that we split the document into several files to
keep Word from choking on the size of it. I doubt you even can do that in the latest version of
Word.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;b648ca7845d526fd00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;code&gt;
1995-12-13 .&#x2F;gammalt&#x2F;pre-2000&#x2F;bildmanipulation&#x2F;LASER4.JPG&lt;br &#x2F;&gt;
&lt;&#x2F;code&gt;&lt;br &#x2F;&gt;
This file must be even older than what the timestamp says. It is my first experiment with
manipulating images with Photoshop. I took the original photo with my good old Minolta 9xi analog
camera (or perhaps it was even the bad old 3xi) and scanned the print on the university&#x27;s flatbed
scanner. Not the best way to go for image quality I guess, but it was not like any normal person
had a digital camera back in &#x27;95. The university had a small computer lab with a few Macs where i
snuck in to learn Photoshop and this was the result.&lt;&#x2F;p&gt;&lt;p&gt;&lt;code&gt;1996-02-28
.&#x2F;gammalt&#x2F;pre-2000&#x2F;august&#x2F;annan diskett&#x2F;BRUNNEN.WPS&lt;br &#x2F;&gt;
1996-03-03 .&#x2F;gammalt&#x2F;pre-2000&#x2F;august&#x2F;annan diskett&#x2F;BRUNNEN.GEN&lt;br &#x2F;&gt;
1996-03-03 .&#x2F;gammalt&#x2F;pre-2000&#x2F;august&#x2F;annan diskett&#x2F;BRUNNEN.TXT&lt;br &#x2F;&gt;
&lt;&#x2F;code&gt;&lt;br &#x2F;&gt;
Those are some of the files for a children&#x27;s book I was writing with a friend. We even had meetings
with publishers about it, but it never was published, in part because of the discrepancy between
the childish story and characters and the more mature humour.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;d2fc0f05481c085500.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;code&gt;
1997-06-25 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;BBall.inc&lt;br &#x2F;&gt;
1997-06-25 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;Chalk.inc&lt;br &#x2F;&gt;
1997-06-25 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;Room.inc&lt;br &#x2F;&gt;
1997-06-27 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;BLamp.inc&lt;br &#x2F;&gt;
1997-06-27 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;ChalkBox.inc&lt;br &#x2F;&gt;
1997-06-27 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;ChalkLine.inc&lt;br &#x2F;&gt;
1997-06-27 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;Cue.inc&lt;br &#x2F;&gt;
1997-06-27 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;TableFrame.inc&lt;br &#x2F;&gt;
1997-06-27 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;Window.inc&lt;br &#x2F;&gt;
1997-06-27 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;BTable.inc&lt;br &#x2F;&gt;
1997-06-27 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;Ruler.inc&lt;br &#x2F;&gt;
1997-06-29 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;Protractor.inc&lt;br &#x2F;&gt;
1997-06-30 .&#x2F;Documents&#x2F;povscn&#x2F;balls&#x2F;balls.txt&lt;br &#x2F;&gt;
&lt;&#x2F;code&gt;&lt;br &#x2F;&gt;
These are source files for the &lt;a href=&quot;http:&#x2F;&#x2F;www.povray.org&quot;&gt;POV-Ray&lt;&#x2F;a&gt; raytracer and consist my
entry for the june 1997 issue of the &lt;a href=&quot;http:&#x2F;&#x2F;www.irtc.org&quot;&gt;Internet Raytracing
Competition&lt;&#x2F;a&gt; (on hiatus since 2006). See the &lt;a href=&quot;http:&#x2F;&#x2F;www.irtc.org&#x2F;stills&#x2F;1997-06-30&#x2F;view.html&quot;&gt;viewing page&lt;&#x2F;a&gt; for that month&#x27;s
competition. I have older POV-Ray source files hidden in a zip file somewhere, but the files above
are unpacked because I used them for something back in 2005.&lt;&#x2F;p&gt;&lt;p&gt;I found more interesting old
files, some that I had forgotten about. There is enough stuff for another blog post strolling down
memory lane, but this is enough for now.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Saved by tcpdump</title>
            <pubDate>Tue, 02 Dec 2008 17:21:00 +0000</pubDate>
            <link>https://www.librador.com/2008/12/02/Saved-by-tcpdump/</link>
            <guid>https://www.librador.com/2008/12/02/Saved-by-tcpdump/</guid>
            <description>&lt;p&gt;Have you ever written a long post on a forum or a blog, clicked the submit button and got an
error message back? Perhaps there was some temporary glitch in the server so your long thoughtful
post wasn&#x27;t saved, but all too often it&#x27;s because your session has expired and you&#x27;re requested to
log in again. If you click the back button in this situation there is a risk that you will come
back to the empty text box you started out with and there is no way to get your post
back.&lt;&#x2F;p&gt;
&lt;p&gt;What I have learned to do in these situations is that instead of clicking the back
button, I refresh the page. The browser will ask whether you are sure that you want to post the
same data again, so the data is obviously still there in the browser&#x27;s memory. If you go ahead and
try to post again, you may succeed (you do risk a double post if the first post was successful
although it looked like there was an error). If the server keeps on giving errors, I have a trick
that is quite primitive. I start a network sniffer before I click the refresh button. (If you
didn&#x27;t know, a network sniffer is a piece of software that saves everything that is transferred
over the computer&#x27;s network card.) &lt;a href=&quot;http:&#x2F;&#x2F;www.wireshark.org&quot;&gt;Wireshark&lt;&#x2F;a&gt; is a GUI
software that works well. Unix-like systems (including Linux and MacOS X) have a command-line
utility called &lt;a href=&quot;http:&#x2F;&#x2F;www.tcpdump.org&#x2F;&quot;&gt;tcpdump&lt;&#x2F;a&gt;. You can invoke tcpdump like this to
capture everything that goes over port 80 (the default port for web traffic):&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;sudo tcpdump -s 0 -A -i en0 port 80 &amp;gt; dump.txt
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This will save the data in the file dump.txt. (You may have to replace &lt;em&gt;en0&lt;&#x2F;em&gt; with whatever the name of your network card
is.)&lt;&#x2F;p&gt;
&lt;p&gt;Open dump.txt in a text editor and you should be able to find the text. It will be &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Percent-encoding&quot;&gt;URL encoded&lt;&#x2F;a&gt;
(spaces are shown as &amp;quot;+&amp;quot; and other characters as &amp;quot;%21&amp;quot; etc.), but a good text editor
should be able to unescape it. (In &lt;a href=&quot;http:&#x2F;&#x2F;macromates.com&#x2F;&quot;&gt;TextMate&lt;&#x2F;a&gt; you&#x27;ll find URL
Unescape in the HTML bundle.) Then you can just save your witty, informative and well-written text
to retry the post.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;d be interested to know if there&#x27;s a simpler solution but this one works
very well and has saved me a few times.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The “one simple step rule” of development environments</title>
            <pubDate>Mon, 01 Dec 2008 21:53:00 +0000</pubDate>
            <link>https://www.librador.com/2008/12/01/The-one-simple-step-rule-of-development-environments/</link>
            <guid>https://www.librador.com/2008/12/01/The-one-simple-step-rule-of-development-environments/</guid>
            <description>&lt;p&gt;There are many ways to set up a development environment when creating software. With a
development environment I mean all the tools that the developers use to create the software,
including the physical machines, operating systems, IDEs, build scripts, issue trackers, version
control systems etc. Being a contractor I get to see a lot of different setups. If you&#x27;re a new
developer on a project that has been active for a while, it shouldn&#x27;t take more than an hour from
when you sit down in the chair on your first day to the moment when you have a working environment
and can edit and run code. Unfortunately many projects underestimate how important this is. I&#x27;ve
been in projects where weeks have gone by before some developers had the complete setup. Sometimes
the hindrance is a slow authorization process by some remote IT support department which won&#x27;t let
you access parts of the system. Sometimes setting up the system requires deep knowledge of how the
system works, and as a new developer it&#x27;s cumbersome to troubleshoot a complex architecture with
several interdependent components (GUI client, client-side logic layer, app server, web server,
database, you name it). Sometimes it takes days to learn just how to build the damn
thing.&lt;&#x2F;p&gt;&lt;p&gt;There is a lot of time wasted on these things in software projects. The best thing to
do to avoid such a situation is to have as a rule, from the very beginning of the project, that it
should be possible to create a working development environment from scratch in one simple step.
Typically the single step is to write a single command, whereby the build system will set up the
environment properly, download the code from the version control system and create a complete
working system. After editing code it should be just as easy to make and run a new build, but that
goes without saying. Having a short edit&#x2F;run cycle is essential and a one-step build process is a
requirement for implementing automated &lt;a href=&quot;http:&#x2F;&#x2F;martinfowler.com&#x2F;articles&#x2F;continuousIntegration.html&quot;&gt;continuous
integration&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;p&gt;It is important to have the &quot;one simple step&quot; rule in mind from the outset
of the project. It may take a little time to create an environment that supports it and with some
esoteric development kits it may actually be a bit difficult. Still, it is an investment that pays
off in saved time and frustration, and it is much more difficult to create a good development
environment for a moderately complex project that has been going on for a while (not to mention
projects that have been around for a few years). I wouldn&#x27;t recommend creating the mother of all
development environments from the outset. You can begin with a simple build system and add
functionality to it as it is needed. Just keep the &quot;one simple step&quot; rule in mind.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Are we in the 21st century yet?</title>
            <pubDate>Sun, 30 Nov 2008 19:50:00 +0000</pubDate>
            <link>https://www.librador.com/2008/11/30/Are-we-in-the-21st-century-yet/</link>
            <guid>https://www.librador.com/2008/11/30/Are-we-in-the-21st-century-yet/</guid>
            <description>&lt;p&gt;
    I went to the city of Västerås today. It&#x27;s a one hour train ride from Stockholm. The &lt;a href=&quot;http:&#x2F;&#x2F;www.sj.se&#x2F;&quot;&gt;railroad company&lt;&#x2F;a&gt; has received a lot of criticism for their
incomprehensible pricing scheme, but apparently that has changed. As far as I can remember it from
the last time I used it, the online booking system has been improved as well. But the coolest thing
is that it&#x27;s possible to order and pay for the ticket on the web site and receive the ticket as a
text message to your phone. On the train I just showed the message to the ticket-collector. He used
a device with a small camera, like the one on mobile phones, to scan the display of my phone. It
took a few attempts for the OCR to get it, but hey, this really felt like science fiction. 10 years
ago it would have been. It felt a bit like we have finally arrived in the 21st century.&lt;&#x2F;p&gt;&lt;p&gt;But
when I came to Västerås and tried to use &lt;a href=&quot;http:&#x2F;&#x2F;www.google.com&#x2F;gmm&#x2F;&quot;&gt;Google Maps
Mobile&lt;&#x2F;a&gt; with lousy GPRS coverage to find my way in the chilly wet semi-suburban streets, I felt
like I was back in the 1990s.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Increase the frame rate or be boring and conservative?</title>
            <pubDate>Fri, 24 Oct 2008 12:45:00 +0000</pubDate>
            <link>https://www.librador.com/2008/10/24/Increase-the-frame-rate-or-be-boring-and-conservative/</link>
            <guid>https://www.librador.com/2008/10/24/Increase-the-frame-rate-or-be-boring-and-conservative/</guid>
            <description>&lt;p&gt;The BBC has published a &lt;a href=&quot;http:&#x2F;&#x2F;www.bbc.co.uk&#x2F;rd&#x2F;pubs&#x2F;whp&#x2F;whp-pdf-files&#x2F;WHP169.pdf&quot;&gt;research white paper&lt;&#x2F;a&gt; about
high frame-rate television. According to their experiments, a higher frame rate becomes necessary
to avoid juttering or smearing of moving objects as the resolution and size of the TV screen
increases.&lt;&#x2F;p&gt;&lt;p&gt;As an old &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Demo&quot;&gt;demo&lt;&#x2F;a&gt; coder, I tend to
frown upon the jerky motion of sub-50 frames per second graphics. Many a hard-core gamer would tell
you that they wouldn&#x27;t play a game running at only 30 fps. BBC&#x27;s research shows that even at 100
fps, there is room for improvement. Still, motion pictures are trudging on in their old 24 fps that
was set as a standard when sound film was introduced in the 1920&#x27;s. As BBC&#x27;s research shows, the
perceived image quality can be increased tremendously by increasing the frame rate.&lt;&#x2F;p&gt;&lt;p&gt;There
&lt;em&gt;are&lt;&#x2F;em&gt; suggestions to improve the frame rate of motion pictures, but since video has always
had higher frame rates than film, those suggestions are typically met with a large number of
filmmakers saying, &quot;It looks like video!&quot;&lt;&#x2F;p&gt;&lt;p&gt;So what? It&#x27;s not like video is a dirty
word.&lt;&#x2F;p&gt;&lt;p&gt;Currently, there is a new generation of filmmakers growing up that never has and never
will shoot on film. In a few years, digital acquisition and projection will have more or less
killed canned celluloid. Why should filmmakers stick to the limitations of film? Sure, video gives
a different look than film and 100 fps gives a different look than 24 fps. But thinking
&lt;em&gt;different&lt;&#x2F;em&gt; means &lt;em&gt;worse&lt;&#x2F;em&gt; is conservative in a very boring way.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>When Harry met Bettan screening at Uppsala Short Film Festival</title>
            <pubDate>Thu, 16 Oct 2008 20:52:00 +0000</pubDate>
            <link>https://www.librador.com/2008/10/16/When-Harry-met-Bettan-screening-at-Uppsala-Short-Film-Festival/</link>
            <guid>https://www.librador.com/2008/10/16/When-Harry-met-Bettan-screening-at-Uppsala-Short-Film-Festival/</guid>
            <description>&lt;p&gt;
I was invited to direct a short film this summer. Of course with a budget very close to zero,
but enough to cover most expenses and with a writer&#x2F;producer who could take care of lots of the
practical things around making it. The first public screening will be at the &lt;a href=&quot;http:&#x2F;&#x2F;www.shortfilmfestival.com&#x2F;&quot;&gt;Uppsala International Short Film Festival&lt;&#x2F;a&gt;. (The site
isn&#x27;t designed for deep links, but &lt;a href=&quot;http:&#x2F;&#x2F;www.underhuset.nu&#x2F;shortfilmfestival&#x2F;ukffSve&#x2F;progBlock.lasso?programId=283&quot;&gt;here&#x27;s a
link to the screening&lt;&#x2F;a&gt;.) The film is called &quot;När Harry mötte Bettan&quot; (When Harry met Bettan)
and tells the story of a bitter young woman working in a video store and a romantic movie loving
nerd who also happens to be a bouncer at a local night club. The movie is in Swedish, but time will
tell if we&#x27;ll release a subtitled version.&lt;&#x2F;p&gt;&lt;p&gt;Here are two world exclusive stills from the
film:&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;87d00a1b2a9c013e00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;6d9ec3268e20345600.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Quality + Quantity = Information Overload</title>
            <pubDate>Wed, 01 Oct 2008 21:33:00 +0000</pubDate>
            <link>https://www.librador.com/2008/10/01/Quality-+-Quantity-Information-Overload/</link>
            <guid>https://www.librador.com/2008/10/01/Quality-+-Quantity-Information-Overload/</guid>
            <description>&lt;p&gt;
People say that the key to writing a popular blog is to post often and regularly. If there is
truth in this, I guess I&#x27;m not representing the typical feed subscriber as I have unsubscribed from
blogs with interesting well-written content simply because they posted too frequently and I
couldn&#x27;t cope with the volume. If a feed is never updated, you forget that you&#x27;re subscribed to it
and it does you no harm, so there&#x27;s no reason to cancel the subscription. Frequently updated feeds
on the other hand make you feel stressed when you can&#x27;t keep up with the information flow. This is
a problem with the quality of the posts, but not in the way you&#x27;d normally think (that quantity has
a negative impact on quality and vice versa). Quite the opposite: If the posts aren&#x27;t good, you
simply unsubscribe. It&#x27;s unsubscribing to a stream of interesting&#x2F;amusing&#x2F;insightful posts that
poses a problem. You get the feeling that you&#x27;ll miss something, so you don&#x27;t want to press that
unsubscribe button. Quantity coupled with quality is what causes information overload.&lt;&#x2F;p&gt;&lt;p&gt;To
avoid information overload from quality and quantity, subscribe to &lt;a href=&quot;http:&#x2F;&#x2F;feeds.feedburner.com&#x2F;librador&quot;&gt;my feed&lt;&#x2F;a&gt; instead. I won&#x27;t update often, I promise.
As for the quality, I&#x27;ll leave that for other people to judge.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The PowerMac G5&#x27;s power button</title>
            <pubDate>Thu, 26 Jun 2008 20:01:00 +0000</pubDate>
            <link>https://www.librador.com/2008/06/26/The-PowerMac-G5s-power-button/</link>
            <guid>https://www.librador.com/2008/06/26/The-PowerMac-G5s-power-button/</guid>
            <description>&lt;p&gt;When I first got my PowerMac G5 several years ago, my first impression of the power button on
it was bad. It&#x27;s a clear example of form over function. It looks nice, but since the button is flat
and level with the computer&#x27;s front surface, it&#x27;s difficult to find it by just feeling. I need to
bend down to see the button to be able to find it.&lt;&#x2F;p&gt;&lt;p&gt;But then I realized that even though it&#x27;s
annoying that I find it difficult to find the button, this also means that my son can&#x27;t find it
either and put the computer to sleep while I&#x27;m trying to use it.&lt;&#x2F;p&gt;&lt;p&gt;Well, not any more. :-) My
hack solution was to tape a piece of plastic over the button. Ugly but effective. Function over
form.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;f8f1fae34c143cc300.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;br &#x2F;&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;907f5cf371fce93100.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Set maximum threads in Blender!</title>
            <pubDate>Sat, 14 Jun 2008 10:27:00 +0000</pubDate>
            <link>https://www.librador.com/2008/06/14/Set-maximum-threads-in-Blender!/</link>
            <guid>https://www.librador.com/2008/06/14/Set-maximum-threads-in-Blender!/</guid>
            <description>
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;edb2eff80fd2e20200.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;I recently discovered that &lt;a href=&quot;http:&#x2F;&#x2F;www.blender.org&quot;&gt;Blender&lt;&#x2F;a&gt; (the open source 3D
modeler, renderer and steep learning curve kitchen sink) only uses one CPU by default. It is
possible to change the number of threads that Blender should use in the render settings. I expected
the optimal number of threads would be the same as the number of CPUs. My good old Mac G5 has two
CPUs, but eight threads (the maximum) actually renders a little faster than two. The big difference
is seen between one and two threads though.  Your mileage may vary of course, but if you&#x27;re a
Blender user who hasn&#x27;t seen this setting before, try tweaking it!&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>3D Movies - Mainstream or Gimmick?</title>
            <pubDate>Sat, 26 Apr 2008 19:36:00 +0000</pubDate>
            <link>https://www.librador.com/2008/04/26/3D-Movies-Mainstream-or-Gimmick/</link>
            <guid>https://www.librador.com/2008/04/26/3D-Movies-Mainstream-or-Gimmick/</guid>
            <description>&lt;p&gt;So, now I have watched samples of the latest trend in the motion picture industry: three
dimensional (stereoscopic) movies. The main part of the reason for this trend is probably that
there currently is no affordable way to view 3D movies at home, so they are a way to lure people
back into the cineplex. 3D movies have been around since the 1890&#x27;s (source: &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;3-D_film#Early_patents_and_tests&quot;&gt;Wikipedia&lt;&#x2F;a&gt;), and there have
been several waves of 3D movies since then, but 3D hasn&#x27;t caught on as the standard way of doing
movies, like sound and colour once did. It is still a gimmick for just a handful of
films.&lt;&#x2F;p&gt;&lt;p&gt;The current digital 3D movies have far better image quality than previous
technologies. I went to a 3D screening at the &quot;inspiration weekend for filmmakers&quot; &lt;a href=&quot;http:&#x2F;&#x2F;www.sfi.se&#x2F;&quot;&gt;Drömfabriken&lt;&#x2F;a&gt; (site in Swedish!) this week, and the talks before they
actually showed the movie clips sounded very promising. One person thought that 3D movies are here
to stay this time. And the clips they showed looked good. I could see no ghosting (where you see a
little of the right eye image in your left eye and vice versa), and the colour reproduction was
excellent. The main technical problem I saw was that the 3D effect was more or less exaggerated.
The image had more depth than what it would look like in real life. This causes double vision
sometimes, and looks unrealistic all the time. The reason for the exaggerated 3D effect is probably
that the &quot;eyes&quot; of the camera they used for filming were further apart than human eyes are, so it&#x27;s
a problem that can be solved by just moving them closer together. But if you do not exaggerate the
3D effect, the image would look quite flat.&lt;&#x2F;p&gt;&lt;p&gt;When you&#x27;re looking at stuff in the real world,
you do not actually have that much sense of depth at distances that are greater than a few meters.
Stereoscopic vision is most useful at close distances. At larger distances, other parts of the
brain do the work of figuring out how far away objects are. So, if you move the 3D camera&#x27;s &quot;eyes&quot;
closer together to get a realistic 3D effect, you don&#x27;t get much of a 3D effect at all except for
closeups. So why would the film production go through all the trouble of filming in stereo
&lt;i&gt;and&lt;&#x2F;i&gt; forcing the viewers to wear those ugly glasses for such a subtle effect?&lt;&#x2F;p&gt;&lt;p&gt;I think
the glasses is the reason that 3D movies won&#x27;t go mainstream this time around either. You just
don&#x27;t want to make out in the back of the theatre wearing alien goggles. Since one driving force
behind 3D movies is to get the audience into the theatres, it&#x27;s ironic that the first &lt;a href=&quot;http:&#x2F;&#x2F;www.wired.com&#x2F;science&#x2F;discoveries&#x2F;news&#x2F;2006&#x2F;08&#x2F;71627&quot;&gt;3D displays that don&#x27;t require
glasses&lt;&#x2F;a&gt; are suited only for home use. The technology wouldn&#x27;t work in a cinema. (This has to do
with the fact that these 3D displays have a small &quot;sweet spot&quot;. They don&#x27;t allow for a wide viewing
angle.)&lt;&#x2F;p&gt;&lt;p&gt;So, was I impressed by the 3D screening? No. It didn&#x27;t feel very fresh or new, but it
still is a cool effect, no doubt about it. It has always been. I just don&#x27;t see it going mainstream
any time soon. James Cameron (director of Aliens, The Terminator, Titanic and upcoming 3D feature
&lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;title&#x2F;tt0499549&#x2F;&quot;&gt;Avatar&lt;&#x2F;a&gt;) has a different opinion &lt;a href=&quot;http:&#x2F;&#x2F;www.variety.com&#x2F;VR1117983864.html&quot;&gt;in this interesting article&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Dojo and Conventions in Programming Languages</title>
            <pubDate>Wed, 02 Apr 2008 14:57:00 +0000</pubDate>
            <link>https://www.librador.com/2008/04/02/Dojo-and-Conventions-in-Programming-Languages/</link>
            <guid>https://www.librador.com/2008/04/02/Dojo-and-Conventions-in-Programming-Languages/</guid>
            <description>&lt;p&gt;I went to the &lt;a href=&quot;http:&#x2F;&#x2F;www.webmontag.de&#x2F;doku.php?id=01.04.2008_stockholm&quot;&gt;Web Monday&lt;&#x2F;a&gt;
event yesterday. This was the third time this was arranged in Stockholm, but it was the first time
for me. This time, only a handful of people attended, probably because lots of people from
Stockholm went skiing last week and spent this week at home with a broken leg. It was a nice event
nevertheless. I mean: Discussing software and web development, listening to interesting short
presentations, eating pizza, drinking beer, watching 256 byte demos and YouTube clips, what more
can you ask for?&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;unclescript.blogspot.com&#x2F;&quot; title=&quot;Script Uncle&quot;&gt;Peter
Svensson&lt;&#x2F;a&gt; held &lt;a href=&quot;http:&#x2F;&#x2F;docs.google.com&#x2F;Present?docid=dfxgjqrf_77cjrd7gct&quot; title=&quot;Dojo
1.1 Custom Widgets presentation&quot;&gt;a presentation about Dojo&lt;&#x2F;a&gt;. The &lt;a href=&quot;http:&#x2F;&#x2F;dojotoolkit.org&#x2F;&quot;&gt;Dojo Toolkit&lt;&#x2F;a&gt; is a framework for making internet applications
with JavaScript and Ajax. I have no experience with it, except for a quick look after which I
decided that it was a bit too complex for my requirements at the time. Peter noticed me frown at
one slide, which wasn&#x27;t because of the presentation, or even the Dojo Toolkit itself, and I&#x27;ll try
to explain why.&lt;&#x2F;p&gt;&lt;p&gt;I had a problem with this code:&lt;br &#x2F;&gt;
&lt;pre&gt;dojo.declare(&quot;myclass&quot;, null,
{
  var1: &quot;&quot;,
  var2: 17,
  constructor: function(arg)
  {
    this.var1 = foo;
  }
});
var myobj = new myclass(4711);&lt;&#x2F;pre&gt;
&lt;p&gt;This is how you declare a class (named
&lt;em&gt;myclass&lt;&#x2F;em&gt;) with two data members (&lt;em&gt;var1&lt;&#x2F;em&gt; and &lt;em&gt;var2&lt;&#x2F;em&gt;) and a constructor. The
funny thing is that this way of declaring a class is a part of Dojo. JavaScript is so dynamic and
flexible that it&#x27;s possible to implement object orientation in different ways, so Dojo has its own
way of doing it. That is my problem. While it&#x27;s definitely nice for a language to be dynamic and
flexible, I would prefer a standard way to do such basic things as declaring a class.&lt;&#x2F;p&gt;&lt;p&gt;The
standard way to do something in a programming language can be enforced by rules in the language.
For example, Java, C++, Python and probably lots of other languages have a &lt;em&gt;class&lt;&#x2F;em&gt; keyword
for declaring a class. That is simply the one you use when you declare a class in those languages.
(In Python it&#x27;s certainly possible to create a class with other constructs if you really want to,
but you practically never do.)&lt;&#x2F;p&gt;&lt;p&gt;The standard way to do something can also be just a
convention; the way you typically do it. Java has a standard way to document code, called &lt;a href=&quot;http:&#x2F;&#x2F;java.sun.com&#x2F;j2se&#x2F;javadoc&#x2F;&quot;&gt;Javadoc&lt;&#x2F;a&gt;. Since this was part of the Java development
kit from the very beginning, all Java code uses those conventions, even though they are not
enforced by the language itself. Java has benefited a lot from conventions of this kind. Standards
for naming is another example where Java has succeeded very well. So, even if the JavaScript
language doesn&#x27;t enforce a specific way to declare a class, there is much to gain by having a
convention for doing it. If everyone follows the convention, you avoid a lot of confusion and
interoperability problems.&lt;&#x2F;p&gt;&lt;p&gt;Dojo&#x27;s way of declaring a class looks nice. Dojo also has other
features that seem to make programming easier (such as a package system using the &lt;em&gt;require&lt;&#x2F;em&gt;
and &lt;em&gt;provide&lt;&#x2F;em&gt; functions). So I have no problem with that. The problem is that there is no
standard way of doing these things in JavaScript so Dojo needs to implement its conventions.
Perhaps the Dojo conventions deserve to be &lt;em&gt;the&lt;&#x2F;em&gt; way of doing things in JavaScript, but
unfortunately there are no standard conventions yet.&lt;&#x2F;p&gt;&lt;p&gt;Now, I haven&#x27;t programmed very much in
JavaScript (so far), so perhaps I have no clue of what I&#x27;m talking about here. Perhaps this is not
a problem. But until I get proven wrong, I&#x27;m skeptic about a language that has no standard way of
doing very basic things. It makes me think of C++, where every other project declares its own
string class. It is plain silly.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Happy About C Programmers</title>
            <pubDate>Tue, 01 Apr 2008 14:46:00 +0000</pubDate>
            <link>https://www.librador.com/2008/04/01/Happy-About-C-Programmers/</link>
            <guid>https://www.librador.com/2008/04/01/Happy-About-C-Programmers/</guid>
            <description>&lt;p&gt;I&#x27;m so happy that so many people program in C. Old and ugly as C is, I have two main reasons to
like it:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The C language is very portable. Since the C specification is simple, stable and (as far as
I can tell) properly implemented in all compilers, you never run into compiler-specific issues with
C code. Also, every operating environment on the planet has a C compiler.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;C code has great performance. This comes naturally from the fact that C is a relatively low-level
language (and to a certain extent that C programmers tend to be speed freaks).&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;For this reason, I like to use library code written in C (and there&#x27;s a lot of C libraries out there).
Also, I like the fact that
I can download the source for a C project and be quite sure that it will compile and run. But
&lt;em&gt;I&lt;&#x2F;em&gt; wouldn&#x27;t want to program in C. The language is complicated and tedious, so it takes a
lot of care to write code that works and is safe. If I want speed-critical code, I&#x27;d write it in
C++. (News flash for the ignorant: C and C++ are two different languages. There is no such thing as
&amp;quot;C&#x2F;C++&amp;quot;.) The performance of C++ code is more or less the same as for C, but C++ is a more
expressive language. (Another news flash: You do not &lt;em&gt;have&lt;&#x2F;em&gt; to do object oriented
programming in C++ if you don&#x27;t want to, as it supports procedural programming as well.) The
problem with C++ is related to bullet #1 above. C++ is far from as portable as C. Different
compilers implement the standard differently, and there are lots of subtle differences and bugs in
the compilers. Also, there is normally no guarantee that binary code from different compilers will
work with each other.&lt;&#x2F;p&gt;
&lt;p&gt;So I enjoy the portability of C, but I wouldn&#x27;t like to write in C
myself. I&#x27;m just glad that there are lots of C programmers out there.&lt;&#x2F;p&gt;
&lt;p&gt;On the web side, the
same goes for PHP. I don&#x27;t know much about PHP, but what I&#x27;ve seen has been ugly. But there are
lots of good products written in PHP that I can use, and there are plenty of hosts that support
PHP, so I&#x27;m glad that there are PHP programmers too.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Make3D Creates 3D Models from Photos</title>
            <pubDate>Thu, 28 Feb 2008 22:28:00 +0000</pubDate>
            <link>https://www.librador.com/2008/02/28/Make3D-Creates-3D-Models-from-Photos/</link>
            <guid>https://www.librador.com/2008/02/28/Make3D-Creates-3D-Models-from-Photos/</guid>
            <description>&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;46ee10d470a6893200.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
I &lt;a href=&quot;&#x2F;2007&#x2F;12&#x2F;06&#x2F;Fotowoosh-released-as-Facebook-app&#x2F;&quot; title=&quot;Fotowoosh released as Facebook app  - Librador&quot;&gt;tried out Fotowoosh&lt;&#x2F;a&gt; a while ago and came
to the result that it was a cool technology, but not good enough to do anything useful with. Now a
competing product called &lt;a href=&quot;http:&#x2F;&#x2F;make3d.stanford.edu&quot;&gt;Make3D&lt;&#x2F;a&gt; has appeared. They both
basically do the same thing, which is to take a photograph as input and calculate a textured 3D
model from it. Make3D has a different kind of algorithm which &lt;a href=&quot;http:&#x2F;&#x2F;news-service.stanford.edu&#x2F;news&#x2F;2008&#x2F;january23&#x2F;make-012308.html&quot;&gt;sounds impressive&lt;&#x2F;a&gt;.
Unfortunately as far as I can tell, the results aren&#x27;t much better than those of Fotowoosh. Take a
look at &lt;a href=&quot;http:&#x2F;&#x2F;make3d.stanford.edu&#x2F;images&#x2F;showuser&#x2F;12748&quot; title=&quot;Martin&#x27;s images on
Make3D&quot;&gt;my test images&lt;&#x2F;a&gt;. The results are still cool, but not good enough to be very
useful.&lt;&#x2F;p&gt;&lt;p&gt;The big difference between Fotowoosh and Make3D is the web site. Fotowoosh is
implemented as a Facebook application (!) that renders a movie where the camera moves in a preset
path around the 3D model. Make3D instead lets you move the camera around freely, and also allows
you download the 3D model in VRML format so you can import it into a 3D application and actually do
something with it. It is also possible to &amp;quot;fix&amp;quot; an image by drawing the planes by hand, helping the
Make3D algorithm do its job. I wasn&#x27;t able to improve the results with this functionality.&lt;&#x2F;p&gt;&lt;p&gt;It
will be interesting to follow the future development of these applications. Currently they are
still a curiosity with limited use, but hopefully the algorithms will be improved and we&#x27;ll get
useful results.&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>IMGAwards</title>
            <pubDate>Wed, 13 Feb 2008 22:08:00 +0000</pubDate>
            <link>https://www.librador.com/2008/02/13/IMGAwards/</link>
            <guid>https://www.librador.com/2008/02/13/IMGAwards/</guid>
            <description>&lt;p&gt;This week the &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;&quot;&gt;International Mobile Game Awards&lt;&#x2F;a&gt;
(IMGAwards) published the winners of the award of 2007. I&#x27;m glad to see that I have worked on two
of the winning games: Digital Legends&#x27; &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;nominees2007_3D_03.php?gameid=112&amp;amp;gamecategoryid=2&quot;&gt;One&lt;&#x2F;a&gt; (on
which I was the lead programmer until I had to move) and Jadestone&#x27;s &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;nominees2007_gameplay_02.php?gameid=210&amp;amp;gamecategoryid=4&quot;&gt;Dirk
Dagger and the Fallen Idol&lt;&#x2F;a&gt; (where I helped out with some programming). Both are published by
Nokia and are really cool games in two very different genres.&lt;&#x2F;p&gt;&lt;p&gt;Here&#x27;s the complete list of the
winners:&lt;&#x2F;p&gt;&lt;p&gt;Best Casual Game - &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;nominees2007_casual_05.php?gameid=201&amp;amp;gamecategoryid=5&quot;&gt;Treasure
Arm&lt;&#x2F;a&gt; by Tequila Mobile&lt;br &#x2F;&gt;
Best IP-based licensed - &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;nominees2007_ip_01.php?gameid=224&amp;amp;gamecategoryid=6&quot;&gt;Furby Island&lt;&#x2F;a&gt;
by LemonQuest&lt;br &#x2F;&gt;
Best 3D - &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;nominees2007_3D_03.php?gameid=112&amp;amp;gamecategoryid=2&quot;&gt;One&lt;&#x2F;a&gt; by
Digital Legends&lt;br &#x2F;&gt;
Best Gameplay - &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;nominees2007_gameplay_02.php?gameid=210&amp;amp;gamecategoryid=4&quot;&gt;Dirk
Dagger and the Fallen Idol&lt;&#x2F;a&gt; by Jadestone&lt;br &#x2F;&gt;
Operators Choice - &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;nominees2007_3D_02.php?gameid=173&amp;amp;gamecategoryid=2&quot;&gt;Metal Gear Solid
Mobile&lt;&#x2F;a&gt; by Ideaworks3D&lt;br &#x2F;&gt;
Public Choice Award - &lt;a href=&quot;http:&#x2F;&#x2F;www.imgawards.com&#x2F;nominees2007_3D_05.php?gameid=116&amp;amp;gamecategoryid=2&quot;&gt;WRC 3D&lt;&#x2F;a&gt; by
Firemint&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The Real Problem with Software Piracy</title>
            <pubDate>Fri, 01 Feb 2008 00:05:00 +0000</pubDate>
            <link>https://www.librador.com/2008/02/01/The-Real-Problem-with-Software-Piracy/</link>
            <guid>https://www.librador.com/2008/02/01/The-Real-Problem-with-Software-Piracy/</guid>
            <description>&lt;p&gt;This continues my previous post &lt;a href=&quot;&#x2F;2008&#x2F;01&#x2F;30&#x2F;Media-Companies-Public-Image-Problem&#x2F;&quot;&gt;Media
Companies&#x27; Public Image Problem&lt;&#x2F;a&gt;. Now I&#x27;ll focus on the situation in the software industry,
but I think the same reasoning can be applied to the media industries, and I&#x27;ll get back to that
later.&lt;&#x2F;p&gt;&lt;p&gt;Just like in the motion picture and music industries, the software industry has
problems with piracy. While digital technology for movies and music became widespread relatively
recently (around 2000 and 1990 respectively), software is digital by its nature and has always been
possible to copy without any quality degradation. So while software piracy is overshadowed by
movies and music piracy in the public debate, software piracy is the old kid on the block and the
media industries can learn from how piracy has affected the software industry.&lt;&#x2F;p&gt;&lt;p&gt;In the
previous paragraph, I said that the software industry has problems with piracy, but I didn&#x27;t say
what the problems are and who they affect. I&#x27;ll come to that now, and - in my humble opinion - the
nature of the problems and who they affect is not what most people think they are. So, here&#x27;s my
take on &lt;em&gt;the real problem with software piracy&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;&lt;p&gt;Take a commercial application. &lt;a href=&quot;http:&#x2F;&#x2F;www.adobe.com&#x2F;products&#x2F;photoshop&#x2F;family&#x2F;&quot;&gt;Adobe Photoshop&lt;&#x2F;a&gt; is a good example. Take
a teenager. Let&#x27;s call him Phil. Now, Phil wants to create some graphics for a hobby web page he&#x27;s
making. He browses some forums on the net and talks to friends to find out what software he needs.
The answers he gets are consistent:&lt;&#x2F;p&gt;&lt;p&gt;&quot;You need Photoshop.&quot;&lt;br &#x2F;&gt;
&quot;Photoshop is the best software for working with graphics for the web.&quot;&lt;br &#x2F;&gt;
&quot;All the professionals use it.&quot;&lt;br &#x2F;&gt;
&quot;Heck, Photoshop is even a verb nowadays.&quot;&lt;&#x2F;p&gt;&lt;p&gt;So Phil is convinced. He needs Photoshop. Happily
he goes online to buy it, but when he sees the $999 price tag for the best version, he thinks
again. He&#x27;s a poor student. He&#x27;s got plenty of time on his hands, but there&#x27;s no way he&#x27;ll spend
that amount of money on a hobby. But he still wants to work with graphics. He needs Photoshop! What
is he going to do? The natural thing now that piracy is widespread is to download a pirated copy,
so that&#x27;s what Phil does. Now he can create good looking graphics for his web page. At the same
time he learns the industry standard for graphics editing. If he&#x27;ll work with graphics
professionally in the future, he&#x27;ll probably buy a Photoshop licence. In the meantime, Adobe
doesn&#x27;t lose a sale because Phil wouldn&#x27;t have been able to afford Photoshop in the first place.
Nobody gets hurt.&lt;&#x2F;p&gt;&lt;p&gt;Everyone is happy, right?&lt;&#x2F;p&gt;&lt;p&gt;Wrong. Someone &lt;em&gt;does&lt;&#x2F;em&gt; get
hurt.&lt;&#x2F;p&gt;&lt;p&gt;In this scenario, Adobe are probably the winners. Because of piracy, they have gained a
possible future sale. It&#x27;s not a problem for them. But everyone isn&#x27;t happy. Who gets hurt? Adobe&#x27;s
competitors.&lt;&#x2F;p&gt;&lt;p&gt;Imagine that there was no such thing as piracy: that in some strange way it was
impossible to run software without having paid for a license. In that weird parallel universe, what
would Phil do when he realized that he couldn&#x27;t afford Photoshop? He wouldn &#x27;t just forget about
the idea of making graphics. He would do what people normally do when they can&#x27;t afford something
they need: &lt;strong&gt;Find a cheaper alternative.&lt;&#x2F;strong&gt; If you need a car and can&#x27;t afford a
Porche, go buy a Toyota or a Saab or a Fiat, whatever you can afford that suits your needs. It may
not be as good as what you wanted, but it will do the job. Phil would find one of the other
graphics editors out there, and there &lt;em&gt;are&lt;&#x2F;em&gt; others. Most if not all of them are cheaper than
Photoshop. Some are free. They might not have all the features that Photoshop has, but perhaps you
don&#x27;t even need those features. (Some made-up statistics: 99% of Photoshop users never use if for
anything above file format conversion and very simple editing.)&lt;&#x2F;p&gt;&lt;p&gt;So while Adobe doesn&#x27;t lose a
sale from Phil running a pirated Photoshop, their competitors do. The competition can&#x27;t compete
with a lower price, since pirated software is even cheaper. And the competition isn&#x27;t only
commercial software. Free software, such as &lt;a href=&quot;http:&#x2F;&#x2F;www.gimp.org&#x2F;&quot;&gt;The GIMP&lt;&#x2F;a&gt; also
competes with Photoshop. But Photoshop is clearly better (if nothing else because it has a sensible
user interface), and if both have a price tag of $0, which do you choose? If you&#x27;re unscrupulous
that is?&lt;&#x2F;p&gt;&lt;p&gt;So &lt;em&gt;the real problem with software piracy&lt;&#x2F;em&gt; is that it stifles competition and
creates monopolies. The biggest products get the biggest sales, and hence the biggest resources to
continue to be developed. Competitors can&#x27;t compete with a lower price, but must instead create
products that are &lt;em&gt;better&lt;&#x2F;em&gt; than the market leader; something that is very difficult to do
with limited resources. It&#x27;s like a catch 22.&lt;&#x2F;p&gt;&lt;p&gt;Now, don&#x27;t read the above like I don&#x27;t like
Adobe or Photoshop. Quite the contrary. Adobe makes some great products, and Photoshop &lt;em&gt;is&lt;&#x2F;em&gt;
in many ways the best graphics editor on this planet. I could have used Microsoft Windows as an
example instead, but as Windows isn&#x27;t clearly better than its competition (in many ways it&#x27;s much
worse), it would have muddled my argument. My point would still be valid though. What would happen
to Microsoft&#x27;s monopoly in the operating system segment if everyone that uses Windows actually had
to pay for it? How many would switch to Linux instead?&lt;&#x2F;p&gt;&lt;p&gt;In the media industries, we have a
similar problem, but it&#x27;s a bit different since the price ranges are different. I&#x27;ll get back to
that in the next post on this subject. In the meantime, I&#x27;d appreciate feedback on this post.
There&#x27;s no way my opinion is unique, but for some reason I never hear people think of piracy as a
problem in this way.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Media Companies&#x27; Public Image Problem</title>
            <pubDate>Tue, 29 Jan 2008 23:12:00 +0000</pubDate>
            <link>https://www.librador.com/2008/01/30/Media-Companies-Public-Image-Problem/</link>
            <guid>https://www.librador.com/2008/01/30/Media-Companies-Public-Image-Problem/</guid>
            <description>&lt;p&gt;The court of the European Union decided today that copyright holders &lt;em&gt;may&lt;&#x2F;em&gt; be allowed to
force internet service providers to disclose the identity of suspected pirates. The two &quot;serious&quot;
newspapers in Sweden (&lt;a href=&quot;http:&#x2F;&#x2F;www.dn.se&#x2F;DNet&#x2F;jsp&#x2F;polopoly.jsp?a=737663&quot;&gt;DN&lt;&#x2F;a&gt; and &lt;a href=&quot;http:&#x2F;&#x2F;www.svd.se&#x2F;nyheter&#x2F;inrikes&#x2F;artikel_818727.svd&quot;&gt;SvD&lt;&#x2F;a&gt;) report this as a neutral
decision, as it is up to each member state whether it wants to allow the disclosure of the
identities or not. There is still no EU-wide requirement for it. One of the &quot;not as serious&quot;
newspapers (&lt;a href=&quot;http:&#x2F;&#x2F;www.aftonbladet.se&#x2F;nyheter&#x2F;article1726659.ab&quot;&gt;Aftonbladet&lt;&#x2F;a&gt;) reports
this as a big step towards allowing media corporations to get personal information from the ISPs.
As such information normally is disclosed only following a court order, many people think that
giving away the information indiscriminately is an integrity problem. Skewed news reporting aside,
this is a valid concern.&lt;&#x2F;p&gt;&lt;p&gt;On the other hand, if you look at it from the point of view of the
copyright holders, it is easy to understand that they want to take desperate measures. If you lose
(what you perceive as) a large part of your income to illegal activities, you want to be able to do
something about it. There is no point in having laws if there is no way to enforce them.
Unfortunately not many people care. I think this is because of the media companies&#x27; public image
problem.&lt;&#x2F;p&gt;&lt;p&gt;The media companies spent a good part of the last century promoting an image of
themselves as having lots of money. For example, picture a record label executive. You&#x27;ll probably
think of a guy in a suit in a leather armchair behind a huge desk in a luxury office with framed
gold discs on the wall. Who cares if he loses some money? No-one even knows who he is. And the
people that we &lt;em&gt;do&lt;&#x2F;em&gt; know in the entertainment business - or think we know because of media&#x27;s
coverage of every aspect of their lives - the stars, the celebrities - make lots of money. It might
not feel all good to rob someone you know by name (I mean, me and Brad Pitt are &lt;em&gt;like
this&lt;&#x2F;em&gt;), but still - it doesn&#x27;t hurt anyone who can&#x27;t afford it. (And yeah, let&#x27;s ignore the
fact that most record label executives are struggling with their small companies and that most
actors and musicians work for peanuts.)&lt;&#x2F;p&gt;&lt;p&gt;Back in the 20th century, the media companies&#x27;
glamorous image may have served them well. Giving someone who works for you the impression that he
or she one day may become a star and make lots of money is a good way to get cheap labour. Now this
image hurts them more than it serves them.&lt;&#x2F;p&gt;&lt;p&gt;So, what can the media companies do to repair this
image? Protecting their business the way they have been doing the last few years has only
strengthened the impression that they are a greedy bunch. If a future law allows them to get
personal information from the ISPs, they need to be very careful and selective about when they
chose to use it. They should not want to come across as complete assholes.&lt;&#x2F;p&gt;&lt;p&gt;Software companies
also have problems with piracy, but they don&#x27;t have the same image problem. I&#x27;ll write more about
software piracy in my next post, in which I&#x27;ll reveal &lt;em&gt;the real problem with software
piracy&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Watts and Millimeters - Familiar and Confusing Units of Measurement</title>
            <pubDate>Sun, 20 Jan 2008 01:18:00 +0000</pubDate>
            <link>https://www.librador.com/2008/01/20/Watts-and-Millimeters-Familiar-and-Confusing-Units-of-Measurement/</link>
            <guid>https://www.librador.com/2008/01/20/Watts-and-Millimeters-Familiar-and-Confusing-Units-of-Measurement/</guid>
            <description>&lt;p&gt;When is a 25 watt lightbulb not a 25 watt light bulb? When it&#x27;s a 7 watt energy saving bulb!
It&#x27;s unfortunate that we are used to talking about how bright a light bulb glows by saying how many
watts it uses. I got a pretty good sense of how bright a 25 watt, 40 watt or 60 watt light bulb is.
That was fine when all light bulbs were more or less the same, but it changed when technology
evolved and more power efficient bulbs hit the market. Today I bought a couple of 7 watt energy
saving bulbs, and as a needed service to the consumer (me), the manufacturer had to print on the
packaging that this light bulb gives the same amount of light as an ordinary 25 watt bulb. So, 7
watts = 25 watts. This will become confusing when we eventually stop using old style bulbs
completely. Will we continue to think of the brightness of this bulb as 25 watts, or will we get a
good sense of how bright a 7 watt energy saving bulb is (which we&#x27;ll have to adopt again when never
bulbs that use even less power appear)?&lt;&#x2F;p&gt;&lt;p&gt;The problem is that watt is not a unit for the amount
of light a light bulb emits. It is a unit for the amount of power it uses. For the amount of light
emitted, &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Candela&quot;&gt;candela&lt;&#x2F;a&gt; would be a better unit.
Wouldn&#x27;t we have avoided some confusion if we had used candela instead of watt from the very
beginning?&lt;&#x2F;p&gt;&lt;p&gt;Big deal, I hear you saying, but there are other examples of this &quot;wrong unit&quot;
problem that perhaps are more important (at least to me). I&#x27;m thinking specifically of the unit we
use for measuring the focal length of a lens. You can read the technical description of what &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Focal_length&quot;&gt;focal length is on Wikipedia&lt;&#x2F;a&gt;, but when you&#x27;re
working with photography you don&#x27;t think of focal length that way. As any photographer would tell
you, a lens with a focal length of 50 millimeters is called a normal lens. When you take a photo
with such a lens, the world would be depicted more or less like how you see it with your eyes. The
perspective and depth would look normal. If you take a photo with a lens with a longer focal
length, such as a 90 millimeter, perspective will change. The depth will be compressed, so things
that are at different distances from the camera will not be that much different in apparent size.
Such a lens is called a telephoto lens. If you go in the other direction, and put a 28 millimeter
on your camera, perspective will be exaggerated. Something close to the camera will become huge,
while things that are just a few meters away become tiny. Such a lens is called a wide-angle lens.
Instead of using different lenses, you often use one single zoom lens that can go all the way from
wide angle to telephoto, for example a 28-90 millimeter lens. In any case, the most obvious
difference between the wide angle and telephoto focal length is how the perspective and depth look.
These are functions of how wide the field of view that the lens catches is. A telephoto lens has a
small field of view, while a wide angle has a large field of view. (The difference in depth of
field is also important, but that difference is far from as obvious as the field of
view.)&lt;&#x2F;p&gt;&lt;p&gt;Now all of the above is true only if you are taking your photos with a camera that
uses &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;135_film&quot;&gt;35 millimeter film&lt;&#x2F;a&gt; (also known as 135
film). It would also be true if you&#x27;re using a digital camera with a light sensor with the same
size as a frame on a 35 millimeter negative (36 by 24 millimeters), but all affordable digital
still or video cameras have light sensors that are smaller than that. Typically, the cheaper the
camera, the smaller the sensor, and the size of the sensor affects the field of view. So while a 50
millimeter lens is a normal lens (neither telephoto nor wide angle) on a 35 millimeter camera, it
would be a very long telephoto lens if you put it on your mobile phone&#x27;s camera that has a tiny
light sensor. This is the reason that camera and lens manufacturers write in their technical
specifications both the actual focal length of a lens (for example 14.5-24 mm) and the focal length
that would give the same field of view on a 35 millimeter camera (for example 28-135 mm). This is a
bit silly, but necessary since photographers are used to thinking of field of view in terms of
focal length. Unfortunately, because we are back at the light bulb problem. We should have used a
better unit to begin with. In this case, the field of view measured in degrees would make more
sense.&lt;&#x2F;p&gt;&lt;p&gt;In the above discussion, I haven&#x27;t even started talking about all the negative sizes
that are possible when shooting motion pictures. For example, even though movies are typically shot
on the same 35 millimeter film format that analog still cameras use, the frame size is different,
so the same focal length numbers do not give the same field of view. And then there is 16 and 8
millimeter film. And for some still cameras, there are also huge negative sizes, on which a 90
millimeter lens would be a wide angle.&lt;&#x2F;p&gt;&lt;p&gt;Wouldn&#x27;t it just be simpler if we had used a better
unit of measurement from the beginning? Now we&#x27;re probably so familiar with the &quot;35 mm equivalent&quot;
measurement that we won&#x27;t change it, even after 35 millimeter as a format is dead -- just like 25
watt light bulbs.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>C64-style Graphics</title>
            <pubDate>Thu, 17 Jan 2008 23:36:57 +0000</pubDate>
            <link>https://www.librador.com/2008/01/18/C64-style-Graphics/</link>
            <guid>https://www.librador.com/2008/01/18/C64-style-Graphics/</guid>
            <description>&lt;p&gt;I read &lt;a href=&quot;http:&#x2F;&#x2F;forums.creativecow.net&#x2F;readpost&#x2F;2&#x2F;925501&quot;&gt;this post at Creative Cow&lt;&#x2F;a&gt;
which asked how to create the Commodore 64 look in Adobe After Effects. I got a bit inspired and
tried it out a little, but for simplicity&#x27;s sake I tried it on still images and used The GIMP
instead.&lt;&#x2F;p&gt;&lt;p&gt;Here are some results:&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;aa4d398fc476577900.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;br &#x2F;&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;926a271af5f9bf5300.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;br &#x2F;&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;f70784538b38b6bc00.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;&lt;p&gt;What I did was
basically to convert the images to low resolution (160 pixels wide) with a 2:1 pixel aspect ratio
(what the C64 had in the multicolour mode), then converted it to indexed colour using the original
C64 palette (taken from the image on &lt;a href=&quot;http:&#x2F;&#x2F;alex.kazik.de&#x2F;en&#x2F;convert.html&quot;&gt;this page&lt;&#x2F;a&gt;).
Some manual tweaking of the levels before converting to indexed colour helped. Using more complex
dithering gives better looking results, but in my opinion you lose a bit of the C64
look.&lt;&#x2F;p&gt;&lt;p&gt;Sorry if the above description is short, but it&#x27;s late. :-) So if you want to know more
about how I did this, drop me a comment. It would be cool to try this with video too.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Fotowoosh released as Facebook app</title>
            <pubDate>Thu, 06 Dec 2007 22:04:00 +0000</pubDate>
            <link>https://www.librador.com/2007/12/06/Fotowoosh-released-as-Facebook-app/</link>
            <guid>https://www.librador.com/2007/12/06/Fotowoosh-released-as-Facebook-app/</guid>
            <description>&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;fotowoosh.com&#x2F;&quot;&gt;Fotowoosh&lt;&#x2F;a&gt;, a technology that can convert a single photograph
to a 3D model is now available to use on your own photos. The company behind it has released it as
a &lt;a href=&quot;http:&#x2F;&#x2F;apps.facebook.com&#x2F;fotowoosh&#x2F;&quot;&gt;Facebook application&lt;&#x2F;a&gt;. Earlier this year they
released the &lt;a href=&quot;http:&#x2F;&#x2F;www.fotowoosh.com&#x2F;test.htm#v5489687&quot;&gt;demo movie&lt;&#x2F;a&gt;.
Take a look at it if you haven&#x27;t seen it.&lt;&#x2F;p&gt;
&lt;p&gt;Pretty cool, in my
opinion. &lt;a href=&quot;http:&#x2F;&#x2F;www.videocopilot.net&#x2F;tutorial.html?id=63&quot;&gt;This tutorial&lt;&#x2F;a&gt; from &lt;a href=&quot;http:&#x2F;&#x2F;www.videocopilot.net&quot;&gt;videocopilot.net&lt;&#x2F;a&gt; is a good example of something it could be
used for, although he does it by hand instead.&lt;&#x2F;p&gt;
&lt;p&gt;I suspected that the photos they used for the
demo movie were chosen to be easy on the algorithm. Now that Fotowoosh is available on Facebook, I
did some tests with my own photos. The results vary, as you&#x27;ll see if you follow the links
below.&lt;&#x2F;p&gt;&lt;p&gt;Note that the camera movements in the following movies are made automatically by
Fotowoosh. I could not record them myself, which of course limits the possible uses of the
material. (I highly suspect a &quot;Fotowoosh professional&quot; that can export as a 3D model instead will
appear soon enough.)&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220176&quot;&gt;This one&lt;&#x2F;a&gt; turned out
best.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220165&quot;&gt;This one&lt;&#x2F;a&gt;
could work if the camera movements were very small.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220164&quot;&gt;This one&lt;&#x2F;a&gt; too.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220163&quot;&gt;This one&lt;&#x2F;a&gt; fails although it
is a large outdoor panorama.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220162&quot;&gt;This one&lt;&#x2F;a&gt; seems like it has
a too complex depth structure for the algorithm to figure out. I guess &lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220179&quot;&gt;this one&lt;&#x2F;a&gt; has the same
problem.&lt;&#x2F;p&gt;&lt;p&gt;Perhaps the reflections in the water is what makes &lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220160&quot;&gt;this one&lt;&#x2F;a&gt; not
work.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220161&quot;&gt;This one&lt;&#x2F;a&gt; is
a pretty flat photo and doesn&#x27;t work well.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220159&quot;&gt;This one&lt;&#x2F;a&gt; isn&#x27;t an outdoor
photo, and doesn&#x27;t work at all.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;facebook.fotowoosh.com&#x2F;public&#x2F;view&#x2F;2806176853470220177&quot;&gt;This one&lt;&#x2F;a&gt; is very simple,
but still fails. Perhaps it&#x27;s too dark?&lt;&#x2F;p&gt;&lt;p&gt;On one image I got an error that said that it wasn&#x27;t
wooshable at all. (Yes, they invented a verb for the process.)&lt;&#x2F;p&gt;&lt;p&gt;To wrap this up, wooshing is a
cool effect, and I guess the image processing algorithms behind it took some thinking to work out.
The question is whether it&#x27;s possible to find a nail for this hammer. Wooshing could be used as a
quick solution for adding just a little depth to a still image, by moving the camera just a little
so the artifacts aren&#x27;t too visible. So far, the results aren&#x27;t good enough to be usable in a
context where quality is important. If you want high quality you can use an algorithm that you feed
with more than one photograph instead. They can work very well, at least with manual tweaking.
Perhaps with further development, wooshing will be useful for something other than just a cool
effect. But being a cool effect is enough for me. I like cool effects.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Long time no see</title>
            <pubDate>Thu, 15 Nov 2007 20:03:00 +0000</pubDate>
            <link>https://www.librador.com/2007/11/15/Long-time-no-see/</link>
            <guid>https://www.librador.com/2007/11/15/Long-time-no-see/</guid>
            <description>&lt;p&gt;If you read my &lt;a href=&quot;&#x2F;2007&#x2F;09&#x2F;23&#x2F;Facebook&#x2F;&quot;&gt;last
post&lt;&#x2F;a&gt;, which is almost two months old, you might think that I got lost in Facebook and have had
no time for blogging. Which I&#x27;m glad to say is not the whole truth. While it&#x27;s certainly possible
to lose lots of time on Facebook (like &lt;a href=&quot;http:&#x2F;&#x2F;www.techcrunch.com&#x2F;2007&#x2F;03&#x2F;09&#x2F;career-advice-dont-choose-facebook-over-your-job&#x2F;&quot;&gt;this
guy&lt;&#x2F;a&gt;), I&#x27;ve actually spent some of my spare time on more productive stuff. I&#x27;ve held a seminar
together with a colleague which was an introduction to &lt;a href=&quot;http:&#x2F;&#x2F;www.python.org&quot;&gt;Python&lt;&#x2F;a&gt;.
I&#x27;ve also been working on a hobby project in &lt;a href=&quot;http:&#x2F;&#x2F;www.djangoproject.com&quot;&gt;Django&lt;&#x2F;a&gt;,
which is a very nice Python-based web application framework. And I&#x27;ve written an article about
Django, which will be published in issue 1&#x2F;2008 of the Swedish magazine &lt;a href=&quot;http:&#x2F;&#x2F;www.datormagazin.se&quot;&gt;Datormagazin&lt;&#x2F;a&gt;. The article is in Swedish of
course.&lt;&#x2F;p&gt;&lt;p&gt;Speaking of languages, my eight month son recently started to say &quot;dad&quot;. Often in
long sentences like &quot;Dad, dad, dad, dada, da, dad&quot;. Which is a bit strange. I&#x27;ve tried to make him
say &quot;pappa&quot; for months, but when he starts speaking it&#x27;s in English instead. I guess we made the
trip to North America when he was at an impressionable age this summer.&lt;&#x2F;p&gt;&lt;p&gt;Anyway, things are
starting to calm down now. In a few weeks I will go on parental leave. I have no idea of how much
time I&#x27;ll have left for my hobby projects. I don&#x27;t want to make the common mistake that fathers who
go on parental leave do; to think that parental leave is some kind of holiday and plan lots of
projects. Some people say that taking care of a child is a full time job. I guess they are right.
Some people say that it wonderful. I guess they are right too.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Facebook</title>
            <pubDate>Sun, 23 Sep 2007 20:37:36 +0000</pubDate>
            <link>https://www.librador.com/2007/09/23/Facebook/</link>
            <guid>https://www.librador.com/2007/09/23/Facebook/</guid>
            <description>&lt;p&gt;I couln&#x27;t resist it any more, but I guess I&#x27;m the last person on earth to get a &lt;a href=&quot;http:&#x2F;&#x2F;www.facebook.com&#x2F;profile.php?id=653363963&quot;&gt;Facebook profile&lt;&#x2F;a&gt;. :-)
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Out of Office AutoReply</title>
            <pubDate>Mon, 17 Sep 2007 20:03:00 +0000</pubDate>
            <link>https://www.librador.com/2007/09/17/Out-of-Office-AutoReply/</link>
            <guid>https://www.librador.com/2007/09/17/Out-of-Office-AutoReply/</guid>
            <description>&lt;p&gt;I have had one of my email addresses for quite some time, so naturally it receives plenty of
spam. It is often used as the apparent sender of spam too, so I often get replies from virus and
spam protection systems that report that the mail was blocked. Today I have, for some unknown
reason, got lots of Out of Office AutoReplies from poor spam targets. This looked so odd in my
inbox, so I took a look at the message to see if they had something in common. I couldn&#x27;t figure
out why I got all of those today, but it was a bit fun to see the different out of office replies
that people have. At least a little interesting. So as a service to anyone else that might be
interested too (anyone?), here is a selection.&lt;&#x2F;p&gt;
&lt;p&gt;Grace seems to have been away for quite some time:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello, today is Friday, Oct 6th and I will be out of the office until further notice.
Please refer to Twyla Xxxxxx for immediate assistance. Thanks:)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Karolina is late back to work too:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;I will be out of the office the week of Aug.20th, returning Aug.27th.  Please email
yyyxxx@yyyyyyyyy.com &amp;amp; xxxyyy@yyyyyyyyy.com for further assistance.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Ludovic&#x27;s leave from a Canadian university became longer than expected:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;I will be on study&#x2F;research leave from Sept 1, 2006 to Aug 31,
2007 and be away from the Ontario Veterinary College during this
period of time. I will check my e-mails on a regular basis and reply to your
message as soon as I can.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I thought &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Jewish_New_Year&quot;&gt;Rosh Hashanah&lt;&#x2F;a&gt; was over for
this year. (OK, I admit it, I looked it up.) Glenn knows better:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;I will be out of the office this afternoon after 3:00PM  for the Jewish New Year.
I will be here tomorrow, but again leaving early for the Holiday.
If you need me for any  reason I will be available on my cell phone, xxx-xxx-xxxx.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I guess it&#x27;s a good idea to set an automatic end date to the autoreplies. At least mention the
dates you are talking about. &amp;quot;This afternoon&amp;quot; is a bit unclear. Actually, most of the autoreplies
that I&#x27;ve received are out of date.&lt;&#x2F;p&gt;
&lt;p&gt;Freddy at a Belgian university has got it right. This is
as clear as it gets. If you read Dutch that is:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Freddy Xxxxxx is afwezig tot en met maandag 17 september
Voor dringende interventies kan je een online interventieaanvraag invoeren (defectmelding
Technische Diensten)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Noreen&#x27;s message is short and to the point. Disregarding the odd way of writing the dates, it is
perhaps even true:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;I will be out of the office from MONDAY SEPT10th until MONDAYSEPT17th&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;That was fun wasn&#x27;t it? Now let&#x27;s hope I won&#x27;t get more of these...&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>In Defense of XML</title>
            <pubDate>Tue, 11 Sep 2007 21:25:00 +0000</pubDate>
            <link>https://www.librador.com/2007/09/11/In-Defense-of-XML/</link>
            <guid>https://www.librador.com/2007/09/11/In-Defense-of-XML/</guid>
            <description>&lt;p&gt;It&#x27;s popular to bash XML these days. After the inital hype several years ago, the pendulum has
swung and now many software developers see XML as an abomination. Much of the criticism surely
comes from bad experiences where XML was used for things it wasn&#x27;t suited for, but much of the
criticism is valid. XML was designed to be human readable, which is a goal that is only half
fulfilled. XML documents &lt;em&gt;are&lt;&#x2F;em&gt; readable, but they tend to look like a mess. Editing them by
hand requires too many keypresses. While not being human-friendly, XML is not very
computer-friendly either. It&#x27;s difficult to make a 100% compliant and fast parser and XML documents
contain lots of redundancy, using more bandwidth and storage space than necessary.&lt;&#x2F;p&gt;&lt;p&gt;But for
all its faults, we must not forget the merits of XML. XML is widely known and accepted. It has
plenty of tools. There are standard APIs for reading, writing and manipulating XML files. It is
flexible enough to hold many different kinds of data. Compare this to the not very standardized de
facto &quot;standards&quot; that were popular before it: &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;INI_file&quot;&gt;Windows ini files&lt;&#x2F;a&gt;, &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;.properties&quot;&gt;Java .properties&lt;&#x2F;a&gt;, &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Comma-separated_values&quot;&gt;CSV&lt;&#x2F;a&gt; and COBOL-style fixed length
records. While these formats should be preferred to XML in some cases, none of them comes close to
XML&#x27;s flexibility and extensibility.&lt;&#x2F;p&gt;&lt;p&gt;I recently read Bruce Eckel&#x27;s blog post &lt;a href=&quot;http:&#x2F;&#x2F;www.artima.com&#x2F;weblogs&#x2F;viewpost.jsp?thread=212818&quot;&gt;Creating Flex Components&lt;&#x2F;a&gt;, which
is a good introduction to Flex development. In Flex you describe your applications or components in
an XML format called MXML. (It is also possible to avoid the XML and just code everything in
ActionScript instead.) The &lt;a href=&quot;http:&#x2F;&#x2F;www.artima.com&#x2F;forums&#x2F;flat.jsp?forum=106&amp;amp;thread=212818&quot;&gt;comments&lt;&#x2F;a&gt; to Eckel&#x27;s post
derailed into a discussion about the merits or lack of merits of XML. The single most obvious
problem people see with XML is that it is &lt;em&gt;ugly&lt;&#x2F;em&gt;. Someone said it looks like cat&#x27;s vomit. I
agree. Still, it is a problem that can be solved.&lt;&#x2F;p&gt;&lt;p&gt;Just as Eclipse and IDEA takes editing Java
code from tedious to enjoyable, a good XML editor should make it easy to view and edit XML
documents. Even though I hate editing XML in a plain text editor, I haven&#x27;t gotten around to
evaluating any of the many XML editors that exist out there (except for the terrible one I tried
several years ago). What I am hoping to find is an editor that hides the ugliness of XML and
simplifies editing it. Does anyone have any recommendations?&lt;&#x2F;p&gt;&lt;p&gt;While XML has other faults, if
we can look past its ugly looks, I think we&#x27;ll be able to appreciate it better.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>New One Screenshots and Video</title>
            <pubDate>Mon, 10 Sep 2007 20:09:00 +0000</pubDate>
            <link>https://www.librador.com/2007/09/10/New-One-Screenshots-and-Video/</link>
            <guid>https://www.librador.com/2007/09/10/New-One-Screenshots-and-Video/</guid>
            <description>&lt;p&gt;Nokia has released &lt;a href=&quot;http:&#x2F;&#x2F;www.n-gage.com&#x2F;showroom&#x2F;one.html&quot;&gt;some info about One&lt;&#x2F;a&gt;,
the mobile fighting game that I used to work during my time at &lt;a href=&quot;http:&#x2F;&#x2F;www.digital-legends.com&quot;&gt;Digital Legends&lt;&#x2F;a&gt;. It is the sequel to the identically
named N-Gage title from a couple of years back, but this one (pun intended!) is made for &lt;a href=&quot;http:&#x2F;&#x2F;www.n-gage.com&#x2F;get_ngage&#x2F;devices.html&quot;&gt;a range of Nokia devices&lt;&#x2F;a&gt; (I&#x27;m happy to see
popular existing handsets on that list). Nokia have decided to reuse the N-Gage brand for a new
platform and series of games. That is a good idea. Even though the N-Gage name is tarnished, it is
still a brand that many people associate with Nokia and mobile games.&lt;&#x2F;p&gt;&lt;p&gt;For some reason the One
screenshots seem to be taken from the software rendered version, so they don&#x27;t look as good as they
did when I left the project. They still look very nice. There is a frantically cut video as
well:&lt;&#x2F;p&gt;&lt;p&gt;&lt;object height=&quot;254&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;salign&quot; value=&quot;lt&quot; &#x2F;&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; &#x2F;&gt;&lt;param name=&quot;scale&quot; value=&quot;exactfit&quot; &#x2F;&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; &#x2F;&gt;&lt;param name=&quot;movie&quot; value=&quot;http:&#x2F;&#x2F;www.n-gage.com&#x2F;showroom&#x2F;play&#x2F;flvplay.swf&quot; &#x2F;&gt;&lt;param name=&quot;FlashVars&quot; value=&quot;&amp;amp;streamName=http:&#x2F;&#x2F;www.n-gage.com&#x2F;showroom&#x2F;videos&#x2F;one&#x2F;one_final_320x240.flv&amp;amp;skinName=http:&#x2F;&#x2F;www.n-gage.com&#x2F;showroom&#x2F;play&#x2F;flvskin&amp;amp;autoPlay=true&amp;amp;autoRewind=true&quot; &#x2F;&gt;&lt;div class=&quot;embed&quot;&gt;&lt;&#x2F;div&gt;&lt;&#x2F;object&gt;&lt;br &#x2F;&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.n-gage.com&quot;&gt;N-Gage&lt;&#x2F;a&gt;: &lt;a href=&quot;http:&#x2F;&#x2F;www.n-gage.com&#x2F;showroom&#x2F;one.html&quot; style=&quot;cursor:pointer; text-decoration:none;&quot;&gt;Learn
more&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>New Feed URL</title>
            <pubDate>Sun, 12 Aug 2007 19:08:05 +0000</pubDate>
            <link>https://www.librador.com/2007/08/12/New-Feed-URL/</link>
            <guid>https://www.librador.com/2007/08/12/New-Feed-URL/</guid>
            <description>&lt;p&gt;OK, as I &lt;a href=&quot;&#x2F;2007&#x2F;08&#x2F;08&#x2F;New-feed,-more-tagging&#x2F;&quot;&gt;told you&lt;&#x2F;a&gt;, I&#x27;m
updating the feeds of this blog to use Feedburner. You shouldn&#x27;t need to take any action, but just
in case it doesn&#x27;t work, update your feed reader to use the new feed URL: &lt;a href=&quot;http:&#x2F;&#x2F;feeds.feedburner.com&#x2F;Librador&quot;&gt;http:&#x2F;&#x2F;feeds.feedburner.com&#x2F;Librador&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;p&gt;I&#x27;ve
also removed all the choices of different feed formats (one format is enough!) and the possibility
to subscribe to a feed for a specific category. Let me know if that&#x27;s a problem.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>New feed, more tagging</title>
            <pubDate>Wed, 08 Aug 2007 10:38:56 +0000</pubDate>
            <link>https://www.librador.com/2007/08/08/New-feed,-more-tagging/</link>
            <guid>https://www.librador.com/2007/08/08/New-feed,-more-tagging/</guid>
            <description>&lt;p&gt;Within a few days I&#x27;ll be updating this blog to use &lt;a href=&quot;http:&#x2F;&#x2F;www.feedburner.com&quot;&gt;FeedBurner&lt;&#x2F;a&gt; for its feed. I&#x27;m a curious kind of guy and I&#x27;d
like to know how many subscribers I have, and FeedBurner is a good service. Hopefully you shouldn&#x27;t
notice any change, but in case you are not receiving any more posts or the feed stops working in a
few days, go to &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&quot;&gt;www.librador.com&lt;&#x2F;a&gt; to see what the new feed URL
is.&lt;&#x2F;p&gt;&lt;p&gt;I&#x27;ll also start tagging my posts with &lt;a href=&quot;http:&#x2F;&#x2F;www.technorati.com&quot;&gt;Technorati&lt;&#x2F;a&gt;
tags. Oh, and I&#x27;m getting myself a &lt;a href=&quot;http:&#x2F;&#x2F;technorati.com&#x2F;claim&#x2F;86tiju7wwj&quot; rel=&quot;me&quot;&gt;Technorati Profile&lt;&#x2F;a&gt; as well.&lt;&#x2F;p&gt;&lt;p&gt;Now, am I a proper Web 2.0 citizen yet?
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The Confusing Mouseover</title>
            <pubDate>Wed, 08 Aug 2007 09:45:18 +0000</pubDate>
            <link>https://www.librador.com/2007/08/08/The-Confusing-Mouseover/</link>
            <guid>https://www.librador.com/2007/08/08/The-Confusing-Mouseover/</guid>
            <description>&lt;p&gt;Several years ago, web browsers started to include support for mouseover effects, i.e. the
effect that a clickable link or picture changes its appearence somehow when you hover with the
mouse pointer over it. In some cases it provides useful visual feedback, e.g. when a tiny text link
changes colour when you point at it, so you know that you have hit the right spot and can click. As
the mouse pointer changes from an arrow to a hand as well, you get visual feedback anyway so it&#x27;s
not completely necessary, but GUI design is not like database design and redundancy is often a good
idea. (For example, in your e-mail inbox, you&#x27;ll want new e-mails to be visually different from old
e-mails in more ways than one, such as having a different icon, a bolder font &lt;em&gt;and&lt;&#x2F;em&gt; a
different colour.)&lt;&#x2F;p&gt;&lt;p&gt;After the Web became popular, desktop applications started to imitate the
look of web sites. Developers started to implement mouseover effects on toolbars and menus. The
picture below shows the toolbar in Firefox, which is an example of a good use of a mouseover
effect. (I had to draw the mouse pointer by hand as it wasn&#x27;t captured by
alt+PrintScreen.)&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;42f5ecb098c3fb4000.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;&lt;p&gt;But just like anything, mouseover
effects can be misused and confuse the user. Here&#x27;s a screenshot that shows behaviour in Microsoft
Powerpoint that has confused me several times.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;3b92739c6b3a487e00.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;&lt;p&gt;I
didn&#x27;t draw the mouse pointer on this picture, since when I was confused by Powerpoint&#x27;s behaviour
I was using the keyboard, not the mouse. I didn&#x27;t care about or know where the mouse pointer was.
That&#x27;s why I was surprised to see that both slide 23 and 24 in the overview column to the left
seemed to be selected. At first I thought this was a bug (probably a repaint that was missing), but
I realised that the reason that slide 24 is highlighted is that the mouse pointer happened to be on
top of it. The yellow colour is the mouseover effect, which looks all too much like the effect on
the selected slide (the darker reddish colour). There are more examples of mouseover effects that
are too similar to the &quot;selected&quot; effect on the web, but it tends to be more confusing when you&#x27;re
not navigating the application with the mouse.&lt;&#x2F;p&gt;&lt;p&gt;EDIT: I got bitten by Powerpoint&#x27;s behaviour
once again just now! Even though I wrote about the problem less than an hour ago, I still was
confused for a second before I realised that I was looking at the wrong highlighted slide. Also, I
just now realised that Powerpoint doesn&#x27;t remove the yellow mouseover effect when I move the mouse
out of the slide&#x27;s active area! That must surely be a bug.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>My Other Blog</title>
            <pubDate>Sat, 04 Aug 2007 18:49:39 +0000</pubDate>
            <link>https://www.librador.com/2007/08/04/My-Other-Blog/</link>
            <guid>https://www.librador.com/2007/08/04/My-Other-Blog/</guid>
            <description>&lt;p&gt;I just started a blog at Blogspot or Blogger or whatever it is called now. I also evaluated
Wordpress, which seemed better in some respects, but they charge a small extra for features such as
the ability to edit layout and CSS. So although I am a little bit worried about Google&#x27;s dominance
over the Internet, I chose their site.&lt;&#x2F;p&gt;&lt;p&gt;The new blog is for the things that I come to think of
that are funny or interesting to me, but wouldn&#x27;t fit this blog. Most of the time that is because
these kinds of weird things I come to think of are only interesting or possible to understand for a
Swedish audience, so it wouldn&#x27;t make sense to write it in English. The new blog is also much less
serious and funny, at least if you share my strange humour.&lt;&#x2F;p&gt;&lt;p&gt;So here it is: &lt;a href=&quot;http:&#x2F;&#x2F;martinljuger.blogspot.com&quot;&gt;Martin ljuger&lt;&#x2F;a&gt;. As the name suggests (it means
&lt;em&gt;Martin is lying&lt;&#x2F;em&gt;), not everything in it has a very strong connection to reality.&lt;&#x2F;p&gt;&lt;p&gt;I
will of course continue to update this blog with my thoughts, work and experiments in software
development, game development, filmmaking, photography, graphics and more.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Space Invaders in the Baby&#x27;s Bedroom</title>
            <pubDate>Wed, 25 Jul 2007 22:03:15 +0000</pubDate>
            <link>https://www.librador.com/2007/07/26/Space-Invaders-in-the-Babys-Bedroom/</link>
            <guid>https://www.librador.com/2007/07/26/Space-Invaders-in-the-Babys-Bedroom/</guid>
            <description>&lt;p&gt;We recently decorated our baby son&#x27;s bedroom. Nice huh? Painting the invaders took some time as
I had to be careful to make the edges of the pixels sharp. I&#x27;m quite happy with the result,
especially since I&#x27;m no painter or handyman.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;60ca489c9bceec1100.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Cyn</title>
            <pubDate>Wed, 11 Jul 2007 21:24:40 +0000</pubDate>
            <link>https://www.librador.com/2007/07/11/Cyn/</link>
            <guid>https://www.librador.com/2007/07/11/Cyn/</guid>
            <description>&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;b17955633c0c499700.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;br &#x2F;&gt;
I wrote about the low-budget effect-packed short film &lt;a href=&quot;&#x2F;2005&#x2F;11&#x2F;04&#x2F;Broken&#x2F;&quot;&gt;Broken&lt;&#x2F;a&gt; previously, and
recently I received a preview of writer&#x2F;editor&#x2F;director Alex Ferrari&#x27;s new short film &lt;a href=&quot;http:&#x2F;&#x2F;www.alittlecyn.com&quot;&gt;Cyn&lt;&#x2F;a&gt;. It was made in just six days, from writing the script to
the final master, which is an impressive feat.&lt;&#x2F;p&gt;&lt;p&gt;Cyn is similar in style to Broken, but while
Broken seems more like the first 20 minutes of a feature film, Cyn has a story that fits the short
format well. Since the story is so short, I won&#x27;t spoil it by saying anything about it, except that
it includes guns and explosions. The special effects are good for a low-budget short, especially
considering the short time they had. The SFX are not as good as Broken though, and the image is
grainy and has a high black level. This is a stylistic choice, and while I like rough looking
images, I think they are taking it one step to far in Cyn.&lt;&#x2F;p&gt;&lt;p&gt;Apart from the (in my taste) too
degraded image quality, the cinematography looks good, but there are annoying violations of the &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;180_degree_rule&quot;&gt;180 degree rule&lt;&#x2F;a&gt; in the initial dialogue. A
casual viewer (such as me the first time I watched it) won&#x27;t notice what the problem is, but it
probably confuses people about the spatial relationships between the characters, i.e. where they
are in the room, who&#x27;s looking at who etc.&lt;&#x2F;p&gt;&lt;p&gt;What&#x27;s really impressive about Cyn is the
beginning and ending credit sequences. They look very professional and the audio sounds good too.
It&#x27;s obvious that they spent a lot of the short time they had on them. In fact the credit sequences
make up almost half of the film&#x27;s running time.&lt;&#x2F;p&gt;&lt;p&gt;What I liked most about Broken was the extra
features on the DVD. They had quite a lot of inspirational information about how they made the
film, even though I would have liked it to be even more in depth. It looks like the production
company &lt;a href=&quot;http:&#x2F;&#x2F;www.enigmafactory.com&#x2F;index01.html&quot;&gt;The Enigma Factory&lt;&#x2F;a&gt; will release a
DVD of Cyn too, hopefully full of additional features. In the meantime they have &lt;a href=&quot;http:&#x2F;&#x2F;www.myspace.com&#x2F;redprincessblues&quot;&gt;a MySpace page&lt;&#x2F;a&gt; with a few short documentaries
about the production. They&#x27;ll add more of them later on, so keep an eye on it if you&#x27;re into
low-budget filmmaking in general, and special effects in particular.&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Compatibility in OSX and Windows</title>
            <pubDate>Sun, 01 Jul 2007 10:43:00 +0000</pubDate>
            <link>https://www.librador.com/2007/07/01/Compatibility-in-OSX-and-Windows/</link>
            <guid>https://www.librador.com/2007/07/01/Compatibility-in-OSX-and-Windows/</guid>
            <description>&lt;p&gt;I overheard this conversation between my Mac and an old laptop of mine:&lt;&#x2F;p&gt;&lt;p&gt;&quot;Hello, I&#x27;m a
Mac.&quot;&lt;&#x2F;p&gt;&lt;p&gt;&quot;And I&#x27;m a PC.&quot;&lt;&#x2F;p&gt;&lt;p&gt;&quot;I haven&#x27;t bothered to upgrade from OSX 10.3.9 to 10.4, so most
new software doesn&#x27;t work.&quot;&lt;&#x2F;p&gt;&lt;p&gt;&quot;Too bad, Mac. I&#x27;m still running Windows 2000, and I&#x27;ve never had
any problems with installing new software.&quot;&lt;&#x2F;p&gt;&lt;p&gt;&quot;I &lt;a href=&quot;http:&#x2F;&#x2F;www.macosxhints.com&#x2F;article.php?story=20061209133451185&quot;&gt;can&#x27;t even open some disk
image files&lt;&#x2F;a&gt; because they were created with OSX 10.4.&quot;&lt;&#x2F;p&gt;&lt;p&gt;&quot;You know, Mac, Microsoft go out of
their way to make sure software is compatible between Windows versions, to the point where the
operating system is so bloated and full of patches that it hardly runs at all.&quot;&lt;&#x2F;p&gt;&lt;p&gt;&quot;Well, Macs
don&#x27;t care much for backward compatibility and we force our users to upgrade to every new little
release of the operating system. We even switched our CPU architecture twice.&quot;&lt;&#x2F;p&gt;&lt;p&gt;&quot;Hell, I&#x27;m
still running on hardware that is backwards compatible with an &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;8086&quot;&gt;8 bit processor from 1978&lt;&#x2F;a&gt;.&quot;&lt;&#x2F;p&gt;&lt;p&gt;&quot;Yeah? Well,
actually, PC -- I&#x27;m doing that too.&quot;&lt;&#x2F;p&gt;&lt;p&gt;At this point, the PC&#x27;s wireless PCMCIA card stopped
working and the conversation came to an abrupt end.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Selective Color</title>
            <pubDate>Wed, 20 Jun 2007 21:50:14 +0000</pubDate>
            <link>https://www.librador.com/2007/06/20/Selective-Color/</link>
            <guid>https://www.librador.com/2007/06/20/Selective-Color/</guid>
            <description>&lt;p&gt;I just wanted to show you this: the good old selective color effect that I made for a company
internal movie.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;240&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; &#x2F;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; &#x2F;&gt;&lt;param name=&quot;movie&quot; value=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;moogaloop.swf?clip_id=217890&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; &#x2F;&gt;&lt;embed src=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;moogaloop.swf?clip_id=217890&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application&#x2F;x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;240&quot;&gt;&lt;&#x2F;embed&gt;&lt;&#x2F;object&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;217890&quot;&gt;Selective color cube&lt;&#x2F;a&gt; from &lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;mvilcans&quot;&gt;Martin Vilcans&lt;&#x2F;a&gt; on &lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&quot;&gt;Vimeo&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Beating the Dead Waterfall Horse</title>
            <pubDate>Mon, 18 Jun 2007 08:54:54 +0000</pubDate>
            <link>https://www.librador.com/2007/06/18/Beating-the-Dead-Waterfall-Horse/</link>
            <guid>https://www.librador.com/2007/06/18/Beating-the-Dead-Waterfall-Horse/</guid>
            <description>&lt;p&gt;People often contrast agile development with the old waterfall process, which I think is an
unfair comparison. For example, Clinton Keith compares the development of his old game Midnight
Club, which used a waterfall process, with agile development in his recent post &lt;a href=&quot;http:&#x2F;&#x2F;www.agilegamedevelopment.com&#x2F;2007&#x2F;06&#x2F;no-silver-bullet.html&quot;&gt;No Silver Bullet&lt;&#x2F;a&gt;. His
conclusion is that the process itself is just part of the puzzle of what makes a succesful product.
Using agile methods doesn&#x27;t guarantee a hit game (or whatever you&#x27;re making), just as using a
waterfall process doesn&#x27;t guarantee the project to fail. He&#x27;s completely right in this, but did you
notice that he compares agile to waterfall, as if there is nothing in between? In my first software
engineering classes back in 1992, long before anyone had heard about agile, I learned that
waterfall was something old and not a very good process. Any modern process is iterative, so saying
that agile is better than waterfall is like saying that using a modern IDE is better than using
punched cards.&lt;&#x2F;p&gt;&lt;p&gt;While I&#x27;m attracted to agile processes because they make very much sense, I
think that many of the agile success stories can be attributed to the fact that an agile process is
better than having no formal process at all, or better than an old-fashioned waterfall process. It
would be more interesting to contrast an agile process with any other modern process. Beating the
dead waterfall horse is not a very good case for agile.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Save André Hedetoft</title>
            <pubDate>Thu, 14 Jun 2007 20:48:00 +0000</pubDate>
            <link>https://www.librador.com/2007/06/14/Save-Andre-Hedetoft/</link>
            <guid>https://www.librador.com/2007/06/14/Save-Andre-Hedetoft/</guid>
            <description>&lt;p&gt;I admire the ambition of some people; the ones who have a clear goal and spend lots of energy on
attempting to reach that goal. While people like me flutter around doing a little of this, a little
of that, some short film directing here, some software development there and some music there
without any clear direction, they have the ability to focus on one specific thing. One of these
people is young Swede &lt;a href=&quot;http:&#x2F;&#x2F;www.andrehedetoft.com&#x2F;&quot;&gt;André Hedetoft&lt;&#x2F;a&gt;. His goal is to
become a geek movie director. In the end of 2006 he started recruiting people for his fan club.
When he reaches 1000 fans, his plan is to get a tattoo saying &lt;i&gt;Geek Movie Director&lt;&#x2F;i&gt;, and then
proceed to become the obvious choice for the director of geek movies (with which he means the likes
of Star Wars, The Matrix and Spider Man). He &lt;a href=&quot;http:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=l-9hJivGq6M&quot;&gt;explains it well himself&lt;&#x2F;a&gt;. Of course this is
crazy, but I like crazy ideas, so I didn&#x27;t hesitate to sign up for his fan club. Now a few months
later, he released &lt;a href=&quot;http:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=0mGZLUMiuTs&quot;&gt;a teaser&lt;&#x2F;a&gt; for his
upcoming... well whatever it is he is up to, but it looks cool. It seems to be some
Internet-broadcasted movie series. I&#x27;m glad that the teaser is well produced and looks very nice
(although a bit too much of a ripoff of the Sin City style), so perhaps something really cool can
come out of this crazy idea.&lt;&#x2F;p&gt;&lt;p&gt;In the meantime, I continue to work on too many things at once,
lacking focus and ambition to finish anything. At least, that is the way it feels sometimes. Oh
well...
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>&quot;Hand-held&quot; timelapse</title>
            <pubDate>Wed, 13 Jun 2007 20:41:41 +0000</pubDate>
            <link>https://www.librador.com/2007/06/13/Hand-held-timelapse/</link>
            <guid>https://www.librador.com/2007/06/13/Hand-held-timelapse/</guid>
            <description>&lt;p&gt;Here&#x27;s a test of &quot;handheld&quot; timelapse photography that I did a few years ago and just found on
an old disc:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;224&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; &#x2F;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; &#x2F;&gt;&lt;param name=&quot;movie&quot; value=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;moogaloop.swf?clip_id=212053&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; &#x2F;&gt;&lt;embed src=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;moogaloop.swf?clip_id=212053&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application&#x2F;x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;224&quot;&gt;&lt;&#x2F;embed&gt;&lt;&#x2F;object&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;212053&quot;&gt;Timelapse for &amp;quot;The Commute&amp;quot;&lt;&#x2F;a&gt; from &lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;mvilcans&quot;&gt;Martin Vilcans&lt;&#x2F;a&gt; on &lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&quot;&gt;Vimeo&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;
&lt;p&gt;It was made with a digital still camera on a
tripod taking one image each 20-30 seconds. The still images then made one high resolution movie.
In the computer, I then put the resulting movie in a 3D layer and moved, panned and zoomed the
virtual camera to get the handheld feeling.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.vimeo.com&#x2F;user:mvilcans&quot;&gt;My
movies at Vimeo&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>RIA and XULRunner</title>
            <pubDate>Wed, 13 Jun 2007 16:45:00 +0000</pubDate>
            <link>https://www.librador.com/2007/06/13/RIA-and-XULRunner/</link>
            <guid>https://www.librador.com/2007/06/13/RIA-and-XULRunner/</guid>
            <description>&lt;p&gt;Two years ago I &lt;a href=&quot;&#x2F;2005&#x2F;06&#x2F;09&#x2F;XUL&#x2F;&quot;&gt;took a quick
look at XUL&lt;&#x2F;a&gt;, Mozilla&#x27;s markup language for  user interfaces. It seemed like a fast and powerful
way to create user interfaces. It still does, but I haven&#x27;t had the opportunity to work with it.
There is also an application called XULRunner that runs complete XUL-based stand-alone
applications. I hadn&#x27;t heard about it before today when Marc Hedlund &lt;a href=&quot;http:&#x2F;&#x2F;feeds.feedburner.com&#x2F;~r&#x2F;oreilly&#x2F;radar&#x2F;atom&#x2F;~3&#x2F;124414731&#x2F;xulrunner_for_t.html&quot;&gt;posted
about it&lt;&#x2F;a&gt;. The &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;XULRunner&quot;&gt;Wikipedia article on
XULRunner&lt;&#x2F;a&gt; looks sketchy, so I would assume that it is not used very much, but &lt;a href=&quot;http:&#x2F;&#x2F;redmonk.com&#x2F;sogrady&#x2F;2007&#x2F;05&#x2F;23&#x2F;how-too-rich-for-my-taste-the-%20ria-qa&#x2F;&quot;&gt;Stephen
O&#x27;Grady mentions it&lt;&#x2F;a&gt; as an alternative to proprietary solutions for rich Internet applications
(RIAs) such as Microsoft&#x27;s Silverlight, Sun&#x27;s JavaFX, and Adobe&#x27;s Flash and AIR (formerly known as
Apollo). Since XULRunner seems to be primarly a standalone desktop runtime for XUL applications, I
think the comparison with Silverlight, JavaFX and Flash is a bit odd, as they are aimed towards
browser-based applications. Still, XULRunner seems to be a competitor to AIR, and since there&#x27;s a
lot of buzz around AIR and similar technologies, perhaps XULRunner deserves more attention. I&#x27;ll
need to look more into it, but as I&#x27;m a slave of the hype, I&#x27;ll probably look into AIR first. I
hope I can get back to you with a better informed view on the subject.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Kos Conference</title>
            <pubDate>Sun, 20 May 2007 19:52:56 +0000</pubDate>
            <link>https://www.librador.com/2007/05/20/Kos-Conference/</link>
            <guid>https://www.librador.com/2007/05/20/Kos-Conference/</guid>
            <description>&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;d9423bf7b221735400.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
One of the nice things with working at a relatively &lt;a href=&quot;http:&#x2F;&#x2F;www.hiq.se&quot;&gt;big company&lt;&#x2F;a&gt; is that you get to go to well organized conferences. This
afternoon I returned from four days on &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Kos&quot;&gt;Kos&lt;&#x2F;a&gt;. It was
great with entertainment, competitions and partying, and the required company information and pep
talks, but they managed to make that interesting too. Our group won the &amp;quot;artistic performance&amp;quot;
contest with a short film shot and cut by me of course (but with lots of help from the others in
the team). :-) Another amazing thing was the amount of digital SLR cameras that people were
carrying around. Several very nice photos came out of that too. I really want to get myself a real
DSLR now.&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>My most common Python mistake</title>
            <pubDate>Tue, 15 May 2007 08:41:00 +0000</pubDate>
            <link>https://www.librador.com/2007/05/15/My-most-common-Python-mistake/</link>
            <guid>https://www.librador.com/2007/05/15/My-most-common-Python-mistake/</guid>
            <description>&lt;p&gt;For some reason I make this specific error all the time:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;if len(sys.argv != 2):
&lt;&#x2F;span&gt;&lt;span&gt;    print &amp;quot;Usage: %s &amp;lt;input file&amp;gt;&amp;quot; % sys.argv[0]
&lt;&#x2F;span&gt;&lt;span&gt;    sys.exit(1)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Can you spot it? It gives the runtime error &amp;quot;object of type &#x27;bool&#x27; has no len()&amp;quot;. I guess I&#x27;m
too used to languages that require parentheses around the expression in an if statement.&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Short film “På tåget” now online</title>
            <pubDate>Sun, 29 Apr 2007 17:08:30 +0000</pubDate>
            <link>https://www.librador.com/2007/04/29/Short-film-Pa-taget-now-online/</link>
            <guid>https://www.librador.com/2007/04/29/Short-film-Pa-taget-now-online/</guid>
            <description>&lt;p&gt;OK, I&#x27;ve finally uploaded my short film The Commute (&quot;På tåget&quot;) with subtitles and everything
so you can watch it. Here it is:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; &#x2F;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; &#x2F;&gt;&lt;param name=&quot;movie&quot; value=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;moogaloop.swf?clip_id=178827&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; &#x2F;&gt;&lt;embed src=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;moogaloop.swf?clip_id=178827&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application&#x2F;x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;&#x2F;embed&gt;&lt;&#x2F;object&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;178827&quot;&gt;The Commute (&amp;quot;På tåget&amp;quot;)&lt;&#x2F;a&gt; from &lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&#x2F;mvilcans&quot;&gt;Martin Vilcans&lt;&#x2F;a&gt; on &lt;a href=&quot;http:&#x2F;&#x2F;vimeo.com&quot;&gt;Vimeo&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Feel free to leave comments and feedback there or as a comment to this entry.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Depth-sensing cameras</title>
            <pubDate>Wed, 14 Mar 2007 19:23:04 +0000</pubDate>
            <link>https://www.librador.com/2007/03/14/Depth-sensing-cameras/</link>
            <guid>https://www.librador.com/2007/03/14/Depth-sensing-cameras/</guid>
            <description>&lt;p&gt;Linked for coolness: &lt;a href=&quot;http:&#x2F;&#x2F;channel9.msdn.com&#x2F;ShowPost.aspx?PostID=290587#290587&quot;&gt;Depth-sensing camera, an LCD
projector, and some genius&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;&lt;p&gt;The most interesting part of this is the depth-sensing camera
that can measure the distance from the camera to every pixel. You can think of it as a camera that
gives you a real-time z-buffer of the real world. This can really result in some cool applications
once it gets affordable. Real-time 3D scanning is a given. But you could also do &quot;green screen&quot;
without needing a screen (just set the depth beyond which you want objects to disappear). Really
good computer vision is another possibility. I can also imagine some cool game concepts with a
fixed or movable depth-sensing camera.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Upgraded blog software</title>
            <pubDate>Wed, 07 Mar 2007 17:05:00 +0000</pubDate>
            <link>https://www.librador.com/2007/03/07/Upgraded-blog-software/</link>
            <guid>https://www.librador.com/2007/03/07/Upgraded-blog-software/</guid>
            <description>&lt;p&gt;I&#x27;m home sick today and trying to take it easy so I get well and can go to work tomorrow. But I
couldn&#x27;t help doing something productive, so I upgraded the software I use for this blog to the
latest version of &lt;a href=&quot;http:&#x2F;&#x2F;www.s9y.org&quot;&gt;Serendipity&lt;&#x2F;a&gt;. The reason for this is that the
previous version&#x27;s spam protector seemed to disallow comments that were perfectly fine. Let me know
if you have problems with it. I also added a few features, but nothing big. Perhaps you don&#x27;t even
see it, but I hope you like it! :-)
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>del.icio.us makes me feel stupid</title>
            <pubDate>Tue, 06 Mar 2007 23:04:37 +0000</pubDate>
            <link>https://www.librador.com/2007/03/07/del.icio.us-makes-me-feel-stupid/</link>
            <guid>https://www.librador.com/2007/03/07/del.icio.us-makes-me-feel-stupid/</guid>
            <description>&lt;p&gt;As I use several computers, I needed a place to store my bookmarks online, so recently I started
to use &lt;a href=&quot;http:&#x2F;&#x2F;del.icio.us&quot;&gt;del.icio.us&lt;&#x2F;a&gt;. I didn&#x27;t want to install their plugins, but
they have bookmarklets that I can use for setting the bookmarks. I found them easily when I
registered my account, but for the second computer I had big problems finding &lt;a href=&quot;http:&#x2F;&#x2F;del.icio.us&#x2F;help&#x2F;buttons&quot;&gt;the page with the bookmarklets&lt;&#x2F;a&gt;, even though I knew that
it existed and what it looked like. On the third computer, I had to search for several minutes to
find it, because I had forgetten where I found it the second time. This makes me feel stupid, and
one of the basic rules in human-computer interaction design is to not make the user feel stupid.
That&#x27;s why it&#x27;s the design of the site that is stupid, not me. Who would expect the only link to a
&lt;i&gt;feature&lt;&#x2F;i&gt; to be hidden on the &lt;a href=&quot;http:&#x2F;&#x2F;del.icio.us&#x2F;help&#x2F;&quot;&gt;Help page&lt;&#x2F;a&gt;?
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Subtitling</title>
            <pubDate>Wed, 28 Feb 2007 19:47:06 +0000</pubDate>
            <link>https://www.librador.com/2007/02/28/Subtitling/</link>
            <guid>https://www.librador.com/2007/02/28/Subtitling/</guid>
            <description>&lt;p&gt;I have added English subtitles to my short film &lt;a href=&quot;&#x2F;pataget&#x2F;&quot;&gt;På
tåget&lt;&#x2F;a&gt; (The Commute), so I can show it to people who don&#x27;t understand Swedish. I&#x27;m considering
uploading it to YouTube or Google Video. YouTube is more popular, but Google Video allows better
quality and resolution. I&#x27;ll see how the film looks if I compress it to less than 100 MB which is
the limit at YouTube and decide after that.&lt;&#x2F;p&gt;&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;0b061a426cc4e73600.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>On the new job</title>
            <pubDate>Tue, 06 Feb 2007 12:50:35 +0000</pubDate>
            <link>https://www.librador.com/2007/02/06/On-the-new-job/</link>
            <guid>https://www.librador.com/2007/02/06/On-the-new-job/</guid>
            <description>&lt;p&gt;Today is my first day at my new job. I have moved back to Stockholm, and started as a consultant
at &lt;a href=&quot;http:&#x2F;&#x2F;www.hiq.se&quot;&gt;HiQ&lt;&#x2F;a&gt;. I had to move back because of &quot;real life&quot; issues, but the
job is very promising. I think it will be great. It was a bit sad to leave &lt;a href=&quot;http:&#x2F;&#x2F;www.digital-legends.com&quot;&gt;Digital Legends&lt;&#x2F;a&gt;, but I hope the project will be
successful even without me. I am pretty confident that it will be. See you at the release party!
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Crush: 2D or 3D - now you don&#x27;t have to choose anymore!</title>
            <pubDate>Thu, 25 Jan 2007 22:51:53 +0000</pubDate>
            <link>https://www.librador.com/2007/01/25/Crush-2D-or-3D-now-you-dont-have-to-choose-anymore!/</link>
            <guid>https://www.librador.com/2007/01/25/Crush-2D-or-3D-now-you-dont-have-to-choose-anymore!/</guid>
            <description>&lt;p&gt;Once upon a time, all computer and video games were 2D. The hardware of those times wasn&#x27;t able
to render anything but simple 2D sprites, but game programmers soon enough found tricks to render
something resembling 3D graphics. 3D graphics was fresh, so these games were interesting in at
least that aspect. Some of them were even fun to play.
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;fba68639cea8eb6200.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;&lt;p&gt;In the 1990&#x27;s, 3D graphics became the
norm. 2D was old. No publisher would finance a 2D project. During this period, sequels to 2D games
were made in 3D, and many of them suffered from it. A game designed for 2D often doesn&#x27;t make the
conversion to three dimensions very well. Designing the camera view and the controls for a 3D game
tends to be more difficult than for a 2D game. (Remember the weird 3D versions of Tetris?) Other
games benefit from the 3D view, as the more realistic 3D view can give a better sense of immersion.
There are also many games that simply would not be possible to do in 2D. In the end, choosing 2D or
3D is a question of which way the game will be most fun to play. (I&#x27;m ignoring marketing and PR
here obviously.)&lt;&#x2F;p&gt;&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;e541b7808acb3d8800.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
Today, virtually all published games are in
3D. A few of them are essentially 2D, but are rendered with 3D graphics, which is a good mix of the
effectiveness of 2D and the good looks of 3D. But still, as a game designer you have to choose
between 2D and 3D gameplay. Until recently. This week Sega announced &lt;a href=&quot;http:&#x2F;&#x2F;www.gamespot.com&#x2F;psp&#x2F;action&#x2F;crush&#x2F;index.html&quot;&gt;Crush&lt;&#x2F;a&gt;, a PSP game where they didn&#x27;t
choose. Instead, they included both 3D and 2D gameplay in the same game world. The player can
&quot;crush&quot; the three-dimensional world to a flat two-dimensional space, changing the game from 3D to
2D. This allows for some innovative puzzles, as can be seen in the &lt;a href=&quot;http:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=XfqrS-1kdEo&quot;&gt;trailer&lt;&#x2F;a&gt;. It&#x27;s a cool idea. I hope the game
will be good too. And if it&#x27;s good, I hope it will be successful. Such innovative ideas should be
rewarded.&lt;&#x2F;p&gt;&lt;p&gt;Crush&#x27;s gameplay is a bit gimmicky and certainly won&#x27;t be a new genre for games.
But I think that in the future we will see more games with two-dimensional gameplay. While there
are no technical reasons to not make a game in 3D anymore, there may be good reasons to do it in
2D. 3D is old news, just as 2D. In the perfect world of the future, the gameplay will decide
whether the game will be in 2D or 3D, not the current trends of how a game should look.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>High school physics</title>
            <pubDate>Sun, 14 Jan 2007 21:56:11 +0000</pubDate>
            <link>https://www.librador.com/2007/01/14/High-school-physics/</link>
            <guid>https://www.librador.com/2007/01/14/High-school-physics/</guid>
            <description>&lt;p&gt;I haven&#x27;t studied physics since high school (or the Swedish equivalent of it), but I have always
thought it is a fascinating subject and as a game programmer I have of course come in contact with
physics when reading about and&#x2F;or implementing things such as rigid body physics, raytracing or
lighting calculations. The current trend of basing gameplay on physics simulations is fun, and
requires game developers to have at least basic knowledge of physics. I&#x27;m currently doing a hobby
project based on optics simulations. For the research I turned to &lt;a href=&quot;http:&#x2F;&#x2F;www.wikipedia.org&#x2F;&quot;&gt;Wikipedia&lt;&#x2F;a&gt; as the first step. I have noted that I often get
faster results on a topic by skimming the Wikipedia article about it than googling for it,
especially if the topic is a product, which may seem surprising. As an example, the &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Java_%28programming_language%29&quot;&gt;Wikipedia article about
Java&lt;&#x2F;a&gt; gives a quicker overview of what Java is than &lt;a href=&quot;http:&#x2F;&#x2F;java.sun.com&#x2F;&quot;&gt;Sun&#x27;s Java
homepage&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;p&gt;Anyway, back to physics. After reading about whatever it was I was looking for
in Wikipedia, I googled for it as well to see if I could find more in-depth information. I found &lt;a href=&quot;http:&#x2F;&#x2F;www.lightandmatter.com&#x2F;area1.html&quot;&gt;Light and Matter&lt;&#x2F;a&gt; which is a series of free
online physics textbook. I read parts of the book about optics and found it to be easy to read and
sometimes even amusing. Most important, I found the explanations of the topics to be very good,
even though they are short. The books concentrate on the concepts, and have less formulas than many
other textbooks, which I think is nice as it&#x27;s the concepts that are interesting, not the math. I
will keep the link to these books so I can use it whenever I want to brush up my high school
physics. (As far as I can remember the level of these books is the level we studied physics at in
&lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Gymnasium_%28school%29&quot;&gt;gymnasiet&lt;&#x2F;a&gt;.)&lt;&#x2F;p&gt;&lt;p&gt;Perhaps you are
curious about what the optics based hobby project is? (Surely not, but I&#x27;m hoping you are.) I won&#x27;t
say more than that it is a game idea that I have been thinking about for quite a while, and this
weekend I started to make a prototype. One more weekend of prototyping and hopefully I&#x27;ll see if
the concept is good enough to continue working on. In any case I get to use my high school physics
knowledge, and I might even learn new things, which is always nice.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Poor loser</title>
            <pubDate>Mon, 27 Nov 2006 20:39:12 +0000</pubDate>
            <link>https://www.librador.com/2006/11/27/Poor-loser/</link>
            <guid>https://www.librador.com/2006/11/27/Poor-loser/</guid>
            <description>&lt;p&gt;I&#x27;m not usually a poor loser. In fact, I seldom consider myself a loser at all. But &lt;a href=&quot;http:&#x2F;&#x2F;www.72hourgdc.com&#x2F;board&#x2F;scores.php&quot;&gt;the results&lt;&#x2F;a&gt; from the &lt;a href=&quot;http:&#x2F;&#x2F;www.72hourgdc.com&quot;&gt;72 Hour Game Development Competition&lt;&#x2F;a&gt; were quite disappointing.
After playing the other submissions I was pretty sure I would end up in the top third at least.
Many of the submissions were badly balanced, difficult to control or had a bad connection to the
theme, while my game had a simple and progressingly difficult gameplay, simple controls and a
strong connection to the theme. Who can resist a simple game with cutish retro-style vector
graphics and innovative physics-based gameplay (I admit that Loco Roco was an inspiration)? Quite a
few obviously. While I&#x27;m happy of the 2.43 score on sound considering I didn&#x27;t have any; 4.71
overall!? Come on!&lt;&#x2F;p&gt;&lt;p&gt;Oh well. Better luck next time.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The 72 Hour Game Development Competition</title>
            <pubDate>Mon, 20 Nov 2006 23:05:02 +0000</pubDate>
            <link>https://www.librador.com/2006/11/21/The-72-Hour-Game-Development-Competition/</link>
            <guid>https://www.librador.com/2006/11/21/The-72-Hour-Game-Development-Competition/</guid>
            <description>&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;fd1625cd6c0f533f00.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
Use the power of the magnetic force! Guide perfectly spherical
metal balls through an increasingly complex world of physical interactivity! Gape in amazement as
you discover new ways to utilize the power right at your fingertips!&lt;&#x2F;p&gt;&lt;p&gt;Oh... er... I guess I&#x27;ll
need to work on my marketing skills.&lt;&#x2F;p&gt;&lt;p&gt;Anyway, I made an entry to the &lt;a href=&quot;http:&#x2F;&#x2F;www.72hourgdc.com&quot;&gt;72 Hour Game Development Competition&lt;&#x2F;a&gt; this weekend. As I had
&quot;real&quot; work to do as well, it was more like a 48 hour competition for me.&lt;&#x2F;p&gt;&lt;p&gt;The theme was
&quot;magnets&quot;, and I made a puzzle game with electromagnets called &quot;The Attractive Game&quot;. You know,
magnets attract. Get it?&lt;&#x2F;p&gt;&lt;p&gt;You can download the game from the competition site: &lt;a href=&quot;http:&#x2F;&#x2F;72hourgdc.com&#x2F;board&#x2F;entries&#x2F;5-540-TheAttractiveGame.zip&quot;&gt;TheAttractiveGame.zip&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;a643ee5b2abc08b200.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
Be warned that it is a bit unpolished and too short (it needs
more levels). I will probably add a few more levels soon (considering &quot;soon&quot; to be very relative
sometimes) and perhaps make a release that is a bit more polished and easier to install. I&#x27;ll post
here again when I do that, so subscribe to my &lt;a href=&quot;http:&#x2F;&#x2F;feeds.feedburner.com&#x2F;Librador&quot;&gt;RSS feed&lt;&#x2F;a&gt; to get notified.&lt;&#x2F;p&gt;&lt;p&gt;To
play it you need a &lt;a href=&quot;http:&#x2F;&#x2F;www.python.org&#x2F;&quot;&gt;Python&lt;&#x2F;a&gt; distribution (such as &lt;a href=&quot;http:&#x2F;&#x2F;www.activestate.com&#x2F;Products&#x2F;ActivePython&#x2F;?mp=1&quot;&gt;ActivePython&lt;&#x2F;a&gt; for Windows). Also,
you need to install &lt;a href=&quot;http:&#x2F;&#x2F;www.pygame.org&quot;&gt;pygame&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;p&gt;As I was short on time, I
couldn&#x27;t polish the game as much as I would have liked. I spent a lot of time on making the tools
for making levels, so I could produce levels relatively quickly, but as I was out of time in the
end I only had time to produce a few. Being more than one member in the team would have helped here
I guess.&lt;&#x2F;p&gt;&lt;p&gt;All in all it was an interesting experience. Being used to working on projects that
span several months to over a year, taking parts in these kind of competitions is a quick fix for
the sense of completion. It&#x27;s also interesting to see that it&#x27;s possible to make good games in a
short time.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Video marathon prize</title>
            <pubDate>Sun, 12 Nov 2006 21:25:31 +0000</pubDate>
            <link>https://www.librador.com/2006/11/12/Video-marathon-prize/</link>
            <guid>https://www.librador.com/2006/11/12/Video-marathon-prize/</guid>
            <description>&lt;p&gt;Yesterday I won the second prize on the Video marathon that I &lt;a href=&quot;&#x2F;2006&#x2F;11&#x2F;08&#x2F;Video-marathon&#x2F;&quot;&gt;mentioned earlier&lt;&#x2F;a&gt;. So
I&#x27;m quite happy now and inspired to do more short films.&lt;&#x2F;p&gt;&lt;p&gt;If you understand Swedish you can
see the film at &lt;a href=&quot;http:&#x2F;&#x2F;www.videomarathon.se&quot;&gt;the site&lt;&#x2F;a&gt;. Click on &quot;Se filmerna&quot;, then
&quot;2006&quot; and &quot;Winners 2006&quot;.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Video marathon</title>
            <pubDate>Wed, 08 Nov 2006 08:06:44 +0000</pubDate>
            <link>https://www.librador.com/2006/11/08/Video-marathon/</link>
            <guid>https://www.librador.com/2006/11/08/Video-marathon/</guid>
            <description>&lt;p&gt;This weekend I participated in the &lt;a href=&quot;http:&#x2F;&#x2F;www.videomarathon.se&#x2F;&quot;&gt;Videomarathon in
Stockholm&lt;&#x2F;a&gt; (Swedish site). It&#x27;s a competition where you make a short film in 24 hours plus 8
hours of editing on a specific theme that&#x27;s announced in the beginning of the competition. At first
I had no idea of what to do when the theme &quot;taboo&quot; was announced, but in the end I remembered an
old idea I had that fit the theme perfectly. Our small team worked in a relaxed manner but the
limited time was not a problem. In the end the film turned out very well. In fact it has been
nominated for a prize.&lt;&#x2F;p&gt;&lt;p&gt;I like these kind of short competitions as they let you concentrate on
a task for a short time, and get the reward - the finished product - very soon, compared to the
several months it normally takes to finish something, be it professionally or a hobby project. And
now there&#x27;s a new &lt;a href=&quot;http:&#x2F;&#x2F;72hourgdc.com&#x2F;&quot;&gt;72 hour game development competition&lt;&#x2F;a&gt; coming
up. I&#x27;m tempted.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Multiple exposures and light sources</title>
            <pubDate>Wed, 09 Aug 2006 20:44:41 +0000</pubDate>
            <link>https://www.librador.com/2006/08/09/Multiple-exposures-and-light-sources/</link>
            <guid>https://www.librador.com/2006/08/09/Multiple-exposures-and-light-sources/</guid>
            <description>&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.debevec.org&#x2F;&quot;&gt;Paul Debevec&lt;&#x2F;a&gt; is a computer graphics researcher who among
other things has made the amazing short film &lt;a href=&quot;http:&#x2F;&#x2F;www.debevec.org&#x2F;FiatLux&#x2F;&quot;&gt;Fiat
Lux&lt;&#x2F;a&gt;. I found his &lt;a href=&quot;http:&#x2F;&#x2F;www.debevec.org&#x2F;Research&#x2F;LS&#x2F;&quot;&gt;acquire the reflectance field of
a human face&lt;&#x2F;a&gt; to be an interesting piece of work (and the theory of it is not as complicated as
it sounds; it&#x27;s building the hardware that is the hard part). The movie (&lt;a href=&quot;http:&#x2F;&#x2F;www.debevec.org&#x2F;Movies&#x2F;debevec-imagebasedlighting-s2000.mov&quot;&gt;19.6 MB Quicktime&lt;&#x2F;a&gt;, &lt;a href=&quot;http:&#x2F;&#x2F;www.debevec.org&#x2F;Research&#x2F;LS&#x2F;Image-Based-Lighting_S2000ET_divx.avi&quot;&gt;148 MB DivX&lt;&#x2F;a&gt;)
explains it well. In the beginning of that video he&#x27;s got a simple example using just two lights. I
got inspired to try something similar, but with a bit more limited resources in terms of mechanical
devices.&lt;&#x2F;p&gt;&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;3681758c0914ae2b00.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;br &#x2F;&gt;
I placed a bottle of wine and a wine glass on a table. Then I lit them from different directions. I
don&#x27;t actually have any lamp that can be moved around, so I simply switched each light in my
apartment on, one at a time, and took a photo. The image to the right shows three of the resulting
photographs.&lt;&#x2F;p&gt;&lt;p&gt;Afterwards, I could mix the pictures in any way. I put each photo as a layer in
the Gimp, and changed their blending to Additive. Then I could start playing around with the colors
and intensity of the layers. I like the effect I got when I tinted the pictures in different
colors, which I did in the picture below. It can give the impression that you have used colored
filters on the lights.&lt;&#x2F;p&gt;&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;01e481f3340ebcc200.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;br &#x2F;&gt;
It can be used for truly surreal images if you experiment with other blending modes or apply
filters to the images. In the picture below, I used blurring and other effects on the
photos.&lt;&#x2F;p&gt;&lt;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;ec87011923eee0e400.png&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;br &#x2F;&gt;
These simple tests, while not terribly impressive, give a hint of the kind of visual effects you
can achieve with this technique. Next step for me is to go and buy a small lamp that I can move
around, and arrange a more interesting still life. I also got an idea of how to get this effect in
moving images. That would be fun!
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Recruitment underway</title>
            <pubDate>Sun, 30 Jul 2006 16:37:20 +0000</pubDate>
            <link>https://www.librador.com/2006/07/30/Recruitment-underway/</link>
            <guid>https://www.librador.com/2006/07/30/Recruitment-underway/</guid>
            <description>&lt;p&gt;At last, the &lt;a href=&quot;http:&#x2F;&#x2F;www.digital-legends.com&#x2F;web&#x2F;html&#x2F;jobs_programming_eng.htm&quot;&gt;recruitment of
programmers&lt;&#x2F;a&gt; for the One sequel project has started. The profiles are called Mobile Game Logic,
Mobile Graphics and Symbian programmer, which reflect more or less the kind of programming
competence we&#x27;ll need. I hope we&#x27;ll find it.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>My IMDB page</title>
            <pubDate>Sun, 25 Jun 2006 18:02:40 +0000</pubDate>
            <link>https://www.librador.com/2006/06/25/My-IMDB-page/</link>
            <guid>https://www.librador.com/2006/06/25/My-IMDB-page/</guid>
            <description>&lt;p&gt;I just noticed that I&#x27;m in the Internet Movie Database. &lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;name&#x2F;nm2189455&#x2F;&quot;&gt;Here&#x27;s the link&lt;&#x2F;a&gt;. I&#x27;m there because of the film
Backyard Suicide that I was an extra in. Kind of Mats (the director&#x2F;producer of that film) to
credit me. Only problem is that it looks like that is the only thing I&#x27;ve done - and I&#x27;ve directed,
edited and acted in several short films, but I think that the IMDB has a requirement that the film
should at least have been shown at a festival to be allowed in the database.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Ono sucks big time</title>
            <pubDate>Tue, 13 Jun 2006 21:58:14 +0000</pubDate>
            <link>https://www.librador.com/2006/06/13/Ono-sucks-big-time/</link>
            <guid>https://www.librador.com/2006/06/13/Ono-sucks-big-time/</guid>
            <description>&lt;p&gt;I just found out that my new cable-based Internet connection at home doesn&#x27;t work with Skype. I
didn&#x27;t understand what the problem was at first, but today I found &lt;a href=&quot;http:&#x2F;&#x2F;www.voipnovatos.es&#x2F;index.php?itemid=822&quot;&gt;this entry&lt;&#x2F;a&gt; which (as far as my limited
Spanish knowledge tells me) says that my ISP simply filters Skype traffic. I guess it is to sell
their own VoIP service instead. I read somewhere else that they filter P2P filesharing as well,
which I don&#x27;t mind very much; it saves bandwidth for more important stuff. For some reason it also
seems like they filter FTP.&lt;&#x2F;p&gt;&lt;p&gt;So unfortunately, I can not recommend &lt;a href=&quot;http:&#x2F;&#x2F;www.ono.es&quot;&gt;Ono&lt;&#x2F;a&gt;. In fact, they really suck. But an Internet connection that sucks
is better than no Internet connection at all I guess...&lt;&#x2F;p&gt;&lt;p&gt;EDIT: After a few months I tried to
use Skype again, and then it worked. Perhaps Ono changed something, who knows, but it made me happy
again!
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Game development contests</title>
            <pubDate>Tue, 06 Jun 2006 11:33:28 +0000</pubDate>
            <link>https://www.librador.com/2006/06/06/Game-development-contests/</link>
            <guid>https://www.librador.com/2006/06/06/Game-development-contests/</guid>
            <description>&lt;p&gt;Two new game development contests have been announced recently. As I like challenges, I like
contests, but most of the time participating in one doesn&#x27;t fit my plans. Perhaps this time it
will, but I&#x27;ll need to find a team too. (And get that damn Internet connection at
home.)&lt;&#x2F;p&gt;&lt;p&gt;GameDev.net&#x27;s fifth &lt;a href=&quot;http:&#x2F;&#x2F;www.gamedev.net&#x2F;community&#x2F;contest&#x2F;4e5&#x2F;&quot;&gt;Four
elements contest&lt;&#x2F;a&gt; has its deadline on November 30th. To submit a game, it must contain all the
required elements. This year they are: Emotion, Economics, Emblem and Europe. The elements makes me
think about WWII strategy games, but it sure is possible to make something totally
different.&lt;&#x2F;p&gt;&lt;p&gt;There will be a new &lt;a href=&quot;http:&#x2F;&#x2F;www.pixel-arts.org&#x2F;72&#x2F;&quot;&gt;72 hour game
development competition&lt;&#x2F;a&gt; on the 14th to 17th of July. This one is especially interesting since
it requires concentrated effort during a short time. I like that. I guess that is the reason I
actually enjoy short periods of crunch time.&lt;&#x2F;p&gt;&lt;p&gt;By the way, today is Sweden&#x27;s national day. And
here I am in Barcelona, missing Stockholm&#x27;s cool air, unpredictable weathre and empty beaches...
NOT! :-)
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>My Open Source itch</title>
            <pubDate>Fri, 02 Jun 2006 19:51:05 +0000</pubDate>
            <link>https://www.librador.com/2006/06/02/My-Open-Source-itch/</link>
            <guid>https://www.librador.com/2006/06/02/My-Open-Source-itch/</guid>
            <description>&lt;p&gt;Have you noticed the kind of market segments that succesful free and open source projects are
aiming at? I have, and I&#x27;ve got this problem with it.&lt;&#x2F;p&gt;&lt;p&gt;I came to think about this because I
just looked at &lt;a href=&quot;http:&#x2F;&#x2F;www.ostg.com&#x2F;bcg&#x2F;bcg-0.73&#x2F;BCGHackerSurveyv0-73.html&quot;&gt;this old
survey&lt;&#x2F;a&gt; about who the people who write free and open source software are and what their
motivations are. While the presentation itself is interesting, it was &lt;a href=&quot;http:&#x2F;&#x2F;www.ostg.com&#x2F;bcg&#x2F;bcg-0.73&#x2F;img41.html&quot;&gt;one of the additional slides in the end&lt;&#x2F;a&gt; that
captured the essence of my problem. It says:&lt;&#x2F;p&gt;
&lt;blockquote&gt;How likely would you be to contribute to a free&#x2F;open source software project that
delivers more value primarily to average users than to you or your peer group?&lt;&#x2F;blockquote&gt;
&lt;p&gt;I think an honest answer from any open source contributor would likely be &quot;Not bloody likely&quot;. The
reason for this is that open source projects are traditionally initiated by a programmer because he
needs the software, or - as it&#x27;s often put - he feels an itch that needs to be scratched. He&#x27;s not
very likely to scratch someone else&#x27;s itch.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;homepages.cwi.nl&#x2F;~steven&#x2F;vandf&#x2F;2004.1-itch.html&quot;&gt;Steven Pemberton writes&lt;&#x2F;a&gt; about the
similar problem with the usability issues with open source software. The programmers create
programmer-oriented user interfaces that work fine for them, but are hard to use for the general
public.&lt;&#x2F;p&gt;&lt;p&gt;Still, I have found nothing in the survey that says that people work on open source
projects because they want to scratch a personal itch. The intellectual stimulation and the
community around the projects seems to be the driving force. If that is so, it really should be
just as enjoyable for these programmers to work on any project that is as stimulating, even if they
feel no need to use the actual end product. But I guess people join open source projects in the
first place because they use the software and feel they want to work on it as well, and that is the
reason that successful open source projects either solve problems that programmers normally have
(compilers, IDEs, generic library code) or belong to a broad mainstream category (web browsers,
operating systems, web servers, file sharing software, media players).&lt;&#x2F;p&gt;&lt;p&gt;The above may sound
very negative about open source software, but really, I love open source software. I use it
extensively. One reason for that is that I am a programmer, so I have a wide range of open source
software available to help me with my job, while other software is just useful (e.g. Firefox). The
problem I have experienced is that when I have needed software that is not a programming or
mainstream tool, I have not found good free (as in beer) software. That market is still owned by
commercial software. (Note to self for the software company business plan: Don&#x27;t make software for
programmers or the general public.) The kind of software that I have been looking for is for music
and audio production, video editing, scriptwriting and other media related areas. One might think
that there would be quite a few open source projects in these areas, considering how popular media
software in general is, but note what audience the numerous media related open source projects out
there are for: the media consumers, not the producers. I guess this just mirrors the poor ratio of
media producers to media consumers. There are some mainstream tools that can be used by both
consumers and producers, e.g. video encoders, and those work well, but the media producers have to
resort to commercial software.&lt;&#x2F;p&gt;&lt;p&gt;Oh well, I guess this is my personal itch. One day, I&#x27;ll find
the time to scratch it. I wonder if I&#x27;ll write a video editing suite or a MOD tracker that actually
has a sensible user interface... Or perhaps I&#x27;ll just stick to making games.&lt;&#x2F;p&gt;&lt;p&gt;For the purists
out there: Sorry for the mixed terminology above regarding free and open source software. I know
they are not the same thing.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>“På tåget” won prizes at festival</title>
            <pubDate>Mon, 15 May 2006 08:09:59 +0000</pubDate>
            <link>https://www.librador.com/2006/05/15/Pa-taget-won-prizes-at-festival/</link>
            <guid>https://www.librador.com/2006/05/15/Pa-taget-won-prizes-at-festival/</guid>
            <description>&lt;p&gt;My short film &lt;a href=&quot;&#x2F;pataget&#x2F;&quot;&gt;På tåget&lt;&#x2F;a&gt; (in Swedish) won second prize in its category at
the &lt;a href=&quot;http:&#x2F;&#x2F;www.filmkrets.se&#x2F;fest.htm&quot;&gt;SFV festival&lt;&#x2F;a&gt; this weekend. I didn&#x27;t expect it
and was happily surprised when I heard about it. (I had left by the time the winners were
announced.) The film also received a mention for best editing. That feels good, regarding how long
time the postproduction took...
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>One - Who&#x27;s Next?</title>
            <pubDate>Wed, 10 May 2006 09:12:33 +0000</pubDate>
            <link>https://www.librador.com/2006/05/10/One-Whos-Next/</link>
            <guid>https://www.librador.com/2006/05/10/One-Whos-Next/</guid>
            <description>&lt;p&gt;OK, now the demo we made for the sequel of One is official. &lt;a href=&quot;http:&#x2F;&#x2F;pandora.luxus.fi&#x2F;e3blog&#x2F;e3_06&#x2F;video&#x2F;ca8f384610fe4875b70266c2120b9e49.swf.aspx&quot;&gt;Here&#x27;s
one link&lt;&#x2F;a&gt;, and &lt;a href=&quot;http:&#x2F;&#x2F;pandora.luxus.fi&#x2F;e3blog&#x2F;e3_06&#x2F;games&#x2F;games&#x2F;one_next.aspx&quot;&gt;another
with info on the game&lt;&#x2F;a&gt; and &lt;a href=&quot;http:&#x2F;&#x2F;www.n-gage.com&#x2F;e3&#x2F;&quot;&gt;this is the official site link to
Nokia&#x27;s E3 site&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;p&gt;I&#x27;m quite proud of the demo, although my compañeros did much of the
work of course. It was great working with the ad-hoc team in this short project. The graphics
accelerator on those phones is very powerful, and coupled with some clever programming and good
graphics, the result turned out very good, if I may say so.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The quest for build systems</title>
            <pubDate>Sun, 02 Apr 2006 14:32:50 +0000</pubDate>
            <link>https://www.librador.com/2006/04/02/The-quest-for-build-systems/</link>
            <guid>https://www.librador.com/2006/04/02/The-quest-for-build-systems/</guid>
            <description>&lt;p&gt;Ahh, at last I found a permanent place to stay here in Barcelona. The prices for renting flats
here are rather high. I guess one reason is that people expect to have no more than a 15 minute
walk to work. Well, now I found a flat with a 15 minute walk to work. Nice to have that off my
mind.&lt;&#x2F;p&gt;&lt;p&gt;The &lt;a href=&quot;http:&#x2F;&#x2F;www.digital-legends.com&quot;&gt;new company&lt;&#x2F;a&gt; is an interesting place,
as it is a small growing company with talented people. I&#x27;m working on a new project, and this means
investingating new technology, techniques and methodologies. I&#x27;ve spent some time figuring out what
build system to use. &lt;a href=&quot;http:&#x2F;&#x2F;www.gamesfromwithin.com&#x2F;articles&#x2F;0509&#x2F;000100.html&quot;&gt;This
article by Noel LLopis&lt;&#x2F;a&gt; gave some good information.&lt;&#x2F;p&gt;&lt;p&gt;First I gave &lt;a href=&quot;http:&#x2F;&#x2F;www.perforce.com&#x2F;jam&#x2F;jam.html&quot;&gt;Jam&lt;&#x2F;a&gt; a quick try, but got the feeling that it&#x27;s a
bit too &quot;clever&quot; and complicated, at least when after reading 10-15 pages of documentation, I still
didn&#x27;t know how to do the relatively simple things I wanted to do with it. (This is a common
problem with documentation, especially in open source projects. The writers are so enamoured with
their technology that they want to describe every single detail of it, instead of just explaining
how to use it. The JBoss books come to mind, explaining esoteric inner workings of the server in
the early chapters where they should concentrate on more basic stuff, like how to configure the
server to actually get it running in the first place.&lt;&#x2F;p&gt;&lt;p&gt;I also looked at &lt;a href=&quot;http:&#x2F;&#x2F;www.scons.org&quot;&gt;SCons&lt;&#x2F;a&gt;, which seemed simple to learn since the build scripts are
Python programs. It also has good documentation and some clever &lt;i&gt;and&lt;&#x2F;i&gt; useful solutions.
Unfortunately it has a problem in common with Jam: While it seems to be very good for building the
same code using different supported compilers, it becomes more complicated when you need to use it
for building on an unsupported compiler or toolset.&lt;&#x2F;p&gt;&lt;p&gt;In the end I thought, &quot;better the devil
you know&quot;, and settled for &lt;a href=&quot;http:&#x2F;&#x2F;ant.apache.org&quot;&gt;Ant&lt;&#x2F;a&gt;. The problem I&#x27;ve had with Ant
is that XML is an inconvenient format for the build scripts. Also, while Ant has a good collection
of useful build tasks, when you need to do something it doesn&#x27;t support it is suddenly not so
simple anymore. The old solution was to write new tasks in Java, or executing external scripts.
Both are a bit awkward. Newer versions of Ant has scripting support which I haven&#x27;t tried. Perhaps
the solution is to embed Python code in the Ant scripts, and let that code perform the tasks that
Ant can&#x27;t perform with its standard set of tasks. One thing I might add this way is depency
checking for C++ source files, so that the C++ file is recompiled if any header file it depends on
has been changed. This is really a requirement for C++ development.&lt;&#x2F;p&gt;&lt;p&gt;But now I&#x27;ll go out to
get some afternoon sun. See you!
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>WebChord site</title>
            <pubDate>Sat, 25 Feb 2006 23:00:08 +0000</pubDate>
            <link>https://www.librador.com/2006/02/26/WebChord-site/</link>
            <guid>https://www.librador.com/2006/02/26/WebChord-site/</guid>
            <description>&lt;p&gt;Hans Holtkamp made &lt;a href=&quot;http:&#x2F;&#x2F;webchord.sourceforge.net&quot;&gt;a site for WebChord&lt;&#x2F;a&gt;, an old
project of mine that has been available as open source on SourceForge for quite some time. He&#x27;s
also made some updates to the script, which is great since I don&#x27;t have very much time for it.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>New job</title>
            <pubDate>Thu, 16 Feb 2006 11:46:58 +0000</pubDate>
            <link>https://www.librador.com/2006/02/16/New-job/</link>
            <guid>https://www.librador.com/2006/02/16/New-job/</guid>
            <description>&lt;p&gt;I&#x27;m moving on to a new job, and this is my last week at &lt;a href=&quot;http:&#x2F;&#x2F;www.jadestone.se&quot;&gt;Jadestone&lt;&#x2F;a&gt;. It feels a bit sad to leave the company after being
here for so long time, but it really is time to move on and try new things. Also, I&#x27;m very tired of
the Swedish climate, so when I was offered a job at &lt;a href=&quot;http:&#x2F;&#x2F;www.digital-legends.com&quot;&gt;Digital Legends&lt;&#x2F;a&gt; in Barcelona I was of course interested.
The company and their projects look very interesting, so in March I&#x27;ll move south. This will be so
exciting!
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Les Justes</title>
            <pubDate>Mon, 06 Feb 2006 19:49:08 +0000</pubDate>
            <link>https://www.librador.com/2006/02/06/Les-Justes/</link>
            <guid>https://www.librador.com/2006/02/06/Les-Justes/</guid>
            <description>&lt;p&gt;I forgot to mention here that the site for the play The Just Assassins&#x2F;Les Justes&#x2F;De
rättfärdiga is now official, hosted and designed by me. Here it is: &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;camus&quot;&gt;De rättfärdiga&lt;&#x2F;a&gt; (in Swedish).&lt;br &#x2F;&gt;
Unfortunately, I didn&#x27;t have time to play in in it, but at least I made the web page. :-) I made it
in &lt;a href=&quot;http:&#x2F;&#x2F;www.mamboserver.com&quot;&gt;Mambo&lt;&#x2F;a&gt;, which is a CMS system that seemed a bit overkill
for such a small site, but it was interesting to evaluate it if I need a powerful CMS some time in
the future.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>C++0x: Too little, too late</title>
            <pubDate>Fri, 13 Jan 2006 18:18:47 +0000</pubDate>
            <link>https://www.librador.com/2006/01/13/C++0x-Too-little,-too-late/</link>
            <guid>https://www.librador.com/2006/01/13/C++0x-Too-little,-too-late/</guid>
            <description>&lt;p&gt;Bjarne Stroustrup, the creator of C++ has written &lt;a href=&quot;http:&#x2F;&#x2F;www.artima.com&#x2F;cppsource&#x2F;cpp0x.html&quot;&gt;A Brief Look at C++0x&lt;&#x2F;a&gt;, where he shows a few
features that will likely become part of the new C++ standard. My first impression is the same as I
had with every release of Java leading up to version 1.5: &quot;Too little, too late&quot;. &lt;br &#x2F;&gt;
&lt;p&gt;The ISO C++ committee are still years from freezing the new language spec,
and judging by the rate new C++ features have been included in some compilers historically,
I guess we&#x27;ll have to wait until 2010 before the new features are supported well enough
for us to start relying on them.&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Stroustrup shortly mentions garbage collection as one of the features, and this is
the most important change in my opinion. Sure, garbage collection may cost some CPU time,
and RAM in particular, but it simplifies programming so much that it is worth it.
Not having to worry about pointer ownership is a great relief. If it&#x27;s possible to specify
which classes should be garbage collection, there is also the possibility to optimize classes
by changing how their memory is handled.&lt;&#x2F;p&gt;
&lt;p&gt;Apart from garbage collection, there are few features that make me go &quot;wow!&quot;,
and even garbage collection is nothing new so I didn&#x27;t really go &quot;wow!&quot; because of that either.
It has been available as third party products for years. It&#x27;s good that it&#x27;s becoming part of the
language spec itself though. The new features mostly seem to be about cleaning up the uglier parts
of the language, for example compile errors related to templates. This is good idea, but it&#x27;s
not very revolutionary. Many changes seem to be additions to the standard library,
where we already have a de facto standard library in &lt;a href=&quot;http:&#x2F;&#x2F;www.boost.org&quot;&gt;Boost&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Where are the cool new features, like good multiprocessor support (and I&#x27;m not talking
about just synchronization, like in Java), removing the declaration&#x2F;definition distinction
(which is an unnecessary violation of the &lt;a href=&quot;http:&#x2F;&#x2F;c2.com&#x2F;cgi&#x2F;wiki?DontRepeatYourself&quot;&gt;Don&#x27;t
Repeat Yourself principle&lt;&#x2F;a&gt;), lambda functions (would be useful for the STL algorithms),
built-in unit testing and design by contract constructs (like D has), reflection (like in Java),
aspect oriented programming, alternatives to situations where we still have to use the preprocessor
and other features that I can&#x27;t even think about?&lt;&#x2F;p&gt;
&lt;p&gt;All of the above features are available in other languages, though I don&#x27;t know of one
language that implements them all. As far as I can see it would be possible to implement them in
C++ while keeping its &quot;efficient but flexible&quot; profile. The problem Stroustrup mentions is that the
ISO C++ committee does not have time to work on the specification as much as they would like, and
I guess this is the problem with a language designed by a committee.&lt;&#x2F;p&gt;
&lt;p&gt;When I discovered the
&lt;a href=&quot;http:&#x2F;&#x2F;www.digitalmars.com&#x2F;d&#x2F;&quot;&gt;D language&lt;&#x2F;a&gt;, I went &quot;wow!&quot;.
That language has all the good features of C++, some of the features in my wishlist above, but unfortunately just a tiny fraction of the user base.
I wrote about D in &lt;a href=&quot;&#x2F;2005&#x2F;05&#x2F;31&#x2F;The-D-programming-language&#x2F;&quot;&gt;this post&lt;&#x2F;a&gt;,so I won&#x27;t repeat it.&lt;&#x2F;p&gt;
&lt;p&gt;This may sound like I&#x27;m bashing C++, but in spite of its faults, it&#x27;s still my favourite language for
speed-critical software. There really is no competition. Scripting languages are too slow and virtual
machine based languages (Java and Microsoft&#x27;s CLR languages) require a too heavy runtime environment
and are hard to interface to native code. C++ is close to the metal and very powerful but still
has relatively high-level constructs such as classes and templates.
There really isn&#x27;t any popular language that competes with C++&#x27;s position. I&#x27;m hoping that D will
become a real competitor.
Sun got down to improving Java at last when Microsoft announced C#, so competition is a good thing.&lt;&#x2F;p&gt;
&lt;p&gt;&#x2F;me hopes to be proven wrong, and that C++0x will make me go &quot;wow!&quot;.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Random links</title>
            <pubDate>Thu, 15 Dec 2005 13:32:35 +0000</pubDate>
            <link>https://www.librador.com/2005/12/15/Random-links/</link>
            <guid>https://www.librador.com/2005/12/15/Random-links/</guid>
            <description>&lt;p&gt;Here are a few game development links that I&#x27;ve found interesting during the last few
weeks.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;gillen.cream.org&#x2F;wordpress_html&#x2F;?page_id=693&quot;&gt;How To Use And Abuse The
Gaming Press And How The Gaming Press Wants To Use and Abuse You&lt;&#x2F;a&gt; - speech by Kieron Gillen,
games journalist, at an indie games conference, on how to get press coverage for your
game.&lt;&#x2F;p&gt;&lt;p&gt;The &lt;a href=&quot;http:&#x2F;&#x2F;javaunlimited.net&#x2F;contests&#x2F;java4k.php&quot;&gt;Java 4K Programming
Contest&lt;&#x2F;a&gt; is a Java game contest with a tight size limit. Deadline March 1st, 2006.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.naturalmotion.com&#x2F;pages&#x2F;products.htm&quot;&gt;Endorphin&lt;&#x2F;a&gt; has recently been released in
version 2.5, but I haven&#x27;t seen it before. It&#x27;s a very cool technology for combining physics and AI
to create very life-like real-time character animation. Check out the &lt;a href=&quot;http:&#x2F;&#x2F;www.naturalmotion.com&#x2F;pages&#x2F;demos.htm&quot;&gt;demo videos&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;p&gt;This &lt;a href=&quot;http:&#x2F;&#x2F;www.gamedev.net&#x2F;columns&#x2F;interviews&#x2F;mscg.asp&quot;&gt;Interview with Microsoft Casual Games&lt;&#x2F;a&gt;
provides some insight into XBox Live Arcade as well as Microsoft&#x27;s initiative for casual games on
several platforms -- yes, even non-Microsoft platforms!&lt;br &#x2F;&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>SI linked</title>
            <pubDate>Tue, 29 Nov 2005 19:20:11 +0000</pubDate>
            <link>https://www.librador.com/2005/11/29/SI-linked/</link>
            <guid>https://www.librador.com/2005/11/29/SI-linked/</guid>
            <description>&lt;p&gt;BoltBait added a link to &lt;a href=&quot;http:&#x2F;&#x2F;www.librador.com&#x2F;si&#x2F;&quot;&gt;SI&lt;&#x2F;a&gt; (my tiny Space Invaders
clone) at &lt;a href=&quot;http:&#x2F;&#x2F;www.geocities.com&#x2F;boltbaits&#x2F;256byte&#x2F;games.html&quot;&gt;this page&lt;&#x2F;a&gt;. Check it
out if you&#x27;re interested in 256 byte games.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>At the Stockholm Film Festival</title>
            <pubDate>Sat, 26 Nov 2005 21:41:31 +0000</pubDate>
            <link>https://www.librador.com/2005/11/26/At-the-Stockholm-Film-Festival/</link>
            <guid>https://www.librador.com/2005/11/26/At-the-Stockholm-Film-Festival/</guid>
            <description>&lt;p&gt;I&#x27;ve seen a few movies at the Stockholm Film Festival. Here&#x27;s the list and brief comments. &lt;br &#x2F;&gt;
&lt;p&gt;Links are to IMDB:&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;title&#x2F;tt0342882&#x2F;&quot;&gt;The Piano Tuner of Earthquakes&lt;&#x2F;a&gt; -
lovely cinematography in a dreamlike scenery. Unfortunately rather dull and pointless.&lt;br &#x2F;&gt;
&lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;title&#x2F;tt0365847&#x2F;&quot;&gt;The Myth&lt;&#x2F;a&gt; - Well, it&#x27;s Jackie Chan,
and he does his thing. It&#x27;s entertainment, nothing more, nothing less.&lt;br &#x2F;&gt;
&lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;title&#x2F;tt0443496&#x2F;&quot;&gt;Edmond&lt;&#x2F;a&gt; - This is an adaptation of a play,
which shows in the long dialogue sequences. It&#x27;s about a white upper-middle class man who
totally loses it and goes on a rampage. Comparisons with Falling Down are unavoidable,
but Edmond is the more interesting of the two.&lt;br &#x2F;&gt;
&lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;title&#x2F;tt0446476&#x2F;&quot;&gt;Storm&lt;&#x2F;a&gt; - This is an odd mix of dark sci-fi,
Stockholm comedy, and social realism. Think of it like a mix of
&lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;title&#x2F;tt0133093&#x2F;&quot;&gt;The Matrix&lt;&#x2F;a&gt;,
&lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;title&#x2F;tt0183992&#x2F;&quot;&gt;Vuxna människor&lt;&#x2F;a&gt; and
&lt;a href=&quot;http:&#x2F;&#x2F;www.imdb.com&#x2F;title&#x2F;tt0150662&#x2F;&quot;&gt;Fucking Åmål&lt;&#x2F;a&gt;.
Someone on IMDB mentioned that you get the feeling that the directors tries to cram
every movie idea they have into one film, which is a good description.
Still, it is very enjoyable, though not very coherent. What&#x27;s most interesting is
that a film like this got made, which is very promising for the future of Swedish film.
Enough with the Beck movies now please!&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Texture compression and old knowledge</title>
            <pubDate>Thu, 24 Nov 2005 17:55:29 +0000</pubDate>
            <link>https://www.librador.com/2005/11/24/Texture-compression-and-old-knowledge/</link>
            <guid>https://www.librador.com/2005/11/24/Texture-compression-and-old-knowledge/</guid>
            <description>&lt;p&gt;I just read the article &lt;a href=&quot;http:&#x2F;&#x2F;www.gamasutra.com&#x2F;features&#x2F;20051123&#x2F;linde_01.shtml&quot;&gt;Making Quality Game Textures&lt;&#x2F;a&gt;
and the article on &lt;a href=&quot;http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;S3_Texture_Compression&quot;&gt;S3 texture
compression&lt;&#x2F;a&gt; on Wikipedia. A funny thing is that DXT1 compression is very much the same thing as
the screen buffer format on the ZX Spectrum (the &lt;i&gt;screen$&lt;&#x2F;i&gt; format)! &lt;br &#x2F;&gt;
DXT1 compression divides the image into 4x4 pixel blocks, each of which can have a maximum
of 4 different colors from a 16-bit palette. On the Spectrum, the screen is divided into
8x8 pixel blocks, each of which can have a maximum of 2 colors from a 3-bit palette.
So although there is at least 15 years between these technologies, they have a similar design,
and for the same reason too; i.e. minimizing memory consumption and bandwidth.&lt;br &#x2F;&gt;
This is just one example of that knowledge doesn&#x27;t get outdated as fast as one would think
in the fast-moving field of computers, and real-time graphics in particular. New technology
often use old ideas in new ways, so old knowledge is useful more often than most people think.
For example, fix-point numbers had been replaced by floating point numbers for all math in
graphics applications. So knowing how fix-point works was not very useful for a few years,
but then they suddenly reappeared in new graphics hardware and mobile applications.
I&#x27;m not that old, but I have actually programmed COBOL at a time in my life.
There&#x27;s not a chance in hell I&#x27;d put that on my CV, but at a few times that knowledge
has been useful. Not that I use COBOL itself, but there are concepts and ideas in it
that can be applied to contemporary problems. Assembly language is perhaps a better example.
Many programmers think that knowledge of assembly language is worthless, as noone programs
in assembly language any more. While it&#x27;s partly true that assembly language isn&#x27;t very useful
for most programmers, the knowledge of how the computer works under the hood is often very useful.&lt;br &#x2F;&gt;
Oh well, perhaps I&#x27;m just trying to justify all the time I&#x27;ve spent on learning unimportant old stuff. :-)&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Broken</title>
            <pubDate>Fri, 04 Nov 2005 22:26:51 +0000</pubDate>
            <link>https://www.librador.com/2005/11/04/Broken/</link>
            <guid>https://www.librador.com/2005/11/04/Broken/</guid>
            <description>&lt;p&gt;Yesterday I watched the short film &lt;a href=&quot;http:&#x2F;&#x2F;www.whatisbroken.com&quot;&gt;Broken&lt;&#x2F;a&gt; that I
ordered a while ago. While the story doesn&#x27;t make complete sense and doesn&#x27;t give very clear
answers, the production design, videography and the special effects create an amazing atmosphere.
Today I watched most of the bonus material (which are the primary reason I bought it). The DVD is
produced a little bit in the Robert Rodriguez style, targeting low-budget filmmakers (and
wannabes), providing tips on how to produce a low-budget action&#x2F;effects movie. There is a lot of
material, but I&#x27;d like it to be more in-depth. For example, instead of a two-second clip showing
the layers of a compositing effect, I&#x27;d want to see a slow and complete breakdown each layer layer
as it is added, with audio commentary. Instead of just mentioning that they spent a lot of
creativity on the marketing, I&#x27;d like to know exactly what they did. So while the bonus material is
a bit more of a &quot;film school&quot; than the ones normally found on mainstream DVDs, I think they could
have done more with it. Still, it&#x27;s definitely worth watching.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>My acquaintance Emacs</title>
            <pubDate>Wed, 02 Nov 2005 11:12:59 +0000</pubDate>
            <link>https://www.librador.com/2005/11/02/My-acquaintance-Emacs/</link>
            <guid>https://www.librador.com/2005/11/02/My-acquaintance-Emacs/</guid>
            <description>&lt;p&gt;I&#x27;m right now trying to configure Emacs to use real tabs instead of the messy default that mixes
tabs and spaces. It&#x27;s unthinkable that this wonder of configurability and extensibility would not
allow this, but it is very likely that this horror of user unfriendliness will require me to browse
pages of documentation, browse several forum messages and search the web to make this simple
setting, which would take less than a minute in other editors.&lt;&#x2F;p&gt;&lt;p&gt;I guess Emacs is just like
Unix; perhaps it &lt;strong&gt;is&lt;&#x2F;strong&gt; user friendly. It&#x27;s just that it&#x27;s very picky about who its
friends are. I&#x27;ve used it now and then for the last 12 years, but we&#x27;re still not on a first-name
basis.&lt;br &#x2F;&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Compiler optimizations</title>
            <pubDate>Wed, 26 Oct 2005 16:04:05 +0000</pubDate>
            <link>https://www.librador.com/2005/10/26/Compiler-optimizations/</link>
            <guid>https://www.librador.com/2005/10/26/Compiler-optimizations/</guid>
            <description>&lt;p&gt;I just stumbled upon the article &lt;a href=&quot;http:&#x2F;&#x2F;www-128.ibm.com&#x2F;developerworks&#x2F;java&#x2F;library&#x2F;j-jtp12214&#x2F;&quot;&gt;Dynamic compilation and
performance measurement&lt;&#x2F;a&gt;, which is about how difficult it is to measure performance using short
test programs (microbenchmarks). The article is about how dynamic languages such as Java makes
performance measurement even harder than for static languages such as C++, but the point with dead
code elimination is valid for static languages too.&lt;&#x2F;p&gt;
&lt;p&gt;For example, consider the following C++ code:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;
int example1() {
  return 10000;
}
int example2() {
  return 5000 + 5000;
}
int example3() {
  int i = 0;
  while(i &amp;lt; 10000) {
    i++;
  }
  return i;
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;All of these obviously returns 10000, but how is the performance? Many programmers
would assume that example1 is the fastest, and fail to realize that any
modern compiler, when compiling with optimization, will generate the very same,
or equivalent, code for all of the above functions. And it doesn&#x27;t stop there.
Compilers today can often do surprisingly clever optimizations, so don&#x27;t listen
to optimization advice based on 10 year old compilers. The way to be sure if there
is a difference is to look at the generated machine code, or benchmarking in a real
world application.&lt;br &#x2F;&gt;&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>PlayStation Portable</title>
            <pubDate>Sat, 08 Oct 2005 08:37:17 +0000</pubDate>
            <link>https://www.librador.com/2005/10/08/PlayStation-Portable/</link>
            <guid>https://www.librador.com/2005/10/08/PlayStation-Portable/</guid>
            <description>&lt;p&gt;This week I bought a PSP, and since then I&#x27;ve spent much time on &lt;a href=&quot;http:&#x2F;&#x2F;www.eagames.com&#x2F;official&#x2F;burnout&#x2F;legends&#x2F;us&#x2F;home.jsp&quot;&gt;Burnout Legends&lt;&#x2F;a&gt;. I&#x27;m a
sucker for racing games. As they are brainless, and the good ones are really immersive, they are
great for relaxation.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Retro rendering</title>
            <pubDate>Tue, 04 Oct 2005 16:00:00 +0000</pubDate>
            <link>https://www.librador.com/2005/10/04/Retro-rendering/</link>
            <guid>https://www.librador.com/2005/10/04/Retro-rendering/</guid>
            <description>
&lt;p&gt;
&lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;www.librador.com&amp;#x2F;processed_images&amp;#x2F;f89ebe2ade722c4800.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;I recently had a look at the latest version of &lt;a href=&quot;http:&#x2F;&#x2F;www.povray.org&quot;&gt;POV-Ray&lt;&#x2F;a&gt;
(the open source raytracer). I first used it back in the early 90&#x27;s, and years later I created some
scenes and rendered them on my Pentium 166. Now, even more years have passed, and as I mentioned, I
had a look at it again. Some cool new features have been added. One of them is the &lt;em&gt;trace&lt;&#x2F;em&gt;
command which I used to create this picture. It may not look like much, and it isn&#x27;t, but
&lt;em&gt;how&lt;&#x2F;em&gt; I made it may be of interest if you&#x27;re a geek like me.&lt;&#x2F;p&gt;
&lt;p&gt;POV-Ray scenes are described in a scene description language. Many modellers can
export to POV format, but POV itself does not have a graphical editor and it is
quite possible to create scenes by just using a text editor. The POV language
has some basic scripting features, so it is possible to write code that
generates the scene. For instance, you can make a loop that creates several
objects and places them in the scene based on some mathematical formula. So, as
I said, the &lt;em&gt;trace&lt;&#x2F;em&gt; command is a new command in the POV language. What it
does is to cast a ray with a specific direction from a point in the scene. It
returns the point where the ray hits an object. This makes it possible to write
a simple ray-tracer in the POV-Ray scene description language itself! I just had
to try that...&lt;&#x2F;p&gt;
&lt;p&gt;Now I get a bit technical...&lt;&#x2F;p&gt;
&lt;p&gt;So I implemented a nested loop that iterates in a virtual camera&#x27;s x and y
coordinates, and used &lt;em&gt;trace&lt;&#x2F;em&gt; to find the point where the camera ray hits
an object. For an object, I used the &lt;a href=&quot;http:&#x2F;&#x2F;www.sjbaker.org&#x2F;teapot&#x2F;&quot;&gt;Utah teapot&lt;&#x2F;a&gt;,
which is included with
POV-Ray, and a ground plane. If the result of the trace command hits something,
I use a standard lighting calculation with one light source to get the intensity
of the pixel. I also add shadows by trying to trace a ray to the light source
from the point where the camera ray hit the object. If that ray hits an object,
the point is in shadow.&lt;&#x2F;p&gt;
&lt;p&gt;To give POV-Ray something to render, I had to add
real objects to the scene. At first I just added a little box that acted as a
pixel for each traced camera ray. The color of the box was based on the result
of the lighting calculations. I lined up the boxes so that they would display
the image.&lt;&#x2F;p&gt;
&lt;p&gt;All of this was a bit pointless, so I came to think of the old
dot matrix printers of the 80&#x27;s. These printed with black ink onto tractor fed
paper. It was possible to print graphics, but the resolution was low, and it was
only possible to write in one intensity (although there were tricks around
that). So I decided to try to simulate a dot-matrix printout in POV-Ray, so the
result would look like I had taken a photo of a printout of a simple raytracing
of the Utah teapot! This was rather simple. Instead of rendering a little box
for every camera ray, I used tiny discs (simulating a dot from the dot-matrix
printer) that were added to the scene or not depending on the intensity from the
lighting calculations and an ordered dither matrix. Just behind the discs, I
placed a plane with a paper-like texture.&lt;&#x2F;p&gt;
&lt;p&gt;The result is not that
convincing, but with more work I guess it could be made to look very good. Yeah,
all of this is still rather pointless, but it was fun!&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>SI</title>
            <pubDate>Mon, 03 Oct 2005 18:54:38 +0000</pubDate>
            <link>https://www.librador.com/2005/10/03/SI/</link>
            <guid>https://www.librador.com/2005/10/03/SI/</guid>
            <description>&lt;p&gt;Today I have added my old project &lt;a href=&quot;&#x2F;si&#x2F;&quot;&gt;SI&lt;&#x2F;a&gt; to this site, since some oddballs find it
a bit cool. It is a space invaders clone for MS-DOS in 287 bytes that I made years
ago.&lt;&#x2F;p&gt;&lt;p&gt;Originally, it was meant to be a submission to a 256 byte space invaders competition,
but I never got it down to 256 bytes. All the entrants that made it had used text mode. Using a
graphics mode (320x200) was a bit overkill since the graphics data and the drawing routines became
a few bytes too large. Let me know if you can optimize it, even as little as one byte.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Comment spammers</title>
            <pubDate>Wed, 21 Sep 2005 18:46:57 +0000</pubDate>
            <link>https://www.librador.com/2005/09/21/Comment-spammers/</link>
            <guid>https://www.librador.com/2005/09/21/Comment-spammers/</guid>
            <description>&lt;p&gt;I&#x27;ve received two spam comments on my latest blog post. It&#x27;s just amazing that although this
site doesn&#x27;t get very many visitors, the spammers find their way here. And it must be real humans
that enter the spam, as a script shouldn&#x27;t get through the captcha check.&lt;&#x2F;p&gt;&lt;p&gt;Of course I delete
the junk as soon as I see it.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Adobe&#x27;s Adam and Eve</title>
            <pubDate>Wed, 14 Sep 2005 07:50:07 +0000</pubDate>
            <link>https://www.librador.com/2005/09/14/Adobes-Adam-and-Eve/</link>
            <guid>https://www.librador.com/2005/09/14/Adobes-Adam-and-Eve/</guid>
            <description>&lt;p&gt;I mentioned XUL in a &lt;a href=&quot;&#x2F;2005&#x2F;06&#x2F;09&#x2F;XUL&#x2F;&quot;&gt;previous post&lt;&#x2F;a&gt;. It is an
XML-based framework for creating user interfaces. I&#x27;ve also found &lt;a href=&quot;http:&#x2F;&#x2F;opensource.adobe.com&quot;&gt;Adobe Open Source&lt;&#x2F;a&gt;, which contains the products Adam and Eve,
which is something similar, i.e. cross-platform libraries for creating GUIs.&lt;&#x2F;p&gt;&lt;p&gt;So, why do I
write about this? I can&#x27;t use any of these products in the projects I&#x27;m working on right now, but I
seem to stumble upon them anyway. The thing is that creating the user interface is often a large
part of the work when creating an application. Normally, programming the application logic doesn&#x27;t
take very much time compared to implementing the user interface. Therefore, using tools that make
it easier to create GUIs is a very good idea. For one, it makes creating GUIs faster and less error
prone. Also, if the GUI can be created by a non-programmer, we free up programmer time for other,
more demanding (and interesting!) tasks.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Cell architecture documents published</title>
            <pubDate>Thu, 01 Sep 2005 19:34:31 +0000</pubDate>
            <link>https://www.librador.com/2005/09/01/Cell-architecture-documents-published/</link>
            <guid>https://www.librador.com/2005/09/01/Cell-architecture-documents-published/</guid>
            <description>&lt;p&gt;IBM has published &lt;a href=&quot;http:&#x2F;&#x2F;www-128.ibm.com&#x2F;developerworks&#x2F;power&#x2F;cell&#x2F;&quot;&gt;official
documentation of the Cell architecture&lt;&#x2F;a&gt;. The documents are general specifications and do not
describe the specific architecture of the PS3. What is interesting about it is that although it&#x27;s a
modern architecture, it has kind of a &quot;retro&quot; feel to it because it requires the programmers to
possess more knowledge about the hardware architecture than we are used to. This is by design; the
architecture is made simple so it can be made fast. As an example, it&#x27;s up to the programmer to
handle main memory transfers through DMA instead of using a cache (which takes precious space and
power on the chip). Such &quot;close to the metal&quot; things bring back memories of programming the blitter
on the Amiga...&lt;&#x2F;p&gt;&lt;p&gt;As a side note, IBM&#x27;s convention of numbering the bits starting with the most
significant confuses the hell out of me. I.e. bit 127 of a 128-bit quantity is the rightmost bit,
not the leftmost one.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Multithreaded Game Scripting</title>
            <pubDate>Mon, 15 Aug 2005 18:51:33 +0000</pubDate>
            <link>https://www.librador.com/2005/08/15/Multithreaded-Game-Scripting/</link>
            <guid>https://www.librador.com/2005/08/15/Multithreaded-Game-Scripting/</guid>
            <description>&lt;p&gt;I&#x27;ve recently looked a bit into using scripting languages for games. As we are at the end of a
project right now, now is the time to contemplate about it. I feel that if we&#x27;d used a scripting
language for the logic parts of the game, we would have saved a lot of time, even though we&#x27;d
certainly have problems with interfacing the scripting code to the engine code etc.&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.python.org&quot;&gt;Python&lt;&#x2F;a&gt; is the traditional alternative for game scripting, but &lt;a href=&quot;http:&#x2F;&#x2F;www.lua.org&#x2F;&quot;&gt;Lua&lt;&#x2F;a&gt; is an interesting alternative. Python has a lot of available
libraries and benefits from its maturity, while Lua is leaner and AFAIK faster.&lt;&#x2F;p&gt;&lt;p&gt;Here&#x27;s an
interesting article about using multiple &quot;green&quot; threads in Python as a different way to design
game entity animation and logic: &lt;a href=&quot;http:&#x2F;&#x2F;harkal.sylphis3d.com&#x2F;2005&#x2F;08&#x2F;10&#x2F;multithreaded-game-scripting-with-stackless-python&#x2F;&quot;&gt;Multithreaded
Game Scripting with Stackless Python&lt;&#x2F;a&gt;. My comment (at the bottom of that page) is
about my concerns for using this programming paradigm in a multi-processor architecture. In
practice it should be no big problem as the game logic would probably not use 100% of one single
processor anyway.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The Google Calculator</title>
            <pubDate>Wed, 03 Aug 2005 17:03:00 +0000</pubDate>
            <link>https://www.librador.com/2005/08/03/The-Google-Calculator/</link>
            <guid>https://www.librador.com/2005/08/03/The-Google-Calculator/</guid>
            <description>&lt;p&gt;I recently discoved the Google Calculator, and since then I&#x27;ve not had any need for the Calc
application in Windows or OSX.&lt;&#x2F;p&gt;&lt;p&gt;The thing is that you can google for a mathematical
expression, e.g. &lt;a href=&quot;http:&#x2F;&#x2F;www.google.com&#x2F;search?q=3%20%2B%209&quot;&gt;3 + 9&lt;&#x2F;a&gt;. More advanced
expressions, using functions such as square root, sine etc. is of course also
possible.&lt;&#x2F;p&gt;&lt;p&gt;What&#x27;s really cool is that the calculator can work with units. For example &lt;a href=&quot;http:&#x2F;&#x2F;www.google.com&#x2F;search?q=50+meters+%2F+3+seconds&quot;&gt;50 meters &#x2F; 3 seconds&lt;&#x2F;a&gt; gives the
result in meters per second. &lt;a href=&quot;http:&#x2F;&#x2F;www.google.com&#x2F;search?q=60+watt+*+24+hours&quot;&gt;60 watt
&amp;#42; 24 hours&lt;&#x2F;a&gt; gives the result in joules.&lt;&#x2F;p&gt;&lt;p&gt;It&#x27;s also possible to convert units, e.g. &lt;a href=&quot;http:&#x2F;&#x2F;www.google.com&#x2F;search?q=3%20km%20in%20miles&quot;&gt;3 km in miles&lt;&#x2F;a&gt; or more advanced
conversion such as &lt;a href=&quot;http:&#x2F;&#x2F;www.google.com&#x2F;search?q=60+watt+*+24+hours+in+calories&quot;&gt;60 watt
&amp;#42; 24 hours in calories&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;&lt;p&gt;Pretty cool, isn&#x27;t it?
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Site for “På tåget” up</title>
            <pubDate>Tue, 26 Jul 2005 22:45:07 +0000</pubDate>
            <link>https://www.librador.com/2005/07/27/Site-for-Pa-taget-up/</link>
            <guid>https://www.librador.com/2005/07/27/Site-for-Pa-taget-up/</guid>
            <description>&lt;p&gt;The short film I&#x27;ve been working on for too long time now is close to finished. It&#x27;s called
&lt;b&gt;På tåget&lt;&#x2F;b&gt;, and as the name suggests, it&#x27;s in Swedish. I&#x27;ve created a little info page for
it &lt;a href=&quot;&#x2F;pataget&#x2F;&quot;&gt;here&lt;&#x2F;a&gt; (in Swedish). I cut a short trailer for it
which you can download as well.&lt;&#x2F;p&gt;&lt;p&gt;Now as I start adding more content to this site, I guess I
should make a better front page than this blog...
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Visit to the American East Coast</title>
            <pubDate>Mon, 18 Jul 2005 13:18:00 +0000</pubDate>
            <link>https://www.librador.com/2005/07/18/Visit-to-the-American-East-Coast/</link>
            <guid>https://www.librador.com/2005/07/18/Visit-to-the-American-East-Coast/</guid>
            <description>&lt;p&gt;This saturday I returned from a two-week trip to the American east coast. I visited Toronto,
Washington DC and New York. Toronto was really nice, and seems to be a very interesting city if
you&#x27;re into movies and theatre. Many Hollywood productions are filmed in Toronto, and I actually
stumbled upon the set of a production (at the City Hall if I&#x27;m not mistaken). I have no idea about
movie it was, but it was a Fox production. I went to see one play at the &lt;a href=&quot;http:&#x2F;&#x2F;www.fringetoronto.com&#x2F;&quot;&gt;Toronto Fringe Festival&lt;&#x2F;a&gt;. Unfortunately the festval begun
the day before I had to leave for Washington DC.&lt;&#x2F;p&gt;&lt;p&gt;Washington DC was nice as well, but I didn&#x27;t
do anything special there, just visiting people and doing the required tour of all the memorials
and monuments. The &lt;a href=&quot;http:&#x2F;&#x2F;www.nasm.si.edu&#x2F;&quot;&gt;Smithsonian National Air and Space Museum&lt;&#x2F;a&gt;
was good too.&lt;&#x2F;p&gt;&lt;p&gt;In New York, there is the &lt;a href=&quot;http:&#x2F;&#x2F;www.movingimage.us&#x2F;&quot;&gt;Museum of the
Moving Image&lt;&#x2F;a&gt; which explains how movies work. Lots of interactive stations and plenty of old
cameras and projectors on display. On the ground floor they have a collection of old and new
computer and video games to play. Among the old ones is playable cabinet versions of Ms Pacman,
Pole Position and Asteroids (with oscilloscope-like vector graphics!). The new games mostly
includes &quot;physical&quot; games, such as Donkey Konga, dance mat games etc, which is a good idea since
most people don&#x27;t have such equipment at home.&lt;&#x2F;p&gt;&lt;p&gt;Also, I have to mention the &quot;kinetic
sculpture&quot; &lt;i&gt;42nd Street Ballroom&lt;&#x2F;i&gt; which is in the Port Authority Bus Terminal. It kept my
interest for more than half an hour. Unfortunately it is quite old and would need some touching up.
There are very bad photos of it &lt;a href=&quot;http:&#x2F;&#x2F;www.marcdatabase.com&#x2F;~lemur&#x2F;rb-rhoads-42nd-k.html&quot;&gt;here&lt;&#x2F;a&gt;.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The return of planless surfing</title>
            <pubDate>Sun, 26 Jun 2005 16:47:04 +0000</pubDate>
            <link>https://www.librador.com/2005/06/26/The-return-of-planless-surfing/</link>
            <guid>https://www.librador.com/2005/06/26/The-return-of-planless-surfing/</guid>
            <description>&lt;p&gt;I&#x27;ve noticed that I care less about adding bookmarks for interesting sites, and just google for
them when I need to find them again. Perhaps this is because my bookmark collections have a
tendency to become unwieldy when I just add everything to it. (Firefox has a bookmark search
function that should help a lot, but I didn&#x27;t see that function until just now, although it&#x27;s right
there.) The interesting thing is that when I google for sites instead of locating them via a
bookmark is that I often find other interesting sites. For example, a few months ago I registered
on the site &lt;a href=&quot;http:&#x2F;&#x2F;www.filmtipset.se&quot;&gt;Filmtipset&lt;&#x2F;a&gt;, which is a swedish community for
film lovers. When I wanted to login again today to see if there are any good movies on TV tonight
(which is one of the nice features on the site), I first tried www.filmtipset.se, but when the
server was slow to respond, I assumed the domain was something else, so I &lt;a href=&quot;http:&#x2F;&#x2F;www.google.com&#x2F;search?&amp;amp;q=filmtipset&quot;&gt;googled for &quot;Filmtipset&quot;&lt;&#x2F;a&gt;. Google of course
found the site, but also returned several hits which referred to it. &lt;a href=&quot;http:&#x2F;&#x2F;www.torstensson.com&#x2F;weblog&#x2F;2005&#x2F;01&#x2F;filmtipset-jag-r-imponerad.html&quot;&gt;Henrik
Torstensson&#x27;s blog entry&lt;&#x2F;a&gt; sounded interesting, so I read it, and a few more of his entries and
followed his link to &lt;a href=&quot;http:&#x2F;&#x2F;wired.com&#x2F;wired&#x2F;archive&#x2F;12.10&#x2F;tail.html&quot;&gt;the article in Wired
about The Long Tail&lt;&#x2F;a&gt;. So I still haven&#x27;t got around to actually log in to
Filmtipset.&lt;&#x2F;p&gt;&lt;p&gt;Maybe it&#x27;s just me, but I think the web in some ways has returned to its roots.
Back in the mid-90s, you could surf for hours, following links from one site to the next, finding
interesting content. Then the commercial interests took over, and the web got more boring, while
also becoming more useful. Sites became separate universes, without intercommunication. Lately,
during the last year or so, this has changed. Perhaps it&#x27;s the blogs, perhaps it&#x27;s the Wikis, but
the web has become more of an open discussion forum again. It is again enjoyable to surf the web
planlessly, and I can do it for hours again.&lt;br &#x2F;&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>XUL</title>
            <pubDate>Thu, 09 Jun 2005 12:30:00 +0000</pubDate>
            <link>https://www.librador.com/2005/06/09/XUL/</link>
            <guid>https://www.librador.com/2005/06/09/XUL/</guid>
            <description>&lt;p&gt;I took a few minutes to play around with XUL, which is an XML format for describing user
interfaces. Mozilla uses it for defining the GUI:s in Thunderbird and Firefox, which proves that
it&#x27;s possible to make rather complex and good looking interfaces with it.
&lt;a href=&quot;&#x2F;data&#x2F;test.xul&quot;&gt;Here&#x27;s the test code I made.&lt;&#x2F;a&gt; (Firefox only.)
Note that it&#x27;s written in XUL, not HTML! Use &lt;i&gt;View
Source&lt;&#x2F;i&gt; to see how it is done. It displays a menu, a list box and two buttons. There&#x27;s also some
big red ugly text to try out style information. The functionallity is made in JavaScript. In a real
application I guess you let the JavaScript call the application code, which is written in another
language.&lt;&#x2F;p&gt;&lt;p&gt;While this example doesn&#x27;t look very impressive, XUL looks like a useful language
for cross-platform user interfaces. It works a lot like HTML, but is specifically made for proper
GUI:s. Coupled with JavaScript and the DOM model, it&#x27;s an interesting alternative to DHTML and
proprietary solutions such as Flash and Director for making web applications. It&#x27;s also an
alternative way to do GUI:s for &quot;traditional&quot; client-side applications. One nice feature of it is
that it decouples the GUI more from the logic code. You can let a JavaScript kid implement the GUI,
and let the C++ (or whatever) programmers concentrate on the application logic.&lt;&#x2F;p&gt;&lt;p&gt;My code was
based on &lt;a href=&quot;http:&#x2F;&#x2F;xulplanet.com&#x2F;tutorials&#x2F;xultu&#x2F;&quot;&gt;this tutorial&lt;&#x2F;a&gt;.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Symbian 9.1 security</title>
            <pubDate>Wed, 08 Jun 2005 13:00:00 +0000</pubDate>
            <link>https://www.librador.com/2005/06/08/Symbian-9.1-security/</link>
            <guid>https://www.librador.com/2005/06/08/Symbian-9.1-security/</guid>
            <description>&lt;p&gt;Today I got home from Nokia&#x27;s Series 60 3rd Edition conference in Copenhagen. Unfortunately, the
presenters were not very coordinated, so they ended up saying the same things. Most of them talked
about the new security system in Symbian v9.1. A lot of changes has been made which breaks both
binaries and source code, and the new security model requires much work from the developers. For
example, you&#x27;ll need to submit every application you want to release to a testing house to get it
certified, otherwise it won&#x27;t run. This will cost time, money and hassle, and the decision was not
popular among the attendees. In theory it is a good idea to require all applications to be tested
and signed, but I think Symbian is taking this one step to far.&lt;br &#x2F;&gt;
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>Nokia 770 Internet Tablet</title>
            <pubDate>Wed, 01 Jun 2005 17:00:00 +0000</pubDate>
            <link>https://www.librador.com/2005/06/01/Nokia-770-Internet-Tablet/</link>
            <guid>https://www.librador.com/2005/06/01/Nokia-770-Internet-Tablet/</guid>
            <description>&lt;p&gt;Nokia recently announced the Nokia 770 Internet Tablet to be released this fall. It&#x27;s a handheld
device with Internet connectivity through WLAN or Bluetooth. It comes with a browser (Opera),
e-mail software etc. It&#x27;s not a phone, but it seems like you can do VoIP on it. Nokia wants to
market it as a thin Internet client, not a PDA, but with the correct software you certainly should
be able to use it as one. Perhaps it&#x27;s a good alternative to a living room PC or iMac if you need
something simple just for checking your e-mails or surf in the sofa.&lt;&#x2F;p&gt;&lt;p&gt;What is interesting from
a developer&#x27;s point of view is that Nokia chose to run Linux on the 770. They claim it should be
simple to port existing software, especially Debian applications. The framework for developing
applications is called &lt;a href=&quot;http:&#x2F;&#x2F;www.maemo.org&#x2F;&quot;&gt;maemo&lt;&#x2F;a&gt;.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>The D programming language</title>
            <pubDate>Tue, 31 May 2005 16:24:00 +0000</pubDate>
            <link>https://www.librador.com/2005/05/31/The-D-programming-language/</link>
            <guid>https://www.librador.com/2005/05/31/The-D-programming-language/</guid>
            <description>&lt;p&gt;We&#x27;ve been talking a lot of the &lt;a href=&quot;http:&#x2F;&#x2F;www.digitalmars.com&#x2F;d&#x2F;&quot;&gt;D programming
language&lt;&#x2F;a&gt; at work. It looks like the ideal programming language for games. I regard it as a
language that covers the ground between the complex and relatively low-level C++ language, and
higher level virtual machine based environments such as Java and Microsoft&#x27;s CLR. It compiles to
machine code, and the object files are compatible with C and C++, so it&#x27;s very easy to use C
libraries, even with callback functions. On the high-level side, it has garbage collection. This
may be somewhat controversial among low-level fans, but as memory handling is complex, I think
garbage collection is worth the loss of control. I haven&#x27;t done anything with D except for a few
examples, so I can&#x27;t tell how easy it is to work with. The biggest problem with it as far as I can
see is that it&#x27;s not very mature (some features of the language are still in flux) and has no good
IDE support.
&lt;&#x2F;p&gt;
</description>
        </item>
        <item>
            <title>PS3 and parallell programming</title>
            <pubDate>Thu, 26 May 2005 15:18:00 +0000</pubDate>
            <link>https://www.librador.com/2005/05/26/PS3-and-parallell-programming/</link>
            <guid>https://www.librador.com/2005/05/26/PS3-and-parallell-programming/</guid>
            <description>&lt;p&gt;The demos of the Playstation 3 from E3 raised by interest in that machine. I have read a little
on its CPU architecture, which seems quite novel. It uses IBM&#x27;s Cell architecture - which is based
on processor cells containing nine CPU cores. One of the CPU cores is likely to be something like a
PowerPC processor, and the remaining eight cores are powerful vector processors, each with its own
256 KB of memory and DMA channels to the main memory. Several cells can be connected through
high-speed buses, ethernet or whatever and work as a multi-processor system. This is based on &lt;a href=&quot;http:&#x2F;&#x2F;www.blachford.info&#x2F;computer&#x2F;Cells&#x2F;Cell0.html&quot;&gt;Nicholas Blachford&#x27;s interpretation of
the patent documents&lt;&#x2F;a&gt;. He&#x27;s very enthusiastic about the processor. There is also &lt;a href=&quot;http:&#x2F;&#x2F;www.realworldtech.com&#x2F;page.cfm?ArticleID=RWT021005084318&quot;&gt;this article&lt;&#x2F;a&gt;, but I
haven&#x27;t got the time to read it yet.&lt;&#x2F;p&gt;
&lt;p&gt;The design philosophy for these processors is centered around simplicity and speed.
By making the processor simple, they can make it faster. This places more of the burden
on the programmer and&#x2F;or the compiler, just like the RISC philosophy compared to CISC.
RISC is old news and should be no problem for a good compiler, but we as programmers are
currently facing another problem: New processor architectures utilize different kinds of
multithreading to increase speed. It is no longer as easy to pump up the clock frequencies of
the CPUs, so hardware developers go other routes, using hyperthreading, multicore or multiple
CPUs to increase the power of the system. This requires the software to explicitly handle
parallelism, e.g. by multithreading to get any performance. There is no widespread compiler
that can generate multithreaded code automatically, and with today&#x27;s popular programming
languages it may take time before we see one. Instead, we must take care of the parallelism
explicitly in our code.&lt;&#x2F;p&gt;
&lt;p&gt;On this problem, Herb Stutter says that
&lt;a href=&quot;http:&#x2F;&#x2F;www.gotw.ca&#x2F;publications&#x2F;concurrency-ddj.htm&quot;&gt;The Free Lunch Is Over&lt;&#x2F;a&gt;.
We programmers can no longer rely on Moore&#x27;s law (which isn&#x27;t a law anyway, it&#x27;s just a
historical observation) to get us out of performance problems. We need to grasp the concepts
of parallelism. The CPU manufacturers are going down that path, and we&#x27;ll have to follow.&lt;&#x2F;p&gt;
&lt;p&gt;This is a huge problem, since parallel programming is hard to do correcly and no popular
programming languages support it very well. Yes, Java has threads and synchronization built-in,
but they are low-level concepts and not very simple to utilize. I guess there are many &quot;academic&quot;
programming languages with good support for parallelism. Perhaps one or a few of these will find
its way to the mainstream. Otherwise the currently popular languages will have to adapt.&lt;&#x2F;p&gt;
&lt;p&gt;Back to the Playstation 3. It looks like it will be mighty cool. The Cell architecture seems
to be the right way to go for a game console, as games often rely on lots and lots of vector
calculations, and not all of them are for the graphics, so it makes no sense do do them on the
graphics chip. (Currently, the GPU is sometimes used for physics calculations or even data encryption.)
I guess we can&#x27;t rely very much on the compiler to utilize the new hardware very well, so PS3 programmers
will probably need to get their hands dirty with the hardware specifics. But that&#x27;s not necessarily a bad
thing. Getting dirty is fun! (Which incidentally is the theme of Via&#x27;s (the detergent) current
ad campaign on Swedish TV and in Stockholm&#x27;s subway.)&lt;&#x2F;p&gt;
</description>
        </item>
    </channel>
</rss>
