<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Peter Stuifzand</title>
    <link>https://peterstuifzand.nl/</link>
    <description>Recent content on Peter Stuifzand</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sun, 02 Aug 2026 23:43:08 +0200</lastBuildDate>
    <atom:link href="https://peterstuifzand.nl/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Don&#39;t Use AI for Writing</title>
      <link>https://peterstuifzand.nl/2026/08/02/dont-use-ai-for-writing/</link>
      <pubDate>Sun, 02 Aug 2026 23:43:08 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2026/08/02/dont-use-ai-for-writing/</guid>
      <description>&lt;p&gt;Writing is a useful skill to develop. It can help you discover what you think,&#xA;develop judgment, and become a critical thinker. Writing can also be pleasurable&#xA;in itself. You can feel the ownership of the results of your writing.&lt;/p&gt;&#xA;&lt;p&gt;AI is there as a sharp contrast to us as beginners of writing. The ease with&#xA;which AI generates plausible and polished text is attractive. The pressure to&#xA;take the shortcut and have AI suggest ideas, rewrite your text, or generate it&#xA;whole, can be hard to resist and it is the biggest barrier for us to keep&#xA;developing our writing skills.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Doing Things Badly</title>
      <link>https://peterstuifzand.nl/2026/08/02/doing-things-badly/</link>
      <pubDate>Sun, 02 Aug 2026 15:54:50 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2026/08/02/doing-things-badly/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;If a thing is worth doing, it is worth doing badly.&lt;br&gt;&#xA;&amp;ndash; G.K. Chesterton&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;This quote shows that we need room to do things badly.&lt;/p&gt;&#xA;&lt;p&gt;I read this quote in a book about writing essays. So I thought how am I going to&#xA;brainstorm about this idea. I opened TLdraw and wrote the quote in a rectangle.&#xA;My next thought was to use a different tool, with which I could brainstorm more&#xA;efficiently: a mindmap or outliner.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Questions for Notes</title>
      <link>https://peterstuifzand.nl/2026/08/02/questions-for-notes/</link>
      <pubDate>Sun, 02 Aug 2026 15:38:41 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2026/08/02/questions-for-notes/</guid>
      <description>&lt;p&gt;I want to get more value from my Zettelkasten. When you see the notes as being&#xA;part of a tree, then there are three directions to go: Up, Down, and Horizontal.&#xA;Each direction has way to get more value by finding the questions and answers&#xA;related to the current card.&lt;/p&gt;&#xA;&lt;p&gt;Down is the easiest way to go. When you go down this means that you ask a&#xA;question about the current card. Then you write new cards for each of the&#xA;answers to that question.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Splitting Notes Branches</title>
      <link>https://peterstuifzand.nl/til/splitting-branches/</link>
      <pubDate>Sun, 17 Aug 2025 23:16:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/til/splitting-branches/</guid>
      <description>&lt;p&gt;Splitting branches of notes too high up, makes installing notes more difficult.&lt;/p&gt;&#xA;&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;&#xA;&lt;p&gt;I have a branch &amp;ldquo;1050 Critical Thinking&amp;rdquo; and the card has a definition. If I&#xA;want to add another definition for critical thinking, I need to create a card&#xA;&amp;ldquo;1050A Critical Thinking&amp;rdquo; with the new definition.&lt;/p&gt;&#xA;&lt;p&gt;Now I need to think about installing new cards in the 1050 or the 1050A branch.&lt;/p&gt;&#xA;&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;&#xA;&lt;p&gt;If I create the definition as a card below 1050, for example 1050/16, I can add&#xA;the new definition as card 1050/16A. And furthermore all new cards can be&#xA;placed under 1050.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My top-down method for expanding notes</title>
      <link>https://peterstuifzand.nl/2025/08/17/my-top-down-method-for-expanding-notes/</link>
      <pubDate>Sun, 17 Aug 2025 21:31:15 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2025/08/17/my-top-down-method-for-expanding-notes/</guid>
      <description>&lt;p&gt;Ever stare at your notes and wonder how to develop them further? I was reading&#xA;&lt;a href=&#34;https://www.goodreads.com/book/show/33206.The_Minto_Pyramid_Principle&#34;&gt;The Pyramid Principle&lt;/a&gt; and it clicked for me. The book mentions the&#xA;top-down approach for writing articles. You start with the main idea and then&#xA;build up the argument. It seems to me that the Zettelkasten is also a good fit&#xA;for this approach.&lt;/p&gt;&#xA;&lt;p&gt;The Pyramid Principle uses inductive arguments. This means grouping multiple&#xA;items of the same type under a plural noun like &amp;ldquo;claims&amp;rdquo;, &amp;ldquo;answers&amp;rdquo;, &amp;ldquo;steps&amp;rdquo;,&#xA;or &amp;ldquo;consequences&amp;rdquo;. This creates a hierarchy that can be built top-down,&#xA;starting with the main idea and then building up the supporting ideas. The&#xA;Zettelkasten makes this possible by letting you start with a note and link the&#xA;supporting notes to it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Semantic versioning is outnumbered by inherent conflict</title>
      <link>https://peterstuifzand.nl/2025/08/15/semantic-versioning-is-outnumbered-by-inherent-conflict/</link>
      <pubDate>Fri, 15 Aug 2025 23:49:37 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2025/08/15/semantic-versioning-is-outnumbered-by-inherent-conflict/</guid>
      <description>&lt;p&gt;We version our code with &lt;a href=&#34;https://www.semver.org&#34;&gt;Semantic versioning&lt;/a&gt;. Semantic&#xA;versioning adds structure and rules for working with versions. Semantic&#xA;versioning promises to solve the dependency hell problem. According to the&#xA;website, dependency hell is that sometimes dependencies are specified too&#xA;loosely, compatibility is assumed with too many future versions. When the&#xA;dependency is too strict, you have to update the package to be able to use new&#xA;version. And with version numbers following the rules, the promise is they will&#xA;reliably communicate compatibility information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why I procrastinate by thinking about frameworks instead of sharing my opinions</title>
      <link>https://peterstuifzand.nl/2025/08/11/why-i-procrastinate-by-thinking-about-frameworks-instead-of-sharing-my-opinions/</link>
      <pubDate>Mon, 11 Aug 2025 23:50:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2025/08/11/why-i-procrastinate-by-thinking-about-frameworks-instead-of-sharing-my-opinions/</guid>
      <description>&lt;p&gt;When I take notes, I look at how I work and the workflows. I try to find how to&#xA;take more and better notes. This makes me feel productive and competent. But&#xA;this meta-work is also what keeps me safe. Why do I keep choosing meta-work&#xA;over real work?&lt;/p&gt;&#xA;&lt;p&gt;When I&amp;rsquo;m productive on the safe meta-level, I avoid the risks of the practical&#xA;level. When I form and publish my opinions I take the risk that will lead to&#xA;real competence.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to transform your notes from dead storage to thinking partner</title>
      <link>https://peterstuifzand.nl/2025/07/27/how-to-transform-your-notes-from-dead-storage-to-thinking-partner/</link>
      <pubDate>Sun, 27 Jul 2025 12:42:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2025/07/27/how-to-transform-your-notes-from-dead-storage-to-thinking-partner/</guid>
      <description>&lt;p&gt;People take notes to remember and learn from what they read. They highlight the&#xA;sections that interest them and comment on those notes. However, even when we&#xA;take notes about our opinions about these highlights, we find ourselves with a&#xA;big box of notes that don&amp;rsquo;t add to our lives. The notes exist as dead storage&#xA;and gather dust.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-to-prevent-your-notes-from-gathering-dust-and-becoming-dead-storage&#34;&gt;How to prevent your notes from gathering dust and becoming dead storage?&lt;/h2&gt;&#xA;&lt;p&gt;By listening (in your mind) for the implied questions that a note suggests, you&#xA;gain the opportunity to answer these questions. When you answer these&#xA;questions, you gain understanding and collect new ideas and generate arguments&#xA;to support other ideas. This process transforms your notes from dead storage to&#xA;an active thinking partner.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI attribution undermines professional accountability</title>
      <link>https://peterstuifzand.nl/2025/07/20/ai-attribution-undermines-professional-accountability/</link>
      <pubDate>Sun, 20 Jul 2025 22:34:54 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2025/07/20/ai-attribution-undermines-professional-accountability/</guid>
      <description>&lt;p&gt;AI tools like ChatGPT, Claude, and Gemini have changed how developers solve&#xA;problems. We use them to debug complex issues, explore architectural patterns,&#xA;and generate boilerplate code. These tools have become as much part of our&#xA;workflow as Stack Overflow or documentation searches once were.&lt;/p&gt;&#xA;&lt;p&gt;However, a troubling pattern has emerged in how we present AI-assisted research.&#xA;Developers share content with disclaimers like &amp;ldquo;I asked ChatGPT and here&amp;rsquo;s what&#xA;it said&amp;hellip;&amp;rdquo; or &amp;ldquo;AI suggested this approach&amp;hellip;&amp;rdquo; This attribution appears&#xA;transparent but actually undermines professional responsibility.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing in Zettelkasten</title>
      <link>https://peterstuifzand.nl/til/writing-in-zettelkasten/</link>
      <pubDate>Sat, 19 Jul 2025 21:21:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/til/writing-in-zettelkasten/</guid>
      <description>&lt;p&gt;I read the book The Pyramid Principle by Barbara Minto and specifically a&#xA;section about how build to a pyramid structure from the bottom-up. She says that&#xA;starting from the bottom-up is more difficult. I think that it is more difficult&#xA;to start from the bottom, because you don&amp;rsquo;t have the raw materials.&lt;/p&gt;&#xA;&lt;p&gt;The raw materials the ideas to build the structure. When you instead start from&#xA;the top-down, you notice which (types of) ideas you are missing to answer the&#xA;question from the note above.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My First Til</title>
      <link>https://peterstuifzand.nl/til/my-first-til/</link>
      <pubDate>Sun, 06 Jul 2025 12:11:27 +0200</pubDate>
      <guid>https://peterstuifzand.nl/til/my-first-til/</guid>
      <description>&lt;p&gt;TIL how to use Gemini to write a template for TIL. It was possible, but I didn&amp;rsquo;t get the result I wanted.&#xA;So in the end I used the templates from the other sections.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Counter, Tensor and View</title>
      <link>https://peterstuifzand.nl/garden/counter/</link>
      <pubDate>Sat, 01 Feb 2025 23:15:12 +0100</pubDate>
      <guid>https://peterstuifzand.nl/garden/counter/</guid>
      <description>&lt;p&gt;The &lt;code&gt;succ&lt;/code&gt; function can be called &lt;code&gt;prod(max)&lt;/code&gt; times. The function can also be&#xA;written with a carry or overflow &amp;ldquo;bit&amp;rdquo;. Then when &lt;code&gt;i == len(counter)&lt;/code&gt; the return&#xA;value should be &lt;code&gt;counter, True&lt;/code&gt;. The return value of the last line,&#xA;&lt;code&gt;counter, False&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;succ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;counter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This function can be used to simulate multiple for-loops, where every element of&#xA;&lt;code&gt;max&lt;/code&gt; notes the number of loops. The &lt;code&gt;i&lt;/code&gt; return value, shows which for-loop just&#xA;overflowed. This can be used to simulate a step in that loop.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hundred Year App</title>
      <link>https://peterstuifzand.nl/2024/11/03/hundred-year-app/</link>
      <pubDate>Sun, 03 Nov 2024 10:56:03 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2024/11/03/hundred-year-app/</guid>
      <description>&lt;p&gt;In the video &lt;a href=&#34;https://www.youtube.com/watch?v=lASLZ9TgXyc&#34;&gt;Build the Hundred-Year Web Service with htmx&lt;/a&gt; Alexander&#xA;Petros talks about how to build a hundred-year web service. He talks about how&#xA;when you want to build, use and maintain a web app in a hundred, you should not&#xA;have to ask permission to deploy your app.&lt;/p&gt;&#xA;&lt;p&gt;I saw this video a few weeks after my apps were removed from Google Play Store.&#xA;I had not made the changes to the app that were necessary to keep them on the&#xA;Play Store.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Category of 3 bit binary numbers</title>
      <link>https://peterstuifzand.nl/garden/category-theory/cat-b3/</link>
      <pubDate>Thu, 26 Sep 2024 09:32:01 +0200</pubDate>
      <guid>https://peterstuifzand.nl/garden/category-theory/cat-b3/</guid>
      <description>&lt;p&gt;Objects are three bit binary numbers. Morphisms exists when you can flip some&#xA;bits from 1 to 0 (but not the other way around).&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-dot&#34; data-lang=&#34;dot&#34;&gt;digraph G {&#xA;&#xA;&amp;#34;000&amp;#34;;&#xA;&amp;#34;001&amp;#34;;&#xA;&amp;#34;010&amp;#34;;&#xA;&amp;#34;011&amp;#34;;&#xA;&#xA;&amp;#34;100&amp;#34;;&#xA;&amp;#34;101&amp;#34;;&#xA;&amp;#34;110&amp;#34;;&#xA;&amp;#34;111&amp;#34;;&#xA;&#xA;&amp;#34;001&amp;#34; -&amp;gt; &amp;#34;000&amp;#34;;&#xA;&amp;#34;010&amp;#34; -&amp;gt; &amp;#34;000&amp;#34;;&#xA;&amp;#34;100&amp;#34; -&amp;gt; &amp;#34;000&amp;#34;;&#xA;&#xA;&amp;#34;011&amp;#34; -&amp;gt; &amp;#34;001&amp;#34;;&#xA;&amp;#34;011&amp;#34; -&amp;gt; &amp;#34;010&amp;#34;;&#xA;&#xA;&amp;#34;111&amp;#34; -&amp;gt; &amp;#34;101&amp;#34;;&#xA;&amp;#34;111&amp;#34; -&amp;gt; &amp;#34;110&amp;#34;;&#xA;&amp;#34;111&amp;#34; -&amp;gt; &amp;#34;011&amp;#34;;&#xA;&#xA;&amp;#34;101&amp;#34; -&amp;gt; &amp;#34;100&amp;#34;;&#xA;&amp;#34;101&amp;#34; -&amp;gt; &amp;#34;001&amp;#34;;&#xA;&amp;#34;110&amp;#34; -&amp;gt; &amp;#34;100&amp;#34;;&#xA;&amp;#34;110&amp;#34; -&amp;gt; &amp;#34;010&amp;#34;;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Streaming AI with htmx</title>
      <link>https://peterstuifzand.nl/garden/htmx-sse-streaming-ai/</link>
      <pubDate>Thu, 04 Apr 2024 07:00:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/garden/htmx-sse-streaming-ai/</guid>
      <description>&lt;p&gt;Below is a simplified chat bubble for an conversation with an LLM.&lt;/p&gt;&#xA;&lt;p&gt;This template is written in &lt;a href=&#34;https://templ.guide/&#34;&gt;Templ&lt;/a&gt; and uses &lt;a href=&#34;https://htmx.org/&#34;&gt;htmx&lt;/a&gt; to fill the&#xA;chat bubble with incoming content. The incoming content is sent with SSE using&#xA;the v2 version &lt;a href=&#34;https://pkg.go.dev/github.com/r3labs/sse/v2&#34;&gt;r3labs/sse&lt;/a&gt; Server&#xA;Sent Events server. This version supports &lt;code&gt;SplitData&lt;/code&gt; which makes it easier to&#xA;sent the HTML for htmx. Adding a &lt;code&gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;/code&gt; around every token helps with&#xA;the spaces in the tokens.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-templ&#34; data-lang=&#34;templ&#34;&gt;templ StreamingChatBubble(url string, message string) {&#xA;    &amp;lt;div&amp;gt;&#xA;        &amp;lt;span&amp;gt;user&amp;lt;/span&amp;gt;&#xA;        &amp;lt;div&amp;gt;{{message}}&amp;lt;/div&amp;gt;&#xA;    &amp;lt;/div&amp;gt;&#xA;    &amp;lt;div&#xA;        hx-ext=&amp;#34;sse&amp;#34;&#xA;        sse-connect={ url }&#xA;        sse-swap=&amp;#34;done&amp;#34;&#xA;        hx-swap=&amp;#34;outerHTML&amp;#34;&#xA;    &amp;gt;&#xA;        &amp;lt;span&amp;gt;assistant&amp;lt;/span&amp;gt;&#xA;        &amp;lt;div&#xA;            sse-swap=&amp;#34;message&amp;#34;&#xA;            hx-swap=&amp;#34;beforeend&amp;#34;&#xA;        &amp;gt;&amp;lt;/div&amp;gt;&#xA;    &amp;lt;/div&amp;gt;&#xA;}&#xA;&#xA;templ StreamingChatComplete(message string) {&#xA;    &amp;lt;div class=&amp;#34;...&amp;#34;&amp;gt;&#xA;        &amp;lt;span&amp;gt;assistant&amp;lt;/span&amp;gt;&#xA;        &amp;lt;div&amp;gt;{{message}}&amp;lt;/div&amp;gt;&#xA;    &amp;lt;/div&amp;gt;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;url&lt;/code&gt; contains the SSE url with a &lt;code&gt;stream&lt;/code&gt; parameter. The Go web server uses&#xA;the code to find the right channel for updates. The updates to the channel are&#xA;sent to the frontend. Each of the messages has a type. The messages with partial&#xA;LLM response have the type &lt;code&gt;message&lt;/code&gt;. And then when all partial responses are&#xA;sent, the &lt;code&gt;done&lt;/code&gt; message is sent with the complete chat bubble. This also&#xA;removes the connection to the message channel.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Embeddings Similarity Search</title>
      <link>https://peterstuifzand.nl/2024/03/01/embeddings-similarity-search/</link>
      <pubDate>Fri, 01 Mar 2024 21:06:13 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2024/03/01/embeddings-similarity-search/</guid>
      <description>&lt;p&gt;For a simple note-taking application I wanted to try out embeddings and&#xA;similarity search to find similar notes based on the content. In this post I&#xA;will show how you how to use the&#xA;&lt;a href=&#34;https://pkg.go.dev/gonum.org/v1/gonum@v0.14.0/blas/blas32&#34;&gt;gonum.org/v1/gonum/blas/blas32&lt;/a&gt;&#xA;package to calculate with embeddings.&lt;/p&gt;&#xA;&lt;h2 id=&#34;get-your-embeddings&#34;&gt;Get your embeddings&lt;/h2&gt;&#xA;&lt;p&gt;When I started I used the OpenAI embeddings and saved these in the sqlite&#xA;database with the notes themselves. At the moment I keep all embeddings in&#xA;memory when the applications starts and new embeddings are added to the map when&#xA;new notes are created or when notes are updated.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deleting in Note Taking Apps</title>
      <link>https://peterstuifzand.nl/2023/09/18/deleting-in-note-taking-apps/</link>
      <pubDate>Mon, 18 Sep 2023 20:40:25 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2023/09/18/deleting-in-note-taking-apps/</guid>
      <description>&lt;p&gt;It seems I&amp;rsquo;m sentimental. I have difficulties with Archiving or Deleting&#xA;documents from the Readwise Reader Inbox. I&amp;rsquo;m always looking at the conflicts in&#xA;my live. and this seems to be one of them.&lt;/p&gt;&#xA;&lt;p&gt;The problem in &lt;a href=&#34;https://readwise.io/i/peter14&#34;&gt;Readwise Reader&lt;/a&gt; is that I want&#xA;to remove, or archive documents. But sometimes these documents contain something&#xA;that I want to act on. If I Archive a document, I won&amp;rsquo;t see it again.&lt;/p&gt;&#xA;&lt;p&gt;In Readwise it&amp;rsquo;s possible to create highlights, that can be resurfaced. For that&#xA;you need to process your daily highlights. I did this for some time. But also&#xA;the highlight is perhaps not enough to take action. Perhaps I should create&#xA;projects and next-actions to take action, define an outcome and action steps.&#xA;Would this be enough?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apply TOC to highlighting, note-taking and knowledge gaps</title>
      <link>https://peterstuifzand.nl/2023/08/12/apply-toc-to-highlighting-note-taking-and-knowledge-gaps/</link>
      <pubDate>Sat, 12 Aug 2023 16:25:01 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2023/08/12/apply-toc-to-highlighting-note-taking-and-knowledge-gaps/</guid>
      <description>&lt;p&gt;The last few weeks I have been looking at Theory of Constrains (TOC). Today I&#xA;noticed that with note-taking there is this conflict between just taking notes&#xA;and taking notes to solve problems.&lt;/p&gt;&#xA;&lt;p&gt;TOC is a management philosophy that emphasizes the identification and management&#xA;of constraints that hinder an organization&amp;rsquo;s ability to achieve its goals.&#xA;Instead of organizations you can also look at yourself and your systems and&#xA;problems.&lt;/p&gt;&#xA;&lt;p&gt;The Process of Ongoing Improvement in TOC involves five focusing steps:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proconcloud method</title>
      <link>https://peterstuifzand.nl/garden/proconcloud/</link>
      <pubDate>Sat, 15 Jul 2023 09:04:14 +0200</pubDate>
      <guid>https://peterstuifzand.nl/garden/proconcloud/</guid>
      <description>&lt;h2 id=&#34;necessity-assumptions&#34;&gt;Necessity assumptions&lt;/h2&gt;&#xA;&lt;p&gt;Why is it necessary?&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Our attention is &lt;strong&gt;limited&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;There is a &lt;strong&gt;gap&lt;/strong&gt; between how well we make decisions and how well we can&#xA;make decisions.&lt;/li&gt;&#xA;&lt;li&gt;We want to make better decisions to be able to live a meaningful life.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;strategy&#34;&gt;Strategy&lt;/h2&gt;&#xA;&lt;p&gt;What for?&lt;/p&gt;&#xA;&lt;p&gt;We want to avoid the following 5 decision mistakes.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Waste your limited attention&lt;/li&gt;&#xA;&lt;li&gt;Suggest a solution prematurely or blame other people&lt;/li&gt;&#xA;&lt;li&gt;Only try one solution, or use a compromise&lt;/li&gt;&#xA;&lt;li&gt;Ignore valid reservations from stakeholders&lt;/li&gt;&#xA;&lt;li&gt;Not learning from experience and performing the wrong experiments&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;parallel-assumptions&#34;&gt;Parallel assumptions&lt;/h2&gt;&#xA;&lt;p&gt;Why is it possible?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Strategy and tactics</title>
      <link>https://peterstuifzand.nl/garden/strategy-and-tactics/</link>
      <pubDate>Wed, 12 Jul 2023 21:37:12 +0200</pubDate>
      <guid>https://peterstuifzand.nl/garden/strategy-and-tactics/</guid>
      <description>&lt;h2 id=&#34;the-template&#34;&gt;The template&lt;/h2&gt;&#xA;&lt;h3 id=&#34;title&#34;&gt;Title&lt;/h3&gt;&#xA;&lt;p&gt;The title of the strategy (and tactic).&lt;/p&gt;&#xA;&lt;h3 id=&#34;necessary-assumptions&#34;&gt;Necessary assumptions&lt;/h3&gt;&#xA;&lt;p&gt;Why is this necessary?&lt;/p&gt;&#xA;&lt;h3 id=&#34;strategy&#34;&gt;Strategy&lt;/h3&gt;&#xA;&lt;p&gt;What for?&lt;/p&gt;&#xA;&lt;h3 id=&#34;parallel-assumptions&#34;&gt;Parallel assumptions&lt;/h3&gt;&#xA;&lt;p&gt;Why is it possible? Why is it difficult?&lt;/p&gt;&#xA;&lt;h3 id=&#34;tactic&#34;&gt;Tactic&lt;/h3&gt;&#xA;&lt;p&gt;How?&lt;/p&gt;&#xA;&lt;h3 id=&#34;sufficiency-assumptions&#34;&gt;Sufficiency assumptions&lt;/h3&gt;&#xA;&lt;p&gt;Why is sufficient?&lt;/p&gt;&#xA;&lt;h2 id=&#34;resources&#34;&gt;Resources&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://goldrattresearchlabs.com/pdf/other-authors/_Strategy_and_Tactics__-_by_Eli_Goldratt,_Rami_Gol.PDF&#34;&gt;The TOC approach to Strategy and Tactics&lt;/a&gt;&#xA;by Eli Goldratt, Rami Goldratt, Eli Abramov.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=pT1KJq-bcqo&#34;&gt;What is Strategy &amp;amp; Tactic Trees and how do you build them the TOC way&lt;/a&gt;&#xA;by Dr Alan Barnard.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Goal tree color scheme</title>
      <link>https://peterstuifzand.nl/garden/goal-tree-color-scheme/</link>
      <pubDate>Sat, 06 May 2023 09:59:21 +0200</pubDate>
      <guid>https://peterstuifzand.nl/garden/goal-tree-color-scheme/</guid>
      <description>&lt;p&gt;A nice way to use the goal tree is to use a color scheme to show which goals are&#xA;already fulfilled and which are not. A schema that can be used is red, orange,&#xA;green.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;color&lt;/th&gt;&#xA;          &lt;th&gt;when&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Red&lt;/td&gt;&#xA;          &lt;td&gt;The condition is not fulfilled&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Orange&lt;/td&gt;&#xA;          &lt;td&gt;The condition is partially fulfilled&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Green&lt;/td&gt;&#xA;          &lt;td&gt;The condition is completely and satisfactorily fulfilled&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;The nice thing about the tree and the color scheme is that when you have colored&#xA;the leaf nodes, you can then combine the colors upwards. When all child nodes&#xA;have the same color, use that colors, when it&amp;rsquo;s a mix you use Orange.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Goal Tree</title>
      <link>https://peterstuifzand.nl/garden/goal-tree/</link>
      <pubDate>Sat, 06 May 2023 09:25:14 +0200</pubDate>
      <guid>https://peterstuifzand.nl/garden/goal-tree/</guid>
      <description>&lt;p&gt;A Goal Tree consists of nodes and arrows. The nodes are your goals, critical&#xA;success factors and necessary conditions. The arrows are the logical&#xA;connections. These arrows connect goals with the sub goals.&lt;/p&gt;&#xA;&lt;p&gt;An arrow can be read as &amp;ldquo;In order to have X, we must have Y&amp;rdquo;. In a small&#xA;diagram, this looks like: &lt;code&gt;X ← Y&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You start with the Goal. The Critical Success Factors are necessary to reach&#xA;your goal. And you have Necessary Conditions that are necessary to reach the&#xA;Critical Success Factors.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Improve a Goal tree</title>
      <link>https://peterstuifzand.nl/garden/improve-goal-tree/</link>
      <pubDate>Sat, 06 May 2023 08:54:37 +0200</pubDate>
      <guid>https://peterstuifzand.nl/garden/improve-goal-tree/</guid>
      <description>&lt;p&gt;To improve a &lt;a href=&#34;https://peterstuifzand.nl/garden/goal-tree/&#34;&gt;Goal tree&lt;/a&gt;, you need to examine the&#xA;items in the tree. Using a technique similar to five why&amp;rsquo;s you can improve the&#xA;goal tree.&lt;/p&gt;&#xA;&lt;p&gt;Ask the question: why do you need it?&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-garden-shed&#34;&gt;Example: garden shed&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s look at the goal of &amp;ldquo;Garden shed&amp;rdquo;. Why do I need a garden shed? Because I&#xA;need to store my garden tools. Why do I need to store my tools? I want to have a&#xA;clean garden. Why do I need to have a clean garden? To have a safe garden for&#xA;the children to play.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tasks and notes</title>
      <link>https://peterstuifzand.nl/garden/tasks-and-notes/</link>
      <pubDate>Sun, 16 Apr 2023 21:06:13 +0200</pubDate>
      <guid>https://peterstuifzand.nl/garden/tasks-and-notes/</guid>
      <description>&lt;p&gt;In Jira, an issue is a task and a note at the same time. The issue is a place to&#xA;focus the information to the point where you can complete some piece of work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Four obstacles to thinking clearly</title>
      <link>https://peterstuifzand.nl/garden/four-obstacles-to-clear-thinking/</link>
      <pubDate>Sat, 25 Mar 2023 11:46:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/garden/four-obstacles-to-clear-thinking/</guid>
      <description>&lt;p&gt;These are four obstacles to clear thinking.&lt;/p&gt;&#xA;&lt;h2 id=&#34;reality-is-complex&#34;&gt;Reality is complex&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Reality is complex and you need complex solutions to solve problems.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Eli Goldratt defined the Principle of Inherit Simplicity. This means that&#xA;reality is inheritly simple. Because of this simplicity, conflicts can be&#xA;resolved using the following steps.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Clarify the conflict&lt;/li&gt;&#xA;&lt;li&gt;Surface the assumptions&lt;/li&gt;&#xA;&lt;li&gt;Challenge the wrong assumptions&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;There is a relation with shadow work. In shadow work you should also keep&#xA;conflicts in your mind and try to merge them. One way to find ways to solve&#xA;conflicts is to find assumptions and try to find where your thinking is wrong.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Conflicts</title>
      <link>https://peterstuifzand.nl/garden/conflicts/</link>
      <pubDate>Thu, 23 Mar 2023 12:11:06 +0100</pubDate>
      <guid>https://peterstuifzand.nl/garden/conflicts/</guid>
      <description>&lt;p&gt;The Theory of Constraints talks a lot about conflicts. Conflicts are what keeps&#xA;us from becoming better. On part to becoming better at TOC is to know when you&#xA;are in a conflict. There are certain words that can help you to notice a&#xA;conflict.&lt;/p&gt;&#xA;&lt;p&gt;TOC often talks about the large conflicts. These are the conflicts that most&#xA;people have a problem with. When you dissolve these conflicts you help the most&#xA;people.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo and Tailwind</title>
      <link>https://peterstuifzand.nl/garden/hugo-and-tailwind/</link>
      <pubDate>Sat, 18 Mar 2023 22:41:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/garden/hugo-and-tailwind/</guid>
      <description>&lt;p&gt;This current website is built with Hugo. I wanted to try to build my own theme&#xA;with Tailwind. With Hugo it is not very easy to use Tailwind. The biggest&#xA;problem I found was that Hugo does not reload CSS with livereload.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Current Reality Tree</title>
      <link>https://peterstuifzand.nl/garden/current-reality-tree/</link>
      <pubDate>Thu, 29 Dec 2022 13:10:30 +0100</pubDate>
      <guid>https://peterstuifzand.nl/garden/current-reality-tree/</guid>
      <description>&lt;p&gt;The Current Reality Tree is a sufficiency tree shows (part of) the current&#xA;situation of a system. It is used to model how causes and effects lead to&#xA;certain undesirable effects (UDE). The arrows in the tree show which cause leads&#xA;to which effect.&lt;/p&gt;&#xA;&lt;p&gt;When there multiple arrows from a cause to an effect, then each cause creates&#xA;the effect by itself. Removing one of the causes will perhaps lessen the&#xA;effect, but not remove it completely.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Compatibility of Markdown in Logseq</title>
      <link>https://peterstuifzand.nl/garden/logseq-markdown/</link>
      <pubDate>Wed, 28 Dec 2022 10:00:00 +0000</pubDate>
      <guid>https://peterstuifzand.nl/garden/logseq-markdown/</guid>
      <description>&lt;p&gt;These are some of my thoughts about Markdown in Logseq. In this note I try to&#xA;find the assumptions behind the conflict.&lt;/p&gt;&#xA;&lt;p&gt;This is thinking I did on my and is not associated with how Logseq will work now&#xA;or in the future, this also does not represent goals of the Logseq team. This is&#xA;what I think the goals could be.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-conflict&#34;&gt;The conflict&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/garden/logseq-markdown/conflict.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&#xA;&lt;details  class=&#34;group&#34;&gt;&#xA;    &lt;summary&#xA;        class=&#34;text-gray-800 font-bold cursor-pointer bg-lime-400 p-2 border dark:border-lime-200 rounded-md group-open:bg-lime-100&#34;&gt;&#xA;        Goal tree&#xA;    &lt;/summary&gt;&#xA;    &lt;p&gt;This is the goal tree, for some of the features we &amp;ldquo;need&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Logseq show brackets setting creates a conflict</title>
      <link>https://peterstuifzand.nl/2022/12/15/logseq-show-brackets-setting-conflict/</link>
      <pubDate>Thu, 15 Dec 2022 14:24:32 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2022/12/15/logseq-show-brackets-setting-conflict/</guid>
      <description>&lt;p&gt;With a setting, a conflict between two options becomes a choice (or compromise)&#xA;for the user, instead of a situation to be solved by the designer. The conflict&#xA;itself has not been evaporated.&lt;/p&gt;&#xA;&lt;p&gt;The checkbox to show or hide brackets in &lt;a href=&#34;https://www.logseq.com/&#34;&gt;Logseq&lt;/a&gt; is an&#xA;example of this. I use Logseq as an example, because it is the software that I&#xA;use daily and like a lot.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-conflict&#34;&gt;The conflict&lt;/h2&gt;&#xA;&lt;p&gt;When the setting enabled this improves the editing experience. The brackets are&#xA;already in the text and so the text doesn&amp;rsquo;t move as much when you click the text&#xA;to edit. This fills the need for a better editing experience.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An easy method I learned for first time users to start using Logseq for real</title>
      <link>https://peterstuifzand.nl/2022/12/10/an-easy-method-i-learned-for-first-time-users-to-start-using-logseq-for-real/</link>
      <pubDate>Sat, 10 Dec 2022 21:41:55 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2022/12/10/an-easy-method-i-learned-for-first-time-users-to-start-using-logseq-for-real/</guid>
      <description>&lt;p&gt;I often see people searching for the perfect structure or method to use a  tool&#xA;like Logseq. You don&amp;rsquo;t need that. You only need a simple structure and the will&#xA;and habit to fill daily notes pages. Logseq does not need much structure to&#xA;become useful. And when you use it more, it becomes even more useful.&lt;/p&gt;&#xA;&lt;p&gt;The daily note page makes Logseq powerful without the need for much structure.&#xA;The following example shows a daily note page. I added a few lines to show how&#xA;it could look.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CRDT Tree Algorithm</title>
      <link>https://peterstuifzand.nl/2022/12/02/crdt-tree-algorithm/</link>
      <pubDate>Fri, 02 Dec 2022 22:48:22 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2022/12/02/crdt-tree-algorithm/</guid>
      <description>&lt;p&gt;I found a piece of code and algorithm that makes it possible to collaborate&#xA;online on tree structures. I have been using &lt;a href=&#34;https://logseq.com/&#34;&gt;Logseq&lt;/a&gt;&#xA;for the last few months and this algorithm seems to be a way to make&#xA;collaboration on an outliner possible.&lt;/p&gt;&#xA;&lt;p&gt;Evan Wallace &lt;a href=&#34;https://madebyevan.com/algos/crdt-mutable-tree-hierarchy/&#34;&gt;described this&#xA;algorithm&lt;/a&gt;. The page&#xA;also includes a demo application. I have rewritten this demo application to&#xA;&lt;a href=&#34;https://github.com/pstuifzand/crdt-tree-algorithm&#34;&gt;Go&lt;/a&gt; and implemented a&#xA;network protocol with &lt;a href=&#34;https://github.com/nanomsg/mangos/&#34;&gt;mangos&lt;/a&gt;. Mangos is a&#xA;nanomsg port in Go. Mangos can use websockets. This makes it possible to use a&#xA;Go backend server with nanomsg protocols to send the changes from other clients&#xA;back and forth between the clients. My implementation is just a prototype.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Switch to Netlify</title>
      <link>https://peterstuifzand.nl/2022/11/27/switch-to-netlify/</link>
      <pubDate>Sun, 27 Nov 2022 14:12:26 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2022/11/27/switch-to-netlify/</guid>
      <description>&lt;p&gt;I started with Digital Ocean apps &lt;a href=&#34;https://peterstuifzand.nl/2022/11/26/using-hugo-to-generate-my-website/&#34;&gt;yesterday&lt;/a&gt; to try out a new static website. I&#xA;found that it is not possible by default to have redirects. So I switched the&#xA;platform to Netlify. It is possible to add redirects there.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Hugo to generate my website</title>
      <link>https://peterstuifzand.nl/2022/11/26/using-hugo-to-generate-my-website/</link>
      <pubDate>Sat, 26 Nov 2022 22:58:31 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2022/11/26/using-hugo-to-generate-my-website/</guid>
      <description>&lt;p&gt;In the beginning my website blog was generated with a Ruby app, that I wrote&#xA;myself. Later I rewrote that app in Perl. It used the same file structure.&#xA;Today I converted my files to a &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; site, by copying the&#xA;files and adding YAML front matter. With Perl this is really easy. See&#xA;&lt;a href=&#34;https://peterstuifzand.nl/2022/11/26/using-hugo-to-generate-my-website/convert.pl&#34;&gt;convert.pl&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;index.yaml&lt;/code&gt; contains the title and date of the blog posts. Each &lt;code&gt;$doc&lt;/code&gt;&#xA;contains the name of the source file and the output file. As you can see it was&#xA;not hard to convert the structures from one to the other.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Year in review: 2019</title>
      <link>https://peterstuifzand.nl/2019/12/20/year-in-review-2019/</link>
      <pubDate>Fri, 20 Dec 2019 14:00:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2019/12/20/year-in-review-2019/</guid>
      <description>&lt;p&gt;I was always interested in the Year in Review posts from people. It looks like it is&#xA;something that you can&amp;rsquo;t create after the fact. You need to keep some&#xA;notes, and perhaps log data about the things you did. Some people keep count&#xA;of the number of emails sent and received or kilometers traveled. After the&#xA;fact, these kinds of details are rather hard to come by.&lt;/p&gt;&#xA;&lt;p&gt;To make this a great post, I will have to dig into the notes I made, the data&#xA;that I collected, and the posts I wrote on the other blog and combine these&#xA;into witty graphs and paragraphs of enjoyable words.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ekster: a microsub server</title>
      <link>https://peterstuifzand.nl/2018/12/31/ekster-a-microsub-server/</link>
      <pubDate>Mon, 31 Dec 2018 16:11:58 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2018/12/31/ekster-a-microsub-server/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/pstuifzand/ekster&#34;&gt;Ekster&lt;/a&gt; is a &lt;a href=&#34;https://indieweb.org/Microsub&#34;&gt;Microsub&lt;/a&gt; server. As far as I know Ekster was&#xA;the second implementation of a Microsub server.&lt;/p&gt;&#xA;&lt;p&gt;Microsub is a protocol for feed reader applications. Ekster fetches web pages&#xA;and feeds and gathers the entries into channels. A channel contains multiple&#xA;feeds, these feeds are combined into a timeline.&lt;/p&gt;&#xA;&lt;p&gt;Ekster can find entries from pages that are marked up with microformats. It&#xA;uses the go-microformats library to get the MF2 structure and converts these&#xA;microformat items to JF2. JF2 is a simplified version of MF2, which is easier&#xA;to display in a Microsub reader.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A tour of my Indieweb projects</title>
      <link>https://peterstuifzand.nl/2018/08/15/a-tour-of-my-indieweb-projects/</link>
      <pubDate>Wed, 15 Aug 2018 16:24:02 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2018/08/15/a-tour-of-my-indieweb-projects/</guid>
      <description>&lt;p&gt;Earlier this year I started to rebuild this website to work better with the Indieweb. At the same I build a new website &lt;a href=&#34;https://p83.nl/&#34;&gt;P83&lt;/a&gt; with Indieweb support from the start.&lt;/p&gt;&#xA;&lt;p&gt;This website is generated from static files with a system that I created the&#xA;first time when I started writing in the website. Not much has changed, except&#xA;that I some point a few years ago I rewrote the whole system in Perl.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing a WebSub hub</title>
      <link>https://peterstuifzand.nl/2018/01/31/writing-a-websub-hub/</link>
      <pubDate>Wed, 31 Jan 2018 20:58:02 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2018/01/31/writing-a-websub-hub/</guid>
      <description>&lt;p&gt;This week I&amp;rsquo;ve been writing a &lt;a href=&#34;https://w3.org/TR/websub/&#34;&gt;WebSub&lt;/a&gt; hub. It&amp;rsquo;s server program that receives&#xA;subscription and publish requests and sends notications to the subscribers&#xA;when a website changes. The website itself sends a request when the website changes.&#xA;This way the subscribers know when to update their feeds.&lt;/p&gt;&#xA;&lt;p&gt;Implementing the server is quite simple, especially with the help of a website that checks&#xA;your implementation, &lt;a href=&#34;https://websub.rocks/&#34;&gt;websub.rocks&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;WebSub Rocks! is a validator to help you test your WebSub implementation.&#xA;Several kinds of tests are available on the site.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Collection and select</title>
      <link>https://peterstuifzand.nl/2017/05/27/collection-and-select/</link>
      <pubDate>Sat, 27 May 2017 11:48:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2017/05/27/collection-and-select/</guid>
      <description>&lt;p&gt;Sometimes you need to get a lot of information from the database and you need it fast.&#xA;The way to get this information normally would be to use the Magento collection for the model.&#xA;It would look like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$collection&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Mage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;customer/customer&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getCollection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;addNameToSelect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;joinAttribute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;billing_city&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;customer/city&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;default_billing&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;left&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$collection&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$customer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// Use $customer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The problem with this way of getting the information is that it loads all customer information into memory, which can take a long time when you have many customers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>XML-lister</title>
      <link>https://peterstuifzand.nl/2016/03/31/xml-lister/</link>
      <pubDate>Thu, 31 Mar 2016 21:33:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2016/03/31/xml-lister/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/pstuifzand/magento-tools/blob/master/src/xml-lister.cpp&#34;&gt;XML lister&lt;/a&gt; is a small program that lists the elements, values and&#xA;attributes of XML files.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&#xA;&amp;lt;layout&amp;gt;&#xA;    &amp;lt;default&amp;gt;&#xA;        &amp;lt;reference name=&amp;quot;root&amp;quot;&amp;gt;&#xA;            &amp;lt;reference name=&amp;quot;content&amp;quot;&amp;gt;&#xA;                &amp;lt;block name=&amp;quot;product.info&amp;quot;&amp;gt;&#xA;                    &amp;lt;action method=&amp;quot;test&amp;quot;&amp;gt;&#xA;                        &amp;lt;param&amp;gt;test&amp;lt;/param&amp;gt;&#xA;                        &amp;lt;param2&amp;gt;test2&amp;lt;/param2&amp;gt;&#xA;                    &amp;lt;/action&amp;gt;&#xA;                &amp;lt;/block&amp;gt;&#xA;            &amp;lt;/reference&amp;gt;&#xA;        &amp;lt;/reference&amp;gt;&#xA;    &amp;lt;/default&amp;gt;&#xA;&amp;lt;/layout&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;XML lister will print the following list:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;layout&#xA;layout/default&#xA;layout/default/reference&#xA;layout/default/reference@name   root&#xA;layout/default/reference/reference&#xA;layout/default/reference/reference@name content&#xA;layout/default/reference/reference/block&#xA;layout/default/reference/reference/block@name   product.info&#xA;layout/default/reference/reference/block/action&#xA;layout/default/reference/reference/block/action@method  test&#xA;layout/default/reference/reference/block/action/param   test&#xA;layout/default/reference/reference/block/action&#xA;layout/default/reference/reference/block/action/param2  test2&#xA;layout/default/reference/reference/block/action&#xA;layout/default/reference/reference/block&#xA;layout/default/reference/reference&#xA;layout/default/reference&#xA;layout/default&#xA;layout&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;A few days ago I wanted to find out if there are places in Magento layout&#xA;XML files where &lt;code&gt;reference&lt;/code&gt; elements are used inside other &lt;code&gt;reference&lt;/code&gt;&#xA;elements. With XML lister it becomes really easy to find places like this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rewrite XML with xmlstarlet</title>
      <link>https://peterstuifzand.nl/2016/03/16/rewrite-xml-with-xmlstarlet/</link>
      <pubDate>Wed, 16 Mar 2016 14:23:32 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2016/03/16/rewrite-xml-with-xmlstarlet/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://xmlstar.sourceforge.net/&#34;&gt;XML Starlet&lt;/a&gt; is a program that makes transforming XML documents really simple.&lt;/p&gt;&#xA;&lt;p&gt;The command that you need to transform an XML document is the following.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;xmlstarlet tr &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&amp;lt;options&amp;gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &amp;lt;xsl-file&amp;gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;-p&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;-s &amp;lt;name&amp;gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;value&amp;gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &amp;lt;xml-file-or-uri&amp;gt; ... &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The XSL file that transforms a document to itself is this. It copies all elements, attributes and texts.&#xA;We can extend this file to remove, add, or transform elements.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; ?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;xsl:stylesheet&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;version=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1.0&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:xsl=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://www.w3.org/1999/XSL/Transform&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- IdentityTransform --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;xsl:template&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;match=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/ | @* | node()&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;xsl:copy&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;lt;xsl:apply-templates&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;select=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;@* | node()&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;/xsl:copy&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To &lt;strong&gt;remove an element&lt;/strong&gt;, we match an element and don&amp;rsquo;t call apply-elements inside&#xA;it. This example will remove the remove me element.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Removed Analytics</title>
      <link>https://peterstuifzand.nl/2014/11/06/removed-analytics/</link>
      <pubDate>Thu, 06 Nov 2014 15:02:08 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2014/11/06/removed-analytics/</guid>
      <description>&lt;p&gt;I just &lt;a href=&#34;http://scribbling.net/2014/10/16/short-form-blogging/&#34;&gt;removed Analytics&lt;/a&gt; from my website. It&amp;rsquo;s not important for me.&#xA;I don&amp;rsquo;t have the time to look at it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sorting DNS records</title>
      <link>https://peterstuifzand.nl/2014/09/04/sorting-dns-records/</link>
      <pubDate>Thu, 04 Sep 2014 10:33:44 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2014/09/04/sorting-dns-records/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t update my DNS records often, but when I do I like these records sorted.&lt;/p&gt;&#xA;&lt;p&gt;A DNS record consists of the following fields: domain name, type and prio (for&#xA;some types). I use these fields to determine the order of the records. That is&#xA;also the order in which these fields should be ordered.&lt;/p&gt;&#xA;&lt;p&gt;The first insight I had about sorting domains was that the domain names consist&#xA;of parts separated by a period. The domain names may be strings. But a domain&#xA;name is actually a reversed array of strings. We map the domain name from&#xA;&amp;ldquo;sub.example.com&amp;rdquo; to [ &amp;ldquo;com&amp;rdquo;, &amp;ldquo;example&amp;rdquo;, &amp;ldquo;sub&amp;rdquo; ]. This puts it in an order that&#xA;makes lexicographical compare work.  To compare domain names is to compare&#xA;these arrays of parts with a lexicographical compare function.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rotate one to the left</title>
      <link>https://peterstuifzand.nl/2014/08/18/rotate-one-to-the-left/</link>
      <pubDate>Mon, 18 Aug 2014 11:37:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2014/08/18/rotate-one-to-the-left/</guid>
      <description>&lt;p&gt;Last week I wrote a small function in Perl that rotates and array to left.&lt;/p&gt;&#xA;&lt;p&gt;The function takes the item from the front and appends it to the back.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# precondition: @list &amp;gt;= 1;&#xA;sub rotate_left_by_one {&#xA;    my $ar = shift;&#xA;    my $item = shift @$ar;&#xA;    push @$ar, $item;&#xA;    return;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;After calling this function as many times as the length of the array, it&#xA;leaves the items in the same order they started in. Every call to this function&#xA;puts a different item in the first location. I use it to compare this item to&#xA;the rest of the items.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Low level code</title>
      <link>https://peterstuifzand.nl/2014/05/23/low-level-code/</link>
      <pubDate>Fri, 23 May 2014 11:54:55 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2014/05/23/low-level-code/</guid>
      <description>&lt;p&gt;Google released the PDF code of Chrome just a few days. I took a look at it.&#xA;This file (&lt;a href=&#34;https://pdfium.googlesource.com/pdfium/&amp;#43;/master/core/src/fpdfdoc/doc_vt.cpp&#34;&gt;core/src/fpdfdoc/doc_vt.cpp&lt;/a&gt;)&#xA;is an example of how the code looks.&lt;/p&gt;&#xA;&lt;p&gt;Sometime later it dawned on me that this code is built out of only low level&#xA;pieces. There are almost no algorithms extracted to functions.&lt;/p&gt;&#xA;&lt;p&gt;An example would binary search. There are five copies of binary search hidden&#xA;in just that file. No wonder this file is 1864 lines of code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>StrictWeakOrdering</title>
      <link>https://peterstuifzand.nl/2014/05/13/strictweakordering/</link>
      <pubDate>Tue, 13 May 2014 22:32:12 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2014/05/13/strictweakordering/</guid>
      <description>&lt;p&gt;I always forget what strict weak ordering means, but it&amp;rsquo;s quite simple, actually.&lt;/p&gt;&#xA;&lt;p&gt;My explanation is based on the Programming Conversation of last week and I hope&#xA;this will help me remember the next time I hear about this.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start with ordering. A relation is an ordering if it is transitive.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ordering --&amp;gt;  for all a, b, c: r(a, b) and r(b, c) =&amp;gt; r(a, c)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;And now &lt;code&gt;strict&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Broken interface of Math.min</title>
      <link>https://peterstuifzand.nl/2014/04/29/broken-interface-of-math.min/</link>
      <pubDate>Tue, 29 Apr 2014 12:18:29 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2014/04/29/broken-interface-of-math.min/</guid>
      <description>&lt;p&gt;In an article about &lt;a href=&#34;http://benholland.me/javascript/2012/02/20/how-to-build-a-site-that-works-like-pinterest.html&#34;&gt;creating a column layout&lt;/a&gt; I found the following two lines of code:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;var min = Array.min(blocks);&#xA;var index = $.inArray(min, blocks);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This first finds the minimum value in &lt;code&gt;blocks&lt;/code&gt; and then the &lt;code&gt;index&lt;/code&gt; of that&#xA;value. This combination of lines is very strange. &lt;code&gt;Array.min&lt;/code&gt; already knows the&#xA;index of the minimum element and throws it away. Then the programmer needs to&#xA;find the index again with a linear search.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stability in column layout</title>
      <link>https://peterstuifzand.nl/2014/04/29/stability-in-column-layout/</link>
      <pubDate>Tue, 29 Apr 2014 11:18:44 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2014/04/29/stability-in-column-layout/</guid>
      <description>&lt;p&gt;I was reading the &lt;a href=&#34;http://www.cs.rpi.edu/~musser/gsd/notes-on-programming-2006-10-13.pdf&#34;&gt;notes on programming PDF&lt;/a&gt; and found a discussion about&#xA;writing min and max functions for multiple arguments. I didn&amp;rsquo;t what to use this for.&#xA;Also there was a discussion about stability. Stability is when you leave&#xA;elements in the same position when they&amp;rsquo;re the same. This seems to be about&#xA;sorting.&lt;/p&gt;&#xA;&lt;p&gt;At the same I was implementing a Pinterest like column layout. I already had a&#xA;working version. But sometimes the images weren&amp;rsquo;t loaded completely and the&#xA;algorithm would overlap images, because the height of the element wasn&amp;rsquo;t known.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Renewed interest in C&#43;&#43;</title>
      <link>https://peterstuifzand.nl/2014/04/22/renewed-interest-in-c/</link>
      <pubDate>Tue, 22 Apr 2014 14:41:37 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2014/04/22/renewed-interest-in-c/</guid>
      <description>&lt;p&gt;In the &lt;a href=&#34;https://peterstuifzand.nl/2014/04/06/programming-conversations.html&#34;&gt;previous post&lt;/a&gt; I showed a&#xA;playlist of presentations by Alexander Stepanov, the creator of STL. In these&#xA;videos he talks about algorithms and data structures (written in C++).&#xA;This principled explanation of programming makes a lot of sense to me. And has&#xA;me take a renewed look at C++.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming conversations</title>
      <link>https://peterstuifzand.nl/2014/04/06/programming-conversations/</link>
      <pubDate>Sun, 06 Apr 2014 12:31:46 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2014/04/06/programming-conversations/</guid>
      <description>&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;//www.youtube.com/embed/k-meLQaYP5Y?list=UUYEYhkwzNWRsUkTCpTmChCg&#34; frameborder=&#34;0&#34; allowfullscreen&gt;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title>BitTorrent Sync</title>
      <link>https://peterstuifzand.nl/2013/12/29/bittorrent-sync/</link>
      <pubDate>Sun, 29 Dec 2013 14:19:11 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/12/29/bittorrent-sync/</guid>
      <description>&lt;p&gt;A month ago I wrote about &lt;a href=&#34;https://peterstuifzand.nl/2013/11/17/file-transfers-for-mobile-phones.html&#34;&gt;File Transfer for mobile&#xA;phones&lt;/a&gt;. There I wrote how I&#xA;think a solution for file transfer should work. A few days later I found&#xA;&lt;a href=&#34;http://bittorrent.com/sync/&#34;&gt;Bittorrent Sync&lt;/a&gt;. Problem solved!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use ZeroMQ to control a receipt printer</title>
      <link>https://peterstuifzand.nl/2013/11/20/use-zeromq-to-control-a-receipt-printer/</link>
      <pubDate>Wed, 20 Nov 2013 14:48:44 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/11/20/use-zeromq-to-control-a-receipt-printer/</guid>
      <description>&lt;p&gt;A customer needed a solution to the following problem. There are multiple web&#xA;POS systems that need to print to a receipt printer. The web server is not in&#xA;the same place as the POS terminals, but they are connected to a network.&lt;/p&gt;&#xA;&lt;p&gt;To solve the problem I used ZeroMQ to connect the web server to the receipt&#xA;printers. The current solution consists of four parts.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Web app&lt;/li&gt;&#xA;&lt;li&gt;Web server (connects a PUSH socket to a PULL socket)&lt;/li&gt;&#xA;&lt;li&gt;ZeroMQ device (a multiplexer receives from a PULL socket and sends these to a PUB&#xA;socket)&lt;/li&gt;&#xA;&lt;li&gt;Computer with receipt printer (a sink that receives on a SUB socket subscribed to&#xA;its own address)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;First a user in a browser clicks the button to print a receipt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>File transfers for mobile phones</title>
      <link>https://peterstuifzand.nl/2013/11/17/file-transfers-for-mobile-phones/</link>
      <pubDate>Sun, 17 Nov 2013 17:13:02 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/11/17/file-transfers-for-mobile-phones/</guid>
      <description>&lt;p&gt;Sometimes I need to copy a file from my computer to my phone. That&amp;rsquo;s should be&#xA;really easy. But it&amp;rsquo;s not. I would like it to work like this:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;I put a file in a folder.&lt;/li&gt;&#xA;&lt;li&gt;If my phone is on the same network, the file should be copied from the&#xA;computer to my phone, without further actions from me.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;And that&amp;rsquo;s it. The file shouldn&amp;rsquo;t be copied to a server somewhere else. It&#xA;should only move from my computer to my phone and never touch the internet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redis queue design choices</title>
      <link>https://peterstuifzand.nl/2013/09/06/redis-queue-design-choices/</link>
      <pubDate>Fri, 06 Sep 2013 11:25:09 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/09/06/redis-queue-design-choices/</guid>
      <description>&lt;p&gt;In a previous post I wrote about &lt;a href=&#34;http://peterstuifzand.nl/2013/09/02/simple-queue-in-redis-with-perl.html&#34;&gt;simple job queue in Redis&lt;/a&gt;. In this&#xA;post I like to write a bit about the design choices. I think these choices&#xA;illustrate a point about design.&lt;/p&gt;&#xA;&lt;h4 id=&#34;job-handle&#34;&gt;Job handle&lt;/h4&gt;&#xA;&lt;p&gt;The job handle in the code is create by the client (with help from the Redis&#xA;server). This job handle is passed to the queue in Redis and picked up on the other&#xA;side by the worker.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I rewrote my blog software in Perl</title>
      <link>https://peterstuifzand.nl/2013/09/02/i-rewrote-my-blog-software-in-perl/</link>
      <pubDate>Mon, 02 Sep 2013 14:29:47 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/09/02/i-rewrote-my-blog-software-in-perl/</guid>
      <description>&lt;p&gt;In the last few weeks I have rewritten my blog software in Perl. The old&#xA;version used Ruby. I wrote that version, because I wanted to try out Ruby. The&#xA;software is about as old as the blog itself.&lt;/p&gt;&#xA;&lt;p&gt;The new software is written Perl. I use many new modules in Perl. For example&#xA;&lt;a href=&#34;http://metacpan.org/release/Moo&#34;&gt;Moo&lt;/a&gt;, &lt;a href=&#34;http://metacpan.org/release/Path-Tiny&#34;&gt;Path::Tiny&lt;/a&gt; and &lt;a href=&#34;http://metacpan.org/release/Carton&#34;&gt;Carton&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Moo is an OO library for Perl. It allows me to write OO code in Perl without&#xA;any boilerplate. One of the nice features of Moo is the &lt;code&gt;lazy&lt;/code&gt; setting for the&#xA;&lt;code&gt;is&lt;/code&gt; attribute.  This makes the attribute lazy and calls a builder when&#xA;initializing it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple queue in Redis with Perl</title>
      <link>https://peterstuifzand.nl/2013/09/02/simple-queue-in-redis-with-perl/</link>
      <pubDate>Mon, 02 Sep 2013 13:59:46 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/09/02/simple-queue-in-redis-with-perl/</guid>
      <description>&lt;p&gt;Sometimes you need to have a asynchronous worker written in Perl. The small&#xA;script here takes a job from the queue and executes the code. It only takes a&#xA;few lines of Perl.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;use Redis;&#xA;my $redis = Redis-&amp;gt;new(encoding =&amp;gt; undef);&#xA;&#xA;my $queue_name = &#39;q&#39;;&#xA;my $timeout    = 10;&#xA;&#xA;for (;;) {&#xA;    my ($queue, $job_id) = $redis-&amp;gt;blpop(join(&#39;:&#39;, $queue_name, &#39;queue&#39;), $timeout);&#xA;    if ($job_id) {&#xA;&#xA;        my %data = $redis-&amp;gt;hgetall($job_id);&#xA;&#xA;        # do something with data...&#xA;        # ...&#xA;&#xA;        # remove data for job&#xA;        $redis-&amp;gt;del($job_id);&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The client would look like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dockerfile for Pinto server</title>
      <link>https://peterstuifzand.nl/2013/07/24/dockerfile-for-pinto-server/</link>
      <pubDate>Wed, 24 Jul 2013 14:08:43 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/07/24/dockerfile-for-pinto-server/</guid>
      <description>&lt;p&gt;Yesterday I created &lt;a href=&#34;http://peterstuifzand.nl/2013/07/23/dist-milla-and-pinto.html&#34;&gt;Pinto&lt;/a&gt; server on a server with Debian. Today I did&#xA;the same but with &lt;a href=&#34;http://docker.io&#34;&gt;Docker&lt;/a&gt;. Docker is way to run processes in their own&#xA;sandbox. Docker uses a Dockerfile to create an image that run a certain process.&#xA;The Dockerfile that I used to run &lt;code&gt;pintod&lt;/code&gt; looks like this:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;FROM ubuntu&#xA;RUN apt-get -y install curl perl build-essential&#xA;RUN curl -L http://getpinto.stratopan.com | bash&#xA;RUN mkdir /var/pinto&#xA;VOLUME /var/pinto&#xA;EXPOSE 3111&#xA;RUN adduser --system --home /opt/local/pinto --shell /bin/false --disabled-login --group pinto&#xA;ENV PINTO_HOME /opt/local/pinto&#xA;ENV PINTO_REPOSITORY_ROOT /var/pinto&#xA;RUN /opt/local/pinto/bin/pinto init&#xA;CMD /opt/local/pinto/bin/pintod&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I created a volume for &lt;code&gt;/var/pinto&lt;/code&gt; that contains the repository. The &lt;code&gt;pinto init&lt;/code&gt; doesn&amp;rsquo;t initialize it, it seems. If I later mount the volume in on the&#xA;host, the directory is empty, because the host directory was empty.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dist Milla and Pinto</title>
      <link>https://peterstuifzand.nl/2013/07/23/dist-milla-and-pinto/</link>
      <pubDate>Tue, 23 Jul 2013 21:25:21 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/07/23/dist-milla-and-pinto/</guid>
      <description>&lt;p&gt;Today I was working on a private module that I use to write web applications. A&#xA;few weeks ago I found out about &lt;a href=&#34;https://metacpan.org/release/Dist-Milla&#34;&gt;Milla&lt;/a&gt;. Milla is a plugin bundle for&#xA;&lt;a href=&#34;https://metacpan.org/release/Dist-Zilla&#34;&gt;Dist::Zilla&lt;/a&gt;, which makes it easy to create Perl modules.&lt;/p&gt;&#xA;&lt;p&gt;When you&amp;rsquo;re ready Milla automatically releases your new module to&#xA;&lt;a href=&#34;http://pause.perl.org&#34;&gt;PAUSE&lt;/a&gt;. This is really useful for public modules, but&#xA;not that useful for private modules.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://metacpan.org/release/Pinto&#34;&gt;Pinto&lt;/a&gt; is like CPAN in a way. It&amp;rsquo;s really easy to create a private CPAN with it.&#xA;That&amp;rsquo;s what I did today. It contains the &lt;code&gt;pintod&lt;/code&gt; script that starts a webserver, which&#xA;is compatible with the CPAN infrastructure. It allows you to install modules from it with &lt;a href=&#34;https://metacpan.org/release/App-cpanminus&#34;&gt;cpanm&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create your own YouTube playlists</title>
      <link>https://peterstuifzand.nl/2013/06/09/create-your-own-youtube-playlists/</link>
      <pubDate>Sun, 09 Jun 2013 14:40:51 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/06/09/create-your-own-youtube-playlists/</guid>
      <description>&lt;p&gt;A few days ago Mindcrack Ultra Hardcore season 11 started. In Ultra Hardcore the play&#xA;by special rules, that are different from vanilla Minecraft. The biggest&#xA;difference is that players don&amp;rsquo;t regenerate health automatically. They need to&#xA;eat golden apples to increaes their health. These apples are harder to make,&#xA;because you need golden ingots instead of golden nuggets.&lt;/p&gt;&#xA;&lt;p&gt;Each season players record videos of their perspective of the match and post&#xA;these videos to their YouTube channel. This season these videos are posted&#xA;every other day around 22:00 UTC. This is mostly to give viewers the&#xA;opportunity to watch multiple perspectives. The total running time for the&#xA;first episode was about 7 hours. That&amp;rsquo;s a lot of video to watch.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Load Firefox search in background tab</title>
      <link>https://peterstuifzand.nl/2013/05/06/load-firefox-search-in-background-tab/</link>
      <pubDate>Mon, 06 May 2013 13:53:48 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/05/06/load-firefox-search-in-background-tab/</guid>
      <description>&lt;p&gt;Today I noticed something that bothered me. When I search in Firefox through&#xA;the right-click context menu the search results open in a new tab and&#xA;Firefox switches automatically to the new page. I remembered there is option&#xA;that makes Firefox open new links in the background and I thought that maybe&#xA;this option was disabled. The option was enabled as it should be.&lt;/p&gt;&#xA;&lt;p&gt;I opened a few links and it behaved as expected. The search results however&#xA;still opened in a new tab in the foreground. This was unexpected. For me it&#xA;seems that links and searches should open in a new tab in the background.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A universal subscribe button</title>
      <link>https://peterstuifzand.nl/2013/04/22/a-universal-subscribe-button/</link>
      <pubDate>Mon, 22 Apr 2013 17:24:31 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/04/22/a-universal-subscribe-button/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.subtome.com/&#34;&gt;SubToMe&lt;/a&gt; is a universal subscribe button that you can add to your&#xA;weblog. You just add small bit of HTML that shows a subscribe button. The&#xA;software is written in Javascript and runs in your browser. It doesn&amp;rsquo;t need a&#xA;central server. Take a look and add it to your weblog.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Changes to the heredoc parser example</title>
      <link>https://peterstuifzand.nl/2013/04/22/changes-to-the-heredoc-parser-example/</link>
      <pubDate>Mon, 22 Apr 2013 16:31:32 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/04/22/changes-to-the-heredoc-parser-example/</guid>
      <description>&lt;p&gt;Jeffrey Kegler, the author of Marpa, was kind enough to suggest a few changes to the&#xA;parser from the &lt;a href=&#34;http://peterstuifzand.nl/2013/04/19/parse-a-heredoc-with-marpa.html&#34;&gt;previous blog post&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Two of the three regular expressions were replaced with calls to the Marpa&#xA;recognizer. The first one was replaced with a call to the &lt;code&gt;pause_span&lt;/code&gt; method,&#xA;which returns the start and length of the lexeme that caused the pause. Passing&#xA;these two values to the &lt;code&gt;literal&lt;/code&gt; method which returns the substring from the&#xA;input string. This removes the need to mess around with the &lt;code&gt;pos()&lt;/code&gt; from the&#xA;input string.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parse a heredoc with Marpa</title>
      <link>https://peterstuifzand.nl/2013/04/19/parse-a-heredoc-with-marpa/</link>
      <pubDate>Fri, 19 Apr 2013 18:13:01 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/04/19/parse-a-heredoc-with-marpa/</guid>
      <description>&lt;p&gt;I already wrote that I&amp;rsquo;m quite interested in the things Marpa can do for&#xA;writing parsers. &lt;a href=&#34;https://metacpan.org/release/Marpa-R2&#34;&gt;The latest release of Marpa&lt;/a&gt; includes an addition that makes&#xA;parsing strange languages even more possible. The new functionality allows you&#xA;to control the parser from your own code while it doesn&amp;rsquo;t stop you from using&#xA;the internal scanner.&lt;/p&gt;&#xA;&lt;p&gt;To try out this new functionality in Marpa I tried to write a parser for a&#xA;small language with just one function and heredocs. I choose this language,&#xA;because it can&amp;rsquo;t be parsed with just the internal scanner. The scanner needs to&#xA;find the end marker with the same name as the begin marker of the heredoc. The&#xA;parser doesn&amp;rsquo;t know about the name of the marker, just that it looks like a&#xA;marker.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apps that share</title>
      <link>https://peterstuifzand.nl/2013/04/08/apps-that-share/</link>
      <pubDate>Mon, 08 Apr 2013 12:27:20 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2013/04/08/apps-that-share/</guid>
      <description>&lt;p&gt;On my phone I can share stuff between apps. It&amp;rsquo;s like pipes. I write something&#xA;in one app and send it to another app that posts it to my weblog. The apps in&#xA;question are Draft and WordPress. It shows how easy it is to send stuff between&#xA;apps. The apps don&amp;rsquo;t even have to know the other app exist. Why is this easier&#xA;on my phone than on my PC?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Grok</title>
      <link>https://peterstuifzand.nl/2013/03/11/grok/</link>
      <pubDate>Mon, 11 Mar 2013 13:02:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/03/11/grok/</guid>
      <description>&lt;p&gt;In this video &lt;a href=&#34;http://www.youtube.com/watch?v=KTJs-0EInW8&#34;&gt;Steve Yegge talks about a&#xA;project&lt;/a&gt; he&amp;rsquo;s working on called&#xA;Grok. I seems ambitious and useful.&lt;/p&gt;&#xA;&lt;p&gt;I worked on a few parsers in the last few months and it seems that most of the&#xA;work still has to be done even if you&amp;rsquo;ve got a parse tree of a language.&lt;/p&gt;&#xA;&lt;p&gt;Yegge explains that they don&amp;rsquo;t write the parsers themselves, but use the work&#xA;compiler builders have done. This is a good idea, because writing a parser&#xA;isn&amp;rsquo;t easy, even if you have a really good tools to build a parser with.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DIY refactoring</title>
      <link>https://peterstuifzand.nl/2013/01/29/diy-refactoring/</link>
      <pubDate>Tue, 29 Jan 2013 21:52:15 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/01/29/diy-refactoring/</guid>
      <description>&lt;p&gt;Yesterday I released a &lt;a href=&#34;https://gist.github.com/4659225&#34;&gt;piece of code&lt;/a&gt; the includes a parser,&#xA;a rewriter and serializer for a small expression language.&lt;/p&gt;&#xA;&lt;p&gt;The code is an example how you can parse source code and build a tree, rewrite&#xA;the tree using two expressions and serialize the tree back to a piece of &amp;lsquo;code&amp;rsquo;.&lt;/p&gt;&#xA;&lt;p&gt;The idea that I used here was to improve the language by adding a way to&#xA;specify structural variables. The variables start with a colon &lt;code&gt;:&lt;/code&gt;, but are&#xA;otherwise like variables.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generate a list of the same thing</title>
      <link>https://peterstuifzand.nl/2013/01/20/generate-a-list-of-the-same-thing/</link>
      <pubDate>Sun, 20 Jan 2013 12:12:28 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/01/20/generate-a-list-of-the-same-thing/</guid>
      <description>&lt;p&gt;Last year I wrote about how we can build an extended syntax for Marpa on top of&#xA;the basic interface.&lt;/p&gt;&#xA;&lt;p&gt;For the counted rule &lt;code&gt;lhs ::= rhs{5}&lt;/code&gt; where you want to match the right hand&#xA;side multiple times, we can just generate the &lt;code&gt;rhs&lt;/code&gt; item &lt;code&gt;5&lt;/code&gt; times.&lt;/p&gt;&#xA;&lt;p&gt;This isn&amp;rsquo;t the right thing. Jeffrey &lt;a href=&#34;https://gist.github.com/2324781&#34;&gt;pointed out&lt;/a&gt;&#xA;that you can build these &lt;code&gt;{min,max}&lt;/code&gt; rules up out of blocks.&lt;/p&gt;&#xA;&lt;p&gt;Then I remembered a piece of code from Elements of Programming which explained&#xA;that it&amp;rsquo;s possible to generate the Fibonacci series in O(log n) time. The same&#xA;should be possible for the counted rules.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What you could blog about</title>
      <link>https://peterstuifzand.nl/2013/01/03/what-you-could-blog-about/</link>
      <pubDate>Thu, 03 Jan 2013 15:55:47 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/01/03/what-you-could-blog-about/</guid>
      <description>&lt;p&gt;I guess the best way to think of a blog for me is that you can relate what you&#xA;did and maybe talk about why you did that.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://the-pastry-box-project.net/chris-coyier/2013-january-2/&#34;&gt;I wish everyone in the world would&#xA;blog&lt;/a&gt; by Chris&#xA;Coyier lists five nice things you could blog about.&lt;/p&gt;&#xA;&lt;p&gt;When your reading a blog you can get a little bit of perspective on their life&#xA;and their world.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Can&#39;t write directly</title>
      <link>https://peterstuifzand.nl/2013/01/03/cant-write-directly/</link>
      <pubDate>Thu, 03 Jan 2013 10:24:32 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/01/03/cant-write-directly/</guid>
      <description>&lt;p&gt;Tom Morris wrote some time ago about&#xA;&lt;a href=&#34;http://tommorris.org/posts/7976&#34;&gt;Posting UIs on the Indie Web&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The type of writing we do is influenced by the tools we have, and by&#xA;the experience of the services we use.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I write my posts in Vim with a small script around it that adds the content to&#xA;the blog post index. Then I generate the static files and publish (with rsync)&#xA;everything to the server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Focus on a simple product and protocols</title>
      <link>https://peterstuifzand.nl/2013/01/02/focus-on-a-simple-product-and-protocols/</link>
      <pubDate>Wed, 02 Jan 2013 21:26:47 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/01/02/focus-on-a-simple-product-and-protocols/</guid>
      <description>&lt;p&gt;I&amp;rsquo;d like to propose here that it&amp;rsquo;s a good idea to start with a simple piece of&#xA;software with explicit simple protocols that make it a good place to start.&lt;/p&gt;&#xA;&lt;p&gt;Others will be able to build a similar product that uses the same protocol. And&#xA;still others will be able to connect to the other end of the protocol to use it&#xA;in their software. Every piece of software created like this can be replaced&#xA;with better software or new ideas can be tried without recreating everything&#xA;from the ground up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One thing well</title>
      <link>https://peterstuifzand.nl/2013/01/02/one-thing-well/</link>
      <pubDate>Wed, 02 Jan 2013 17:03:40 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/01/02/one-thing-well/</guid>
      <description>&lt;p&gt;What would a web application that does one thing well look like?  What would it&#xA;need to be able to do?&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s say you want to make a social network application. Whatever that means.&#xA;What would the use cases be? Just so you know I&amp;rsquo;m not trying to be complete here.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;User creates an account&lt;/li&gt;&#xA;&lt;li&gt;User logs in to his account&lt;/li&gt;&#xA;&lt;li&gt;User writes a short post&lt;/li&gt;&#xA;&lt;li&gt;User reads a post written by another user&lt;/li&gt;&#xA;&lt;li&gt;User updates his profile&lt;/li&gt;&#xA;&lt;li&gt;User looks at a profile&lt;/li&gt;&#xA;&lt;li&gt;User looks at a list of private messages&lt;/li&gt;&#xA;&lt;li&gt;User writes a private message to another user&lt;/li&gt;&#xA;&lt;li&gt;User reads a private message from another user&lt;/li&gt;&#xA;&lt;li&gt;User replies to a private message&lt;/li&gt;&#xA;&lt;li&gt;User adds a friend to his friend list&lt;/li&gt;&#xA;&lt;li&gt;User removes a friend from his friend list&lt;/li&gt;&#xA;&lt;li&gt;User likes a post / photo / comment / link&lt;/li&gt;&#xA;&lt;li&gt;User uploads a photo&lt;/li&gt;&#xA;&lt;li&gt;User comments on a post from another user&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Each of these use cases should be a small service. For some two or more use&#xA;cases could be combined, because they&amp;rsquo;re complementary. Currently every service&#xA;needs to write a new version of these use cases.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple and impossible</title>
      <link>https://peterstuifzand.nl/2013/01/02/simple-and-impossible/</link>
      <pubDate>Wed, 02 Jan 2013 16:42:53 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2013/01/02/simple-and-impossible/</guid>
      <description>&lt;p&gt;Build simple programs that work together.&lt;/p&gt;&#xA;&lt;p&gt;Build software that does one thing well.&lt;/p&gt;&#xA;&lt;p&gt;Have you heard that before?&lt;/p&gt;&#xA;&lt;p&gt;If this is such a good thing, why don&amp;rsquo;t we do that?&lt;/p&gt;&#xA;&lt;p&gt;Because it&amp;rsquo;s impossible. Software needs to do many things to the one thing.&lt;/p&gt;&#xA;&lt;p&gt;We wouldn&amp;rsquo;t even know what one thing would look like.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rivers and massive blogposts</title>
      <link>https://peterstuifzand.nl/2012/12/24/rivers-and-massive-blogposts/</link>
      <pubDate>Mon, 24 Dec 2012 19:57:37 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/12/24/rivers-and-massive-blogposts/</guid>
      <description>&lt;p&gt;I build a program called Pompiedom. I host a test river about&#xA;&lt;a href=&#34;http://shattr.net:8086/user/perlriver/dashboard&#34;&gt;Perl&lt;/a&gt;. It shows feeds from&#xA;all sources in one page. Just like (rss) planets.&lt;/p&gt;&#xA;&lt;p&gt;One of the problems is that there are a lot of different types of feeds. There&#xA;is no default way that people create feeds and no feed has the same kind of&#xA;content. I think this is a good thing.&lt;/p&gt;&#xA;&lt;p&gt;The problem I have currently is that some feeds contain massive blog posts. These massive&#xA;are really nice to read and they are really hard to show well. Especially when&#xA;mixed with short and small link blog posts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anti-Fragility again</title>
      <link>https://peterstuifzand.nl/2012/12/01/anti-fragility-again/</link>
      <pubDate>Sat, 01 Dec 2012 16:10:34 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/12/01/anti-fragility-again/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://peterstuifzand.nl/2010/11/25/anti-fragility.html&#34;&gt;Two years ago&lt;/a&gt; I first asked the question:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;How can [anti-fragility] be used in software and other computer systems?&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;The answer was (almost) right in front of me.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.threeriversinstitute.org/blog/?p=454&#34;&gt;Kent Beck&lt;/a&gt; shows how to use&#xA;small safe steps to write and change software.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://stepanovpapers.com#Class_notes&#34;&gt;Alexander Stepanov&lt;/a&gt; writes&#xA;in &lt;a href=&#34;http://www.stepanovpapers.com/notes.pdf&#34;&gt;notes.pdf pg. 111&lt;/a&gt;&#xA;how we get mathematical theories in programming:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;While it is possible to keep providing more and more definitions, it is not&#xA;the correct approach to building a theory. We often get the idea that a&#xA;mathematical theory is built in a logical way starting from definitions and&#xA;axioms. This is not the case. The definitions and axioms appear at the very&#xA;end of the development of a good theory. It invariably starts with simple&#xA;facts that later on are generalized into theorems, and only at the very end&#xA;the formal definitions and axioms are developed. Sadly enough, many people&#xA;who try to apply mathematics to programming start with axioms and then end up&#xA;criticizing the real programs for not corresponding to their “beautiful”&#xA;axioms. To build a theory of data structures we need to start with simple&#xA;algorithms operating on data structures and only when we have looked at many&#xA;specific algorithms can we come up with satisfactory theories.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The different parts of a template</title>
      <link>https://peterstuifzand.nl/2012/11/21/the-different-parts-of-a-template/</link>
      <pubDate>Wed, 21 Nov 2012 22:07:20 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/11/21/the-different-parts-of-a-template/</guid>
      <description>&lt;p&gt;I have been thinking on and off about how to make&#xA;&lt;a href=&#34;http://jeffreykegler.github.com/Marpa-web-site/&#34;&gt;Marpa&lt;/a&gt;&#xA;parse a template language. I tried many different ways to create a tokenizer for this parser, but until&#xA;this week I couldn&amp;rsquo;t get something reliable. The week I started with the&#xA;tokenizer from the example code from &lt;a href=&#34;http://jeffreykegler.github.com/Ocean-of-Awareness-blog/individual/2012/11/iterative.html&#34;&gt;Jeffrey Kegler&amp;rsquo;s blog post&lt;/a&gt; about how&#xA;to develop a parser iteratively. This got me on the right track to create my parser.&#xA;Let&amp;rsquo;s start with &amp;lsquo;specifying&amp;rsquo; the language.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Take notes and focus</title>
      <link>https://peterstuifzand.nl/2012/09/07/take-notes-and-focus/</link>
      <pubDate>Fri, 07 Sep 2012 16:18:22 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/09/07/take-notes-and-focus/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/todo-list.jpg&#34; alt=&#34;Reminder list&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I use a small list to remind me of opportunities where I can improve my&#xA;software. When I find an &lt;a href=&#34;https://www.facebook.com/note.php?note_id=10150309412413920&#34;&gt;element&lt;/a&gt; that I can improve, I write&#xA;down a reminder so I know where to look. Because I write these reminders I can&#xA;focus on the task at hand. I take care of the other problems another time. When&#xA;I&amp;rsquo;ve completed an item on the list I strike it through and start work on the&#xA;next one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Small safe steps</title>
      <link>https://peterstuifzand.nl/2012/08/25/small-safe-steps/</link>
      <pubDate>Sat, 25 Aug 2012 16:42:59 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/08/25/small-safe-steps/</guid>
      <description>&lt;p&gt;I really like the notion &lt;em&gt;Safe steps&lt;/em&gt; in &lt;a href=&#34;http://www.threeriversinstitute.org/blog/?p=454&#34;&gt;Responsive Design&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Safe Steps.&lt;/strong&gt; Resolve the tension between efficiency and safety in favor of&#xA;safety, then learn to take small, safe steps fast enough that from the&#xA;outside it looks like you are flying.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I want to show an example of a change that changes the interface, without the&#xA;need to change the callers. In the end I want to remove the call to&#xA;&lt;code&gt;get_controller_class&lt;/code&gt;. But first I make a small safe step.  I have a method&#xA;like this (in Perl).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Instantiate an algorithm</title>
      <link>https://peterstuifzand.nl/2012/07/14/instantiate-an-algorithm/</link>
      <pubDate>Sat, 14 Jul 2012 13:55:44 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/07/14/instantiate-an-algorithm/</guid>
      <description>&lt;p&gt;I wrote an internal API for products. The API consists of many methods that&#xA;make changes to the database. The value is in the database is the original&#xA;value and the code changes it.&lt;/p&gt;&#xA;&lt;p&gt;For every different change there is a method that makes this change. The API&#xA;uses the database as internal memory.&lt;/p&gt;&#xA;&lt;p&gt;Every method in the API gets data, updates it or writes it. There is no code&#xA;that makes changes to the product in the memory. Let&amp;rsquo;s start with a simple&#xA;example.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fibonacci for web developers</title>
      <link>https://peterstuifzand.nl/2012/07/12/fibonacci-for-web-developers/</link>
      <pubDate>Thu, 12 Jul 2012 12:43:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/07/12/fibonacci-for-web-developers/</guid>
      <description>&lt;p&gt;We start by creating a database table. This is very important for web&#xA;applications, because web applications can&amp;rsquo;t store state in memory, like&#xA;desktop applications.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;CREATE TABLE `fib` (&#xA;    `n`    INT  NOT NULL,&#xA;    `fib`  INT  NOT NULL,&#xA;    PRIMARY KEY (`n`)&#xA;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now we write the PHP code. You can write the HTML form yourself, it&amp;rsquo;s not that hard.&lt;/p&gt;&#xA;&lt;script src=&#34;https://gist.github.com/3097208.js?file=fib.php&#34;&gt;&lt;/script&gt;&#xA;&lt;p&gt;Do you write code like this? I know I do.&lt;/p&gt;</description>
    </item>
    <item>
      <title>App store for cloud hosting</title>
      <link>https://peterstuifzand.nl/2012/07/05/app-store-for-cloud-hosting/</link>
      <pubDate>Thu, 05 Jul 2012 14:11:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/07/05/app-store-for-cloud-hosting/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://peterstuifzand.nl/2012/06/29/what-comes-after-php.html&#34;&gt;my last post&lt;/a&gt; I wrote about what will come after PHP. In a way&#xA;PHP is the only language you can use if you want your software to be used on a&#xA;variety of platforms. Software written in PHP is easily hosted and configured&#xA;on shared hosting, a dedicated server or on your own PC.&lt;/p&gt;&#xA;&lt;p&gt;PHP as a language &lt;a href=&#34;http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/&#34;&gt;is pretty bad&lt;/a&gt;. No more articles have to be&#xA;written on that subject. However, PHP as a hosting platform is everywhere. Much&#xA;succesful open-source web software is written in PHP. Mediawiki, Wordpress and&#xA;PHPMyAdmin are just a few of the big ones, that I use almost every day. This is&#xA;software you can just host yourself.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What comes after PHP?</title>
      <link>https://peterstuifzand.nl/2012/06/29/what-comes-after-php/</link>
      <pubDate>Fri, 29 Jun 2012 16:16:24 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/06/29/what-comes-after-php/</guid>
      <description>&lt;p&gt;In the &lt;a href=&#34;http://www.codinghorror.com/blog/2012/06/the-php-singularity.html&#34;&gt;The PHP Singularity&lt;/a&gt; Jeff Atwood writes about how PHP is the only&#xA;option for server code that runs everywhere. And that if you don&amp;rsquo;t want to&#xA;write PHP, you have a problem, because there aren&amp;rsquo;t any other options.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;This is not an abstract, academic concern to me. I&amp;rsquo;m starting a new open&#xA;source web project with the goal of making the code as freely and easily&#xA;runnable to the world as possible. Despite the serious problems with PHP, I&#xA;was forced to consider it. If you want to produce free-as-in-whatever code&#xA;that runs on virtually every server in the world with zero friction or&#xA;configuration hassles, PHP is damn near your only option. If that doesn&amp;rsquo;t&#xA;scare you, then check your pulse, because you might be dead.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Audio articles</title>
      <link>https://peterstuifzand.nl/2012/05/27/audio-articles/</link>
      <pubDate>Sun, 27 May 2012 14:04:20 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/05/27/audio-articles/</guid>
      <description>&lt;p&gt;Many podcasts I listen to, are around one hour and two and a half hours. This&#xA;is pretty long, but most of the time worthwhile to listen to. I have a commute&#xA;of an half hour each day, and some time to listen to somethings. But a two and&#xA;a half hour show, will take 5 commutes to hear it all.&lt;/p&gt;&#xA;&lt;p&gt;Are there any podcasts that are between 10 and 15 minutes long and are focused&#xA;around one idea or news item?&lt;/p&gt;</description>
    </item>
    <item>
      <title>They wouldn&#39;t install if not for packages</title>
      <link>https://peterstuifzand.nl/2012/05/21/they-wouldnt-install-if-not-for-packages/</link>
      <pubDate>Mon, 21 May 2012 10:38:50 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/05/21/they-wouldnt-install-if-not-for-packages/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://justatheory.com/computers/databases/dbi-in-sqitch.html&#34;&gt;Use of DBI in Sqitch&lt;/a&gt;, Wheeler writes about &lt;a href=&#34;http://sqitch.org&#34;&gt;Sqitch&lt;/a&gt;, an application&#xA;for SQL change management.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Sqitch uses the native database client applications (psql, sqlite3, mysql,&#xA;etc.). [&amp;hellip;] The IPC is a huge PITA. Furthermore, getting things properly&#xA;quoted is also pretty annoying&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I would expect this when you use SQL command-line tools in other tools. Of&#xA;course, this is Perl, which is better at this kind of thing than other&#xA;languages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Great tool: sshfs</title>
      <link>https://peterstuifzand.nl/2012/05/19/great-tool-sshfs/</link>
      <pubDate>Sat, 19 May 2012 18:24:10 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/05/19/great-tool-sshfs/</guid>
      <description>&lt;p&gt;Do you use servers on the internet? Do you connect to them with &lt;code&gt;ssh&lt;/code&gt;? Then you&#xA;should take a look at &lt;a href=&#34;http://fuse.sourceforge.net/sshfs.html&#34;&gt;SSHFS&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It allows you to mount a directory on a different computer as if it&amp;rsquo;s a&#xA;directory on your own. And then &lt;code&gt;sshfs&lt;/code&gt; takes care making sure that your&#xA;commands do the right thing. It&amp;rsquo;s amazing.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;In &lt;a href=&#34;http://doc.cat-v.org/bell_labs/the_hideous_name/&#34;&gt;The Hideous Name&lt;/a&gt; Pike and Weinberger write about a similar thing.&#xA;You can profit if you can the same tools in the same way regardless if you&amp;rsquo;re&#xA;on your local machine or on a remote machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple rules parser for Marpa</title>
      <link>https://peterstuifzand.nl/2012/04/14/simple-rules-parser-for-marpa/</link>
      <pubDate>Sat, 14 Apr 2012 12:04:54 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/04/14/simple-rules-parser-for-marpa/</guid>
      <description>&lt;p&gt;I had a nice idea a few days ago. A simple module that creates the rules part&#xA;of a Marpa grammar, but without code generation and lexers. Just the bit that&#xA;Marpa::XS::Grammar uses.&lt;/p&gt;&#xA;&lt;p&gt;So I wrote it in a few minutes. It&amp;rsquo;s not really complicated and provides an&#xA;example how to write a short parser.&lt;/p&gt;&#xA;&lt;p&gt;Lets start with a short example of what you would write.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;use Marpa::XS;&#xA;use MarpaX::Simple::Rules &#39;parse_rules&#39;;&#xA;&#xA;&#xA;my $rules = parse_rules(&amp;lt;&amp;lt;&amp;quot;RULES&amp;quot;);&#xA;RULES&#xA;&#xA;my $grammar = Marpa::XS::Grammar-&amp;gt;new({&#xA;    rules =&amp;gt; $rules,&#xA;    ...&#xA;});&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;At the &lt;code&gt;...&lt;/code&gt; you should add more arguments to Marpa::XS depending on how you&#xA;want to use it. Now let&amp;rsquo;s write a simple example of some rules.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The three parts of the next web</title>
      <link>https://peterstuifzand.nl/2012/04/07/the-three-parts-of-the-next-web/</link>
      <pubDate>Sat, 07 Apr 2012 15:56:24 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/04/07/the-three-parts-of-the-next-web/</guid>
      <description>&lt;p&gt;The three problems that need to be fixed are subscription, feed reading and&#xA;feed creation.&lt;/p&gt;&#xA;&lt;h3 id=&#34;subscription&#34;&gt;Subscription&lt;/h3&gt;&#xA;&lt;p&gt;Subscribing to feeds is really hard. It should be really simple. Unsubscribing&#xA;should be just as simple.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;See something that you want to subscribe to? Click the subscribe button.&lt;/li&gt;&#xA;&lt;li&gt;Done!&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Unsubscribing should be just as easy.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;You see a post in your feed reader that you don&amp;rsquo;t want to see.&lt;/li&gt;&#xA;&lt;li&gt;Click Hide.&lt;/li&gt;&#xA;&lt;li&gt;Show an option for unsubscription.&lt;/li&gt;&#xA;&lt;li&gt;Click, gone!&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Or:&lt;/p&gt;</description>
    </item>
    <item>
      <title>What&#39;s allowed in the basic Marpa grammar</title>
      <link>https://peterstuifzand.nl/2012/04/05/whats-allowed-in-the-basic-marpa-grammar/</link>
      <pubDate>Thu, 05 Apr 2012 23:10:01 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/04/05/whats-allowed-in-the-basic-marpa-grammar/</guid>
      <description>&lt;p&gt;In my last post I wrote about what the different rewrites of more advanced&#xA;rules would look like. The question now is, when do you have a grammar that&amp;rsquo;s&#xA;basic enough?&lt;/p&gt;&#xA;&lt;p&gt;This is the basic configuration of the Marpa::XS class. In this configuration&#xA;you can specify left hand sides and right hand sides and the star and plus&#xA;operator. If your tree looks like this, then it&amp;rsquo;s basic enough.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Parser    ::= Rule+&#xA;Rule      ::= Lhs DeclareOp Rhs&#xA;Lhs       ::= Name&#xA;Rhs       ::= Names&#xA;Rhs       ::= Name Star&#xA;Rhs       ::= Name Plus&#xA;Names     ::= Name+&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This grammar consists of only 7 lines, so that&amp;rsquo;s pretty good. This are the&#xA;basics, but it assumes a few things.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rewriting Marpa rules</title>
      <link>https://peterstuifzand.nl/2012/04/04/rewriting-marpa-rules/</link>
      <pubDate>Wed, 04 Apr 2012 23:15:47 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/04/04/rewriting-marpa-rules/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s try to write some rewrite rules for a next level Marpa to a lower level&#xA;Marpa. The syntax is not important, this is about how we can rewrite the rules.&lt;/p&gt;&#xA;&lt;p&gt;In the actual grammars none of the left side patterns work, but all of the&#xA;right side rewritten version should work.&lt;/p&gt;&#xA;&lt;h3 id=&#34;alternations&#34;&gt;Alternations&lt;/h3&gt;&#xA;&lt;p&gt;An alternation is a rule that can match either way &lt;code&gt;B&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt; or &lt;code&gt;D&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;A ::= B | C     =&amp;gt;  A ::= B&#xA;                    A ::= C&#xA;&#xA;A ::= B | C | D =&amp;gt;  A ::= B&#xA;                    A ::= C&#xA;                    A ::= D&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;plus-star&#34;&gt;Plus, Star&lt;/h3&gt;&#xA;&lt;p&gt;Plus means match one or more times, star means match zero of more times.&#xA;Normally you can&amp;rsquo;t use &lt;code&gt;+&lt;/code&gt; or &lt;code&gt;*&lt;/code&gt; inside of a rule. Only whole rules can be&#xA;used like this. If you want to use these you need to create a new rule and use&#xA;it inside.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prodromou&#39;s Law of Internetworks</title>
      <link>https://peterstuifzand.nl/2012/03/30/prodromous-law-of-internetworks/</link>
      <pubDate>Fri, 30 Mar 2012 15:06:52 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/03/30/prodromous-law-of-internetworks/</guid>
      <description>&lt;p&gt;No network joins an internetwork smaller than itself.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://evan.prodromou.name/files/sxsw2012/sxsw2012.html&#34;&gt;source&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>OExchange for subscribing to feeds</title>
      <link>https://peterstuifzand.nl/2012/03/26/oexchange-for-subscribing-to-feeds/</link>
      <pubDate>Mon, 26 Mar 2012 10:02:09 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2012/03/26/oexchange-for-subscribing-to-feeds/</guid>
      <description>&lt;p&gt;Yesterday I was working on my realtime feed reader (and writer). I can read&#xA;feeds with this, but I can also write posts. With it you can write a small&#xA;post with a title, description and link.&lt;/p&gt;&#xA;&lt;p&gt;When I was looking around for websites that support WebFinger I found a similar&#xA;thing on Twitter. It contained the host-meta file, but instead of showing&#xA;WebFinger related links, it showed something called an&#xA;&lt;a href=&#34;http://www.oexchange.org/&#34;&gt;OExchange&lt;/a&gt; link. So I took a look what it was.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a parser with Marpa::XS</title>
      <link>https://peterstuifzand.nl/2012/03/14/building-a-parser-with-marpaxs/</link>
      <pubDate>Wed, 14 Mar 2012 22:42:13 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/03/14/building-a-parser-with-marpaxs/</guid>
      <description>&lt;p&gt;Tonight I wrote this &lt;a href=&#34;https://gist.github.com/2039694&#34;&gt;parser in Perl with Marpa::XS&lt;/a&gt;.&#xA;The nice thing about Marpa is that it will tell you which terminals (or tokens)&#xA;it expects at the current position. So instead of guessing what the next token&#xA;will be you can just try to parse a token and try it.&lt;/p&gt;&#xA;&lt;p&gt;I got the general idea from the &lt;a href=&#34;https://github.com/arodland/TAP-Spec-Parser/blob/marpa/lib/TAP/Spec/Parser.pm&#34;&gt;TAP::Spec::Parser&lt;/a&gt;. The difference is that it will try all alternatives at once, while mine tries each after the other until one works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implicit algorithms in templates</title>
      <link>https://peterstuifzand.nl/2012/03/05/implicit-algorithms-in-templates/</link>
      <pubDate>Mon, 05 Mar 2012 22:53:26 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/03/05/implicit-algorithms-in-templates/</guid>
      <description>&lt;p&gt;I was thinking about implicit algorithms and implicit datastructures and&#xA;thought how this applied to templates in web applications. I found that there&#xA;are a few places where I write the same template code with just a few different&#xA;pieces.&lt;/p&gt;&#xA;&lt;p&gt;One of the examples is a piece of code for showing a text field with a few&#xA;labels around it. This piece of template code is used for almost every field in&#xA;the product edit (and new) form. This is repeated code, but we&#xA;&lt;a href=&#34;http://c2.com/cgi/wiki?DontRepeatYourself&#34;&gt;should not do this&lt;/a&gt;, right?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implicit algorithm in a small game</title>
      <link>https://peterstuifzand.nl/2012/03/05/implicit-algorithm-in-a-small-game/</link>
      <pubDate>Mon, 05 Mar 2012 21:47:16 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/03/05/implicit-algorithm-in-a-small-game/</guid>
      <description>&lt;p&gt;I was working on a small game that displays some blocks. These blocks need&#xA;to move. The way to make these blocks move is by changing the &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt;&#xA;position over time.&lt;/p&gt;&#xA;&lt;p&gt;The way I did this in the game was by calling a &lt;code&gt;tick()&lt;/code&gt; method every 1/60th&#xA;of a second on every block that could be moving. Then the block can change&#xA;it&amp;rsquo;s position according to some algorithm. I just wrote code that makes&#xA;these changes to the position.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Publishing if it&#39;s not ready</title>
      <link>https://peterstuifzand.nl/2012/03/05/publishing-if-its-not-ready/</link>
      <pubDate>Mon, 05 Mar 2012 21:45:09 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/03/05/publishing-if-its-not-ready/</guid>
      <description>&lt;p&gt;I have an article in the pipeline about implicit algorithms (and&#xA;datastructures), which is a continuation of a few articles I wrote&#xA;&lt;a href=&#34;http://peterstuifzand.nl/2011/04/20/web-applications-and-data-structures.html&#34;&gt;last year&lt;/a&gt; and &lt;a href=&#34;http://peterstuifzand.nl/2010/09/14/template-table-filter.html&#34;&gt;the year before&lt;/a&gt;.&#xA;It explains the same idea, but from another point of view: a small game that I&#xA;started to write.&lt;/p&gt;&#xA;&lt;p&gt;The thing is that the article isn&amp;rsquo;t that good. Especially the example is too&#xA;simple. Now it just hangs there. It doesn&amp;rsquo;t move and I don&amp;rsquo;t want to touch it&#xA;anymore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Start blogging</title>
      <link>https://peterstuifzand.nl/2012/02/23/start-blogging/</link>
      <pubDate>Thu, 23 Feb 2012 21:22:54 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/02/23/start-blogging/</guid>
      <description>&lt;p&gt;Jason Cohen wrote a nice article about &lt;a href=&#34;http://blog.asmartbear.com/start-blogging.html&#34;&gt;starting with blogging&lt;/a&gt;. One of the&#xA;ideas he has about this is that you start with an article written by someone&#xA;else that you like. Then you quote it and elaborate or reply to it.&lt;/p&gt;&#xA;&lt;p&gt;This is a nice way to start blogging. The thing that often happens to me is the&#xA;following. I follow this idea, but when I start writing I move so far from the&#xA;original point of the article that it doesn&amp;rsquo;t even matter anymore to the new&#xA;blog post. Then I remove the quote from the top and have a whole new article.&#xA;I still like to link to the article, but it just doesn&amp;rsquo;t make any sense&#xA;anymore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Best feature ever</title>
      <link>https://peterstuifzand.nl/2012/01/30/best-feature-ever/</link>
      <pubDate>Mon, 30 Jan 2012 20:17:49 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/01/30/best-feature-ever/</guid>
      <description>&lt;p&gt;Don&amp;rsquo;t you just hate it when you click a link while you&amp;rsquo;re on YouTube watching a&#xA;video. Before you realize what happened you click the back button. Normally&#xA;this will reload the page and start the video from the beginning.&lt;/p&gt;&#xA;&lt;p&gt;But not today. It continued at the same point where I left. That&amp;rsquo;s how it&#xA;should be.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Added rssCloud to my weblog feed</title>
      <link>https://peterstuifzand.nl/2012/01/20/added-rsscloud-to-my-weblog-feed/</link>
      <pubDate>Fri, 20 Jan 2012 12:59:02 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/01/20/added-rsscloud-to-my-weblog-feed/</guid>
      <description>&lt;p&gt;This is my first post with rssCloud enabled. It&amp;rsquo;s not that hard, if you&amp;rsquo;ve have&#xA;created the infrastructure already. The infrastructure can be found on github:&#xA;&lt;a href=&#34;https://github.com/pstuifzand/pompiedom-rsscloud&#34;&gt;github/pompiedom-rsscloud&lt;/a&gt; and &lt;a href=&#34;https://github.com/pstuifzand/pompiedom-ping&#34;&gt;github/pompiedom-ping&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Poking from the sideline</title>
      <link>https://peterstuifzand.nl/2012/01/13/poking-from-the-sideline/</link>
      <pubDate>Fri, 13 Jan 2012 12:30:13 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2012/01/13/poking-from-the-sideline/</guid>
      <description>&lt;p&gt;I really love the thoughtful blog posts and videos from people who are in the&#xA;middle of the thing they&amp;rsquo;re talking about. Those people know what they are&#xA;talking about and also have a way to make a change for the better.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Christopher_Hitchens&#34;&gt;Christopher Hitchens&lt;/a&gt; was a&#xA;author and journalist and fighter against religion and absolute morality.&#xA;&lt;a href=&#34;http://www.vanityfair.com/contributors/christopher-hitchens&#34;&gt;His articles in Vanity Fair&lt;/a&gt;&#xA;are both eloquent and interesting. Also see him &lt;a href=&#34;http://www.youtube.com/watch?v=rNTrusp-Iww&#34;&gt;speaking&lt;/a&gt;&#xA;against dictatorships and totalitarian regimes of all kinds.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running Facebook costs a lot of money</title>
      <link>https://peterstuifzand.nl/2011/12/26/running-facebook-costs-a-lot-of-money/</link>
      <pubDate>Mon, 26 Dec 2011 08:51:32 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/12/26/running-facebook-costs-a-lot-of-money/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.facebook.com/about/ads/&#34;&gt;Advertising on Facebook&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;It now costs over a billion dollars a year to run Facebook, and delivering&#xA;ads is how Facebook pays for this.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;It&amp;rsquo;s amazing how much money it costs to run some &lt;a href=&#34;http://www.youtube.com/watch?v=QOEMv0S8AcA&#34;&gt;PHP doodads and spying for free&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Via: &lt;a href=&#34;http://daringfireball.net/linked/2011/12/23/facebook-shovel&#34;&gt;Daring Fireball&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keystoning</title>
      <link>https://peterstuifzand.nl/2011/12/22/keystoning/</link>
      <pubDate>Thu, 22 Dec 2011 17:08:19 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/12/22/keystoning/</guid>
      <description>&lt;p&gt;In this presentation Kent Beck talks among other things, about a development&#xA;technique called &lt;em&gt;Keystoning&lt;/em&gt;. Someone from the audience asks him what it is. I&#xA;didn&amp;rsquo;t know it either and that means someone else probably also doesn&amp;rsquo;t know.&#xA;It&amp;rsquo;s really useful for bigger features and I have used it many times without&#xA;even knowing it.&lt;/p&gt;&#xA;&lt;p&gt;What is keystoning? Change the user-visible parts last. This way the changes&#xA;seem to have come really fast for the user. You can change a lot of code,&#xA;without making a change to the user inferface.&lt;/p&gt;</description>
    </item>
    <item>
      <title>X is dying</title>
      <link>https://peterstuifzand.nl/2011/12/08/x-is-dying/</link>
      <pubDate>Thu, 08 Dec 2011 14:36:23 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/12/08/x-is-dying/</guid>
      <description>&lt;p&gt;Things that aren&amp;rsquo;t alive, can&amp;rsquo;t die. So if you write an article with the title&#xA;&amp;ldquo;X is dying&amp;rdquo;, you should make sure that X was alive in the first place. If it&#xA;wasn&amp;rsquo;t alive, you should try and be more specific about what you mean.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Possible meanings&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;People used X in the past, but don&amp;rsquo;t anymore.&lt;/li&gt;&#xA;&lt;li&gt;Some people still use X, but will stop in the future.&lt;/li&gt;&#xA;&lt;li&gt;People use X, but don&amp;rsquo;t know what X is.&lt;/li&gt;&#xA;&lt;li&gt;People use X, but you don&amp;rsquo;t like it.&lt;/li&gt;&#xA;&lt;li&gt;People use X, but you don&amp;rsquo;t want them to.&lt;/li&gt;&#xA;&lt;li&gt;I don&amp;rsquo;t use X.&lt;/li&gt;&#xA;&lt;li&gt;I know someone who doesn&amp;rsquo;t use X.&lt;/li&gt;&#xA;&lt;li&gt;I&amp;rsquo;m a sad and miserable person, just hating about things. Oh, and people use X.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;And every time I used people above you replace it with customers, users, developers,&#xA;companies, grandma&amp;rsquo;s, moms, dads, your neighbours, or your pet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Taking back &#34;I don&#39;t know&#34;</title>
      <link>https://peterstuifzand.nl/2011/12/05/taking-back-i-dont-know/</link>
      <pubDate>Mon, 05 Dec 2011 21:32:48 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/12/05/taking-back-i-dont-know/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://blogs.hbr.org/pallotta/2011/12/i-dont-understand-what-anyone.html&#34;&gt;I Don&amp;rsquo;t Understand What Anyone Is Saying Anymore&lt;/a&gt; Dan Pallotta&#xA;wrote about business-speak:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;It involves the use of words such as &amp;ldquo;space,&amp;rdquo; &amp;ldquo;around,&amp;rdquo; &amp;ldquo;synergy,&amp;rdquo; and&#xA;&amp;ldquo;value-add&amp;rdquo; with a healthy dose of equivocators like &amp;ldquo;sort of&amp;rdquo; and &amp;ldquo;kind of&amp;rdquo;&#xA;to ensure that there is no commitment to anything being said&amp;hellip;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Perhaps a solution can be found in a simple little sentence that gives us some&#xA;room to think. “I don&amp;rsquo;t know.”&lt;/p&gt;</description>
    </item>
    <item>
      <title>From idea to weblog to research</title>
      <link>https://peterstuifzand.nl/2011/12/02/from-idea-to-weblog-to-research/</link>
      <pubDate>Fri, 02 Dec 2011 14:11:47 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/12/02/from-idea-to-weblog-to-research/</guid>
      <description>&lt;p&gt;While I was doing my morning reading I came across &lt;a href=&#34;http://blogs.perl.org/users/jeffrey_kegler/&#34;&gt;this weblog by Jeffrey&#xA;Kegler&lt;/a&gt; about his parser called &lt;a href=&#34;https://metacpan.org/module/Marpa::XS&#34;&gt;Marpa&lt;/a&gt;. My post is not about his&#xA;parser, even though it&amp;rsquo;s very interesting. This post is about the way the&#xA;weblog guides and explains the work and ideas in the parser. It even includes&#xA;historical information about where the ideas come from.&lt;/p&gt;&#xA;&lt;p&gt;It made me think about the work Simon Peyton-Jones has done on &lt;a href=&#34;http://research.microsoft.com/en-us/um/people/simonpj/papers/giving-a-talk/giving-a-talk.htm&#34;&gt;writing a&#xA;research paper&lt;/a&gt;. He explains that writing a paper helps your&#xA;thinking. On the fifth slide he says that instead of first doing research you&#xA;start with an idea (any idea) and then write a paper. In the course of writing&#xA;this paper you will do the research needed to fill in the blanks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Attribution</title>
      <link>https://peterstuifzand.nl/2011/12/02/attribution/</link>
      <pubDate>Fri, 02 Dec 2011 13:05:23 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/12/02/attribution/</guid>
      <description>&lt;p&gt;Sometimes a story just gets an idea going. This time it was about linking and&#xA;attribution in articles on the web. On Daring Fireball, there is &lt;a href=&#34;http://daringfireball.net/linked/2011/11/28/a-tech-blog&#34;&gt;a good example&#xA;pointing to a bad example&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t understand why there aren&amp;rsquo;t more links to weblogs and other places in&#xA;the newspapers. I could guess, but I won&amp;rsquo;t.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing an essay</title>
      <link>https://peterstuifzand.nl/2011/11/26/writing-an-essay/</link>
      <pubDate>Sat, 26 Nov 2011 14:49:08 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/26/writing-an-essay/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://paulgraham.com/essay.html&#34;&gt;The Age of the Essay&lt;/a&gt; Paul Graham wrote:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;When I run into difficulties, I find I conclude with a few vague questions&#xA;and then drift off to get a cup of tea.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Seems just like the thing I did in my previous &lt;a href=&#34;http://peterstuifzand.nl/2011/11/26/put-the-obviousness-into-code.html&#34;&gt;article&lt;/a&gt;. With the difference that I got a cup of coffee.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Put the obviousness into code</title>
      <link>https://peterstuifzand.nl/2011/11/26/put-the-obviousness-into-code/</link>
      <pubDate>Sat, 26 Nov 2011 12:29:14 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/26/put-the-obviousness-into-code/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s get back to what I wrote a few days ago about &lt;a href=&#34;http://peterstuifzand.nl/2011/11/16/where-can-you-start.html&#34;&gt;where you can start&lt;/a&gt;. I gave an example about&#xA;the search engine. I like to look at writing a weblog now.&lt;/p&gt;&#xA;&lt;p&gt;There exists much software for weblogs. There are hosted versions and there are&#xA;version that you can host yourself. And version that you can buy. There are even&#xA;companies where you get a weblog as part of another website.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Obsession x Voice</title>
      <link>https://peterstuifzand.nl/2011/11/24/obsession-x-voice/</link>
      <pubDate>Thu, 24 Nov 2011 22:01:11 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/24/obsession-x-voice/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s already a few years ago, that Merlin Mann and John Gruber talked about the&#xA;concept &amp;ldquo;&lt;a href=&#34;http://daringfireball.net/2009/03/obsession_times_voice&#34;&gt;Obsession x Voice&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;The thing is that you have to know what you&amp;rsquo;re obsessed with. That&amp;rsquo;s hard. You&#xA;could be really sad to not know what your obsession is. Not knowing is not the&#xA;biggest problem however. Deep down I know I have an obsession that I would&#xA;write about.  I have written about it. Quite a lot, actually.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Marpa parser for parsing marpa</title>
      <link>https://peterstuifzand.nl/2011/11/19/marpa-parser-for-parsing-marpa/</link>
      <pubDate>Sat, 19 Nov 2011 16:16:05 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/19/marpa-parser-for-parsing-marpa/</guid>
      <description>&lt;p&gt;I just wrote &lt;a href=&#34;https://github.com/pstuifzand/Marpa-parser-generator&#34;&gt;a small program&lt;/a&gt;&#xA;to parse and generate a parser that parses Marpa.  Marpa itself doesn&amp;rsquo;t include&#xA;such a program for good reasons I assume. Or if it exists I couldn&amp;rsquo;t find it.&lt;/p&gt;&#xA;&lt;p&gt;But as this is a small program it only generates a part of the parser. It is&#xA;also not bootstrapping.&lt;/p&gt;&#xA;&lt;p&gt;The repository contains a small tokenizer written in Perl. It tokenizes a line&#xA;of text and passes this on to the token recognizer, which in turn calls the&#xA;grammer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I don&#39;t like non-working things</title>
      <link>https://peterstuifzand.nl/2011/11/17/i-dont-like-non-working-things/</link>
      <pubDate>Thu, 17 Nov 2011 23:50:23 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/17/i-dont-like-non-working-things/</guid>
      <description>&lt;p&gt;I hate to create objects that try to look like other objects. Especially if&#xA;these objects don&amp;rsquo;t work like their real counterparts.&lt;/p&gt;&#xA;&lt;p&gt;Lifeless objects that look like they could work, but don&amp;rsquo;t.&lt;/p&gt;&#xA;&lt;p&gt;I also don&amp;rsquo;t like fake light sabers.&lt;/p&gt;&#xA;&lt;p&gt;A person only needs so many objects whose only function is the effect gravity&#xA;has on them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Where can you start?</title>
      <link>https://peterstuifzand.nl/2011/11/16/where-can-you-start/</link>
      <pubDate>Wed, 16 Nov 2011 16:57:06 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/16/where-can-you-start/</guid>
      <description>&lt;p&gt;In my last post about the &lt;a href=&#34;http://peterstuifzand.nl/2011/11/16/what-s-the-base-technology.html&#34;&gt;base technology&lt;/a&gt;&#xA;I wrote that we need ways to starter higher in the chain of existing software.&#xA;The place where you can start building your new software is a place between the&#xA;minimum technology needed and the maximum technology possible.&lt;/p&gt;&#xA;&lt;p&gt;These two points don&amp;rsquo;t have to lie on the same line. An example could be a new&#xA;web search engine. In this example the minimum point is a C compiler and a&#xA;Linux server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What&#39;s the base technology</title>
      <link>https://peterstuifzand.nl/2011/11/16/whats-the-base-technology/</link>
      <pubDate>Wed, 16 Nov 2011 16:11:16 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/16/whats-the-base-technology/</guid>
      <description>&lt;p&gt;As people who make things, we like to start new projects or create new software&#xA;or websites. One of the first questions that we need to face is what technology&#xA;will I use? What is the technology that I can build my new idea on top of? And&#xA;what technology is the easiest to use?&lt;/p&gt;&#xA;&lt;p&gt;For different projects the answer to these questions is different. And the&#xA;question is also different for different people.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I deactivated my Facebook account</title>
      <link>https://peterstuifzand.nl/2011/11/13/i-deactivated-my-facebook-account/</link>
      <pubDate>Sun, 13 Nov 2011 15:25:45 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/13/i-deactivated-my-facebook-account/</guid>
      <description>&lt;p&gt;For people who miss my on Facebook, I&amp;rsquo;m here and I&amp;rsquo;m ok. If you want to reach&#xA;me there are many ways to do that. For example by sending me an e-mail.&lt;/p&gt;&#xA;&lt;p&gt;You can send me an email at&#xA;&lt;a href=&#34;mailto:peter@tweevijftig.nl&#34;&gt;peter@tweevijftig.nl&lt;/a&gt;. In the meantime I&amp;rsquo;m also&#xA;available on &lt;a href=&#34;http://twitter.com/pstuifzand&#34;&gt;Twitter&lt;/a&gt;. But I&amp;rsquo;m not sure how long&#xA;this will last.&lt;/p&gt;&#xA;&lt;p&gt;My web presence as always is here, which it has been ever since 2004 and it&#xA;will continue to be so in the future.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Must see talk by Alan Kay</title>
      <link>https://peterstuifzand.nl/2011/11/12/must-see-talk-by-alan-kay/</link>
      <pubDate>Sat, 12 Nov 2011 12:05:40 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/11/12/must-see-talk-by-alan-kay/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://tele-task.de/archive/video/flash/14029/&#34;&gt;Programming and Scaling&lt;/a&gt; talk by Alan Kay.&lt;/p&gt;</description>
    </item>
    <item>
      <title>META II</title>
      <link>https://peterstuifzand.nl/2011/10/15/meta-ii/</link>
      <pubDate>Sat, 15 Oct 2011 23:08:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/10/15/meta-ii/</guid>
      <description>&lt;p&gt;Today I implemented the META II compiler compiler using this paper: &lt;a href=&#34;http://www.ibm-1401.info/Meta-II-schorre.pdf&#34;&gt;META II: A&#xA;syntax-oriented compiler writing&#xA;language&lt;/a&gt;. The code can be found on &lt;a href=&#34;http://github.com/pstuifzand/meta-ii-parser&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;An interesting idea from this paper is that the language is really easy to&#xA;implement using just a few lines of code. The C code is quite a bit larger, but&#xA;could be made smaller. A bigger problem with the code is that the compiler&#xA;generates an assembly language program that still needs an assembler and a&#xA;virtual machine. These two parts need to be created before I can actually test&#xA;the program.&lt;/p&gt;</description>
    </item>
    <item>
      <title>No future for flash</title>
      <link>https://peterstuifzand.nl/2011/09/17/no-future-for-flash/</link>
      <pubDate>Sat, 17 Sep 2011 13:09:32 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/09/17/no-future-for-flash/</guid>
      <description>&lt;p&gt;Now that the future Windows &lt;a href=&#34;https://blogs.msdn.com/b/b8/archive/2011/09/14/metro-style-browsing-and-plug-in-free-html5.aspx&#34;&gt;won&amp;rsquo;t include support for&#xA;plugins&lt;/a&gt;,&#xA;it&amp;rsquo;s time to think to change your website and remove Flash.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing Plack middleware</title>
      <link>https://peterstuifzand.nl/2011/09/15/writing-plack-middleware/</link>
      <pubDate>Thu, 15 Sep 2011 13:19:32 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/09/15/writing-plack-middleware/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s start with this: have you looked at &lt;a href=&#34;http://plackperl.org&#34;&gt;Plack&lt;/a&gt; yet? If&#xA;you haven&amp;rsquo;t you should. It&amp;rsquo;s the future of Perl web programming. It&amp;rsquo;s by far&#xA;the easiest way to create web software. And the best way to start is to use&#xA;one of the frameworks that were created already.&lt;/p&gt;&#xA;&lt;p&gt;One of the nice features of frameworks based on Plack is that it&amp;rsquo;s really easy&#xA;to enable kick-ass middleware by just adding one line in the configuration. The&#xA;other thing is you don&amp;rsquo;t have to write many of these yourself, they&amp;rsquo;re&#xA;&lt;a href=&#34;http://search.cpan.org/search?query=plack&amp;#43;middleware&amp;amp;mode=all&#34;&gt;available on CPAN&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pretty colors for charts using Chart</title>
      <link>https://peterstuifzand.nl/2011/08/25/pretty-colors-for-charts-using-chart/</link>
      <pubDate>Thu, 25 Aug 2011 16:32:42 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/08/25/pretty-colors-for-charts-using-chart/</guid>
      <description>&lt;p&gt;Monday I was creating a graph for my webshop software. I use the&#xA;&lt;a href=&#34;https://search.cpan.org/dist/Chart/&#34;&gt;Chart&lt;/a&gt; module, but the colors&#xA;and the graph of the default settings aren&amp;rsquo;t really pretty. So I tried to&#xA;create a better looking chart. I think I succeeded at least a bit.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/chart.png&#34; alt=&#34;Example of the blue and gray chart&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Here is the code that I used to get this result:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;my $c = Chart::Composite-&amp;gt;new(1024, 250);&#xA;&#xA;$c-&amp;gt;set(composite_info =&amp;gt; [&#xA;    [ &#39;Lines&#39;, [1] ],&#xA;    [ &#39;Points&#39;, [2] ],&#xA;]);&#xA;$c-&amp;gt;set(precision    =&amp;gt; 0);&#xA;$c-&amp;gt;set(skip_x_ticks =&amp;gt; 7);&#xA;$c-&amp;gt;set(max_y_ticks  =&amp;gt; 11);&#xA;$c-&amp;gt;set(min_y_ticks  =&amp;gt; 2);&#xA;&#xA;$c-&amp;gt;set(legend =&amp;gt; &#39;none&#39;);&#xA;$c-&amp;gt;set(grey_background =&amp;gt; &#39;false&#39;);&#xA;$c-&amp;gt;set(y_grid_lines =&amp;gt; &#39;true&#39;);&#xA;&#xA;$c-&amp;gt;set(colors =&amp;gt; {&#xA;    &#39;background&#39; =&amp;gt; [255,255,255],&#xA;    &#39;misc&#39; =&amp;gt; [200,200,200],&#xA;    &#39;x_grid_lines&#39; =&amp;gt; [220,220,220],&#xA;    &#39;y_grid_lines&#39; =&amp;gt; [220,220,220],&#xA;    &#39;dataset0&#39;=&amp;gt;[150,180,250],&#xA;    &#39;dataset1&#39;=&amp;gt;[120,140,240],&#xA;});&#xA;&#xA;&#xA;my $label = &#39;x&#39;;&#xA;my $val   = 10;&#xA;$c-&amp;gt;add_pt($label, $val, $val);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You should call &lt;code&gt;add_pt&lt;/code&gt; for each point you want to show. I use &lt;code&gt;$val&lt;/code&gt; twice&#xA;because there are two graphs that both need the same value.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hotmail Sweep</title>
      <link>https://peterstuifzand.nl/2011/08/22/hotmail-sweep/</link>
      <pubDate>Mon, 22 Aug 2011 10:27:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/08/22/hotmail-sweep/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://explore.live.com/windows-live-hotmail-sweep-junk-using&#34;&gt;Hotmail&#xA;Sweep&lt;/a&gt; is a&#xA;really powerful idea. It&amp;rsquo;s an easier way to create email filters, without&#xA;calling it that.&lt;/p&gt;&#xA;&lt;p&gt;You can only use two action: move and delete. These are most important ones&#xA;however. And you can only the from address to filter messages.&lt;/p&gt;&#xA;&lt;p&gt;Hotmail removed a few options and made the feature as a whole more useful.&#xA;They could make to easier to create a new folder, that&amp;rsquo;s still a bit of&#xA;work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Moving...</title>
      <link>https://peterstuifzand.nl/2011/08/18/moving.../</link>
      <pubDate>Thu, 18 Aug 2011 16:32:13 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/08/18/moving.../</guid>
      <description>&lt;p&gt;I have moved. It&amp;rsquo;s been a long time coming, but in the last few weeks I have&#xA;moved. Not everything is ready yet here, but at least I can write blog posts&#xA;again on my own computer. I still need to finish the desk, so at the moment&#xA;I use the dining table.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/2011/08/18/moving.../2011_moving_desk.jpg&#34; alt=&#34;My temporary desk&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I like Google Plus</title>
      <link>https://peterstuifzand.nl/2011/08/14/i-like-google-plus/</link>
      <pubDate>Sun, 14 Aug 2011 13:32:29 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/08/14/i-like-google-plus/</guid>
      <description>&lt;p&gt;I just need some more people to talk to. So invite yourself using this link: &lt;a href=&#34;https://plus.google.com/_/notifications/ngemlink?path=%2F%3Fgpinv%3DF4DVFqIJDSI%3AET0xPBzDL1M&#34;&gt;Google+&#xA;invites&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Just leave me a message somewhere if you got one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Your podcast is too long</title>
      <link>https://peterstuifzand.nl/2011/06/20/your-podcast-is-too-long/</link>
      <pubDate>Mon, 20 Jun 2011 20:12:40 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/06/20/your-podcast-is-too-long/</guid>
      <description>&lt;p&gt;The last few weeks I heard a few times that people think that some podcasts&#xA;are too long. I think it the next thing that should happen is that the&#xA;creators of these podcasts should ask those people the following question.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Why do you think that this podcast is too long?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t think that the length of the podcast is the problem these people are&#xA;complaining about.&lt;/p&gt;&#xA;&lt;p&gt;I think that there is a difference between the people asking about the&#xA;length and listening to the podcast, and the people creating the podcasts.&#xA;This difference is that the first group has a job that needs them to&#xA;commute, while the other group stays at home. So the problem is that the&#xA;podcast is longer than the length of the commute, which makes listening to&#xA;the whole podcast more difficult.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One</title>
      <link>https://peterstuifzand.nl/2011/04/20/one/</link>
      <pubDate>Wed, 20 Apr 2011 17:34:21 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/20/one/</guid>
      <description>&lt;p&gt;In the article about &lt;a href=&#34;http://peterstuifzand.nl/2011/04/20/web-applications-and-data-structures.html&#34;&gt;why we don&amp;rsquo;t use more data structures in web&#xA;applications&lt;/a&gt; I showed an example of PHP code. I copied the code&#xA;below. The example shows how we start to write web applications. I will rewrite the&#xA;code so it says one thing: insert a person into the database.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;?php&#xA;    $name    = $_POST[&#39;name&#39;];&#xA;    $address = $_POST[&#39;street&#39;];&#xA;    $city    = $_POST[&#39;city&#39;];&#xA;    db_person_insert($db, $name, $address, $city);&#xA;?&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Two things happen in this example. First we get the variables from the&#xA;&lt;code&gt;$_POST&lt;/code&gt; variable. And then we insert the values into the database.&#xA;First I&amp;rsquo;ll add the &amp;lsquo;code&amp;rsquo; of the &lt;code&gt;db_person_insert&lt;/code&gt; function as well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Moving tweeting of Twitter</title>
      <link>https://peterstuifzand.nl/2011/04/20/moving-tweeting-of-twitter/</link>
      <pubDate>Wed, 20 Apr 2011 10:44:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/20/moving-tweeting-of-twitter/</guid>
      <description>&lt;p&gt;Doc Searls says in &lt;a href=&#34;http://blogs.law.harvard.edu/doc/2011/04/19/lets-move-tweeting-off-twitter/&#34;&gt;Let&amp;rsquo;s move tweeting off Twitter&lt;/a&gt; that most&#xA;online communication isn&amp;rsquo;t owned by one company:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Blogging, emailing and messaging aren’t owned by anybody. Tweeting is owned&#xA;by Twitter. That’s a problem.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;It is one of the points I tried to make &lt;a href=&#34;http://peterstuifzand.nl/2011/04/16/decentralization-as-advantage-for-companies.html&#34;&gt;a few days ago&lt;/a&gt;. I&#xA;don&amp;rsquo;t think we have to move away from Twitter. But I do think we need to at&#xA;least make it possible for every company (and person) to have their own&#xA;microblogging instance. And all these instances should be able work&#xA;together.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web applications and data structures</title>
      <link>https://peterstuifzand.nl/2011/04/20/web-applications-and-data-structures/</link>
      <pubDate>Wed, 20 Apr 2011 00:05:39 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/20/web-applications-and-data-structures/</guid>
      <description>&lt;p&gt;There is this question that keeps coming back when I see the code of web&#xA;applications. It keeps coming back, probably because it relates to the&#xA;basics of our field.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Why do we forget we learned about data structures, the moment&#xA;we start to write web applications?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;The question points at three things. Why do we forget about data&#xA;structures?  Why don&amp;rsquo;t we write better code for web applications? The last&#xA;point is a passive-aggressive jab at all web developers. And I&amp;rsquo;m one of&#xA;them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Decentralization as advantage for companies</title>
      <link>https://peterstuifzand.nl/2011/04/16/decentralization-as-advantage-for-companies/</link>
      <pubDate>Sat, 16 Apr 2011 21:27:37 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/16/decentralization-as-advantage-for-companies/</guid>
      <description>&lt;p&gt;Decentralized services, like email, have a big advantage for users. I can&#xA;send email to anyone that I have the email address of. The advantage for me&#xA;is that even if my friends use a different email provider, I can still send&#xA;them emails. It would be a huge problem if I&amp;rsquo;d need an email account with&#xA;every provider that I wanted to send emails to. That I can use one account&#xA;to send email to anyone that reads email is an advantage for me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disable comments on your blog</title>
      <link>https://peterstuifzand.nl/2011/04/13/disable-comments-on-your-blog/</link>
      <pubDate>Wed, 13 Apr 2011 14:13:21 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/13/disable-comments-on-your-blog/</guid>
      <description>&lt;p&gt;David Siegel &lt;a href=&#34;http://twitter.com/#!/davidsiegel/status/57926676113403904&#34;&gt;tweets&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Looking to make a positive change in your life? Disable comments on your&#xA;blog.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;When you want to respond to a blog post, get your own blog and write a&#xA;blog post there.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Which program listens on a port?</title>
      <link>https://peterstuifzand.nl/2011/04/13/which-program-listens-on-a-port/</link>
      <pubDate>Wed, 13 Apr 2011 13:13:12 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/13/which-program-listens-on-a-port/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s say you run &lt;code&gt;nmap&lt;/code&gt; on your local box and you see an open port, but&#xA;don&amp;rsquo;t know which program is listening on that port. Wouldn&amp;rsquo;t it be great to&#xA;be able to find out? The program you need to find this information is&#xA;&lt;code&gt;lsof&lt;/code&gt;, or &lt;em&gt;list open files&lt;/em&gt;. This program can show you a lot of information&#xA;about open files, ports and directories.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s go back to the original question. Run the following command.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log parsing speed</title>
      <link>https://peterstuifzand.nl/2011/04/13/log-parsing-speed/</link>
      <pubDate>Wed, 13 Apr 2011 11:36:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/13/log-parsing-speed/</guid>
      <description>&lt;p&gt;Now that we have two programs that parse log files, we can start to take a&#xA;look at how many lines the program parses per second. First we have to make&#xA;the two programs as similar as possible. In pseudocode it looks likes this.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Load all modules&lt;/li&gt;&#xA;&lt;li&gt;Take the start time using Time::HiRes&lt;/li&gt;&#xA;&lt;li&gt;Put the code of the program here&lt;/li&gt;&#xA;&lt;li&gt;Set line_count = 0&lt;/li&gt;&#xA;&lt;li&gt;Using stdin: loop through all lines&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Parse the line&lt;/li&gt;&#xA;&lt;li&gt;Set line_count++&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Find the time difference&lt;/li&gt;&#xA;&lt;li&gt;Divide and line_count / time as &lt;code&gt;n&lt;/code&gt; lines/s&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;In Perl this looks like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Write your own Accesslog parser in Perl</title>
      <link>https://peterstuifzand.nl/2011/04/12/write-your-own-accesslog-parser-in-perl/</link>
      <pubDate>Tue, 12 Apr 2011 20:59:27 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/12/write-your-own-accesslog-parser-in-perl/</guid>
      <description>&lt;p&gt;Writing an apache access log parser isn&amp;rsquo;t that hard. Below is a parser that&#xA;does just that. It creates Data::Dumper output of all the lines. No warranty.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;use Data::Dumper;&#xA;use Parse::RecDescent;&#xA;&#xA;$Parse::RecDescent::skip = &#39;&#39;;&#xA;&#xA;my $grammar = q{&#xA;line: ip ws &#39;-&#39; ws user ws datetime ws request ws status ws responsesize&#xA;            ws referrer ws useragent &amp;quot;\n&amp;quot;&#xA;{ $return = {&#xA;            ip        =&amp;gt; $item[1],&#xA;            user      =&amp;gt; $item[5],&#xA;            datetime  =&amp;gt; $item[7],&#xA;            method    =&amp;gt; $item[9]-&amp;gt;{method},&#xA;            url       =&amp;gt; $item[9]-&amp;gt;{url},&#xA;            protocol  =&amp;gt; $item[9]-&amp;gt;{protocol},&#xA;            status    =&amp;gt; $item[11],&#xA;            size      =&amp;gt; $item[13],&#xA;            referrer  =&amp;gt; $item[15],&#xA;            useragent =&amp;gt; $item[17],&#xA;        } }&#xA;user: &#39;-&#39; | /\w+/&#xA;request: &#39;&amp;quot;&#39; method ws url ws protocol &#39;&amp;quot;&#39;&#xA;    { $return = { method =&amp;gt; $item[2], url =&amp;gt; $item[4], protocol =&amp;gt; $item[6] } }&#xA;datetime: &#39;[&#39; date &#39;:&#39; time ws timezone &#39;]&#39;&#xA;    { $return = $item[2] . &#39; &#39; . $item[4] . &#39; &#39; . $item[6] }&#xA;status: /\d{3}/&#xA;protocol: &#39;HTTP/&#39; version&#xA;method: &#39;GET&#39; | &#39;POST&#39; | &#39;PUT&#39; | &#39;DELETE&#39;&#xA;ws: /[ ]+/&#xA;url: /\S+/&#xA;referrer: quotedstring2&#xA;responsesize: &#39;-&#39; | /\d+/&#xA;useragent: quotedstring2&#xA;date: day &#39;/&#39; month &#39;/&#39; year&#xA;    { $return = join(&#39;/&#39;, $item[1], $item[3], $item[5]) }&#xA;day: /\d+/&#xA;month: &#39;Jan&#39; | &#39;Feb&#39; | &#39;Mar&#39; | &#39;Apr&#39; | &#39;May&#39; | &#39;Jun&#39; |&#xA;    &#39;Jul&#39; | &#39;Aug&#39; | &#39;Sep&#39; | &#39;Oct&#39; | &#39;Nov&#39; | &#39;Dec&#39;&#xA;year: /\d{4}/&#xA;time: /\d{2}:\d{2}:\d{2}/&#xA;timezone: (&#39;+&#39;|&#39;-&#39;) /\d{4}/  { $return = $item[1].$item[2] }&#xA;octet: /\d+/&#xA;ip: octet (&#39;.&#39; octet)(3) { $return = $item[1] . &#39;.&#39; . join(&#39;.&#39;, @{$item[2]}) }&#xA;version: /\d.\d/&#xA;quotedstring2: &#39;&amp;quot;&#39; /[^&amp;quot;]+/ &#39;&amp;quot;&#39;   {$return = $item[2]}&#xA;};&#xA;&#xA;my $parser = Parse::RecDescent-&amp;gt;new($grammar) or die &amp;quot;Bad Grammer&amp;quot;;&#xA;while (&amp;lt;&amp;gt;) {&#xA;    my $ret = $parser-&amp;gt;line($_) or print &amp;quot;Parse error\n&amp;quot;;&#xA;    print Dumper($ret);&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Apache accesslog reporting tools</title>
      <link>https://peterstuifzand.nl/2011/04/12/apache-accesslog-reporting-tools/</link>
      <pubDate>Tue, 12 Apr 2011 11:36:31 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/12/apache-accesslog-reporting-tools/</guid>
      <description>&lt;p&gt;Today I tried to create a report of some basic statistics about&#xA;&lt;a href=&#34;http://stuifzand.eu/abacus/&#34;&gt;Abacus&lt;/a&gt; downloads. Normally I would use&#xA;&lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;awk&lt;/code&gt; and a few other commandline tools to find a rough estimate of&#xA;these numbers. However this time I needed a bit more information than these&#xA;tools could give me. A problem in need of a solution.&lt;/p&gt;&#xA;&lt;p&gt;My first question was: how many people have downloaded Abacus? The answer is&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;grep &#39;/abacus/files/Abacus&#39; | grep -v &#39;&amp;lt;localip&amp;gt;&#39; \&#xA;    | grep -v &#39;somebots&#39; | awk &#39;{print $1}&#39;&#xA;    | sort | uniq | wc -l&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The pattern here is the following. First find the lines you want. Then remove the&#xA;lines you don&amp;rsquo;t want. Print the first field-the client-and makes this list&#xA;unique. I don&amp;rsquo;t want to count multiple downloads from the same ip.&lt;/p&gt;</description>
    </item>
    <item>
      <title>F*ck you, pay me</title>
      <link>https://peterstuifzand.nl/2011/04/12/fck-you-pay-me/</link>
      <pubDate>Tue, 12 Apr 2011 09:24:05 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/12/fck-you-pay-me/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m aware that this is really obvious to some of you. I link to a video here&#xA;of &lt;a href=&#34;http://vimeo.com/22053820&#34;&gt;a presentation by Mike Montiero of Mule&#xA;Design&lt;/a&gt;&#xA;about how to get clients to pay you for your services. If you work with&#xA;clients then you should watch this. It&amp;rsquo;s about how it should be done. Just&#xA;good advice.&lt;/p&gt;&#xA;&lt;p&gt;Then after you enjoyed the video, you should listen to this &lt;a href=&#34;http://5by5.tv/pipeline/43&#34;&gt;interview of&#xA;Mike Montiero by Dan Benjamin&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Not locked up in your phone or email</title>
      <link>https://peterstuifzand.nl/2011/04/11/not-locked-up-in-your-phone-or-email/</link>
      <pubDate>Mon, 11 Apr 2011 22:52:18 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/11/not-locked-up-in-your-phone-or-email/</guid>
      <description>&lt;p&gt;In the first 5 minutes of the video &lt;a href=&#34;http://www.youtube.com/watch?v=cSNGGAKJqwk&#34;&gt;The Storage Technologies Behind&#xA;Facebook Messages&lt;/a&gt; the bald&#xA;manager talks about messages and shoeboxes, and how he can&amp;rsquo;t have all&#xA;his messages in one place. He says: &amp;ldquo;Where is my box of letters? It&amp;rsquo;s locked&#xA;up in a phone, it&amp;rsquo;s locked up in email. It&amp;rsquo;s not in one place. Until now.&amp;rdquo;&#xA;The one place being Facebook. So I ask, how is it better if we lock up all our messages in&#xA;Facebook?&lt;/p&gt;</description>
    </item>
    <item>
      <title>The parts of Realtime RSS</title>
      <link>https://peterstuifzand.nl/2011/04/10/the-parts-of-realtime-rss/</link>
      <pubDate>Sun, 10 Apr 2011 17:48:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/10/the-parts-of-realtime-rss/</guid>
      <description>&lt;p&gt;Friday night I implemented a new feature for my Pompiedom empire for&#xA;realtime RSS feeds. At some point on saturday I realised that I had made a&#xA;small mistake (it depends how you look at it, of course).&lt;/p&gt;&#xA;&lt;p&gt;Today I thought a bit about the different parts of a Realtime RSS&#xA;ecosystem and I found the following parts&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;The cloud&lt;/strong&gt;, a mechanism for subscription and notification of&#xA;feeds. You can subscribe to a feed and the cloud will send a notification&#xA;if something changes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;, stores new feed items and provides feeds to readers. Pings&#xA;the cloud if a new item is added.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Authoring&lt;/strong&gt;, an interface for create new items in a feed. Sends the new&#xA;items to the storage.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reading&lt;/strong&gt;, tools for reading the feeds and can be notified by the cloud&#xA;when new items appear in feeds.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Parts of this system can be combined into one program, but it&amp;rsquo;s not needed,&#xA;because of the protocols that are used. Each part can be a separate program&#xA;and multiple programs can implement the same part.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Names are important for being specific</title>
      <link>https://peterstuifzand.nl/2011/04/07/names-are-important-for-being-specific/</link>
      <pubDate>Thu, 07 Apr 2011 21:43:56 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/07/names-are-important-for-being-specific/</guid>
      <description>&lt;p&gt;I read an article from the BBC website that talks about how&#xA;&lt;a href=&#34;http://www.bbc.co.uk/news/technology-12983734&#34;&gt;Net giants challenge French data law&lt;/a&gt;.  The article isn&amp;rsquo;t very specific&#xA;about what the law actually contains. There also isn&amp;rsquo;t a link to the text of&#xA;the law or the name (or number if you will) of this law. So while this&#xA;creates &lt;a href=&#34;http://twitter.com/#!/search/french%20data%20law&#34;&gt;a lot of commotion on Twitter&lt;/a&gt;, there is no way to search&#xA;for the text of this law. The only name we got is &amp;lsquo;french data law&amp;rsquo;, which&#xA;is in my opinion not very useful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cursor blinking in Ubuntu</title>
      <link>https://peterstuifzand.nl/2011/04/07/cursor-blinking-in-ubuntu/</link>
      <pubDate>Thu, 07 Apr 2011 17:32:46 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/07/cursor-blinking-in-ubuntu/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m not sure when it happened, but yesterday and part of today I found&#xA;myself in the company of a blinking cursor. Normally blinking cursors are&#xA;not a big problem. The thing is, however, that when I&amp;rsquo;m writing code, or&#xA;text in my favorite text editor, I want to know where the next character I&#xA;type will land on the screen. With this blinking cursor, it seemed my mind&#xA;started to blink in unison. Not very useful when trying to write.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create sub directories in Perl</title>
      <link>https://peterstuifzand.nl/2011/04/07/create-sub-directories-in-perl/</link>
      <pubDate>Thu, 07 Apr 2011 11:44:45 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/07/create-sub-directories-in-perl/</guid>
      <description>&lt;p&gt;Sometimes you need to create a large tree of subdirectories. But why? Two&#xA;examples that I think of are structured directories for weblogs, e.g.&#xA;&lt;code&gt;/[year]/[month]/[day]/&lt;/code&gt;, or the automatic backing up of files e.g.&#xA;&lt;code&gt;invoices/[company]/[year]&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Before you begin, you know that using a &lt;code&gt;split&lt;/code&gt; and &lt;code&gt;chdir&lt;/code&gt;, or some other combination of&#xA;built-ins, will just make big mess. A call to &lt;code&gt;mkdir -p&lt;/code&gt; could also work,&#xA;but let&amp;rsquo;s use the available modules this time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Just for reference: Firefox keyboard shortcuts</title>
      <link>https://peterstuifzand.nl/2011/04/06/just-for-reference-firefox-keyboard-shortcuts/</link>
      <pubDate>Wed, 06 Apr 2011 19:09:35 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/06/just-for-reference-firefox-keyboard-shortcuts/</guid>
      <description>&lt;p&gt;A list of [Firefox keybindings](&lt;a href=&#34;http://support.mozilla.com/en-US/kb/Keyboard&#34;&gt;http://support.mozilla.com/en-US/kb/Keyboard&lt;/a&gt;&#xA;shortcuts). I couldn&amp;rsquo;t find this list, because I was searching for key&#xA;bindings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating thumbnails with Windowpipe</title>
      <link>https://peterstuifzand.nl/2011/04/06/creating-thumbnails-with-windowpipe/</link>
      <pubDate>Wed, 06 Apr 2011 16:18:10 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/06/creating-thumbnails-with-windowpipe/</guid>
      <description>&lt;p&gt;Yesterday I created a small program called Windowpipe. IT allows you to drop&#xA;files in a window and it will a script on that file. To give you a better&#xA;idea of how this works, I created a small screencast.&lt;/p&gt;&#xA;&lt;div&gt;&#xA;&lt;video width=&#34;500&#34; height=&#34;375&#34; controls&gt;&#xA;  &lt;source src=&#34;http://peterstuifzand.nl/videos/windowpipe-thumbnails.ogv&#34;&#xA;  type=&#34;video/ogg&#34; /&gt;&#xA;  &lt;source src=&#34;http://peterstuifzand.nl/videos/windowpipe-thumbnails.mp4&#34;&#xA;  type=&#34;video/mp4&#34; /&gt;&#xA;&lt;/video&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;So what&amp;rsquo;s happening? First I drag the &lt;code&gt;shoes.jpg&lt;/code&gt; file to the &lt;code&gt;windowpipe&lt;/code&gt;&#xA;window, which I started before with &lt;code&gt;createthumb.pl&lt;/code&gt;. After the drag a new&#xA;file is created called &lt;code&gt;thumb_shoes.jpg&lt;/code&gt;. Then I show the two files. Simple.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Drop files on a window and run a script</title>
      <link>https://peterstuifzand.nl/2011/04/05/drop-files-on-a-window-and-run-a-script/</link>
      <pubDate>Tue, 05 Apr 2011 11:48:18 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/05/drop-files-on-a-window-and-run-a-script/</guid>
      <description>&lt;p&gt;The premise is simple: create a window the runs a script on the items that were&#xA;dropped on the window. Simple idea, simple program. I took a first crack at it and&#xA;uploaded the code.&lt;/p&gt;&#xA;&lt;p&gt;The first release &lt;a href=&#34;http://github.com/pstuifzand/WindowPipe&#34;&gt;just runs a script&lt;/a&gt;&#xA;and passes the dropped thing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Let&#39;s start a programming news network</title>
      <link>https://peterstuifzand.nl/2011/04/04/lets-start-a-programming-news-network/</link>
      <pubDate>Mon, 04 Apr 2011 23:23:24 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/04/lets-start-a-programming-news-network/</guid>
      <description>&lt;p&gt;I have been building a system of posting short posts on top of RSS and&#xA;rssCloud. This system helps people to create link blogs and short posts about&#xA;anything they like. Now I was thinking maybe we can build a programming news&#xA;network on top of this system. There are already two systems that I know of&#xA;that work with this system. One is &lt;a href=&#34;http://github.com/pstuifzand/pompiedom-river&#34;&gt;my own&lt;/a&gt;,&#xA;called Pompiedom. The other is the system created by &lt;a href=&#34;http://scripting.com&#34;&gt;Dave Winer&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I use Google Reader</title>
      <link>https://peterstuifzand.nl/2011/04/04/how-i-use-google-reader/</link>
      <pubDate>Mon, 04 Apr 2011 21:00:13 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/04/how-i-use-google-reader/</guid>
      <description>&lt;p&gt;I like it that I have to deal with every item in Google Reader. I think it is a&#xA;good way to do a&#xA;&lt;a href=&#34;http://www.reallysimplesyndication.com/riverOfNews&#34;&gt;river of news&lt;/a&gt;, especially&#xA;if it is sorted oldest to newest. Dealing with these items is really simple.&lt;/p&gt;&#xA;&lt;p&gt;Google Reader sorts my items from oldest to newest and I view every item in&#xA;turn. To go to the next item I press &amp;lsquo;J&amp;rsquo;. This way I can skim every item. If I&#xA;find something that I want to read (especially if it&amp;rsquo;s longer) I open it in a&#xA;new tab.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make the location implicit</title>
      <link>https://peterstuifzand.nl/2011/04/03/make-the-location-implicit/</link>
      <pubDate>Sun, 03 Apr 2011 13:40:16 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/03/make-the-location-implicit/</guid>
      <description>&lt;p&gt;URLs are &lt;a href=&#34;http://en.wikipedia.org/wiki/Uniform_Resource_Locator&#34;&gt;the addresses of the internet&lt;/a&gt;.&#xA;Each URL points to a location and your user can go there. However on the&#xA;internet the addresses are not that important to the users and browsers.&#xA;Especially since we can read almost any page on such a location. So the&#xA;location doesn&amp;rsquo;t matter as long as we find what we expect.&lt;/p&gt;&#xA;&lt;p&gt;The URL and the link text both build an expectation in us. The text and the URL&#xA;will imply what we will find after we click the link. I think it makes sense to&#xA;write links without showing the URL.&lt;/p&gt;</description>
    </item>
    <item>
      <title>List folders in a Maildir for mutt</title>
      <link>https://peterstuifzand.nl/2011/04/01/list-folders-in-a-maildir-for-mutt/</link>
      <pubDate>Fri, 01 Apr 2011 10:14:43 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/04/01/list-folders-in-a-maildir-for-mutt/</guid>
      <description>&lt;pre&gt;&lt;code&gt;find . | awk -F/ &#39;{ print $2 }&#39; | sort | uniq |\&#xA;   grep &#39;^\.&#39; | sed -e &#39;s/^./+./&#39;&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Pompiedom River UI</title>
      <link>https://peterstuifzand.nl/2011/03/31/pompiedom-river-ui/</link>
      <pubDate>Thu, 31 Mar 2011 16:35:38 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/31/pompiedom-river-ui/</guid>
      <description>&lt;p&gt;The new River UI looks like this:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://peterstuifzand.com/uploads/189513e1d387f455df9776d6acbdc45daf4e02370ca09e08db92b6b3b08e4e57.png&#34;&gt;Small interface&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Clicking the What&amp;rsquo;s happening field will open the whole form:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://peterstuifzand.com/uploads/31dbb294404ec1ae1deb6fe287578647bf46a3c22dc133968acb68bcf48b0af4.png&#34;&gt;Whole river form&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Difference between Firefox and Chrome handling of CORS</title>
      <link>https://peterstuifzand.nl/2011/03/31/difference-between-firefox-and-chrome-handling-of-cors/</link>
      <pubDate>Thu, 31 Mar 2011 16:04:46 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/31/difference-between-firefox-and-chrome-handling-of-cors/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://www.w3.org/TR/cors/#supports-credentials&#34;&gt;Cross-Origin Resource Sharing&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Why can cookies and authentication information not be provided by the script author for the request?&lt;/p&gt;&#xA;&lt;p&gt;This would allow dictionary based, distributed, cookies / user credentials search.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;If you send a username and password when using &lt;code&gt;withCredentials&lt;/code&gt;, then&#xA;&lt;code&gt;XMLHTTPRequest.send(...)&lt;/code&gt; will fail in Firefox 4, but not on &lt;code&gt;Chrome 11.0.696.16 dev&lt;/code&gt;. Removing the username and password will make it work on both of them.&lt;/p&gt;&#xA;&lt;p&gt;I haven&amp;rsquo;t tested other versions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTML5 Audio</title>
      <link>https://peterstuifzand.nl/2011/03/29/html5-audio/</link>
      <pubDate>Tue, 29 Mar 2011 00:15:32 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/29/html5-audio/</guid>
      <description>&lt;p&gt;Today I was working on river again and after I added enclosure support I wanted&#xA;to add a way to play audio files. The first thing I thought was, we can I find&#xA;an inline mp3 player. And while I went to Google another idea popped into my&#xA;mind: HTML5 audio.&lt;/p&gt;&#xA;&lt;p&gt;So I added the tag:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;audio src=&amp;quot;url&amp;quot; /&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;And without much more effort I had working audio playback in my river. How easy&#xA;is that?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pompiedom river</title>
      <link>https://peterstuifzand.nl/2011/03/27/pompiedom-river/</link>
      <pubDate>Sun, 27 Mar 2011 22:02:55 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/27/pompiedom-river/</guid>
      <description>&lt;p&gt;My river includes a way to add new posts to my personal feed.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://peterstuifzand.nl/images/pompiedom-river-2011-03-27.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;When I click on the textarea, it grows and shows two optional fields where I&#xA;can add a Title and Link for this post. Clicking Publish will send the post to&#xA;my posting interface on the server using AJAX.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://peterstuifzand.nl/images/pompiedom-river-whats-happening-2011-03-27.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;A new post appears within a few seconds in the river below. Posts from other&#xA;feeds also appear in the river within seconds of being posted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Plack rssCloud code</title>
      <link>https://peterstuifzand.nl/2011/03/27/my-plack-rsscloud-code/</link>
      <pubDate>Sun, 27 Mar 2011 20:16:26 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/27/my-plack-rsscloud-code/</guid>
      <description>&lt;p&gt;I forgot to include the link to my&#xA;&lt;a href=&#34;https://github.com/pstuifzand/Peter-s-RSScloud&#34;&gt;rssCloud&lt;/a&gt; in the last post&#xA;about &lt;a href=&#34;http://peterstuifzand.nl/2011/03/19/i-wrote-a-perl-rsscloud.html&#34;&gt;how I wrote one in Plack&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Can&#39;t play with Twitter</title>
      <link>https://peterstuifzand.nl/2011/03/27/cant-play-with-twitter/</link>
      <pubDate>Sun, 27 Mar 2011 20:14:06 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/27/cant-play-with-twitter/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://scripting.com/stories/2011/03/17/tweetingAboutTwittersTerms.html&#34;&gt;Tweeting about Twitter&amp;rsquo;s Terms&lt;/a&gt; Dave Winer writes:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;You can&amp;rsquo;t be half in and half out. Either you connect to Twitter, and they&#xA;own you and your users, or you don&amp;rsquo;t connect to Twitter.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;So we can&amp;rsquo;t play with Twitter, but the other way around Twitter can&amp;rsquo;t play with&#xA;us. At some point in the future rssCloud based microblogging clients will take&#xA;off and Twitter will have to change their terms of service to allow us to let&#xA;them play with us. At that point we won&amp;rsquo;t care anymore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Camlistore use cases</title>
      <link>https://peterstuifzand.nl/2011/03/25/camlistore-use-cases/</link>
      <pubDate>Fri, 25 Mar 2011 18:50:04 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/25/camlistore-use-cases/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;http://camlistore.org/docs/uses&#34;&gt;use cases of Camlistore&lt;/a&gt; or all very&#xA;interesting. I&amp;rsquo;m interested to see how this all pans out.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Camlistore</title>
      <link>https://peterstuifzand.nl/2011/03/25/camlistore/</link>
      <pubDate>Fri, 25 Mar 2011 18:09:04 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/25/camlistore/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://camlistore.org/&#34;&gt;Camlistore&lt;/a&gt; seems like a really cool project when it&#xA;gets farther along. Or actually it seems really cool already, but it&amp;rsquo;s not&#xA;useable at the moment. Something to take a look at sometime in the future.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I wrote a Perl RSScloud</title>
      <link>https://peterstuifzand.nl/2011/03/19/i-wrote-a-perl-rsscloud/</link>
      <pubDate>Sat, 19 Mar 2011 16:35:35 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/19/i-wrote-a-perl-rsscloud/</guid>
      <description>&lt;p&gt;Today I wrote an &lt;a href=&#34;http://rsscloud.org&#34;&gt;rssCloud&lt;/a&gt; in Perl. It uses&#xA;&lt;a href=&#34;http://plackperl.org&#34;&gt;Plack&lt;/a&gt; and AnyEvent. That it uses Plack doesn&amp;rsquo;t at the&#xA;moment mean that it works with any Plack compatible web server. It works with&#xA;Twiggy, but doesn&amp;rsquo;t with HTTP::Server and others. This relates to the AnyEvent&#xA;code.&lt;/p&gt;&#xA;&lt;p&gt;I followed Dave Winer&amp;rsquo;s &lt;a href=&#34;http://rsscloud.org/walkthrough.html&#34;&gt;walkthrough&lt;/a&gt; for&#xA;implementation information and looked at some of the frontend parts of his system.&lt;/p&gt;&#xA;&lt;p&gt;At the moment it only supports the &lt;code&gt;http-post&lt;/code&gt; protocol for subscription and&#xA;ping.  This shouldn&amp;rsquo;t be too big of problem I hope. Everyone who is interested&#xA;and able should send me a patch for the XML-RPC part. Patches are welcome!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microblogging DIY</title>
      <link>https://peterstuifzand.nl/2011/03/15/microblogging-diy/</link>
      <pubDate>Tue, 15 Mar 2011 23:50:25 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/15/microblogging-diy/</guid>
      <description>&lt;p&gt;I am building my own microblogging tool. It uses RSS and&#xA;&lt;a href=&#34;http://rsscloud.org&#34;&gt;RSScloud&lt;/a&gt; to get realtime updates from the web. Tonight I&#xA;got it working and now I need some feeds to parse. Yesterday I already&#xA;saw that Identi.ca provides RSScloud feeds, so I tried one of them out.&lt;/p&gt;&#xA;&lt;p&gt;The first feed I added was my own. The test to see if it worked was posting a&#xA;message to my account. And &amp;hellip; a post appeared in my microblogging client in&#xA;realtime. It only took two seconds between a post on identi.ca and the receive&#xA;on my end. Really nice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing If-Modified-Since with lwp-mirror</title>
      <link>https://peterstuifzand.nl/2011/03/12/testing-if-modified-since-with-lwp-mirror/</link>
      <pubDate>Sat, 12 Mar 2011 12:37:50 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/12/testing-if-modified-since-with-lwp-mirror/</guid>
      <description>&lt;p&gt;This week I created a way for me to post small messages, as there is not yet a&#xA;good decentralized way to make this happen. One part of this research is how&#xA;can I create, host and share RSS feeds without using to much bandwidth and&#xA;server time.&lt;/p&gt;&#xA;&lt;p&gt;One way we can do this, is by using the features of the HTTP protocol. One of&#xA;those features is the &lt;code&gt;Last-Modified&lt;/code&gt; header. This header allows web servers&#xA;and user agents to see when a resource was last modified. Together with a&#xA;If-Modified-Since header we can let our software check if it needs to send the&#xA;whole body or just the a simple 304 header.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cacti doesn&#39;t show the graphs in the graph view</title>
      <link>https://peterstuifzand.nl/2011/03/09/cacti-doesnt-show-the-graphs-in-the-graph-view/</link>
      <pubDate>Wed, 09 Mar 2011 11:23:18 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/03/09/cacti-doesnt-show-the-graphs-in-the-graph-view/</guid>
      <description>&lt;p&gt;Just for reference, maybe somebody can find some use for this.&lt;/p&gt;&#xA;&lt;p&gt;I installed Cacti, I added a few graphs, but I couldn&amp;rsquo;t see the first&#xA;page of graphs in the graph view. I could click on the graphs and I would&#xA;see all graphs, just not the first page.&lt;/p&gt;&#xA;&lt;p&gt;After searching for problems I found the following line in my&#xA;&lt;code&gt;/var/log/apache2/error.log&lt;/code&gt; log file.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ERROR: I don&#39;t understand &#39;:15:00 To 2011/03/09 10:15:00\c&#39; \&#xA;  in command: &#39;COMMENT:From 2011/03/09 09:15:00 To 2011/03/09 \&#xA;  10:15:00\c&#39;.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This problem can be fixed by choosing the right version of RRDtool in your&#xA;cacti Settings. So change &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;RRDTool Utility Version&lt;/strong&gt; to&#xA;&amp;lsquo;RRDTool 1.2.x&amp;rsquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Abacus is Free Software</title>
      <link>https://peterstuifzand.nl/2011/02/24/abacus-is-free-software/</link>
      <pubDate>Thu, 24 Feb 2011 15:49:11 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/02/24/abacus-is-free-software/</guid>
      <description>&lt;p&gt;I just released Abacus as Free Software. The &lt;a href=&#34;http://github.com/pstuifzand/Abacus/&#34;&gt;source&#xA;code&lt;/a&gt; can be found at GitHub.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.youtube.com/watch?v=GSAfy9EWU1E&#34;&gt;Watch the screencast&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is just a release for the license change.&lt;/p&gt;&#xA;&lt;p&gt;Also, I&amp;rsquo;m looking for people who like to provide patches to make Abacus the&#xA;best calculator for Windows and Linux. Like to help?&#xA;&lt;a href=&#34;mailto:peter@stuifzand.eu&#34;&gt;Send me an email&lt;/a&gt;&#xA;or &lt;a href=&#34;http://twitter.com/pstuifzand&#34;&gt;message me&lt;/a&gt; on Twitter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web 2.0 privacy paradox</title>
      <link>https://peterstuifzand.nl/2011/02/21/web-2.0-privacy-paradox/</link>
      <pubDate>Mon, 21 Feb 2011 11:39:31 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/02/21/web-2.0-privacy-paradox/</guid>
      <description>&lt;p&gt;With Eben Moglen&amp;rsquo;s Freedom Boxes in our minds, I will paraphrase Danny O&amp;rsquo;Brien, who&#xA;talked about the Web 2.0 privacy paradox in his &lt;a href=&#34;http://www.oblomovka.com/wp/2008/07/24/video-from-living-on-the-edge-opentech-2008/&#34;&gt;Living on the Edge talk&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;When you want share a private message with just one person (or some other group&#xA;of people), you first have to give this message to a Faceless Corporation,&#xA;which will make sure that only their servers and that other person will see&#xA;this message.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Freedom in The Cloud</title>
      <link>https://peterstuifzand.nl/2011/02/20/freedom-in-the-cloud/</link>
      <pubDate>Sun, 20 Feb 2011 22:44:55 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/02/20/freedom-in-the-cloud/</guid>
      <description>&lt;p&gt;Eben Moglen in &lt;a href=&#34;http://www.youtube.com/watch?v=QOEMv0S8AcA&#34;&gt;Freedom in The Cloud&lt;/a&gt; (around 24:50):&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The human race has susceptibility to harm but Mr. Zuckerberg has attained an&#xA;unenviable record: he has done more harm to the human race than anybody else&#xA;his age.&lt;/p&gt;&#xA;&lt;p&gt;Because he harnessed Friday night. That is, everybody needs to get laid and&#xA;he turned it into a structure for degenerating the integrity of human&#xA;personality and he has to a remarkable extent succeeded with a very poor&#xA;deal. Namely, &amp;ldquo;I will give you free web hosting and some PHP doodads and you&#xA;get spying for free all the time&amp;rdquo;. And it works. &lt;a href=&#34;http://www.softwarefreedom.org/events/2010/isoc-ny/FreedomInTheCloud-transcript.html&#34;&gt;Transcript&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>No comments on my weblog</title>
      <link>https://peterstuifzand.nl/2011/02/20/no-comments-on-my-weblog/</link>
      <pubDate>Sun, 20 Feb 2011 22:21:55 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/02/20/no-comments-on-my-weblog/</guid>
      <description>&lt;p&gt;In the past people could leave comments on my weblog. At the moment people&#xA;can&amp;rsquo;t leave comments anymore.&lt;/p&gt;&#xA;&lt;p&gt;Still there are people who would like to respond or write about an post that&#xA;I&amp;rsquo;ve written. The best way to respond is to write a post on your own weblog and&#xA;link to the post that you like to respond to.&lt;/p&gt;&#xA;&lt;p&gt;If this feels like a lot of work, you&amp;rsquo;re probably right. However it does give&#xA;you some time to think about your response. It give you a bit of time to write&#xA;a thoughtful response instead of some small blurp. And you expose your readers&#xA;to another article about a topic, that you care enough about to write a&#xA;thoughtful response.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On Tickets and Order Processing</title>
      <link>https://peterstuifzand.nl/2011/01/25/on-tickets-and-order-processing/</link>
      <pubDate>Tue, 25 Jan 2011 12:07:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/01/25/on-tickets-and-order-processing/</guid>
      <description>&lt;p&gt;At some moments in time, ideas come together in a mind to form a new idea. The&#xA;baffling part is the realization that the idea has been hanging around you for&#xA;some time (years, sometimes).&lt;/p&gt;&#xA;&lt;p&gt;Such an idea can be really obvious in hindsight. My latest big idea came to me&#xA;last week, when I had added the ability to add comments to orders in my webshop&#xA;software. Simple enough, you might think. And you would be right.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How articles could disappear</title>
      <link>https://peterstuifzand.nl/2011/01/03/how-articles-could-disappear/</link>
      <pubDate>Mon, 03 Jan 2011 12:07:48 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/01/03/how-articles-could-disappear/</guid>
      <description>&lt;p&gt;A small list of ways how articles (or documents) &lt;a href=&#34;http://peterstuifzand.nl/2011/01/03/on-the-fragility-of-the-internet.html&#34;&gt;will disappear&lt;/a&gt; at some future point in time.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;User error removes the originals&lt;/li&gt;&#xA;&lt;li&gt;User error removes the generated files on the server&lt;/li&gt;&#xA;&lt;li&gt;Hard disk failure (on server)&lt;/li&gt;&#xA;&lt;li&gt;Hard disk failure (on author)&lt;/li&gt;&#xA;&lt;li&gt;Backup failure (one, two and three)&lt;/li&gt;&#xA;&lt;li&gt;Server failure&lt;/li&gt;&#xA;&lt;li&gt;Hosting company out of business&lt;/li&gt;&#xA;&lt;li&gt;Domain name registrar out of business&lt;/li&gt;&#xA;&lt;li&gt;Media company out of business&lt;/li&gt;&#xA;&lt;li&gt;(Author&amp;rsquo;s) Death&lt;/li&gt;&#xA;&lt;li&gt;Lack of interest&lt;/li&gt;&#xA;&lt;li&gt;Lack of technical expertise&lt;/li&gt;&#xA;&lt;li&gt;Removed everything in anger&lt;/li&gt;&#xA;&lt;li&gt;Revisionism&lt;/li&gt;&#xA;&lt;li&gt;Changed interests&lt;/li&gt;&#xA;&lt;li&gt;Cost savings&lt;/li&gt;&#xA;&lt;li&gt;Changes in publishing software&lt;/li&gt;&#xA;&lt;li&gt;Conversion costs&lt;/li&gt;&#xA;&lt;li&gt;Backwards incompatible software changes&lt;/li&gt;&#xA;&lt;li&gt;Changes in laws&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>On the Fragility of the Internet</title>
      <link>https://peterstuifzand.nl/2011/01/03/on-the-fragility-of-the-internet/</link>
      <pubDate>Mon, 03 Jan 2011 12:05:53 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2011/01/03/on-the-fragility-of-the-internet/</guid>
      <description>&lt;p&gt;The internet is an amazing place. Read the news, follow your favorite writers,&#xA;hang out with your friends, watch videos and fall in love. It&amp;rsquo;s all possible on&#xA;the internet. It feels as if it was there forever and it will never go away.&lt;/p&gt;&#xA;&lt;p&gt;However with every click of your mouse or key press on your keyboard, you chip&#xA;away at the internet. With every byte you send and receive the hardware of the&#xA;internet becomes a little bit worse. One day the hard disk on which a web page is&#xA;stored, needs to be replaced and a copy needs to be made.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twitter&#39;s Pavlovion dogs</title>
      <link>https://peterstuifzand.nl/2010/12/06/twitters-pavlovion-dogs/</link>
      <pubDate>Mon, 06 Dec 2010 22:25:27 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/12/06/twitters-pavlovion-dogs/</guid>
      <description>&lt;p&gt;I tweeted about it&#xA;&lt;a href=&#34;http://twitter.com/#!/pstuifzand/status/27117324808&#34;&gt;before&lt;/a&gt;: I think the&#xA;Twitter website isn&amp;rsquo;t realtime, because the little number in the title of the&#xA;webpage makes people click the blue label that shows there are new tweets. It&#xA;therefore increases the engagement on the Twitter website.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://peterstuifzand.nl/images/twitter-window-title-count.png&#34; alt=&#34;Twitter window title unread tweet count&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;If I have Twitter open in my browser I will click the blue box to get a few&#xA;&lt;a href=&#34;http://en.wikipedia.org/wiki/Compound_feed&#34;&gt;pellets&lt;/a&gt; with new tweets. I can&amp;rsquo;t&#xA;help it. It&amp;rsquo;s also the main reason not to use the Twitter website (apart from&#xA;this I actually quite like it).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anti-Fragility</title>
      <link>https://peterstuifzand.nl/2010/11/25/anti-fragility/</link>
      <pubDate>Thu, 25 Nov 2010 16:54:29 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/11/25/anti-fragility/</guid>
      <description>&lt;p&gt;Anti-Fragility is an amazing idea. How can this be used in software and other&#xA;computer systems?&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.youtube.com/watch?v=7IpTpjhVo7I&amp;amp;feature=player_embedded&#34;&gt;Taleb on Anti-Fragility&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Not intended to provide medical advice</title>
      <link>https://peterstuifzand.nl/2010/11/17/not-intended-to-provide-medical-advice/</link>
      <pubDate>Wed, 17 Nov 2010 17:44:22 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/11/17/not-intended-to-provide-medical-advice/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.sciencedaily.com/releases/2010/11/101115210944.htm&#34;&gt;US Scientists Significantly More Likely to Publish Fake Research, Study Finds&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;This article is not intended to provide medical advice, diagnosis or&#xA;treatment.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Really?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Shipping something, anything</title>
      <link>https://peterstuifzand.nl/2010/11/13/shipping-something-anything/</link>
      <pubDate>Sat, 13 Nov 2010 13:28:05 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/11/13/shipping-something-anything/</guid>
      <description>&lt;p&gt;I just read this piece by Marc Hedlund, in which he says&#xA;&lt;a href=&#34;http://blog.precipice.org/shipping-solves-everything&#34;&gt;Shipping Solves Everything&lt;/a&gt;.&#xA;He says:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve always found that shipping something, anything, is the biggest help.&#xA;Even just shipping a blog post.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I think this is right. It works great with the thing, I would like to call&#xA;&lt;strong&gt;Small Victories&lt;/strong&gt;. A Small Victory helps you get some feedback and some new ideas&#xA;and energy for working on your things.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aptitude why</title>
      <link>https://peterstuifzand.nl/2010/11/11/aptitude-why/</link>
      <pubDate>Thu, 11 Nov 2010 12:51:13 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/11/11/aptitude-why/</guid>
      <description>&lt;p&gt;Sometimes you find packages on your Ubuntu box and you don&amp;rsquo;t know how they got&#xA;there. This happens often with automatically installed programs. To find the packages that&#xA;require (or recommend) another package, you can use the &lt;code&gt;aptitude why&lt;/code&gt; command.&lt;/p&gt;&#xA;&lt;p&gt;Below you see (an edited) example session where I needed to find the program&#xA;that used a package.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ aptitude search timidity&#xA;i A timidity        - Software sound renderer...&#xA;i A timidity-daemon - runs TiMidity++ as a sy...&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;In this example I first search for the package that I didn&amp;rsquo;t know and wanted to&#xA;remove. You can see from the uppercase &lt;code&gt;A&lt;/code&gt; that this package is installed&#xA;automatically. First I need to know if the program is system critical. So I use&#xA;the &lt;code&gt;why&lt;/code&gt; command to find the packages that use this package.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google&#39;s problem</title>
      <link>https://peterstuifzand.nl/2010/11/03/googles-problem/</link>
      <pubDate>Wed, 03 Nov 2010 22:21:12 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/11/03/googles-problem/</guid>
      <description>&lt;p&gt;What if the bottleneck of your software isn&amp;rsquo;t in &lt;em&gt;your&lt;/em&gt; CPU, memory, network or&#xA;I/O throughput, but in that of every website on the internet?&lt;/p&gt;&#xA;&lt;p&gt;When you encounter a bottleneck you can do a few things. I will list two.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Optimize your software or processes.&lt;/li&gt;&#xA;&lt;li&gt;Increase the resources that limit the system.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The question is what can you do when your software and processes are optimized&#xA;and your resources are increased to the point where they don&amp;rsquo;t limit your&#xA;system. In other words optimizing software and adding more resources have a&#xA;negligible effect.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dear readers, who are you?</title>
      <link>https://peterstuifzand.nl/2010/11/02/dear-readers-who-are-you/</link>
      <pubDate>Tue, 02 Nov 2010 16:02:36 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/11/02/dear-readers-who-are-you/</guid>
      <description>&lt;p&gt;With thanks to &lt;a href=&#34;http://www.startuplessonslearned.com/&#34;&gt;Startup Lessons Learned&lt;/a&gt; for the idea.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://spreadsheets.google.com/viewform?formkey=dDNxNy1yZmdRc2Y0S1JZbXNwa0hPV0E6MQ#gid=0&#34;&gt;Small four question survey&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Product pages in webshops</title>
      <link>https://peterstuifzand.nl/2010/10/19/product-pages-in-webshops/</link>
      <pubDate>Tue, 19 Oct 2010 16:25:56 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/10/19/product-pages-in-webshops/</guid>
      <description>&lt;p&gt;Dividing a product list into multiple numbered pages provides no extra&#xA;functionality to customers. It in fact hinders the customers to find the&#xA;product they want.&lt;/p&gt;&#xA;&lt;h4 id=&#34;the-easy-way-out&#34;&gt;The easy way out&lt;/h4&gt;&#xA;&lt;p&gt;From a customer, webshop (and database) point of view, the natural way to&#xA;show products is by not dividing the products at all. Just show all products&#xA;on one page.&lt;/p&gt;&#xA;&lt;p&gt;However at one point, there will be to many products in a list. The list&#xA;will contain many products and the webshop software doesn&amp;rsquo;t allow better&#xA;ways to divide the products. The easy way to solve this problem is by&#xA;creating multiple pages all with some of the products.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another editor?</title>
      <link>https://peterstuifzand.nl/2010/10/02/another-editor/</link>
      <pubDate>Sat, 02 Oct 2010 16:28:35 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/10/02/another-editor/</guid>
      <description>&lt;p&gt;From &lt;a href=&#34;http://neugierig.org/content/unix/&#34;&gt;neugierig.org&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;A UNIX wizard hears cries of torment from his apprentice&amp;rsquo;s computer room&#xA;where the apprentice is studying, and goes to investigate.&lt;/p&gt;&#xA;&lt;p&gt;He finds the apprentice in obvious distress, nearly on the verge of tears.&#xA;&amp;ldquo;What&amp;rsquo;s the problem?&amp;rdquo; he asks. &amp;ldquo;Why did you cry out?&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;It&amp;rsquo;s terrible using this system. I must use four editors each day to get my&#xA;studies done, because not one of them does everything.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;The wizard nods sagely, and asks, &amp;ldquo;And what would you propose that will solve&#xA;this obvious dilemma?&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Template &#39;table&#39; filter</title>
      <link>https://peterstuifzand.nl/2010/09/14/template-table-filter/</link>
      <pubDate>Tue, 14 Sep 2010 01:19:11 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/09/14/template-table-filter/</guid>
      <description>&lt;p&gt;After these &lt;a href=&#34;https://peterstuifzand.nl/2010/08/31/executing-code-from-templates.html&#34;&gt;two changes&lt;/a&gt; I got into an object-oriented (with a splash of&#xA;functional and generic programming) mindset. So I created a &lt;code&gt;table&lt;/code&gt; filter in my&#xA;template code. A filter is a function that transforms a data structure to an&#xA;HTML string.&lt;/p&gt;&#xA;&lt;p&gt;This filter transforms a template parameter value from an arrayref to an HTML&#xA;table. Currently it only supports lists of items, but it could be expanded to&#xA;single items. I&amp;rsquo;m not sure how useful that would be, however. The question is:&#xA;&amp;ldquo;How can we produce a nice HTML table from an arrayref?&amp;rdquo; The answer lies in the&#xA;use of objects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proposal for handling 403 forbidden</title>
      <link>https://peterstuifzand.nl/2010/09/11/proposal-for-handling-403-forbidden/</link>
      <pubDate>Sat, 11 Sep 2010 12:01:29 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/09/11/proposal-for-handling-403-forbidden/</guid>
      <description>&lt;p&gt;While I was thinking about how to structure some of my access handling code in&#xA;my web app, I saw that it currently is impossible to return a 403 code when&#xA;a user reaches a password protected page.&lt;/p&gt;&#xA;&lt;p&gt;The biggest problem with returning a 403 is the way the browsers show this&#xA;problem to the user. The user is interrupted with popup asking them for a&#xA;username and a password.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Middleware in Plack</title>
      <link>https://peterstuifzand.nl/2010/09/10/middleware-in-plack/</link>
      <pubDate>Fri, 10 Sep 2010 22:15:18 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/09/10/middleware-in-plack/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using &lt;a href=&#34;http://plackperl.org&#34;&gt;Plack&lt;/a&gt; for a few days now, and I have to say, I really&#xA;like it. I rewrote the base of my webshop platform to use it. The change wasn&amp;rsquo;t&#xA;really difficult and the code is a lot cleaner now.&lt;/p&gt;&#xA;&lt;p&gt;Especially with the Middleware structure I was able to remove a lot of code&#xA;from the main application. Middleware classes are classes that are called&#xA;between the webserver and the main application. These classes have the&#xA;opportunity to rewrite the request and the response classes for each request.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hash function performance</title>
      <link>https://peterstuifzand.nl/2010/09/10/hash-function-performance/</link>
      <pubDate>Fri, 10 Sep 2010 13:06:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/09/10/hash-function-performance/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://scripting.com/stories/2010/09/09/hashFunctionPerformance.html&#34;&gt;Hash function performance&lt;/a&gt; Dave Winer writes:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;It&amp;rsquo;s been a long time since we looked at the object database in Frontier, so&#xA;today Brent wrote a little app that checks out how the hash function&#xA;distributes objects across the buckets for each table in the database.&lt;/p&gt;&#xA;&lt;p&gt;[&amp;hellip; result distribution among buckets &amp;hellip;]&lt;/p&gt;&#xA;&lt;p&gt;This looks pretty random to us.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;And he&amp;rsquo;s right. In the sense that it&amp;rsquo;s just a bunch of random numbers. Not&#xA;something you would want in a hash function.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dijkstra&#39;s EWD1036</title>
      <link>https://peterstuifzand.nl/2010/09/08/dijkstras-ewd1036/</link>
      <pubDate>Wed, 08 Sep 2010 15:17:30 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/09/08/dijkstras-ewd1036/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m really not sure what to say about&#xA;&lt;a href=&#34;http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html&#34;&gt;EWD 1036&lt;/a&gt;.&#xA;This is a must read for people who think we can write better software programs.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Programming will be so different in the future, that people will talk about&#xA;this time, as the great false start or the Dark Ages of programming.&lt;/p&gt;&#xA;&lt;p&gt;The coming age (I don&amp;rsquo;t think it has started yet), will be based on&#xA;mathematics. The software we write will have sturdy theoretical underpinnings&#xA;that will evolve with the software we write. Where formal methods seem unwieldy&#xA;now, we will see ways to simplify these. We will prove theorems about&#xA;structures and these structures will be used again and again.&#xA;We will find structures in our programming languages and programs and simplify&#xA;and use these structures from one program to the next.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Executing code from templates</title>
      <link>https://peterstuifzand.nl/2010/08/31/executing-code-from-templates/</link>
      <pubDate>Tue, 31 Aug 2010 23:03:38 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/31/executing-code-from-templates/</guid>
      <description>&lt;p&gt;Until today I couldn&amp;rsquo;t use variables in my template that are pieces of code. I&#xA;added one piece of code that executes the piece of code in a the stash and&#xA;returns its value. In the template it looks like this.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;[% FOR p IN products %]&#xA;    &amp;lt;p&amp;gt;[% p.name %]&#xA;[% END %]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;There are two places in this piece of code that could contain code references.&#xA;The first is &lt;code&gt;products&lt;/code&gt;. This could be implemented as follows.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Problems while measuring performance</title>
      <link>https://peterstuifzand.nl/2010/08/27/problems-while-measuring-performance/</link>
      <pubDate>Fri, 27 Aug 2010 11:18:41 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/27/problems-while-measuring-performance/</guid>
      <description>&lt;p&gt;While browsing around StackOverflow I found a page about &lt;a href=&#34;http://stackoverflow.com/questions/3581528/how-is-the-square-root-function-implemented&#34;&gt;Square root function&#xA;implementation&lt;/a&gt;.&#xA;One of the answer points to an article containing &lt;a href=&#34;http://www.codeproject.com/KB/cpp/Sqrt%5C_Prec%5C_VS%5C_Speed.aspx&#34;&gt;different implementations of&#xA;square root&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;One of the things I like to do is pointing out obvious errors in benchmarks.&#xA;It&amp;rsquo;s not that I don&amp;rsquo;t have an intimate understanding of these things, but if I&#xA;can point out the error, is has to be obvious. One of the obvious errors in&#xA;time measurement can be shown using a short pseudo code example.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Controllers and actions</title>
      <link>https://peterstuifzand.nl/2010/08/26/controllers-and-actions/</link>
      <pubDate>Thu, 26 Aug 2010 23:50:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/26/controllers-and-actions/</guid>
      <description>&lt;p&gt;In the last two essays we established that there is a dispatcher, multiple&#xA;controllers and multiple actions. The dispatchers creates a controllers and&#xA;calls the action. Why do we split the application into these parts?&lt;/p&gt;&#xA;&lt;p&gt;First the Dispatcher. The Dispatcher applies rules to a URL and chooses the&#xA;corresponding Controller and Action. The Controller is a container for action&#xA;and applies some default values to the action. The Action contains the code&#xA;that&amp;rsquo;s necessary to perform some transformation on the application data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The structure of dispatching controllers</title>
      <link>https://peterstuifzand.nl/2010/08/25/the-structure-of-dispatching-controllers/</link>
      <pubDate>Wed, 25 Aug 2010 21:17:47 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/25/the-structure-of-dispatching-controllers/</guid>
      <description>&lt;p&gt;Yesterday we looked at the structure inside of two simple controller actions.&#xA;Now let us look at the outside. The structure of the two actions can be shown as&#xA;a tree.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Guestbook&#xA;&lt;ul&gt;&#xA;&lt;li&gt;list&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Orders&#xA;&lt;ul&gt;&#xA;&lt;li&gt;list&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I hid the rest of methods that would normally be in these controllers. In front of&#xA;these controllers there is another class, called the Dispatcher. This Dispatcher&#xA;uses a request and calls the appropriate controller and action.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Discovering structure in web controllers</title>
      <link>https://peterstuifzand.nl/2010/08/24/discovering-structure-in-web-controllers/</link>
      <pubDate>Tue, 24 Aug 2010 21:47:11 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/24/discovering-structure-in-web-controllers/</guid>
      <description>&lt;p&gt;Alex Stepanov writes in &lt;a href=&#34;http://www.stepanovpapers.com/notes.pdf&#34;&gt;Notes on Programming&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;We often get the idea that a mathematical theory is built in a logical way&#xA;starting from definitions and axioms. This is not the case. The definitions&#xA;and axioms appear at the very end of the development of a good theory. It&#xA;invariably starts with simple facts that later on are generalized into&#xA;theorems, and only at the very end the formal definitions and axioms are&#xA;developed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Math every day</title>
      <link>https://peterstuifzand.nl/2010/08/23/math-every-day/</link>
      <pubDate>Mon, 23 Aug 2010 10:09:29 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/23/math-every-day/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://sites.google.com/site/steveyegge2/&#34;&gt;Steve&lt;/a&gt; &lt;a href=&#34;http://steve-yegge.blogspot.com/&#34;&gt;Yegge&lt;/a&gt; wrote (and writes, again) about interesting stuff. Two of&#xA;my favorite essays are written by him. One is about&#xA;&lt;a href=&#34;http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html&#34;&gt;Compilers and why you should know them&lt;/a&gt;, the other about&#xA;&lt;a href=&#34;http://sites.google.com/site/steveyegge2/math-every-day&#34;&gt;why it&amp;rsquo;s important that programmers learn mathematics&lt;/a&gt;. Read them both&#xA;to better understand where I come from.&lt;/p&gt;&#xA;&lt;p&gt;I came to the conclusion that saying mathematics has nothing to do with&#xA;programming, is like saying programming and software contain no patterns or&#xA;structure.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automated screenshots in Firefox with WWW::Mechanize::Firefox</title>
      <link>https://peterstuifzand.nl/2010/08/19/automated-screenshots-in-firefox-with-wwwmechanizefirefox/</link>
      <pubDate>Thu, 19 Aug 2010 10:54:29 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/19/automated-screenshots-in-firefox-with-wwwmechanizefirefox/</guid>
      <description>&lt;p&gt;I was reading presentation slides from YAPC::EU 2010 and found this one: &lt;a href=&#34;http://corion.net/talks/WWW-Mechanize-FireFox/www-mechanize-firefox.en.html&#34;&gt;Web&#xA;Automation with&#xA;WWW::Mechanize::Firefox&lt;/a&gt;.&#xA;It explains a module that connects to a running Firefox instance and will use&#xA;it to follows links, create screenshots and more.&lt;/p&gt;&#xA;&lt;p&gt;I rewrote the example a little bit make it work. I ended up with the this.&#xA;These are two methods that work. The original method didn&amp;rsquo;t work for me&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;# The original line in the example&#xA;my $png = $mech-&amp;gt;content_as_png();&#xA;&#xA;# Method 1&#xA;my $png = $mech-&amp;gt;element_as_png($mech-&amp;gt;selector(&#39;html&#39;));&#xA;&#xA;# Method 2&#xA;my $png = $mech-&amp;gt;content_as_png(undef,&#xA;                {left=&amp;gt;0,top=&amp;gt;0,width=&amp;gt;200, height=&amp;gt;200});&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now I can automatically create screenshots from webpages. I will still need&#xA;some way to control the width of the page and maybe a way to crop parts.  I&#xA;could use the &lt;code&gt;element_as_png&lt;/code&gt; method for cropping, which allows me to get a&#xA;screenshot of part of a page, maybe that&amp;rsquo;s enough.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generic Programming, STL and Stepanov</title>
      <link>https://peterstuifzand.nl/2010/08/17/generic-programming-stl-and-stepanov/</link>
      <pubDate>Tue, 17 Aug 2010 22:07:05 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/17/generic-programming-stl-and-stepanov/</guid>
      <description>&lt;p&gt;Here are two talks about Generic Programming, that I like very much. Generic Programming&#xA;is about much more then just C++ templates.&lt;/p&gt;&#xA;&lt;iframe width=&#34;420&#34; height=&#34;315&#34; src=&#34;//www.youtube.com/embed/COuHLky7E2Q&#34; frameborder=&#34;0&#34; allowfullscreen&gt;&lt;/iframe&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;http://video.google.com/videoplay?docid=-7867514878945314586&#34;&gt;Alexander Stepanov: STL and its Design Principles&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;In this first talk Stepanov talks about concepts and not much about STL. As he&#xA;says (paraphrased): STL is maybe the biggest library of its kind, but it&amp;rsquo;s just&#xA;a small step in Generic Programming. There is much that can be done with&#xA;Generic Programming, STL is just the beginning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hey, I was using Wave</title>
      <link>https://peterstuifzand.nl/2010/08/05/hey-i-was-using-wave/</link>
      <pubDate>Thu, 05 Aug 2010 09:18:50 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/05/hey-i-was-using-wave/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://googleblog.blogspot.com/2010/08/update-on-google-wave.html&#34;&gt;Update on Google Wave&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Wave has taught us a lot, and we are proud of the team for the ways in which&#xA;they have pushed the boundaries of computer science. We are excited about&#xA;what they will develop next as we continue to create innovations with the&#xA;potential to advance technology and the wider web.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;It&amp;rsquo;s sad that Google Wave was cancelled. I use it every day. And altough I have&#xA;to admit that there are some problems with it, it is an amazing web application&#xA;for collaboration between a few people. I wrote some project plans and lists of&#xA;todo items. Other people commented and rewrote posts and I did the same.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fat milk actually not that bad</title>
      <link>https://peterstuifzand.nl/2010/08/04/fat-milk-actually-not-that-bad/</link>
      <pubDate>Wed, 04 Aug 2010 19:25:04 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/04/fat-milk-actually-not-that-bad/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.abc.net.au/pm/content/2010/s2973507.htm?site=southqld&#34;&gt;New study suggests full-fat milk might be better&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;We find that the persons who consumed the highest amount of full-fat dairy&#xA;had a 70 per cent reduced risk of dying from cardiovascular disease, compared&#xA;to people who do not eat full-fat dairy; so that&amp;rsquo;s quite a large effect.&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Suntory whiskey scene from Lost in Translation</title>
      <link>https://peterstuifzand.nl/2010/08/03/suntory-whiskey-scene-from-lost-in-translation/</link>
      <pubDate>Tue, 03 Aug 2010 13:19:15 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/03/suntory-whiskey-scene-from-lost-in-translation/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.weareawake.org/suntorydirector.htm&#34;&gt;Translation from Lost in Translation&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;DIRECTOR (in Japanese to the interpreter): The translation is very&#xA;important, O.K.? The translation.&lt;/p&gt;&#xA;&lt;p&gt;INTERPRETER: Yes, of course. I understand.&lt;/p&gt;&#xA;&lt;p&gt;DIRECTOR: Mr. Bob-san. You are sitting quietly in your study. And then&#xA;there is a bottle of Suntory whiskey on top of the table. You&#xA;understand, right? With wholehearted feeling, slowly, look at the&#xA;camera, tenderly, and as if you are meeting old friends, say the&#xA;words. As if you are Bogie in &amp;ldquo;Casablanca,&amp;rdquo; saying, &amp;ldquo;Cheers to you&#xA;guys,&amp;rdquo; Suntory time!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remembering through use</title>
      <link>https://peterstuifzand.nl/2010/08/02/remembering-through-use/</link>
      <pubDate>Mon, 02 Aug 2010 12:22:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/08/02/remembering-through-use/</guid>
      <description>&lt;p&gt;This is an &lt;a href=&#34;http://www.collisiondetection.net/mt/archives/2007/10/quick_can_you_d.php&#34;&gt;old story&lt;/a&gt; about young people that can&amp;rsquo;t remember as much as old people:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;This summer, neuroscientist Ian Robertson polled 3,000 people and found that&#xA;the younger ones were less able than their elders to recall standard personal&#xA;info. When Robertson asked his subjects to tell them a relative’s birth date,&#xA;87 percent of respondents over age 50 could recite it, while less than 40&#xA;percent of those under 30 could do so. And when he asked them their own phone&#xA;number, fully one-third of the youngsters drew a blank. They had to whip out&#xA;their handsets to look it up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sorry, I wasn&#39;t here for your birthday</title>
      <link>https://peterstuifzand.nl/2010/07/26/sorry-i-wasnt-here-for-your-birthday/</link>
      <pubDate>Mon, 26 Jul 2010 14:29:25 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/07/26/sorry-i-wasnt-here-for-your-birthday/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been writing this weblog for&#xA;&lt;a href=&#34;http://www.wolframalpha.com/input/?i=july&amp;#43;14,&amp;#43;2004&#34;&gt;six years and fourteen days&lt;/a&gt;&#xA;now. That&amp;rsquo;s how long ago I started writing here. It probably is the longest&#xA;running website, that I have created. Sure, there were changes, like the one&#xA;from a few days ago, when I removed almost all formatting.&lt;/p&gt;&#xA;&lt;p&gt;But there are more changes. While building this weblog I created a small&#xA;software tool called &lt;code&gt;pages&lt;/code&gt; that creates and generates the pages and posts for&#xA;this weblog. In the beginning the pages where created using a small Emacs&#xA;function. I haven&amp;rsquo;t used Emacs for anything for almost five years now. I can&amp;rsquo;t&#xA;even use it anymore, Vim is baked into my muscle memory. It&amp;rsquo;s a disorienting&#xA;feeling, to say the least.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software Patents</title>
      <link>https://peterstuifzand.nl/2010/07/15/software-patents/</link>
      <pubDate>Thu, 15 Jul 2010 14:44:12 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/07/15/software-patents/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://en.swpat.org/wiki/John_Carmack_on_software_patents&#34;&gt;John Carmack on Software Patents&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The idea that I can be presented with a problem, set out to logically solve&#xA;it with the tools at hand, and wind up with a program that could not be&#xA;legally used because someone else followed the same logical steps some years&#xA;ago and filed for a patent on it is horrifying.&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>I am my own god</title>
      <link>https://peterstuifzand.nl/2010/07/05/i-am-my-own-god/</link>
      <pubDate>Mon, 05 Jul 2010 10:46:40 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/07/05/i-am-my-own-god/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.goodreads.com/quotes/show/13733&#34;&gt;Charles Bukowski&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;For those who believe in God, most of the big questions are answered. But for&#xA;those of us who can&amp;rsquo;t readily accept the God formula, the big answers don&amp;rsquo;t&#xA;remain stone-written. We adjust to new conditions and discoveries. We are&#xA;pliable. Love need not be a command nor faith a dictum. I am my own god. We&#xA;are here to unlearn the teachings of the church, state, and our educational&#xA;system. We are here to drink beer. We are here to kill war. We are here to&#xA;laugh at the odds and live our lives so well that Death will tremble to take&#xA;us.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Doubt</title>
      <link>https://peterstuifzand.nl/2010/07/05/doubt/</link>
      <pubDate>Mon, 05 Jul 2010 10:39:29 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/07/05/doubt/</guid>
      <description>&lt;p&gt;Richard Feynman on &lt;a href=&#34;http://www.youtube.com/watch?v=zeCHiUe1et0&#34;&gt;doubt and uncertainty&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;You see, one thing is I can live with doubt, uncertainty and not knowing.  I&#xA;think it&amp;rsquo;s much more interesting to live not knowing then to have answers which&#xA;might be wrong.&lt;/p&gt;&#xA;&lt;p&gt;I have approximate answers and possible believes and different degrees of&#xA;certainty about different things, but I&amp;rsquo;m not absolutely sure about anything&#xA;and many things I don&amp;rsquo;t know anything about. Whether it means anything to ask,&#xA;why we&amp;rsquo;re here. What that question might mean? I might think about it a bit. If&#xA;I can&amp;rsquo;t figure it out, then I go on to something else.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Minimalism</title>
      <link>https://peterstuifzand.nl/2010/06/21/minimalism/</link>
      <pubDate>Mon, 21 Jun 2010 12:48:25 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/06/21/minimalism/</guid>
      <description>&lt;p&gt;In photos it seems like minimalism is white and black designer furniture. I&#xA;argue that this isn&amp;rsquo;t very minimal. Minimalism is something that&amp;rsquo;s inside of&#xA;you. In the same way that GTD is about emptying your mind, minimalism is about&#xA;minimizing the effect of the outside world on your inner mind.&lt;/p&gt;&#xA;&lt;p&gt;Expensive designer furniture may reduce the effect of your busy environment,&#xA;but it will also increase the worry for the moment that you drop a cup of&#xA;coffee on its white fabric.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Calculators on computers</title>
      <link>https://peterstuifzand.nl/2010/05/30/calculators-on-computers/</link>
      <pubDate>Sun, 30 May 2010 17:17:11 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/05/30/calculators-on-computers/</guid>
      <description>&lt;p&gt;I created a new calculator. This short video shows how it works. I use it more&#xA;often than calculator that&amp;rsquo;s included on my computer.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;480&#34; height=&#34;385&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/GSAfy9EWU1E&amp;hl=en_US&amp;fs=1&amp;&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowFullScreen&#34; value=&#34;true&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/GSAfy9EWU1E&amp;hl=en_US&amp;fs=1&amp;&#34; type=&#34;application/x-shockwave-flash&#34; allowscriptaccess=&#34;always&#34; allowfullscreen=&#34;true&#34; width=&#34;480&#34; height=&#34;385&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&#xA;&lt;p&gt;This calculator doesn&amp;rsquo;t use buttons for input. It uses the keyboard instead.&#xA;You can type a normal formula and the calculator will give you the answer while&#xA;you type. You can find more information about it on&#xA;&lt;a href=&#34;http://stuifzand.eu/abacus/&#34;&gt;stuifzand.eu/abacus&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search and exclusion</title>
      <link>https://peterstuifzand.nl/2010/05/27/search-and-exclusion/</link>
      <pubDate>Thu, 27 May 2010 14:27:09 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/05/27/search-and-exclusion/</guid>
      <description>&lt;p&gt;Google is amazing for searching the public web. It contains all the weblogs,&#xA;websites, videos, and images that are shared by everyone. Everything Google can&#xA;get its hands on, will sometime or another be found by someone that searches&#xA;for it.&lt;/p&gt;&#xA;&lt;p&gt;The problem for Google however is, is that it can&amp;rsquo;t cross the borders that are&#xA;created by some websites, like Facebook or Hyves. And sometimes the borders are&#xA;really low. If there is a just a little border, Google can&amp;rsquo;t get to it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 10.04 LTS Lucid Lynx released</title>
      <link>https://peterstuifzand.nl/2010/04/30/ubuntu-10.04-lts-lucid-lynx-released/</link>
      <pubDate>Fri, 30 Apr 2010 13:48:42 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/04/30/ubuntu-10.04-lts-lucid-lynx-released/</guid>
      <description>&lt;p&gt;Canonical just released the latest version of &lt;a href=&#34;http://ubuntu.com/&#34;&gt;Ubuntu&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I haven&amp;rsquo;t tried it yet, but will when things calm down here. At the end of&#xA;April and the beginning of May there are a lot of parties in the Netherlands,&#xA;e.g. Queensday and Liberation Day.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 5.12 has been released</title>
      <link>https://peterstuifzand.nl/2010/04/13/perl-5.12-has-been-released/</link>
      <pubDate>Tue, 13 Apr 2010 09:47:19 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/04/13/perl-5.12-has-been-released/</guid>
      <description>&lt;p&gt;The latest version of Perl, version 5.12 has been released. There are many&#xA;changes and bugfixes and I would recommend you check the &lt;a href=&#34;http://search.cpan.org/~jesse/perl-5.12.0/pod/perl5120delta.pod&#34;&gt;release notes&lt;/a&gt; for&#xA;the whole list.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Implicit strictures when you use an version number greater than 5.12.0&lt;/li&gt;&#xA;&lt;li&gt;The yada, yada operator&lt;/li&gt;&#xA;&lt;li&gt;Y2038 compliance&lt;/li&gt;&#xA;&lt;li&gt;New package naming for including the version&lt;/li&gt;&#xA;&lt;li&gt;Updated to the latest Unicode standard&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Gearman released version 0.13</title>
      <link>https://peterstuifzand.nl/2010/04/07/gearman-released-version-0.13/</link>
      <pubDate>Wed, 07 Apr 2010 10:42:35 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/04/07/gearman-released-version-0.13/</guid>
      <description>&lt;p&gt;Gearman&#xA;&lt;a href=&#34;http://groups.google.com/group/gearman/browse_thread/thread/c667b60f6d692808&#34;&gt;released&lt;/a&gt;&#xA;the latest version, 0.13, of the gearman server and C libraries. It contains a various bug fixes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gmail buttons changed?</title>
      <link>https://peterstuifzand.nl/2010/04/06/gmail-buttons-changed/</link>
      <pubDate>Tue, 06 Apr 2010 20:08:18 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/04/06/gmail-buttons-changed/</guid>
      <description>&lt;p&gt;I just noticed something: the Gmail buttons have changed.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/gmail-buttons.png&#34; alt=&#34;Gmail buttons&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The corners of the buttons are rounder now. I don&amp;rsquo;t have an image of the&#xA;previous buttons, only the &lt;a href=&#34;http://stopdesign.com/archive/2009/02/04/recreating-the-button.html&#34;&gt;article by Douglas&#xA;Bowman&lt;/a&gt;&#xA;about the design of the buttons.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pagination on the web</title>
      <link>https://peterstuifzand.nl/2010/03/29/pagination-on-the-web/</link>
      <pubDate>Mon, 29 Mar 2010 23:32:58 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2010/03/29/pagination-on-the-web/</guid>
      <description>&lt;p&gt;People write blog posts. And when you have written a lot of blog posts, there&#xA;comes a time when it becomes necessary to divide the posts into smaller&#xA;collections of posts. One way to do this is pagination.&lt;/p&gt;&#xA;&lt;p&gt;Pagination divides a list of items into a few pages. Each page&#xA;has an URI, contains a few items and links to other pages in the list.&lt;/p&gt;&#xA;&lt;p&gt;There are many places where this method is used. Two examples are search result&#xA;pages and blogs. Search result pages can contain many, many results, sometimes&#xA;as much as a few million. Showing all the result is a waste of space and&#xA;bandwidth, as most people won&amp;rsquo;t even look past the first page.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Living on the Edge</title>
      <link>https://peterstuifzand.nl/2010/03/22/living-on-the-edge/</link>
      <pubDate>Mon, 22 Mar 2010 10:57:09 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/03/22/living-on-the-edge/</guid>
      <description>&lt;p&gt;It becomes more and more apparent that we need to work on software and hardware&#xA;that will allow us to our own version of services that we use online. We need a&#xA;kind of home server computer that acts like a telephone. Every home needs one&#xA;and (I&amp;rsquo;m predicting) will have one in ten years.&lt;/p&gt;&#xA;&lt;p&gt;This presentation by Eben Moglen about &lt;a href=&#34;http://www.softwarefreedom.org/events/2010/isoc-ny/FreedomInTheCloud-transcript.html&#34;&gt;Freedom in the&#xA;Cloud&lt;/a&gt;&#xA;talks about how we, as geeks and software developers, can accomplish this goal&#xA;a bit faster. It really isn&amp;rsquo;t that hard. We should start building&#xA;these home server devices and iterate and search useful features, that will&#xA;help people find what they need and how it can help them in their lives.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Design = Beneficially Relating Elements</title>
      <link>https://peterstuifzand.nl/2010/03/10/design-beneficially-relating-elements/</link>
      <pubDate>Wed, 10 Mar 2010 14:28:05 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/03/10/design-beneficially-relating-elements/</guid>
      <description>&lt;p&gt;Inspired by the &amp;ldquo;Benificially Relating Elements&amp;rdquo; phrase of Kent Beck, I started&#xA;out creating a builtin weblog for my webshop platform. The nice thing about the&#xA;idea is that it helps you find relations between elements that you already have.&lt;/p&gt;&#xA;&lt;p&gt;I started with the &amp;ldquo;What is a weblog?&amp;rdquo; A weblog is a chronological list of&#xA;pages. By answering this way, I can reuse two elements that already are&#xA;supported in the webshop: collections and pages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use perl 5.10: Given / when</title>
      <link>https://peterstuifzand.nl/2010/03/08/use-perl-5.10-given-/-when/</link>
      <pubDate>Mon, 08 Mar 2010 23:33:24 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/03/08/use-perl-5.10-given-/-when/</guid>
      <description>&lt;p&gt;The feature I&amp;rsquo;ll talk about here is the &lt;code&gt;given&lt;/code&gt;/&lt;code&gt;when&lt;/code&gt; construct, which was&#xA;added in perl 5.10. It works like &lt;code&gt;switch&lt;/code&gt;/&lt;code&gt;case&lt;/code&gt; in other programming&#xA;languages, but is much more powerful. The matching is based on smart matching,&#xA;which is another feature added in 5.10;&lt;/p&gt;&#xA;&lt;p&gt;I will start with a simple example to give you an idea of the syntax that is&#xA;used.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;use 5.010;&#xA;&#xA;my $x = &amp;lt;&amp;gt;;&#xA;chomp $x;&#xA;&#xA;given ($x) {&#xA;    when ([0..99]) {&#xA;        say &amp;quot;Looking good&amp;quot;;&#xA;    }&#xA;    when ([100..199]) {&#xA;        say &amp;quot;That&#39;s a bit much&amp;quot;;&#xA;    }&#xA;    default {&#xA;        say &amp;quot;This could be a problem&amp;quot;;&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This code compare the value of &lt;code&gt;$x&lt;/code&gt; with the array&amp;rsquo;s in the &lt;code&gt;when&lt;/code&gt; statements.&#xA;If &lt;code&gt;$x&lt;/code&gt; is between 0 and 99 (inclusive) it will the text &lt;code&gt;Looking good&lt;/code&gt;. If it&amp;rsquo;s&#xA;between 100 and 199 then it will say &lt;code&gt;That&#39;s a bit much&lt;/code&gt;. The default block&#xA;will be called when the value isn&amp;rsquo;t matched by the &lt;code&gt;when&lt;/code&gt; blocks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing for improvement</title>
      <link>https://peterstuifzand.nl/2010/03/02/testing-for-improvement/</link>
      <pubDate>Tue, 02 Mar 2010 09:36:07 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/03/02/testing-for-improvement/</guid>
      <description>&lt;p&gt;When I&amp;rsquo;m programming, I sometimes need to use a problem solving pattern, that&#xA;Kent Beck called &lt;a href=&#34;http://www.threeriversinstitute.org/blog/?p=454&#34;&gt;Parallel&lt;/a&gt;.&#xA;The pattern tells us that when your making a change you should also leave the&#xA;old way of doing things in the program, so you can gradually move to the new&#xA;solution. This helps in situations, where you can&amp;rsquo;t just flip a switch to&#xA;migrate.&lt;/p&gt;&#xA;&lt;p&gt;The problem with this however is, that you do have to migrate all the way to&#xA;the new solution, because otherwise you will have twice the code and data in&#xA;various states.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pasta and leeks</title>
      <link>https://peterstuifzand.nl/2010/02/28/pasta-and-leeks/</link>
      <pubDate>Sun, 28 Feb 2010 20:55:40 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/02/28/pasta-and-leeks/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/2010/02/28/pasta-and-leeks/pasta-prei-small.jpg&#34; alt=&#34;Pasta and leeks&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sending email with Perl in 2010</title>
      <link>https://peterstuifzand.nl/2010/02/24/sending-email-with-perl-in-2010/</link>
      <pubDate>Wed, 24 Feb 2010 16:24:04 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/02/24/sending-email-with-perl-in-2010/</guid>
      <description>&lt;p&gt;Example of how you should send email in 2010 with Perl.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/usr/bin/perl -w&#xA;use strict;&#xA;&#xA;use Email::Sender::Simple qw(sendmail);&#xA;use Email::Simple;&#xA;use Email::Simple::Creator;&#xA;&#xA;my $email = Email::Simple-&amp;gt;create(&#xA;    header =&amp;gt; [&#xA;        To      =&amp;gt; &#39;&amp;quot;Peter Foo&amp;quot; &amp;lt;foo@example.com&amp;gt;&#39;,&#xA;        From    =&amp;gt; &#39;&amp;quot;Peter Bar&amp;quot; &amp;lt;bar@example.org&amp;gt;&#39;,&#xA;        Subject =&amp;gt; &amp;quot;What&#39;s up&amp;quot;,&#xA;    ],&#xA;    body =&amp;gt; &amp;quot;Hey, how are you doing?&amp;quot;,&#xA;);&#xA;&#xA;sendmail($email);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You can see that this is simple enough. First you create an&#xA;&lt;code&gt;Email::Simple&lt;/code&gt; object. This object will format the message that wil be&#xA;sent.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Help prove help you</title>
      <link>https://peterstuifzand.nl/2010/02/17/help-prove-help-you/</link>
      <pubDate>Wed, 17 Feb 2010 10:34:54 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/02/17/help-prove-help-you/</guid>
      <description>&lt;p&gt;I use &lt;code&gt;prove&lt;/code&gt; from &lt;code&gt;Test::Harness&lt;/code&gt; to test the code of my Perl projects. The&#xA;program &lt;code&gt;prove&lt;/code&gt; runs tests files and summarizes the output. If tests fail then&#xA;it shows the error in its output.&lt;/p&gt;&#xA;&lt;p&gt;The problem is, my defaults aren&amp;rsquo;t the same as the defaults that &lt;code&gt;prove&lt;/code&gt; uses.&#xA;I keep my main application files in &lt;code&gt;app/lib&lt;/code&gt; and a few vendor libraries in&#xA;&lt;code&gt;vendor&lt;/code&gt;. The problem with this is that I have type out the options of &lt;code&gt;prove&lt;/code&gt;&#xA;every time I wanted to test. For the longest time I used a &lt;code&gt;Makefile&lt;/code&gt; to solve&#xA;this problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Buzz paper cuts</title>
      <link>https://peterstuifzand.nl/2010/02/16/buzz-paper-cuts/</link>
      <pubDate>Tue, 16 Feb 2010 10:40:22 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/02/16/buzz-paper-cuts/</guid>
      <description>&lt;p&gt;In the same way that Ubuntu has a list of problems that are trivially fixable&#xA;&lt;a href=&#34;https://wiki.ubuntu.com/PaperCut&#34;&gt;Paper cuts&lt;/a&gt;, you could also do that for&#xA;other programs. &lt;a href=&#34;http://buzz.google.com&#34;&gt;Google Buzz&lt;/a&gt; is a service that I use&#xA;at the moment. I like this program, because it seems to take public standards&#xA;into account and it will allow decentralized communication between people. So&#xA;today I will spend some time to write down the few problems that I found that&#xA;will be trivially fixable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using user-generated HTML on webpages</title>
      <link>https://peterstuifzand.nl/2010/02/13/using-user-generated-html-on-webpages/</link>
      <pubDate>Sat, 13 Feb 2010 14:42:04 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/02/13/using-user-generated-html-on-webpages/</guid>
      <description>&lt;p&gt;Jeff on Coding Horror &lt;a href=&#34;http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html&#34;&gt;writes&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Among programmers of any experience, it is generally regarded as A Bad Idea (tm)&#xA;to attempt to parse HTML with regular expressions.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;You should read the rest of the article. I&amp;rsquo;m mostly of the same opinion about&#xA;this as Jeff. Additionally I think that parsing HTML is a bad idea in the first&#xA;place.&lt;/p&gt;&#xA;&lt;p&gt;One of the examples Jeff gives for parsing HTML is sanitizing user input. The&#xA;user input will be used on the website as comments for example. I think allowing&#xA;people to write HTML and putting it on a webpage is the wrong way to go.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I would have lost interest somewhere between...</title>
      <link>https://peterstuifzand.nl/2010/02/12/i-would-have-lost-interest-somewhere-between.../</link>
      <pubDate>Fri, 12 Feb 2010 13:23:17 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/02/12/i-would-have-lost-interest-somewhere-between.../</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://notes-on-haskell.blogspot.com/2007/12/taxicab-numbers.html&#34;&gt;Adam Turoff&lt;/a&gt; wrote:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I could have written my taxicab number search in C or Java, but I would have&#xA;lost interest somewhere between #include &amp;lt;stdio.h&amp;gt; or public static void&#xA;main(String args[]) and firing up the compiler.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a shame this happens so often. It should be easier to just write the part&#xA;your idea is about and then insert it into some thing, that will make the rest&#xA;work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The problem with Wave (and other things)</title>
      <link>https://peterstuifzand.nl/2010/02/05/the-problem-with-wave-and-other-things/</link>
      <pubDate>Fri, 05 Feb 2010 11:24:12 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/02/05/the-problem-with-wave-and-other-things/</guid>
      <description>&lt;p&gt;A few days ago I started using Wave for some real projects. I found out that&#xA;Wave is not really hard to use. The problem is that the network effect is&#xA;kicking in, but in the opposite way.&lt;/p&gt;&#xA;&lt;p&gt;Wave is a communication tool. You can use it to send messages and collaborate&#xA;on projects with other people. And I think the problem here, is that the other&#xA;people are missing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple tool for finding an external ip address</title>
      <link>https://peterstuifzand.nl/2010/02/03/simple-tool-for-finding-an-external-ip-address/</link>
      <pubDate>Wed, 03 Feb 2010 11:36:02 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/02/03/simple-tool-for-finding-an-external-ip-address/</guid>
      <description>&lt;p&gt;I just released a small program that gets the ip address or your computer. The&#xA;nice thing is, this service is REST-based.&lt;/p&gt;&#xA;&lt;p&gt;You can find it at &lt;a href=&#34;http://stuifzand.eu/tools/&#34;&gt;Stuifzand Software Tools&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programmers and the iPad</title>
      <link>https://peterstuifzand.nl/2010/01/30/programmers-and-the-ipad/</link>
      <pubDate>Sat, 30 Jan 2010 20:07:32 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/30/programmers-and-the-ipad/</guid>
      <description>&lt;p&gt;It seems a few people wrote that they wouldn&amp;rsquo;t have learned to program as a kid&#xA;on an iPad instead of a real computer.&lt;/p&gt;&#xA;&lt;p&gt;The things is that no one thought this was a problem with the iPhone or the&#xA;iPod Touch. People think of those as a computer, but not, as a real one. The&#xA;conclusion could be this: for a device to be a computer, it needs to be&#xA;programmable on the device itself.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On a blog I can publish anything</title>
      <link>https://peterstuifzand.nl/2010/01/29/on-a-blog-i-can-publish-anything/</link>
      <pubDate>Fri, 29 Jan 2010 16:53:11 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/29/on-a-blog-i-can-publish-anything/</guid>
      <description>&lt;p&gt;The cool thing about a blog is, that I can publish anything that I want. If I&#xA;want to favorite a video on a video sharing website, it needs to implement that&#xA;for me. On my weblog I can post it just as easy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weird or just different?</title>
      <link>https://peterstuifzand.nl/2010/01/29/weird-or-just-different/</link>
      <pubDate>Fri, 29 Jan 2010 16:43:30 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/29/weird-or-just-different/</guid>
      <description>&lt;!--copy and paste--&gt;&lt;object width=&#34;446&#34; height=&#34;326&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://video.ted.com/assets/player/swf/EmbedPlayer.swf&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowFullScreen&#34; value=&#34;true&#34; /&gt;&lt;param name=&#34;wmode&#34; value=&#34;transparent&#34;&gt;&lt;/param&gt;&lt;param name=&#34;bgColor&#34; value=&#34;#ffffff&#34;&gt;&lt;/param&gt; &lt;param name=&#34;flashvars&#34; value=&#34;vu=http://video.ted.com/talks/dynamic/DerekSivers_2009I-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DerekSivers-2009I.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=755&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=derek_sivers_weird_or_just_different;year=2009;theme=unconventional_explanations;theme=new_on_ted_com;theme=the_power_of_cities;event=TEDIndia+2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;&#34; /&gt;&lt;embed src=&#34;http://video.ted.com/assets/player/swf/EmbedPlayer.swf&#34; pluginspace=&#34;http://www.macromedia.com/go/getflashplayer&#34; type=&#34;application/x-shockwave-flash&#34; wmode=&#34;transparent&#34; bgColor=&#34;#ffffff&#34; width=&#34;446&#34; height=&#34;326&#34; allowFullScreen=&#34;true&#34; flashvars=&#34;vu=http://video.ted.com/talks/dynamic/DerekSivers_2009I-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DerekSivers-2009I.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=755&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=derek_sivers_weird_or_just_different;year=2009;theme=unconventional_explanations;theme=new_on_ted_com;theme=the_power_of_cities;event=TEDIndia+2009;&#34;&gt;&lt;/embed&gt;&lt;/object&gt;</description>
    </item>
    <item>
      <title>Email accounts become user accounts</title>
      <link>https://peterstuifzand.nl/2010/01/29/email-accounts-become-user-accounts/</link>
      <pubDate>Fri, 29 Jan 2010 15:49:33 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/29/email-accounts-become-user-accounts/</guid>
      <description>&lt;p&gt;I just read something that seems &lt;a href=&#34;http://romeda.org/blog/2009/05/simple-addressing-for-web-part-1.html&#34;&gt;really nice&lt;/a&gt;. It&amp;rsquo;s even strange that it isn&amp;rsquo;t&#xA;already used like that. Use an email address-like identifier as pointer to an&#xA;account. Let me explain.&lt;/p&gt;&#xA;&lt;p&gt;Email addresses consist of two parts seperated by an @-sign. The first part is&#xA;the username, the second part is the domain name of your email provider. For&#xA;example, my email address is &lt;code&gt;peter@example.com&lt;/code&gt;. The username is &lt;code&gt;peter&lt;/code&gt; and&#xA;the domain name is &lt;code&gt;stuifzand.eu&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iPad and programming</title>
      <link>https://peterstuifzand.nl/2010/01/29/ipad-and-programming/</link>
      <pubDate>Fri, 29 Jan 2010 13:47:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/29/ipad-and-programming/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://al3x.net/2010/01/28/ipad.html&#34;&gt;Alex Payne&lt;/a&gt; wrote:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;If I had an iPad rather than a real computer as a kid, I&amp;rsquo;d never be a&#xA;programmer today.&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Sugar: The Bitter Truth</title>
      <link>https://peterstuifzand.nl/2010/01/28/sugar-the-bitter-truth/</link>
      <pubDate>Thu, 28 Jan 2010 22:49:05 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/28/sugar-the-bitter-truth/</guid>
      <description>&lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;344&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/dBnniua6-oM&amp;hl=en_US&amp;fs=1&amp;&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowFullScreen&#34; value=&#34;true&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/dBnniua6-oM&amp;hl=en_US&amp;fs=1&amp;&#34; type=&#34;application/x-shockwave-flash&#34; allowscriptaccess=&#34;always&#34; allowfullscreen=&#34;true&#34; width=&#34;425&#34; height=&#34;344&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Brainwashed: Seven ways to reinvent yourself</title>
      <link>https://peterstuifzand.nl/2010/01/28/brainwashed-seven-ways-to-reinvent-yourself/</link>
      <pubDate>Thu, 28 Jan 2010 00:37:15 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/28/brainwashed-seven-ways-to-reinvent-yourself/</guid>
      <description>&lt;p&gt;A ChangeThis Manifesto by Seth Godin: &lt;a href=&#34;http://changethis.com/66.01.Brainwashed&#34;&gt;Brainwashed: Seven Ways to Reinvent Yourself&lt;/a&gt;. Interesting. Also there is an interview between Merlin and Seth on &lt;a href=&#34;http://43folders.com&#34;&gt;43 Folders&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using a webhook to GET information</title>
      <link>https://peterstuifzand.nl/2010/01/27/using-a-webhook-to-get-information/</link>
      <pubDate>Wed, 27 Jan 2010 17:33:36 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/27/using-a-webhook-to-get-information/</guid>
      <description>&lt;p&gt;This week I&amp;rsquo;m working on an application that needs to get a list of email&#xA;addresses from another application. It has the following requirements.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Requirement #1&lt;/strong&gt;: Only HTTP+URL+HTML. No SOAP, SQL or other technologies.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Requirement #2&lt;/strong&gt;: The list can&amp;rsquo;t be cached. It needs to be updated on the&#xA;moment that the information is used.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Requirement #3&lt;/strong&gt;: Just one URL.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Requirement #4&lt;/strong&gt;: Authentication is very important. Only programs, that are&#xA;authenticated can read this information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cool Websocket, Twitter and XFactor demo</title>
      <link>https://peterstuifzand.nl/2010/01/26/cool-websocket-twitter-and-xfactor-demo/</link>
      <pubDate>Tue, 26 Jan 2010 13:47:37 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/26/cool-websocket-twitter-and-xfactor-demo/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://blog.new-bamboo.co.uk/2009/12/14/pushing-the-boundary-of-real-time-web-with-twitter-and-xfactor&#34;&gt;Pushing the boundary of Real Time Web with Twitter and XFactor&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I am glad that I was able to show how exciting node.js and WebSockets are to&#xA;make real time web application.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;This is a really cool realtime web application demo. Watch the video.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More insight into web video codecs</title>
      <link>https://peterstuifzand.nl/2010/01/26/more-insight-into-web-video-codecs/</link>
      <pubDate>Tue, 26 Jan 2010 13:44:19 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/26/more-insight-into-web-video-codecs/</guid>
      <description>&lt;p&gt;Mike Shaver wrote in &lt;a href=&#34;http://shaver.off.net/diary/2010/01/23/html5-video-and-codecs/&#34;&gt;HTML5 video and codecs&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;We want to make sure that the Web experience is good for all users, present&#xA;and future. I want to make sure that when a child in India or Brazil or Kenya&#xA;discovers the internet, there isn’t a big piece of it (video) that they can’t&#xA;afford to participate in. I want to make sure that there are no toll-booth&#xA;barriers to entry for someone building a whole new browser, or bringing a&#xA;browser to a whole new device or OS, or making and using tools for creating&#xA;standard web content. And I want that not only altruistically, but also&#xA;because I want the crazy awesome video (animation, peer-to-peer, security,&#xA;etc.) ideas that will come from having more people, with more perspectives,&#xA;fully participating in the internet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Schwartzian transform in shell and vim</title>
      <link>https://peterstuifzand.nl/2010/01/26/schwartzian-transform-in-shell-and-vim/</link>
      <pubDate>Tue, 26 Jan 2010 13:12:36 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/26/schwartzian-transform-in-shell-and-vim/</guid>
      <description>&lt;p&gt;A few days ago I had to create list of email addresses sorted on the&#xA;domainname. All addresses with the same name should clump together. Being a&#xA;Perl programmer, I quickly wanted to write a Perl script to sort this list of&#xA;data. Then I tought, why not use Vim to look at the intermediate steps and do&#xA;it with filtering. The following is the result.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;:%!perl -pe &#39;m/\@([-\w]+)\./; $_=&amp;quot;$1\#$_&amp;quot;;&#39;&#xA;:%!sort&#xA;:%!cut -d\# -f2&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The first line parsed the domain from the data and pastes it in front of the&#xA;orignal, seperating it with a &amp;lsquo;#&amp;rsquo;. The second line obviously sorts the new&#xA;list. The final line removes the domain that I put in front. This leaves a&#xA;list of the originals.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Important message about HTML5 video codecs</title>
      <link>https://peterstuifzand.nl/2010/01/25/important-message-about-html5-video-codecs/</link>
      <pubDate>Mon, 25 Jan 2010 14:57:23 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/25/important-message-about-html5-video-codecs/</guid>
      <description>&lt;p&gt;This article takes a look at the history of the web to find out what we need to&#xA;do about video codecs.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.0xdeadbeef.com/weblog/2010/01/html5-video-and-h-264-what-history-tells-us-and-why-were-standing-with-the-web/&#34;&gt;HTML5 video and H.264 – what history tells us and why we’re standing with the web&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Copying HTML from a webpage to Google Wave</title>
      <link>https://peterstuifzand.nl/2010/01/24/copying-html-from-a-webpage-to-google-wave/</link>
      <pubDate>Sun, 24 Jan 2010 21:19:07 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/24/copying-html-from-a-webpage-to-google-wave/</guid>
      <description>&lt;p&gt;It seems that I can copy formatted text (including urls) from a webpage to&#xA;Google Wave and the formatting doesn&amp;rsquo;t change. This happened in Google Chrome.&lt;/p&gt;&#xA;&lt;p&gt;Is this a Google Chrome feature? Or is this a Google Wave feature? Or is this&#xA;jkust supposed to happen and did this already work a long time?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Giving URxvt a try again</title>
      <link>https://peterstuifzand.nl/2010/01/24/giving-urxvt-a-try-again/</link>
      <pubDate>Sun, 24 Jan 2010 20:51:48 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/24/giving-urxvt-a-try-again/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s that time of year again. Some applications come and others go. This time&#xA;it&amp;rsquo;s gnome-terminal that goes.&lt;/p&gt;&#xA;&lt;p&gt;The thing with &lt;a href=&#34;http://software.schmorp.de/pkg/rxvt-unicode.html&#34;&gt;rxvt-unicode&lt;/a&gt;&#xA;is that you need to configure it to be pretty. Luckely I found a page&#xA;&lt;a href=&#34;http://blog.ezyang.com/2010/01/rxvt-unicode-for-gnome-terminal-refugees/&#34;&gt;containing nice colors and&#xA;settings&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;At the moment I have only tried it for a few minutes, but I already like it. Let&amp;rsquo;s see how this goes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The advantage microformats have over other formats</title>
      <link>https://peterstuifzand.nl/2010/01/23/the-advantage-microformats-have-over-other-formats/</link>
      <pubDate>Sat, 23 Jan 2010 16:15:39 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/23/the-advantage-microformats-have-over-other-formats/</guid>
      <description>&lt;p&gt;I just realized what the big advantage is, that&#xA;&lt;a href=&#34;http://microformats.org&#34;&gt;microformats&lt;/a&gt; have over other formats.&lt;/p&gt;&#xA;&lt;p&gt;I was working on implementing the &lt;code&gt;vevent&lt;/code&gt; microformat in my &lt;a href=&#34;http://wijvervelenons.nl&#34;&gt;social concert&#xA;calender&lt;/a&gt;. This was really easy. All I had to do was&#xA;add some classes and some tags in special formats (most notably the ISO8601&#xA;date format).&lt;/p&gt;&#xA;&lt;p&gt;You could say that the big advantage of this is that I only have to change a&#xA;bit of markup and that it&amp;rsquo;s really easy. But that is not the biggest advantage.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 5.11.4 development release released</title>
      <link>https://peterstuifzand.nl/2010/01/22/perl-5.11.4-development-release-released/</link>
      <pubDate>Fri, 22 Jan 2010 14:55:33 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/22/perl-5.11.4-development-release-released/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://rjbs.manxome.org/rubric/entry/1814&#34;&gt;Perl 5.11.4&lt;/a&gt; is released:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;This is the fifth DEVELOPMENT release in the 5.11.x series leading to a stable&#xA;release of Perl 5.12.0. You can find a list of high-profile changes in this&#xA;release in the file&#xA;&lt;a href=&#34;http://search.cpan.org/~rjbs/perl-5.11.4/pod/perl5114delta.pod&#34;&gt;perl5114delta.pod&lt;/a&gt;&#xA;inside the distribution.&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Perl web server</title>
      <link>https://peterstuifzand.nl/2010/01/22/perl-web-server/</link>
      <pubDate>Fri, 22 Jan 2010 14:44:33 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/22/perl-web-server/</guid>
      <description>&lt;p&gt;Plack is a &lt;a href=&#34;http:///plackperl.org&#34;&gt;Perl Web Server&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Plack is the superglue interface between perl web application frameworks and&#xA;web servers, just like Perl is the duct tape of the internet.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;This is interesting and maybe useful in my webshop platform.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox 3.6 released</title>
      <link>https://peterstuifzand.nl/2010/01/22/firefox-3.6-released/</link>
      <pubDate>Fri, 22 Jan 2010 14:15:36 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/22/firefox-3.6-released/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://getfirefox.com/&#34;&gt;Firefox 3.6 released&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re a developer you should take a look at the &lt;a href=&#34;https://developer.mozilla.org/En/Firefox_3.6_for_developers&#34;&gt;Firefox 3.6 for developers&lt;/a&gt; page.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Find your local IP address in Linux</title>
      <link>https://peterstuifzand.nl/2010/01/18/find-your-local-ip-address-in-linux/</link>
      <pubDate>Mon, 18 Jan 2010 11:36:40 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/18/find-your-local-ip-address-in-linux/</guid>
      <description>&lt;p&gt;Today I created this simple script that will find your local IP address or you Linux machine.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/bin/sh&#xA;# Shows ip address of eth0&#xA;/sbin/ifconfig | awk &#39;/^eth0/,/^$/&#39; | awk &#39;/inet addr/ { print $2 }&#39; | cut -d: -f2&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;It uses the output of &lt;code&gt;ifconfig&lt;/code&gt;. First it finds the part that contains the&#xA;information for &lt;code&gt;eth0&lt;/code&gt;. Then it find the line with the inet addr, which&#xA;contains your IP address. At the end it cuts the line in two parts and only&#xA;prints the second part.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maybe you just don&#39;t want to switch</title>
      <link>https://peterstuifzand.nl/2010/01/10/maybe-you-just-dont-want-to-switch/</link>
      <pubDate>Sun, 10 Jan 2010 17:28:53 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/10/maybe-you-just-dont-want-to-switch/</guid>
      <description>&lt;p&gt;My hypothesis is that people who are comparing iPhone to Android, actually&#xA;don&amp;rsquo;t want to switch. They have to find some problem, so they don&amp;rsquo;t have to.&lt;/p&gt;&#xA;&lt;p&gt;And why should they switch? I don&amp;rsquo;t know. If you&amp;rsquo;re happy with your phone and&#xA;the way it works, you shouldn&amp;rsquo;t switch. It seems they want the Android phone to&#xA;be an iPhone. But it isn&amp;rsquo;t. And it shouldn&amp;rsquo;t try to be. It&amp;rsquo;s something&#xA;different.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reversing an arrayref is too hard</title>
      <link>https://peterstuifzand.nl/2010/01/05/reversing-an-arrayref-is-too-hard/</link>
      <pubDate>Tue, 05 Jan 2010 15:01:40 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2010/01/05/reversing-an-arrayref-is-too-hard/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s say I have this line of code&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;my $numbers = [ 1, 2, 3, 4, 5, 6 ];&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;and I want to reverse the items in the list. In Perl 5 there is this useful&#xA;builtin function which does just that. There problem is, it only works on&#xA;lists, not arrayrefs. If you use it on an arrayref, you will reverse the string&#xA;representation of the arrayref. Which will return something like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Most Applications?</title>
      <link>https://peterstuifzand.nl/2009/12/29/the-most-applications/</link>
      <pubDate>Tue, 29 Dec 2009 11:09:12 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/12/29/the-most-applications/</guid>
      <description>&lt;p&gt;When you read about people wanting to switch to an Android phone, they&#xA;will say that the iPhone has the most applications. Last thing I heard&#xA;about this was that the iPhone has about 100.000 applications and Android about&#xA;16.000 to 20.000. This is only a factor five. That one number is bigger than&#xA;the other is obvious. But is that the best way to compare these two app stores?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spreadsheet import</title>
      <link>https://peterstuifzand.nl/2009/12/27/spreadsheet-import/</link>
      <pubDate>Sun, 27 Dec 2009 14:50:29 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/12/27/spreadsheet-import/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://greenokapi.net/blog/2009/12/26/spreadsheet-imports-imperative-vs-functional/&#34;&gt;osfameron&lt;/a&gt; asked:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been prototyping ways for customers to import data into our system.&#xA;[&amp;hellip;] How would you tackle this task? Is there even an elegant way to do it&#xA;&lt;em&gt;imperatively&lt;/em&gt;?&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;He is trying to import data into his system, but his information is not all in&#xA;a flat structure. It looks like this:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Name        Price   Tag&#xA;Brie        2.00    Dairy&#xA;                    Cheese&#xA;                    Food&#xA;Chablis     5.00    Wine&#xA;                    Alcohol&#xA;                    Drink&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;As you can see the there is a start row and a few extra data rows after that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>People think I love computers</title>
      <link>https://peterstuifzand.nl/2009/12/23/people-think-i-love-computers/</link>
      <pubDate>Wed, 23 Dec 2009 12:17:52 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/12/23/people-think-i-love-computers/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://teddziuba.com/2009/12/how-i-spot-valuable-engineers.html&#34;&gt;Ted Dziuba&lt;/a&gt; wrote:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;People think I hate programming. Nope. What I hate is fording endless rivers&#xA;of horseshit that are in the way of seemingly simple tasks. And I hate it&#xA;even more when I have to explain to a non-programmer what I am doing,&#xA;&amp;ldquo;building LXML against a different version of libiconv because I think it&#xA;might be the source of a crash&amp;rdquo;.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Yes. The thing that I would say is this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>What? RSS is dead? Again?</title>
      <link>https://peterstuifzand.nl/2009/12/23/what-rss-is-dead-again/</link>
      <pubDate>Wed, 23 Dec 2009 11:54:34 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/12/23/what-rss-is-dead-again/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.steverubel.com/as-the-decade-closes-has-rss-faded-too&#34;&gt;Steve Rubel&lt;/a&gt; wrote:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The decade is coming to an end. And with it, so has the era of feeds too faded -&#xA;though you can argue it never got off the ground. Even with real-time&#xA;technologies like pubsubhubbub, RSS today feels slow and it&amp;rsquo;s clear its best&#xA;days are behind it. Feed reading, like blogging, feels &amp;ldquo;very 2005.&amp;rdquo; I wasn&amp;rsquo;t&#xA;convinced until recently, however.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;You could say that I&amp;rsquo;m not convinced yet, either. Still I wouldn&amp;rsquo;t know what I&#xA;would do without RSS.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twitter, I don&#39;t care anymore</title>
      <link>https://peterstuifzand.nl/2009/12/23/twitter-i-dont-care-anymore/</link>
      <pubDate>Wed, 23 Dec 2009 11:28:47 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/12/23/twitter-i-dont-care-anymore/</guid>
      <description>&lt;p&gt;I have had an account with &lt;a href=&#34;http://twitter.com&#34;&gt;Twitter&lt;/a&gt; now, for almost three&#xA;years. According to &lt;a href=&#34;http://www.whendidyoujointwitter.com/?username=pstuifzand&#34;&gt;When did you join&#xA;twitter?&lt;/a&gt;, I joined&#xA;twitter over two years and nine months ago. Lately I&amp;rsquo;m wondering if it&amp;rsquo;s&#xA;useful for anything. It&amp;rsquo;s a lousy news reader, it&amp;rsquo;s a terrible communication&#xA;medium and the mechanics are all in one company.&lt;/p&gt;&#xA;&lt;p&gt;There is no way for me to send messages to the people I would like to send&#xA;messages. Let&amp;rsquo;s say this is the same group of people that I would send SMS&#xA;messages to. These aren&amp;rsquo;t on Twitter and probably never will be. They tried it&#xA;and left it, never to return. These are the kind of people that don&amp;rsquo;t have&#xA;fancy phones, with fancy apps, that allow them to use Twitter in a useful way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Skeptics vs. Scientists</title>
      <link>https://peterstuifzand.nl/2009/12/23/skeptics-vs.-scientists/</link>
      <pubDate>Wed, 23 Dec 2009 10:33:21 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/12/23/skeptics-vs.-scientists/</guid>
      <description>&lt;p&gt;If I read the title of &lt;a href=&#34;http://www.informationisbeautiful.net/visualizations/climate-change-deniers-vs-the-consensus/&#34;&gt;this diagram&lt;/a&gt; correctly, it seems to imply that the skeptics aren&amp;rsquo;t scientists.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The Global Warming Sceptics  vs. The Scientific Consensus&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t think this is that case.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gruber on Flash</title>
      <link>https://peterstuifzand.nl/2009/12/22/gruber-on-flash/</link>
      <pubDate>Tue, 22 Dec 2009 14:47:45 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/12/22/gruber-on-flash/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://daringfireball.net/2009/12/html5_video_unusable&#34;&gt;Why the HTML5 &amp;lsquo;Video&amp;rsquo; Element Is Effectively Unusable, Even in Browsers Which Support It&lt;/a&gt; John Gruber says:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I truly hope to see Flash fade as the de facto standard for embedded web video, and I’m willing to put my markup where my mouth is.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Me too, and also for everything else.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why don&#39;t we build a software tower?</title>
      <link>https://peterstuifzand.nl/2009/12/03/why-dont-we-build-a-software-tower/</link>
      <pubDate>Thu, 03 Dec 2009 12:35:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/12/03/why-dont-we-build-a-software-tower/</guid>
      <description>&lt;p&gt;We should build towers of software instead of just replacing the platform every&#xA;few years. Many client software programs are the end of the line. It&amp;rsquo;s not easy&#xA;to build new software on top of those programs.&lt;/p&gt;&#xA;&lt;p&gt;The problem with this is that this way client programs will become better, but&#xA;it&amp;rsquo;s not possible to build on top of them.&lt;/p&gt;&#xA;&lt;p&gt;Each program should have an API that allows other programs to build on top of&#xA;them. There is a lot of functionality that is build in to programs, that could&#xA;just as easy useful to other programs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use named capture buffers to fill a hash</title>
      <link>https://peterstuifzand.nl/2009/11/30/use-named-capture-buffers-to-fill-a-hash/</link>
      <pubDate>Mon, 30 Nov 2009 14:53:08 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/30/use-named-capture-buffers-to-fill-a-hash/</guid>
      <description>&lt;p&gt;This is a small Perl 5.10 tip. You can use named capture buffers to fill a&#xA;hash. Before 5.10 you needed to &amp;lsquo;unpack&amp;rsquo; the values from a regex match into a&#xA;hash.&lt;/p&gt;&#xA;&lt;p&gt;I will give a small example that shows the problem this creates.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;my $str = &amp;quot;name=value&amp;quot;;&#xA;my %result;&#xA;&#xA;if ($str =~ m/(\w+)=(\w+)/) {&#xA;    $result{name} = $1;&#xA;    $result{value} = $2;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The problem with this is that you need to number the variables and assign each&#xA;individually to the hash. In Perl 5.10 you can do the following.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I want a programmable everything</title>
      <link>https://peterstuifzand.nl/2009/11/30/i-want-a-programmable-everything/</link>
      <pubDate>Mon, 30 Nov 2009 12:44:45 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/30/i-want-a-programmable-everything/</guid>
      <description>&lt;p&gt;As a programmer I want a programmable world. The web has been a big step&#xA;forward in making things programmable. Especially in the form of REST.  HTTP&#xA;clients can send HTTP requests to urls and proxy can filter or change what is&#xA;passed through.&lt;/p&gt;&#xA;&lt;p&gt;In the future more real world things will become programmable. For example I&#xA;can program my &lt;a href=&#34;http://realtimeregister.com&#34;&gt;domain name provider&lt;/a&gt;. As long as&#xA;I supply enough money to them, I can register as many domain names as I like.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MMS photo sharing on Twitter</title>
      <link>https://peterstuifzand.nl/2009/11/17/mms-photo-sharing-on-twitter/</link>
      <pubDate>Tue, 17 Nov 2009 10:21:44 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/17/mms-photo-sharing-on-twitter/</guid>
      <description>&lt;p&gt;It seems it is now possible to &lt;a href=&#34;http://blog.twitter.com/2009/11/another-first-in-uk.html&#34;&gt;share photos with&#xA;MMS&lt;/a&gt; to Twitter. It&amp;rsquo;s&#xA;interesting to notice that the people at Orange UK figured out that if let&#xA;people send MMS messages to an interesting service you can make a lot of money.&lt;/p&gt;&#xA;&lt;p&gt;I have never send an MMS in my life and I probably never will, but if the use&#xA;is interesting or valuable enough, I just might.&lt;/p&gt;&#xA;&lt;p&gt;The other important thing to notice is that Orange UK can (and probably will)&#xA;save half of the money (and bandwidth) that would normally be needed to send&#xA;a MMS. They only have to receive the MMS from their customer. To get the&#xA;photo to Twitter they only need a few servers that call the API.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I can&#39;t imagine that I would write that code in the first place</title>
      <link>https://peterstuifzand.nl/2009/11/17/i-cant-imagine-that-i-would-write-that-code-in-the-first-place/</link>
      <pubDate>Tue, 17 Nov 2009 09:33:21 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/17/i-cant-imagine-that-i-would-write-that-code-in-the-first-place/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;I&amp;rsquo;m afraid that&amp;rsquo;s a failure of your imagination. &amp;ndash; Rush, SG:U.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;When I&amp;rsquo;m looking at code on Stackoverflow (or some other place with bad code),&#xA;I&amp;rsquo;ll sometimes see people asking questions about pieces of code, that I can&amp;rsquo;t&#xA;imagine I would have written like that in the first place.&lt;/p&gt;&#xA;&lt;p&gt;Why is that? I just noticed it a few minutes ago, but it looks like I have to&#xA;think about that some more&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use Perl 5.10: _ prototype</title>
      <link>https://peterstuifzand.nl/2009/11/16/use-perl-5.10-_-prototype/</link>
      <pubDate>Mon, 16 Nov 2009 21:17:22 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/16/use-perl-5.10-_-prototype/</guid>
      <description>&lt;p&gt;This week I will show a simple example about how to use the underscore&#xA;prototype which is new in Perl 5.10.&lt;/p&gt;&#xA;&lt;p&gt;This feature was added to allow you to write functions that work like builtin&#xA;functions. It&amp;rsquo;s up to you to not abuse it and write unreadable code, of course.&lt;/p&gt;&#xA;&lt;p&gt;This example shows how to use this new feature. It allows you to use the &lt;code&gt;$_&lt;/code&gt;&#xA;variable as an argument for a user defined function.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I don&#39;t know why I didn&#39;t make these aliases before</title>
      <link>https://peterstuifzand.nl/2009/11/10/i-dont-know-why-i-didnt-make-these-aliases-before/</link>
      <pubDate>Tue, 10 Nov 2009 14:36:51 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/10/i-dont-know-why-i-didnt-make-these-aliases-before/</guid>
      <description>&lt;p&gt;A few days ago I created two new aliases for places I connect to with &lt;code&gt;ssh&lt;/code&gt;.&#xA;Both locations have a three character alias now.&lt;/p&gt;&#xA;&lt;p&gt;To use the aliases I created a new file called &lt;code&gt;~/.aliases&lt;/code&gt;. This file contains&#xA;all the aliases I use. This file should be sourced in the &lt;code&gt;~/.bashrc&lt;/code&gt; file with the following command.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;source ~/.aliases&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Then add the following line to the ~/.aliases file.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;alias realias=&#39;$EDITOR ~/.aliases; source ~/.aliases&#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Restart bash and type &lt;code&gt;realias&lt;/code&gt;. It will open an editor to the &lt;code&gt;~/.aliases&lt;/code&gt; file and&#xA;source it when your done.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Whitespace at end of line</title>
      <link>https://peterstuifzand.nl/2009/11/09/whitespace-at-end-of-line/</link>
      <pubDate>Mon, 09 Nov 2009 11:41:57 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/09/whitespace-at-end-of-line/</guid>
      <description>&lt;p&gt;On &lt;a href=&#34;http://www.codinghorror.com/blog/archives/001310.html&#34;&gt;Coding Horror&lt;/a&gt; Jeff&#xA;wrote about whitespace at the end of lines of code. I hate that as much as the&#xA;next guy. It seems irrational, but I think it&amp;rsquo;s not. It has no function and&#xA;only creates problems on times when you don&amp;rsquo;t expect them, especially with&#xA;source code control tools.&lt;/p&gt;&#xA;&lt;p&gt;So I wrote a small piece of Vim script code to highlight the spaces at the end&#xA;of the line in bright red.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use Perl 5.10: Named capture buffers</title>
      <link>https://peterstuifzand.nl/2009/11/08/use-perl-5.10-named-capture-buffers/</link>
      <pubDate>Sun, 08 Nov 2009 20:46:48 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/08/use-perl-5.10-named-capture-buffers/</guid>
      <description>&lt;p&gt;In the latest version of Perl 5 the regex engine also got a big upgrade. There&#xA;are many changes that made it faster and more correct for certain regexes.&#xA;This time I will explain the new features called Named capture buffers.&lt;/p&gt;&#xA;&lt;p&gt;Named capture buffers are similar to the numbered capture buffers, like &lt;code&gt;$1&lt;/code&gt;&#xA;and &lt;code&gt;$2&lt;/code&gt;. The named versions of these work the same except that you can give&#xA;them a name like &lt;code&gt;name&lt;/code&gt; or &lt;code&gt;value&lt;/code&gt;. This will help you with documenting the&#xA;regex that you use.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New keyboard, strange wrist support</title>
      <link>https://peterstuifzand.nl/2009/11/05/new-keyboard-strange-wrist-support/</link>
      <pubDate>Thu, 05 Nov 2009 11:29:34 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/11/05/new-keyboard-strange-wrist-support/</guid>
      <description>&lt;p&gt;I started using the Microsoft Natural Ergonomic Keyboard 4000 keyboard about&#xA;two weeks ago. At first I didn&amp;rsquo;t use the strange wrist thing. It looks strange&#xA;and lift my wrists a lot.&lt;/p&gt;&#xA;&lt;p&gt;Today I attached the wrist support thing and at once my typing is becoming&#xA;faster and better. It looks like that thing makes the angle better for typing&#xA;the keys. I&amp;rsquo;ve only tried this for a few minutes know. I will try it a little&#xA;longer to find out how this works. It seems nice enough.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perfection</title>
      <link>https://peterstuifzand.nl/2009/10/26/perfection/</link>
      <pubDate>Mon, 26 Oct 2009 13:07:15 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/26/perfection/</guid>
      <description>&lt;p&gt;A person who says a thing has only advantages and &lt;em&gt;no&lt;/em&gt; disadvantages, is either&#xA;a fool, or a liar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bytecode interpreter</title>
      <link>https://peterstuifzand.nl/2009/10/26/bytecode-interpreter/</link>
      <pubDate>Mon, 26 Oct 2009 10:58:32 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/26/bytecode-interpreter/</guid>
      <description>&lt;p&gt;A bytecode interpreter is basically a loop and a lookup table. The interpreter&#xA;starts at the beginning of an array of bytes. Each byte in this array is an&#xA;index into the lookup table. For each key in this table there is a piece of&#xA;code that needs to be executed. Code for that may look like this:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;typedef unsigned char byte;&#xA;&#xA;// the simplest program&#xA;byte program[] = {&#xA;    0,&#xA;};&#xA;&#xA;byte* ip = program;                   // instruction pointer&#xA;&#xA;while ((ip=(lookup_table[*ip])(ip))!=0) {&#xA;    // does nothing else, but could&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The expression in the while loop is a bit complex, but we can divide it in&#xA;parts.  First there is &lt;code&gt;ip&lt;/code&gt;. This is the instruction pointer. It points to the&#xA;instruction that needs to be executed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use Perl 5.10: say</title>
      <link>https://peterstuifzand.nl/2009/10/25/use-perl-5.10-say/</link>
      <pubDate>Sun, 25 Oct 2009 21:25:46 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/25/use-perl-5.10-say/</guid>
      <description>&lt;p&gt;This is the first article in a series about new Perl 5.10 features. I&amp;rsquo;ll try to&#xA;write one article each week, but you&amp;rsquo;ll never know.&lt;/p&gt;&#xA;&lt;p&gt;This first article is about the new builtin function &lt;code&gt;say&lt;/code&gt;. The &lt;code&gt;say&lt;/code&gt; function&#xA;is similar to &lt;code&gt;print&lt;/code&gt; in how it works. Whenever you want to use &lt;code&gt;say&lt;/code&gt; or other&#xA;features from Perl 5.10, you need to declare that you want to use these&#xA;features.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;use 5.010;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;After you have done that you can use the function like this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Have you forgotten who you are?</title>
      <link>https://peterstuifzand.nl/2009/10/23/have-you-forgotten-who-you-are/</link>
      <pubDate>Fri, 23 Oct 2009 16:13:05 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/23/have-you-forgotten-who-you-are/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://www.43folders.com/2009/10/22/who-you-are&#34;&gt;Makebelieve help, Old Butchers, and Figuring Out Who You Are (For&#xA;Now)&lt;/a&gt; talks about how if you&#xA;forget who you are, you&amp;rsquo;ll procrastinate; and thoughts about learning and play,&#xA;mastery and old butchers and playing with the stuff you have lying around your&#xA;desk. It&amp;rsquo;s a forty minute video, which with Merlin is always worth your while.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PubSubHubbub and polling?</title>
      <link>https://peterstuifzand.nl/2009/10/19/pubsubhubbub-and-polling/</link>
      <pubDate>Mon, 19 Oct 2009 11:51:42 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/19/pubsubhubbub-and-polling/</guid>
      <description>&lt;p&gt;Via &lt;a href=&#34;http://www.tbray.org/ongoing/When/200x/2009/10/18/PubHubSunday&#34;&gt;PubHubSunday - Tim Bray&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;On the other hand, Twitter clients which rely on polling seem to make their&#xA;users happy. I see nothing in the spec about supporting polling, i.e. how a&#xA;client might ask a hub for its version of a feed, but that seems to me like&#xA;it might be a real useful function.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t think that adding polling to PubSubHubbub (PuSH) would be a good idea.&#xA;Removing the need to poll from feeds is one of the reasons for its existence.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Seth Godin: Quieting the Lizard Brain</title>
      <link>https://peterstuifzand.nl/2009/10/15/seth-godin-quieting-the-lizard-brain/</link>
      <pubDate>Thu, 15 Oct 2009 21:43:12 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/15/seth-godin-quieting-the-lizard-brain/</guid>
      <description>&lt;p&gt;&lt;object width=&#34;560&#34; height=&#34;420&#34;&gt;&lt;param name=&#34;allowfullscreen&#34; value=&#34;true&#34; /&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34; /&gt;&lt;param name=&#34;movie&#34; value=&#34;http://vimeo.com/moogaloop.swf?clip_id=5895898&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=e91c6b&amp;amp;fullscreen=1&#34; /&gt;&lt;embed src=&#34;http://vimeo.com/moogaloop.swf?clip_id=5895898&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=e91c6b&amp;amp;fullscreen=1&#34; type=&#34;application/x-shockwave-flash&#34; allowfullscreen=&#34;true&#34; allowscriptaccess=&#34;always&#34; width=&#34;560&#34; height=&#34;420&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href=&#34;http://vimeo.com/5895898&#34;&gt;Seth Godin: Quieting the Lizard Brain&lt;/a&gt; from &lt;a href=&#34;http://vimeo.com/the99percent&#34;&gt;99%&lt;/a&gt; on &lt;a href=&#34;http://vimeo.com&#34;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;&#xA;&lt;p&gt;Shipping is more important than creativity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Autocomplete contexts and people with GTD in Vimoutliner</title>
      <link>https://peterstuifzand.nl/2009/10/15/autocomplete-contexts-and-people-with-gtd-in-vimoutliner/</link>
      <pubDate>Thu, 15 Oct 2009 14:15:54 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/15/autocomplete-contexts-and-people-with-gtd-in-vimoutliner/</guid>
      <description>&lt;p&gt;I wrote an article about&#xA;&lt;a href=&#34;http://peterstuifzand.nl/gtd-vimoutliner.html&#34;&gt;GTD and Vimoutliner&lt;/a&gt;. This post&#xA;adds a few simple things you can do to simplify your edits to the &lt;code&gt;todo.otl&lt;/code&gt;&#xA;file.&lt;/p&gt;&#xA;&lt;p&gt;In Vim it is easy to autocomplete a word or line. You can complete a word by&#xA;typing the first few characters of the word you want to complete. Then type&#xA;&lt;code&gt;CTRL-N&lt;/code&gt; to complete the word. You can try other words by typing &lt;code&gt;CTRL-N&lt;/code&gt; more&#xA;often. This will try to complete your word with a word that can be found in the&#xA;same file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Interview with Sir Tim Berners-Lee</title>
      <link>https://peterstuifzand.nl/2009/10/13/interview-with-sir-tim-berners-lee/</link>
      <pubDate>Tue, 13 Oct 2009 22:08:14 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/13/interview-with-sir-tim-berners-lee/</guid>
      <description>&lt;p&gt;&lt;embed src=&#34;http://blip.tv/play/goRrgaa_WQI%2Em4v&#34; type=&#34;application/x-shockwave-flash&#34; width=&#34;480&#34; height=&#34;390&#34; allowscriptaccess=&#34;always&#34; allowfullscreen=&#34;true&#34;&gt;&lt;/embed&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search options in Google</title>
      <link>https://peterstuifzand.nl/2009/10/13/search-options-in-google/</link>
      <pubDate>Tue, 13 Oct 2009 15:37:16 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/13/search-options-in-google/</guid>
      <description>&lt;p&gt;&lt;object width=&#34;560&#34; height=&#34;340&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/8bhLXrsnqCI&amp;hl=en&amp;fs=1&amp;&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowFullScreen&#34; value=&#34;true&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/8bhLXrsnqCI&amp;hl=en&amp;fs=1&amp;&#34; type=&#34;application/x-shockwave-flash&#34; allowscriptaccess=&#34;always&#34; allowfullscreen=&#34;true&#34; width=&#34;560&#34; height=&#34;340&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&#xA;&lt;p&gt;I like this, but too bad it doesn&amp;rsquo;t work in the Dutch search engine, yet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debian upgrade to Lenny completed</title>
      <link>https://peterstuifzand.nl/2009/10/06/debian-upgrade-to-lenny-completed/</link>
      <pubDate>Tue, 06 Oct 2009 12:36:06 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/06/debian-upgrade-to-lenny-completed/</guid>
      <description>&lt;p&gt;I upgraded my webserver to Debian Lenny last night. It went almost without&#xA;problems. This was because I followed the release notes. This helped a whole&#xA;lot.&lt;/p&gt;&#xA;&lt;p&gt;Still this morning there was a small problem that I didn&amp;rsquo;t notice yesterday. I&#xA;didn&amp;rsquo;t receive any email. So I took a look in the exim4 mainlog at&#xA;&lt;code&gt;/var/log/exim4/mainlog&lt;/code&gt;. It contained the following message:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;lowest numbered MX record points to local host: servername&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;All messages that should be delivered in a local mailbox were frozen. The&#xA;solution was actually quite simple. First I needed to change one line in a&#xA;config file. It contained something that looked like: &lt;code&gt;DEBCONFxxxDEBCONF&lt;/code&gt;. This&#xA;is a line that would normally be replaced by the &lt;code&gt;update-exim4.conf&lt;/code&gt; script.&#xA;But that doesn&amp;rsquo;t work anymore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 5.11.0 released</title>
      <link>https://peterstuifzand.nl/2009/10/05/perl-5.11.0-released/</link>
      <pubDate>Mon, 05 Oct 2009 17:14:37 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/05/perl-5.11.0-released/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://blog.fsck.com/&#34;&gt;Jesse Vincent&lt;/a&gt;&#xA;&lt;a href=&#34;http://use.perl.org/articles/09/10/05/1416207.shtml&#34;&gt;released&lt;/a&gt; a new&#xA;&lt;em&gt;development&lt;/em&gt; version of Perl 5:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;It gives me great pleasure to announce the release of Perl 5.11.0.&lt;/p&gt;&#xA;&lt;p&gt;Perl 5.11.0 is a DEVELOPMENT release. We&amp;rsquo;re making it available to you today&#xA;to make it easy for you to test your software on what will eventually become&#xA;Perl 5.12.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;The nice thing about this release is that there will be releases of Perl every&#xA;month, with the dates already scheduled. The next release (5.11.1) is coming on&#xA;October 20.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading to Debian Lenny</title>
      <link>https://peterstuifzand.nl/2009/10/05/upgrading-to-debian-lenny/</link>
      <pubDate>Mon, 05 Oct 2009 16:57:22 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/10/05/upgrading-to-debian-lenny/</guid>
      <description>&lt;p&gt;One month ago &lt;a href=&#34;http://debian.org&#34;&gt;Debian&lt;/a&gt; released a new version of their&#xA;operating system. The new version is called&#xA;&lt;a href=&#34;http://www.debian.org/releases/lenny/releasenotes&#34;&gt;Lenny&lt;/a&gt;. These release notes&#xA;contain a list of things you need to do to upgrade without problems.&lt;/p&gt;&#xA;&lt;p&gt;This afternoon I upgraded a virtual machine image and tonight I will upgrade my&#xA;server. By doing it this way I found a few problems I will have that I can fix&#xA;then or before they will happen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu Update Manager as a notification icon</title>
      <link>https://peterstuifzand.nl/2009/09/25/ubuntu-update-manager-as-a-notification-icon/</link>
      <pubDate>Fri, 25 Sep 2009 17:39:45 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/09/25/ubuntu-update-manager-as-a-notification-icon/</guid>
      <description>&lt;p&gt;I really don&amp;rsquo;t like that the Ubuntu update-manager opens a window when it finds&#xA;that there updates that can be installed. In older versions Ubuntu showed a&#xA;small icon in the top panel.&lt;/p&gt;&#xA;&lt;p&gt;Apparently Ubuntu still allows you to do that, but you will need to call the&#xA;following command:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;gconftool -s --type bool /apps/update-notifier/auto_launch false&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This will not add the icon to the top panel directly. You will need to wait for&#xA;the next update for that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming notebook</title>
      <link>https://peterstuifzand.nl/2009/09/21/programming-notebook/</link>
      <pubDate>Mon, 21 Sep 2009 14:11:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/09/21/programming-notebook/</guid>
      <description>&lt;p&gt;Using a small notebook or legal pad helps me to focus on the problem at hand.&#xA;If I notice a problem or bug, that I don&amp;rsquo;t have to fix to solve the current&#xA;problem, I will write it down on the list of todo items for the program.&lt;/p&gt;&#xA;&lt;p&gt;The other nice thing about writing down a todo list this way, is that it will&#xA;grow and shrink over time. At the end of the day I have two lists: one with the&#xA;things that I did that day, and one list with the things that I can work on&#xA;the next time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My explanation of WebHooks</title>
      <link>https://peterstuifzand.nl/2009/08/26/my-explanation-of-webhooks/</link>
      <pubDate>Wed, 26 Aug 2009 16:03:43 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/26/my-explanation-of-webhooks/</guid>
      <description>&lt;p&gt;HTTP requests are send by clients to servers. Most of the time the client is a&#xA;webbrowser. The only thing that WebHooks says is this: servers are clients,&#xA;too.&lt;/p&gt;&#xA;&lt;p&gt;WebHooks have nothing to do with realtime updates or with sending HTTP requests&#xA;to browsers. It&amp;rsquo;s about servers sending HTTP requests to other servers when&#xA;something happens.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use ssh as a SOCKS proxy</title>
      <link>https://peterstuifzand.nl/2009/08/14/use-ssh-as-a-socks-proxy/</link>
      <pubDate>Fri, 14 Aug 2009 13:49:25 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/14/use-ssh-as-a-socks-proxy/</guid>
      <description>&lt;p&gt;At the moment I work from another place than home and sometimes I need to get&#xA;on the internal network. Normally you would VPN for that kind of thing. But if&#xA;your not scared to use SSH then it&amp;rsquo;s not that hard.&lt;/p&gt;&#xA;&lt;p&gt;First you need to open a connection to your internal network.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ssh -D 9000 hostname&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The &lt;code&gt;-D 9000&lt;/code&gt; option will open a port and create SOCKS proxy on your local&#xA;machine. This allows you to send traffic to the internal network through the&#xA;SSH connection. Replace &lt;code&gt;hostname&lt;/code&gt; with the name of the host you want to connect to.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TinyThread GreaseMonkey script is not needed anymore</title>
      <link>https://peterstuifzand.nl/2009/08/13/tinythread-greasemonkey-script-is-not-needed-anymore/</link>
      <pubDate>Thu, 13 Aug 2009 12:46:36 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/13/tinythread-greasemonkey-script-is-not-needed-anymore/</guid>
      <description>&lt;p&gt;My GreaseMonkey script for TinyThread is not very useful anymore. The design&#xA;has been changed to look a bit nicer. It&amp;rsquo;s good to see the changes were mostly&#xA;functional.&lt;/p&gt;&#xA;&lt;p&gt;This also means you can remove the GreaseMonkey script from your browser.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TinyThread with a bit of style</title>
      <link>https://peterstuifzand.nl/2009/08/12/tinythread-with-a-bit-of-style/</link>
      <pubDate>Wed, 12 Aug 2009 15:26:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/12/tinythread-with-a-bit-of-style/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://a.tinythread.com&#34;&gt;TinyThread&lt;/a&gt; is a simple website that will make it&#xA;easier to have a conversation. You can login using OAuth with your Twitter&#xA;account. When you start or join a conversation it will send a tweet to your&#xA;followers so they can see where you&amp;rsquo;re talking about.&lt;/p&gt;&#xA;&lt;p&gt;But TinyThread is a simple website with simple styles. That&amp;rsquo;s why I created a&#xA;small GreaseMonkey script that adds&#xA;&lt;a href=&#34;http://userscripts.org/scripts/show/55512&#34;&gt;a little bit of style&lt;/a&gt;&#xA;to the thread page.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Facebook acquires FriendFeed</title>
      <link>https://peterstuifzand.nl/2009/08/10/facebook-acquires-friendfeed/</link>
      <pubDate>Mon, 10 Aug 2009 22:15:17 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/10/facebook-acquires-friendfeed/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m not sure what to say. FriendFeed is an amazing service for sharing and&#xA;commenting on stuff. And now they are acquired by Facebook. I&amp;rsquo;m not sure what&#xA;will become of this. But it doesn&amp;rsquo;t feel good.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim function to replace many spaces with one</title>
      <link>https://peterstuifzand.nl/2009/08/05/vim-function-to-replace-many-spaces-with-one/</link>
      <pubDate>Wed, 05 Aug 2009 11:33:36 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/05/vim-function-to-replace-many-spaces-with-one/</guid>
      <description>&lt;p&gt;At last I have found the function that will replace many spaces with one space.&#xA;I first wrote a blog post about this in &lt;a href=&#34;https://peterstuifzand.nl/just-one-space.html&#34;&gt;januari of&#xA;2007&lt;/a&gt;. Then I wrote a blog post about how to enhance this&#xA;function to move the cursor one position after the inserted space. With an&#xA;update a day after that, which said that it didn&amp;rsquo;t work in some instances.&lt;/p&gt;&#xA;&lt;p&gt;Today I&amp;rsquo;m proud to announce the final and working function that works as it should.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming pattern: Temporary data</title>
      <link>https://peterstuifzand.nl/2009/08/04/programming-pattern-temporary-data/</link>
      <pubDate>Tue, 04 Aug 2009 15:19:13 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/04/programming-pattern-temporary-data/</guid>
      <description>&lt;p&gt;Temporary data is a simple pattern that I use while I&amp;rsquo;m trying to get some code&#xA;working. The inverse of Temporary data is that you get the data, for example,&#xA;from a database.&lt;/p&gt;&#xA;&lt;p&gt;The code you have to write to get the data from the database is often many&#xA;times as long as the code you need to specify the data structure.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;my $languages = [&#xA;    { code =&amp;gt; &#39;nl&#39;, name =&amp;gt; &#39;Nederlands&#39; },&#xA;    { code =&amp;gt; &#39;en&#39;, name =&amp;gt; &#39;English&#39; },&#xA;];&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If you would like to get this same data structure from your database you have&#xA;to do a lot of work before this works. You need to design and create a table,&#xA;fill the table with example data and write code to retrieve the values from&#xA;that table.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vimoutliner links</title>
      <link>https://peterstuifzand.nl/2009/08/03/vimoutliner-links/</link>
      <pubDate>Mon, 03 Aug 2009 15:17:56 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/03/vimoutliner-links/</guid>
      <description>&lt;p&gt;Today I will post some links to other pages that talk about Vim outliner.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.hezmatt.org/~mpalmer/blog/general/vimoutliner_finally.html&#34;&gt;Vimoutliner&amp;hellip; finally!&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://vim.runpaint.org/other-uses-vim/outlining-document/&#34;&gt;Vim Recipes: Outlining a Document&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://blog.nominet.org.uk/tech/2007/04/25/vimoutliner-for-beginners/&#34;&gt;VimOutliner for beginners&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://mostlycli.blogspot.com/2007/09/get-organized-with-vimyes-vim.html&#34;&gt;Mostly CLI: Get Organized with Vim&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://peterstuifzand.nl/gtd-vimoutliner.html&#34;&gt;GTD and VimOutliner&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://peterstuifzand.nl/how-to-use-vimoutliner-checkboxes.html&#34;&gt;How to use Vimoutliner checkboxes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Potatoes from my garden</title>
      <link>https://peterstuifzand.nl/2009/08/02/potatoes-from-my-garden/</link>
      <pubDate>Sun, 02 Aug 2009 18:14:30 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/02/potatoes-from-my-garden/</guid>
      <description>&lt;p&gt;The potatoes are ready now.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/aardappels.jpg&#34; alt=&#34;Potatoes&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nginx and gzip</title>
      <link>https://peterstuifzand.nl/2009/08/01/nginx-and-gzip/</link>
      <pubDate>Sat, 01 Aug 2009 12:58:50 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/08/01/nginx-and-gzip/</guid>
      <description>&lt;p&gt;I was trying to find some ways to increase the speed of my webshops, because&#xA;&lt;a href=&#34;http://googleresearch.blogspot.com/2009/06/speed-matters.html&#34;&gt;speed matters&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I did this by using the &lt;a href=&#34;http://developer.yahoo.com/yslow&#34;&gt;YSlow Firebug&#xA;add-on&lt;/a&gt;. It told me that I didn&amp;rsquo;t gzip some&#xA;of my static files. That seemed strange to me because I already enabled&#xA;gzipping in my &lt;code&gt;nginx.conf&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I used &lt;code&gt;curl&lt;/code&gt; and Firefox to find out if my files where gzipped. It seemed they&#xA;weren&amp;rsquo;t. So I changed my gzip settings in &lt;code&gt;nginx.conf&lt;/code&gt; to the following on my&#xA;development server. (&lt;a href=&#34;http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx&#34;&gt;Source&lt;/a&gt;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Switch from Hotmail to Gmail</title>
      <link>https://peterstuifzand.nl/2009/07/31/switch-from-hotmail-to-gmail/</link>
      <pubDate>Fri, 31 Jul 2009 13:28:23 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/07/31/switch-from-hotmail-to-gmail/</guid>
      <description>&lt;p&gt;Since a few months you are able to move from Hotmail to Gmail. The biggest&#xA;problem was that you couldn&amp;rsquo;t take you old emails with you to Gmail.&lt;/p&gt;&#xA;&lt;p&gt;The other big problem was that you have to everybody about your new email&#xA;address. Switching has a big cost. The way this works is that you don&amp;rsquo;t have&#xA;change your email address, because even the new emails that arrive after you&#xA;move will come into your new Gmail inbox.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Insert the current date and keep it up to date</title>
      <link>https://peterstuifzand.nl/2009/07/28/insert-the-current-date-and-keep-it-up-to-date/</link>
      <pubDate>Tue, 28 Jul 2009 14:22:38 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/07/28/insert-the-current-date-and-keep-it-up-to-date/</guid>
      <description>&lt;p&gt;You would like to add an automatically updated timestamp in your text files.&#xA;You can do that by adding 6 lines of code to your &lt;code&gt;.vimrc&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The following command will call the function &lt;code&gt;LastMod()&lt;/code&gt; whenever a buffer of&#xA;file is written.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;autocmd BufWritePre,FileWritePre *.html   call LastMod()&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The following function will find all files containing &amp;lsquo;Last modified:&amp;rsquo; and&#xA;replace them with the current date and time.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;fun LastMod()&#xA;  exe &amp;quot;%g/Last modified: /s/Last modified: .*/Last modified: &amp;quot; . strftime(&amp;quot;%Y-%m-%d %T&amp;quot;)&#xA;endfun&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The biggest problem with this function is that using the &lt;code&gt;:substitute&lt;/code&gt; function&#xA;will move the cursor to the beginning of the line. This will&#xA;even happen when nothing gets replaced. This is extremely annoying.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to use Vimoutliner checkboxes</title>
      <link>https://peterstuifzand.nl/2009/07/27/how-to-use-vimoutliner-checkboxes/</link>
      <pubDate>Mon, 27 Jul 2009 16:41:16 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/07/27/how-to-use-vimoutliner-checkboxes/</guid>
      <description>&lt;p&gt;Vim outliner is an outliner tool. As the name implies you can write outlines&#xA;with it, but with this particular one you can also create todo lists. A todo list can&#xA;be created without much effort.&lt;/p&gt;&#xA;&lt;p&gt;First open your todo file, &lt;code&gt;todo.otl&lt;/code&gt; for example. By using the &lt;code&gt;otl&lt;/code&gt;&#xA;extension, Vim outliner will be loaded automatically.&lt;/p&gt;&#xA;&lt;p&gt;Next, type a task you have to do in the future. This could something like&#xA;&lt;code&gt;write blog post about Vim outliner&lt;/code&gt;. Remember, because this is Vim, you have to&#xA;type &lt;code&gt;i&lt;/code&gt; to start insert mode.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Words are tags, too</title>
      <link>https://peterstuifzand.nl/2009/07/03/words-are-tags-too/</link>
      <pubDate>Fri, 03 Jul 2009 10:41:47 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/07/03/words-are-tags-too/</guid>
      <description>&lt;p&gt;Why don&amp;rsquo;t we use words as tags? Search engines already know that words are&#xA;tags. Why do we need to put an extra character (&lt;code&gt;#&lt;/code&gt;) in front of a word to make&#xA;it special? Here are two reasons I can think of.&lt;/p&gt;&#xA;&lt;p&gt;The first reason is, that by using an extra character a website can make a link&#xA;from the word that links to a search page or a special page for the tag. The&#xA;problem is that if the post wasn&amp;rsquo;t tagged then there would be no link. How can&#xA;you find words that weren&amp;rsquo;t tagged with the character? You would need an extra&#xA;search interface for those words. But if you have that search interface you&#xA;don&amp;rsquo;t need to tag posts in the first place. Every word is a tag.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A commandline script for Twitter</title>
      <link>https://peterstuifzand.nl/2009/06/02/a-commandline-script-for-twitter/</link>
      <pubDate>Tue, 02 Jun 2009 20:50:06 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/06/02/a-commandline-script-for-twitter/</guid>
      <description>&lt;p&gt;This is the script that I use with Vim to send my Twitter updates.&lt;/p&gt;&#xA;&lt;script src=&#34;http://gist.github.com/159226.js&#34;&gt;&lt;/script&gt;&#xA;&lt;p&gt;In Vim you can use it by typing&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;!!perl twitter.pl&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If you then type &lt;code&gt;Enter&lt;/code&gt; it will send the current line to Twitter.&lt;/p&gt;&#xA;&lt;p&gt;You do need to install &lt;a href=&#34;http://search.cpan.org/dist/Net-Twitter&#34;&gt;Net::Twitter&lt;/a&gt;&#xA;and its dependencies.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Write Twitter drafts in Vim</title>
      <link>https://peterstuifzand.nl/2009/05/29/write-twitter-drafts-in-vim/</link>
      <pubDate>Fri, 29 May 2009 15:01:39 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/05/29/write-twitter-drafts-in-vim/</guid>
      <description>&lt;p&gt;Not everyone writes drafts for his Twitter posts. It seems silly even to do&#xA;this.&lt;/p&gt;&#xA;&lt;p&gt;But for the people who don&amp;rsquo;t think writing drafts is silly (and use Vim), I&#xA;wrote a few lines of Vim script that will help them keep their lines just short&#xA;enough.&lt;/p&gt;&#xA;&lt;p&gt;Put these lines in your &lt;code&gt;.vimrc&lt;/code&gt; file and start writing. You should change the&#xA;filename to the name of the file that you write your drafts in. As usual, this&#xA;code comes without any warranty.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTML5 and video possibilities</title>
      <link>https://peterstuifzand.nl/2009/05/29/html5-and-video-possibilities/</link>
      <pubDate>Fri, 29 May 2009 14:07:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/05/29/html5-and-video-possibilities/</guid>
      <description>&lt;p&gt;These days many videos are published to the internet by people using&#xA;cellphones. Many of these videos have crappy sound, because of how these&#xA;cameras are built and the way these cameras are used.&lt;/p&gt;&#xA;&lt;p&gt;The microphones are not at the best place for recording the sound and because&#xA;the volume is too low, there is much background noise, because the volume needs&#xA;to be increased.&lt;/p&gt;&#xA;&lt;p&gt;With the Flash player based videos we are dependent on Adobe (for Flash), the video owner or&#xA;the video website too give us content or technology that lets us improve the video.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notes on how blogging should work (for me)</title>
      <link>https://peterstuifzand.nl/2009/05/25/notes-on-how-blogging-should-work-for-me/</link>
      <pubDate>Mon, 25 May 2009 16:47:50 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/05/25/notes-on-how-blogging-should-work-for-me/</guid>
      <description>&lt;p&gt;Sometimes I have the following ideas about blogging and other writing for the&#xA;web. The thing is that these ideas will not apply in the same way to other people.&#xA;I think some of the points can be generalized for other people and&#xA;applications.&lt;/p&gt;&#xA;&lt;h4 id=&#34;notes&#34;&gt;Notes&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;These blog posts on this website are written with Vim and a few scripts through&#xA;a SSH connection to my server.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I would like to use Vim to edit my blog posts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spam on Twitter</title>
      <link>https://peterstuifzand.nl/2009/05/12/spam-on-twitter/</link>
      <pubDate>Tue, 12 May 2009 10:54:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/05/12/spam-on-twitter/</guid>
      <description>&lt;p&gt;A few months ago I said that it&amp;rsquo;s not possible to spam Twitter. This is because&#xA;you can choose who you follow. And people can&amp;rsquo;t send messages to you if you&#xA;don&amp;rsquo;t follow them. This makes Twitter unspammable.&lt;/p&gt;&#xA;&lt;p&gt;The above is still true, with the exception that with&#xA;&lt;a href=&#34;http://search.twitter.com&#34;&gt;search.twitter.com&lt;/a&gt; people will find messages of&#xA;people that they don&amp;rsquo;t follow. This problems becomes bigger when people will&#xA;start searching for their &lt;strong&gt;@username&lt;/strong&gt;s. If someone now tweets with a message&#xA;containing your username it will appear in your client.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My first vegetable garden</title>
      <link>https://peterstuifzand.nl/2009/05/08/my-first-vegetable-garden/</link>
      <pubDate>Fri, 08 May 2009 11:26:39 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/05/08/my-first-vegetable-garden/</guid>
      <description>&lt;p&gt;I planted my first vegetables today in the garden. Eight potatoes.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/pstuifzand/3511875255/&#34; title=&#34;Eight potatoes by pstuifzand, on Flickr&#34;&gt;&lt;img src=&#34;http://farm4.static.flickr.com/3281/3511875255_07bfc5a748.jpg&#34; width=&#34;375&#34; height=&#34;500&#34; alt=&#34;Eight potatoes&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use MySQL Fulltext for search on your website</title>
      <link>https://peterstuifzand.nl/2009/04/10/use-mysql-fulltext-for-search-on-your-website/</link>
      <pubDate>Fri, 10 Apr 2009 12:22:13 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/04/10/use-mysql-fulltext-for-search-on-your-website/</guid>
      <description>&lt;p&gt;This week I have been working on a search engine for my webshop platform. And&#xA;while a big part of this work is on the layout of the result page, I also have&#xA;to work on the backend.&lt;/p&gt;&#xA;&lt;p&gt;The backend that I built is using MySQL fulltext indexing. The default MySQL&#xA;was not optimal for my goals. Some queries don&amp;rsquo;t return any results. This can&#xA;can fixed by changing a few config variables in &lt;code&gt;my.cnf&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Logging HTTP requests with Apache</title>
      <link>https://peterstuifzand.nl/2009/04/01/logging-http-requests-with-apache/</link>
      <pubDate>Wed, 01 Apr 2009 13:20:09 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/04/01/logging-http-requests-with-apache/</guid>
      <description>&lt;p&gt;I created two simple mod_perl handlers, that help me find the response time of&#xA;my web application. See it on github&#xA;&lt;a href=&#34;http://github.com/pstuifzand/apache2-logging-handler&#34;&gt;apache2-logging-handler&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The code is so simple that you can recreate them easily yourself. Note the use&#xA;of the &lt;code&gt;pnotes&lt;/code&gt; function.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$r-&amp;gt;pnotes(&#39;start_time&#39;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;With &lt;code&gt;pnotes&lt;/code&gt; you can share information between handlers. I had to search for a&#xA;bit and this works great.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple Beanstalkd example</title>
      <link>https://peterstuifzand.nl/2009/03/29/simple-beanstalkd-example/</link>
      <pubDate>Sun, 29 Mar 2009 20:07:11 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2009/03/29/simple-beanstalkd-example/</guid>
      <description>&lt;p&gt;According to its website, &lt;a href=&#34;http://xph.us/software/beanstalkd/&#34;&gt;Beanstalkd&lt;/a&gt; is a&#xA;fast, distributed, in-memory workqueue service. In simpler terms this means&#xA;clients can add tasks to a queue and workers will execute these tasks whenever&#xA;they have time.&lt;/p&gt;&#xA;&lt;p&gt;I will show how this works using the perl client libraries. The&#xA;&lt;a href=&#34;http://search.cpan.org/dist/Beanstalk-Client/&#34;&gt;Beanstalk::Client&lt;/a&gt; libraries&#xA;can be found on the CPAN.&lt;/p&gt;&#xA;&lt;p&gt;Both the clients and the workers use the same library. The following example will put a&#xA;&amp;lsquo;print&amp;rsquo; task to the queue.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Try and experiment</title>
      <link>https://peterstuifzand.nl/2009/02/23/try-and-experiment/</link>
      <pubDate>Mon, 23 Feb 2009 14:10:43 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/02/23/try-and-experiment/</guid>
      <description>&lt;p&gt;When I am programming I will try things out. When I don&amp;rsquo;t know if or how a&#xA;feature of a programming language works, the way to find out is just trying it.&#xA;The nice thing about computers and programming languages is that they won&amp;rsquo;t&#xA;work or will complain, when something isn&amp;rsquo;t the way they expect it.&lt;/p&gt;&#xA;&lt;p&gt;For Trying and experimenting to work, you&amp;rsquo;ll need two things: feedback and&#xA;reasoning skills. I could write here that you also need creativity, but I can&amp;rsquo;t&#xA;write anything useful about that yet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating stopmotion videos with mencoder</title>
      <link>https://peterstuifzand.nl/2009/02/03/creating-stopmotion-videos-with-mencoder/</link>
      <pubDate>Tue, 03 Feb 2009 22:58:04 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/02/03/creating-stopmotion-videos-with-mencoder/</guid>
      <description>&lt;p&gt;A few days ago I found out that my camera can make little stopmotion movies.&#xA;It&amp;rsquo;s really easy, but the quality is really low, only 320x200. My camera can&#xA;make pictures at a resolution of 2560x1920 and I want to make use of the&#xA;available pixels. So I start my search for the most amazing way to create a&#xA;stopmotion movie.&lt;/p&gt;&#xA;&lt;p&gt;The first method of putting pictures after each other to create a stopmotion&#xA;movie I remembered was &lt;code&gt;animate&lt;/code&gt;, a program bundled with ImageMagick. When I&#xA;tried to use it on the 2.5MB pictures, it took a lot of time. After I resized&#xA;the pictures to 800x600 it created the animation in a few seconds. But it was&#xA;not exactly what I was looking for.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I&#39;m creating something every day</title>
      <link>https://peterstuifzand.nl/2009/01/28/im-creating-something-every-day/</link>
      <pubDate>Wed, 28 Jan 2009 23:56:14 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/01/28/im-creating-something-every-day/</guid>
      <description>&lt;p&gt;Today was the fifth day that I created something for my &lt;a href=&#34;http://createsomethingeveryday.com&#34;&gt;Create something every&#xA;day&lt;/a&gt; project. It&amp;rsquo;s going well. I created&#xA;something each day. A few days I even created more things. If you would like to&#xA;know what&amp;rsquo;s going on here please check out the &lt;a href=&#34;http://createsomethingeveryday.com&#34;&gt;website&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Creating something every day is about creativity and about failure. When you&#xA;have create something every day, you have a lot of opportunities to fail. Failure in&#xA;the sense that I created something that wasn&amp;rsquo;t really good. Because even when&#xA;it&amp;rsquo;s bad, it will go on the website. This way I don&amp;rsquo;t have to care about&#xA;perfection.  Only about production and practice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DIY steadycam</title>
      <link>https://peterstuifzand.nl/2009/01/15/diy-steadycam/</link>
      <pubDate>Thu, 15 Jan 2009 21:45:18 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/01/15/diy-steadycam/</guid>
      <description>&lt;p&gt;I started building my own DIY steadycam. I based it on this video.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;640&#34; height=&#34;480&#34;&gt;&lt;param name=&#34;allowfullscreen&#34; value=&#34;true&#34; /&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34; /&gt;&lt;param name=&#34;movie&#34; value=&#34;http://vimeo.com/moogaloop.swf?clip_id=1394069&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&#34; /&gt;&lt;embed src=&#34;http://vimeo.com/moogaloop.swf?clip_id=1394069&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&#34; type=&#34;application/x-shockwave-flash&#34; allowfullscreen=&#34;true&#34; allowscriptaccess=&#34;always&#34; width=&#34;640&#34; height=&#34;480&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href=&#34;http://vimeo.com/&#34;&gt;DIY Steadicam - Flying Camera Support&lt;/a&gt; from &lt;a href=&#34;http://vimeo.com/videopia&#34;&gt;Videopia&lt;/a&gt; on &lt;a href=&#34;http://vimeo.com&#34;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The first part only took me a few minutes to build. It looks like this.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/pstuifzand/3197596102/&#34; title=&#34;Steadycam first part by pstuifzand, on Flickr&#34;&gt;&lt;img src=&#34;http://farm4.static.flickr.com/3391/3197596102_23f3b7bbf2.jpg&#34; width=&#34;500&#34; height=&#34;199&#34; alt=&#34;Steadycam first part&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Do what you love</title>
      <link>https://peterstuifzand.nl/2009/01/11/do-what-you-love/</link>
      <pubDate>Sun, 11 Jan 2009 13:10:27 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/01/11/do-what-you-love/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a happy boy. Do what you love. It&amp;rsquo;s important.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Steak and strippers</title>
      <link>https://peterstuifzand.nl/2009/01/08/steak-and-strippers/</link>
      <pubDate>Thu, 08 Jan 2009 14:30:35 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/01/08/steak-and-strippers/</guid>
      <description>&lt;p&gt;A presentation about working as a programmer in a corporation, how to build to your own stuff and doing things that you love.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;400&#34; height=&#34;300&#34;&gt;&lt;param name=&#34;allowfullscreen&#34; value=&#34;true&#34; /&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34; /&gt;&lt;param name=&#34;movie&#34; value=&#34;http://vimeo.com/moogaloop.swf?clip_id=2723800&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&#34; /&gt;&lt;embed src=&#34;http://vimeo.com/moogaloop.swf?clip_id=2723800&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&#34; type=&#34;application/x-shockwave-flash&#34; allowfullscreen=&#34;true&#34; allowscriptaccess=&#34;always&#34; width=&#34;400&#34; height=&#34;300&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href=&#34;http://vimeo.com/2723800&#34;&gt;Zed Shaw - The ACL is Dead&lt;/a&gt; from &lt;a href=&#34;http://vimeo.com/cusec&#34;&gt;CUSEC&lt;/a&gt; on &lt;a href=&#34;http://vimeo.com&#34;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The Vimeo page has more information.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Via&lt;/strong&gt;: &lt;a href=&#34;http://blog.cusec.net/2009/01/05/zed-shaw-the-acl-is-dead-cusec-2008/&#34;&gt;blog.cusec.net&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making a movie</title>
      <link>https://peterstuifzand.nl/2009/01/06/making-a-movie/</link>
      <pubDate>Tue, 06 Jan 2009 12:46:39 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2009/01/06/making-a-movie/</guid>
      <description>&lt;p&gt;This year I&amp;rsquo;m going to make a movie. People will wonder: &amp;ldquo;Why are you going to&#xA;make a movie? You&amp;rsquo;re a software developer. You don&amp;rsquo;t know anything about&#xA;filmmaking.&amp;rdquo; They would be right. I don&amp;rsquo;t care. And I will learn something in&#xA;the process.&lt;/p&gt;&#xA;&lt;p&gt;I think we live in an amazing time for creating beautiful stuff. Cameras aren&amp;rsquo;t&#xA;that expensive. Maybe someone has a camera lying around somewhere. Distributing&#xA;the video on the internet isn&amp;rsquo;t very hard.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ten million music tracks remain unsold online</title>
      <link>https://peterstuifzand.nl/2008/12/24/ten-million-music-tracks-remain-unsold-online/</link>
      <pubDate>Wed, 24 Dec 2008 15:15:29 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/12/24/ten-million-music-tracks-remain-unsold-online/</guid>
      <description>&lt;p&gt;According to &lt;a href=&#34;https://www.dailymail.co.uk/sciencetech/article-1099903/Ten-million-music-tracks-remain-unsold-online.html&#34;&gt;this&#xA;article&lt;/a&gt;&#xA;in the Daily Mail, it seems that there are a lot of songs, that weren&amp;rsquo;t sold at least once. It&#xA;says that &lt;a href=&#34;https://en.wikipedia.org/wiki/The_Long_Tail&#34;&gt;the Long Tail theory&lt;/a&gt; of&#xA;Chris Anderson predicts that about 80% of the songs should account for&#xA;about 20% of the sales.&lt;/p&gt;&#xA;&lt;p&gt;But just saying that it should work like this, doesn&amp;rsquo;t make it so.  For the&#xA;Long Tail to work it should be easy to find, link to and buy songs that are not&#xA;in the bestseller lists. If it&amp;rsquo;s not easy to find a song, it won&amp;rsquo;t be sold. If&#xA;you can&amp;rsquo;t link to a song, it won&amp;rsquo;t be sold. If you can&amp;rsquo;t listen to a song, it&#xA;won&amp;rsquo;t be sold. If you can&amp;rsquo;t buy a song (for a reasonable price, in a reasonable&#xA;way), it won&amp;rsquo;t be sold. It should be easy to talk about and point people to&#xA;those undiscovered songs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pownce and Sandy both stopped</title>
      <link>https://peterstuifzand.nl/2008/12/23/pownce-and-sandy-both-stopped/</link>
      <pubDate>Tue, 23 Dec 2008 20:46:59 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/12/23/pownce-and-sandy-both-stopped/</guid>
      <description>&lt;p&gt;It seems I started using &lt;a href=&#34;http://pownce.com&#34;&gt;Pownce&lt;/a&gt; and &lt;a href=&#34;http://iwantsandy.com&#34;&gt;I want&#xA;Sandy&lt;/a&gt; in the&#xA;&lt;a href=&#34;http://peterstuifzand.nl/pownce.html&#34;&gt;same&lt;/a&gt;&#xA;&lt;a href=&#34;http://peterstuifzand.nl/i-want-sandy.html&#34;&gt;month&lt;/a&gt;. Now they both stop about a&#xA;year later.&lt;/p&gt;&#xA;&lt;p&gt;Now I have to say I didn&amp;rsquo;t use both services much, so it&amp;rsquo;s not really a big&#xA;problem, but still.&lt;/p&gt;&#xA;&lt;p&gt;I liked that Sandy would remind me every two weeks to respond to the&#xA;&lt;a href=&#34;http://dewoningzoeker.nl&#34;&gt;woningzoeker&lt;/a&gt; and help me find a new home. I think&#xA;this weekend was the last time. Maybe something or someone else can help remind&#xA;me of this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Finding a better non-linear video editing program</title>
      <link>https://peterstuifzand.nl/2008/12/23/finding-a-better-non-linear-video-editing-program/</link>
      <pubDate>Tue, 23 Dec 2008 16:34:07 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/12/23/finding-a-better-non-linear-video-editing-program/</guid>
      <description>&lt;p&gt;First I thought there weren&amp;rsquo;t any video editing programs for Linux. After a bit&#xA;of searching I found a few. But somehow non of these worked for me. Some are&#xA;unstable and crash, others are unusable. I still do like to edit some videos on&#xA;my Linux box. And as it seems I&amp;rsquo;ve &lt;a href=&#34;http://stuifzand.eu&#34;&gt;started a company&lt;/a&gt; a&#xA;few weeks ago. So maybe my next product will be a video editing program.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The new Ubuntu 8.10</title>
      <link>https://peterstuifzand.nl/2008/11/03/the-new-ubuntu-8.10/</link>
      <pubDate>Mon, 03 Nov 2008 00:33:35 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/11/03/the-new-ubuntu-8.10/</guid>
      <description>&lt;p&gt;I installed the new &lt;a href=&#34;http://ubuntu.org&#34;&gt;Ubuntu 8.10&lt;/a&gt; on friday. The thing&#xA;is I have no idea what the differences with the previous version are. So&#xA;let&amp;rsquo;s take a look at the release notes and changelogs.&lt;/p&gt;&#xA;&lt;p&gt;According to the changelog this new version of Ubuntu uses the new &lt;a href=&#34;http://gnome.org&#34;&gt;Gnome&#xA;2.24&lt;/a&gt;.&#xA;&lt;a href=&#34;http://library.gnome.org/misc/release-notes/2.24/&#34;&gt;The release notes of Gnome&lt;/a&gt;&#xA;explain some of the new features.&lt;/p&gt;&#xA;&lt;p&gt;The version of &lt;a href=&#34;http://gimp.org&#34;&gt;Gimp&lt;/a&gt; is also updated to 2.6. This new&#xA;version of Gimp has changed a whole lot.&#xA;&lt;a href=&#34;http://gimp.org/release-notes/gimp-2.6.html&#34;&gt;Release notes are here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New monitor</title>
      <link>https://peterstuifzand.nl/2008/10/12/new-monitor/</link>
      <pubDate>Sun, 12 Oct 2008 17:40:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/10/12/new-monitor/</guid>
      <description>&lt;p&gt;Yesterday I bought a new monitor, the Samsung SyncMaster 2493HM. Before this I&#xA;owned a 19&amp;quot; monitor, which became a bit to small. This new one is 24&amp;quot; an uses a&#xA;resolution of 1920x1200, which is huge.&lt;/p&gt;&#xA;&lt;p&gt;At the moment I only have one problem with the monitor and that is the menu.&#xA;When it is a bit dark in my room, I need a flashlight to see where the buttons&#xA;are. The other problem is that the buttons are touch sensitive not tactile. The&#xA;only response that you will get from the buttons is the menu on the screen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fiddle - a music player</title>
      <link>https://peterstuifzand.nl/2008/09/15/fiddle-a-music-player/</link>
      <pubDate>Mon, 15 Sep 2008 16:34:50 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/09/15/fiddle-a-music-player/</guid>
      <description>&lt;p&gt;All music players suck, all in different ways. The music player that I created&#xA;sucks too. A lot actually, but that&amp;rsquo;s to be expected.&lt;/p&gt;&#xA;&lt;p&gt;The work of three days is now available to the public in some kind of alpha&#xA;release. The player is called &lt;a href=&#34;http://fiddle-player.net&#34;&gt;Fiddle&lt;/a&gt; and is&#xA;available in my Git repository. But please take a look at &lt;a href=&#34;http://fiddle-player.net&#34;&gt;the website that I&#xA;created for it&lt;/a&gt;. It contains a lot of good&#xA;information about downloading and running Fiddle.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A hovering statusbar</title>
      <link>https://peterstuifzand.nl/2008/09/07/a-hovering-statusbar/</link>
      <pubDate>Sun, 07 Sep 2008 00:51:29 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/09/07/a-hovering-statusbar/</guid>
      <description>&lt;p&gt;I created a Greasemonkey script that will show a hovering statusbar when&#xA;hovering over a link. It looks like this:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/hovering_statusbar.png&#34; alt=&#34;Hovering statusbar&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Use at your own risk! This script comes with no warranty. You have been warned.&lt;/p&gt;&#xA;&lt;p&gt;Install the script: &lt;a href=&#34;https://peterstuifzand.nl/files/hovering_statusbar.user.js&#34;&gt;Hovering statusbar Greasemonkey userscript&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>jQuery and postJSON</title>
      <link>https://peterstuifzand.nl/2008/09/05/jquery-and-postjson/</link>
      <pubDate>Fri, 05 Sep 2008 23:52:56 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/09/05/jquery-and-postjson/</guid>
      <description>&lt;p&gt;The last few days I&amp;rsquo;ve been using &lt;a href=&#34;http://jquery.com&#34;&gt;jQuery&lt;/a&gt; to write some&#xA;REST based javascript and HTML. While I was doing that I needed a function that&#xA;looked like &lt;code&gt;getJSON&lt;/code&gt;, that did a &lt;code&gt;POST&lt;/code&gt; instead of a &lt;code&gt;GET&lt;/code&gt;. The difference is&#xA;that I send a bit of JSON and receive a bit of JSON, instead of sending form-like&#xA;data. So I created the following bit of code:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$.postJSON = function (url, data, callback) {&#xA;    $.ajax({&#xA;        &#39;url&#39;: url,&#xA;        &#39;type&#39;: &#39;post&#39;,&#xA;        &#39;processData&#39;: false,&#xA;        &#39;data&#39;: JSON.stringify(data),&#xA;        contentType: &#39;application/json&#39;,&#xA;        success: callback,&#xA;    });&#xA;};&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If you know jQuery a bit, you will know that this sends an Ajax request to&#xA;&lt;code&gt;url&lt;/code&gt;. Later when I used this code to do a POST a followed by a GET, I&#xA;didn&amp;rsquo;t receive the thing that I wanted: a Javascript object. I did however get a&#xA;string that looked like one. That confused me for a bit. Then I remembered a&#xA;FAQ or a weblog post about another implementation of &lt;code&gt;postJSON&lt;/code&gt;, that was&#xA;written like this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using ack to check coding conventions</title>
      <link>https://peterstuifzand.nl/2008/08/30/using-ack-to-check-coding-conventions/</link>
      <pubDate>Sat, 30 Aug 2008 16:47:19 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/08/30/using-ack-to-check-coding-conventions/</guid>
      <description>&lt;p&gt;Do you know Ack? It&#39;s a grep-like program. That uses perl regular expressions instead of the normal Posix ones. You can find it on the &lt;a href=&#34;http://search.cpan.org/dist/App::Ack&#34;&gt;CPAN&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The following Ack call will check your perl code for problem with a space missing behind a controlstatement keyword.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ack --perl &#39;(?\@&amp;lt;!\w)(if|while|elsif|return)(&#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If you use Vim you can also use the following piece of vimscript in your &lt;code&gt;.vimrc&lt;/code&gt; file:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;highlight WHITE_ON_RED ctermfg=white ctermbg=red&#xA;&#xA;function! BadNonInvocations ()&#xA;    2match WHITE_ON_RED /\w\@&amp;lt;!(if\|elsif\|while\|return\|for)(/&#xA;endfunction&#xA;call BadNonInvocations()&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Human readable date in vim outliner calender</title>
      <link>https://peterstuifzand.nl/2008/08/18/human-readable-date-in-vim-outliner-calender/</link>
      <pubDate>Mon, 18 Aug 2008 16:01:25 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/08/18/human-readable-date-in-vim-outliner-calender/</guid>
      <description>&lt;p&gt;I created a small Perl program to convert relative dates to absolute dates in&#xA;the format that I use for my calendar. My current calendar file looks like this.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;2008&#xA;    08&#xA;        2008-08-12&#xA;        2008-08-13&#xA;    09&#xA;        2008-09-10&#xA;        ...&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If I want to add a date and I don&amp;rsquo;t know the actual numbers, I can use the&#xA;following program to convert the date. It will also respect the whitespace in&#xA;front of the text.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programs that I use in 2008</title>
      <link>https://peterstuifzand.nl/2008/08/08/programs-that-i-use-in-2008/</link>
      <pubDate>Fri, 08 Aug 2008 18:01:11 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/08/08/programs-that-i-use-in-2008/</guid>
      <description>&lt;p&gt;In 2005 I wrote a small post about &lt;a href=&#34;http://peterstuifzand.nl/programs-i-currently-use.html&#34;&gt;the programs that I use on a regular&#xA;basis&lt;/a&gt;. I will try and&#xA;find out what has changed and what stayed the same.&lt;/p&gt;&#xA;&lt;p&gt;I still use:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.vim.org/&#34;&gt;vim&lt;/a&gt; - an editor&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://software.schmorp.de/pkg/rxvt-unicode.html&#34;&gt;rxvt-unicode&lt;/a&gt; - an X terminal&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://iki.fi/tuomov/ion/&#34;&gt;ion3&lt;/a&gt; - a window manager&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://xmonad.org&#34;&gt;xmonad&lt;/a&gt; - another window manager (written in Haskell)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.mozilla.com/products/firefox&#34;&gt;firefox&lt;/a&gt; - a web browser&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.mutt.org&#34;&gt;mutt&lt;/a&gt; - a email client&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.vimoutliner.org&#34;&gt;vim outliner&lt;/a&gt; - a todo list/outliner tool&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Programs that I don&amp;rsquo;t use anymore:&lt;/p&gt;</description>
    </item>
    <item>
      <title>I released a HTML parser</title>
      <link>https://peterstuifzand.nl/2008/08/06/i-released-a-html-parser/</link>
      <pubDate>Wed, 06 Aug 2008 18:52:14 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/08/06/i-released-a-html-parser/</guid>
      <description>&lt;p&gt;I created a HTML parser written in C++. It&amp;rsquo;s based on the HTML5 specification.&#xA;The code can be downloaded with git:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;git clone http://code.peterstuifzand.nl/git/htmlparser.git/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;or:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://code.peterstuifzand.nl/cgi-bin/gitweb.cgi&#34;&gt;http://code.peterstuifzand.nl/cgi-bin/gitweb.cgi&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I use this HTML parser in a internal searchengine. It parsed everything the&#xA;spider could find.&lt;/p&gt;&#xA;&lt;p&gt;If you like to use this parser, look for the &lt;code&gt;Parser&lt;/code&gt; class. This  class&#xA;expects an &lt;code&gt;Emitter&lt;/code&gt; object.  This can be a &lt;code&gt;ListEmitter&lt;/code&gt; or a subclass of&#xA;&lt;code&gt;Emitter&lt;/code&gt;. I wrote a simple &lt;code&gt;Emitter&lt;/code&gt; that finds all &lt;code&gt;&amp;lt;a href=&amp;quot;&amp;quot;&amp;gt;&lt;/code&gt; tags and&#xA;inserts them into a MySQL table.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I released a small C&#43;&#43; utility library</title>
      <link>https://peterstuifzand.nl/2008/08/05/i-released-a-small-c-utility-library/</link>
      <pubDate>Tue, 05 Aug 2008 22:48:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/08/05/i-released-a-small-c-utility-library/</guid>
      <description>&lt;p&gt;I just released a small C++ utility library. At the moment it contains three&#xA;modules: an URL class, a config file reader, and a testing framework.&lt;/p&gt;&#xA;&lt;p&gt;The code can be found at &lt;a href=&#34;http://code.peterstuifzand.nl/cgi-bin/gitweb.cgi&#34;&gt;http://code.peterstuifzand.nl/cgi-bin/gitweb.cgi&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;or use git to clone the project:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;git clone http://code.peterstuifzand.nl/git/cpputil.git&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The URL class is used in a search engine that I am currently writing. The code&#xA;doesn&amp;rsquo;t do much more than I need at the moment. I want to make this code better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ternary operator</title>
      <link>https://peterstuifzand.nl/2008/07/20/ternary-operator/</link>
      <pubDate>Sun, 20 Jul 2008 00:18:07 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/07/20/ternary-operator/</guid>
      <description>&lt;p&gt;The ternary operator can be found in many programming languages. In some&#xA;popular ones it is written as &lt;code&gt;bool ? expr1 : expr2&lt;/code&gt;, which will evaluate to&#xA;&lt;code&gt;expr1&lt;/code&gt; if &lt;code&gt;bool&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;expr2&lt;/code&gt; if &lt;code&gt;bool&lt;/code&gt; is &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The nice thing about the ternary operator is that one can write an otherwise&#xA;big if block in one line. For example:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$var = null;&#xA;if ($x &amp;gt; 10) {&#xA;    $var = 102;&#xA;}&#xA;else {&#xA;    $var = 1044;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;becomes&lt;/p&gt;</description>
    </item>
    <item>
      <title>Batman</title>
      <link>https://peterstuifzand.nl/2008/07/18/batman/</link>
      <pubDate>Fri, 18 Jul 2008 22:38:47 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/07/18/batman/</guid>
      <description>&lt;p&gt;The last few days I saw a few things related to Batman. This is, of course,&#xA;because the new Batman film came out a few days ago (in the US, in the&#xA;Netherlands we still have to wait a few days).&lt;/p&gt;&#xA;&lt;p&gt;A review of Dark Knight by the guys of The Totally Rad Show.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;555&#34; height=&#34;337&#34; &gt; &lt;param name=&#34;movie&#34; value=&#34;http://bitcast-a.bitgravity.com/revision3/swf/rev3_player.swf?AutoPlay=off&amp;Buffer=120&amp;File=http://www.podtrac.com/pts/redirect.flv/bitcast-a.bitgravity.com/revision3/flv/trs/0069/trs--0069--sixtynine--800kbps.flv&amp;ScrubMode=advanced&amp;Thumb=http://bitcast-a.bitgravity.com/revision3/thumbs/trs--0069--sixtynine--thumb.jpg&amp;DefaultRatio=0.56&amp;PostRoll=http://bitcast-a.bitgravity.com/revision3/flv/sponsors/Go_Daddy_Sandwich_v.3--800kbps.flv&amp;AutoSize=off&#34; /&gt; &lt;param name=&#34;base&#34; value=&#34;http://bitcast-a.bitgravity.com/revision3/swf/&#34; /&gt; &lt;param name=&#34;loop&#34; value=&#34;false&#34; /&gt; &lt;param name=&#34;quality&#34; value=&#34;high&#34; /&gt; &lt;param name=&#34;bgcolor&#34; value=&#34;#171717&#34; /&gt; &lt;param name=&#34;allowScriptAccess&#34; value=&#34;sameDomain&#34; /&gt; &lt;param name=&#34;allowFullScreen&#34; value=&#34;true&#34; /&gt; &lt;embed loop=&#34;false&#34; quality=&#34;high&#34; bgcolor=&#34;#171717&#34; width=&#34;555&#34; height=&#34;337&#34; name=&#34;rev3player_v2&#34; align=&#34;middle&#34; allowScriptAccess=&#34;sameDomain&#34; allowFullScreen=&#34;true&#34; type=&#34;application/x-shockwave-flash&#34; pluginspage=&#34;http://www.macromedia.com/go/getflashplayer&#34; src=&#34;http://bitcast-a.bitgravity.com/revision3/swf/rev3_player.swf?AutoPlay=off&amp;Buffer=120&amp;File=http://www.podtrac.com/pts/redirect.flv/bitcast-a.bitgravity.com/revision3/flv/trs/0069/trs--0069--sixtynine--800kbps.flv&amp;ScrubMode=advanced&amp;Thumb=http://bitcast-a.bitgravity.com/revision3/thumbs/trs--0069--sixtynine--thumb.jpg&amp;DefaultRatio=0.56&amp;PostRoll=http://bitcast-a.bitgravity.com/revision3/flv/sponsors/Go_Daddy_Sandwich_v.3--800kbps.flv&amp;AutoSize=off&amp;allowFullScreen=true&#34; base=&#34;http://bitcast-a.bitgravity.com/revision3/swf/&#34; /&gt; &lt;/object&gt;&lt;/p&gt;&#xA;&lt;p&gt;A review of some Batman comics by the guys of iFanboy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I went to the NEMO</title>
      <link>https://peterstuifzand.nl/2008/07/17/i-went-to-the-nemo/</link>
      <pubDate>Thu, 17 Jul 2008 00:08:29 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/07/17/i-went-to-the-nemo/</guid>
      <description>&lt;p&gt;Monday my girlfriend and I went to the &lt;a href=&#34;http://e-nemo.nl&#34;&gt;NEMO science center&lt;/a&gt;&#xA;in Amsterdam.  It is a place where you can discover technical and scientific&#xA;things. From DNA to love and electricity to water.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/NEMO.jpg&#34; alt=&#34;A view of the NEMO science center&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;NEMO is a five story building that looks like a huge boat. At the moment you have&#xA;to go through a back entrance. There is a lot of construction going on at the&#xA;moment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Safe output</title>
      <link>https://peterstuifzand.nl/2008/07/05/safe-output/</link>
      <pubDate>Sat, 05 Jul 2008 01:14:56 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/07/05/safe-output/</guid>
      <description>&lt;p&gt;&lt;em&gt;This is an article that I wrote about two years ago. I like to share it&#xA;with you because I think that it contains a few nice rules for writing better&#xA;software.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;When creating websites, there is a time when you want to put some&#xA;dynamically generated output to the web browser. With a CGI script this is&#xA;done by printing to stdout. When you don&#39;t take some simple precautions&#xA;it will be easy for crackers to take over your website.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My weblog supports comments, at last</title>
      <link>https://peterstuifzand.nl/2008/07/05/my-weblog-supports-comments-at-last/</link>
      <pubDate>Sat, 05 Jul 2008 01:04:05 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/07/05/my-weblog-supports-comments-at-last/</guid>
      <description>&lt;p&gt;Tonight I implemented comments on my weblog. I have this blog already for four&#xA;years and now at last you can post a comment.&lt;/p&gt;&#xA;&lt;p&gt;The biggest problem with implementing comments is that my blog is static.&#xA;Otherwise it wouldn&amp;rsquo;t be that hard to implement the comments.&lt;/p&gt;&#xA;&lt;p&gt;At the moment you shouldn&amp;rsquo;t pay much attention to the esthetics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Radiohead Nude remix with old hardware</title>
      <link>https://peterstuifzand.nl/2008/06/11/radiohead-nude-remix-with-old-hardware/</link>
      <pubDate>Wed, 11 Jun 2008 12:37:42 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/06/11/radiohead-nude-remix-with-old-hardware/</guid>
      <description>&lt;p&gt;&lt;object width=&#34;400&#34; height=&#34;225&#34;&gt;   &lt;param name=&#34;allowfullscreen&#34; value=&#34;true&#34; /&gt;   &lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34; /&gt;   &lt;param name=&#34;movie&#34; value=&#34;http://www.vimeo.com/moogaloop.swf?clip_id=1109226&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&#34; /&gt;   &lt;embed src=&#34;http://www.vimeo.com/moogaloop.swf?clip_id=1109226&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&#34; type=&#34;application/x-shockwave-flash&#34; allowfullscreen=&#34;true&#34; allowscriptaccess=&#34;always&#34; width=&#34;400&#34; height=&#34;225&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href=&#34;http://www.vimeo.com/1109226?pg=embed&amp;sec=1109226&#34;&gt;Big Ideas (don&amp;rsquo;t get any)&lt;/a&gt; from &lt;a href=&#34;http://www.vimeo.com/user354216?pg=embed&amp;sec=1109226&#34;&gt;James Houston&lt;/a&gt; on &lt;a href=&#34;http://vimeo.com?pg=embed&amp;sec=1109226&#34;&gt;Vimeo&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Een reis weblog</title>
      <link>https://peterstuifzand.nl/2008/06/09/een-reis-weblog/</link>
      <pubDate>Mon, 09 Jun 2008 18:12:20 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/06/09/een-reis-weblog/</guid>
      <description>&lt;p&gt;Ik ben met een reis weblog begonnen. Het staat in&#xA;&lt;a href=&#34;http://peterstuifzand.nl/opreis&#34;&gt;http://peterstuifzand.nl/opreis/&lt;/a&gt;. Het kan&#xA;zijn dat ik er in de komende dagen nog iets aan doe, qua ontwerp. Op dit moment&#xA;heb ik daar nog geen zin in.&lt;/p&gt;&#xA;&lt;p&gt;Het idee is dat ik daar tijdens mijn reis daar dingen op zet die ik meemaak.&#xA;Dus neem een kijkje en plaats af een toe een reactie. Dat zou ik wel leuk&#xA;vinden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adobe has plan for opening up Flash file-format specification</title>
      <link>https://peterstuifzand.nl/2008/06/03/adobe-has-plan-for-opening-up-flash-file-format-specification/</link>
      <pubDate>Tue, 03 Jun 2008 17:39:39 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/06/03/adobe-has-plan-for-opening-up-flash-file-format-specification/</guid>
      <description>&lt;p&gt;It seems &lt;a href=&#34;http://www.readwriteweb.com/archives/adobe_to_publish_flash_file_fo.php&#34;&gt;Adobe will publish the Flash file-format&#xA;specification&lt;/a&gt;.&#xA;Maybe now we will get a good and open Flash player on non-i386 Linux systems.&lt;/p&gt;&#xA;&lt;p&gt;The specification for SWF is available on the &lt;a href=&#34;http://www.adobe.com/devnet/swf/&#34;&gt;SWF Technology&#xA;Center&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I started using Friendfeed</title>
      <link>https://peterstuifzand.nl/2008/05/24/i-started-using-friendfeed/</link>
      <pubDate>Sat, 24 May 2008 15:43:03 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/05/24/i-started-using-friendfeed/</guid>
      <description>&lt;p&gt;I started using &lt;a href=&#34;http://friendfeed.com&#34;&gt;Friendfeed&lt;/a&gt;. I&amp;rsquo;m not sure about the&#xA;functionality that it offers. I added a lot of services that I&amp;rsquo;m using on the&#xA;internet. Now FriendFeed will collect all the different things that I do and&#xA;write and create a new &amp;lsquo;feed&amp;rsquo; of these. This can be an real feed or a page&#xA;which shows all the items.&lt;/p&gt;&#xA;&lt;p&gt;My feed can be found at&#xA;&lt;a href=&#34;http://friendfeed.com/pstuifzand&#34;&gt;http://friendfeed.com/pstuifzand&lt;/a&gt;. So if you&#xA;are interested in what I&amp;rsquo;m doing, feel free to take a look at my feed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>In defense of food</title>
      <link>https://peterstuifzand.nl/2008/05/20/in-defense-of-food/</link>
      <pubDate>Tue, 20 May 2008 17:46:15 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/05/20/in-defense-of-food/</guid>
      <description>&lt;p&gt;Two interesting videos by Michael Pollan. The first one is about &amp;ldquo;In Defense of Food&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;355&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/I-t-7lTw6mA&amp;hl=en&#34;&gt;&lt;/param&gt;&lt;param name=&#34;wmode&#34; value=&#34;transparent&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/I-t-7lTw6mA&amp;hl=en&#34; type=&#34;application/x-shockwave-flash&#34; wmode=&#34;transparent&#34; width=&#34;425&#34; height=&#34;355&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&#xA;&lt;p&gt;The second one is really interesting about how to view the world from a plants eye view.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;355&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/TQPN1O03z8I&amp;hl=en&#34;&gt;&lt;/param&gt;&lt;param name=&#34;wmode&#34; value=&#34;transparent&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/TQPN1O03z8I&amp;hl=en&#34; type=&#34;application/x-shockwave-flash&#34; wmode=&#34;transparent&#34; width=&#34;425&#34; height=&#34;355&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&#xA;&lt;p&gt;They&amp;rsquo;re both interesting and could change the way you view the world.&lt;/p&gt;&#xA;&lt;p&gt;Link to this book:&lt;/p&gt;&#xA;&lt;p&gt;&lt;A HREF=&#34;http://clk.tradedoubler.com/click?a=1516499&amp;p=67859&amp;g=17297702&amp;epi=1001004005854702&#34; TARGET=&#34;_BLANK&#34;&gt;&lt;IMG SRC=&#34;http://img.bol.com/intershoproot/thumb/BOOKCOVER/FC/1/5/9/4/2/1594201455.GIF&#34; ALT=&#34;In Defense of Food&#34; BORDER=&#34;0&#34;&gt;&lt;BR&gt;In Defense of Food&lt;BR&gt;Michael Pollan&lt;BR&gt;&lt;/A&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>First try Haskell web applications</title>
      <link>https://peterstuifzand.nl/2008/05/15/first-try-haskell-web-applications/</link>
      <pubDate>Thu, 15 May 2008 15:56:28 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/05/15/first-try-haskell-web-applications/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m trying Haskell for writing Web applications. It should be really easy, but&#xA;at the moment I&amp;rsquo;m missing the examples. The documentation doesn&amp;rsquo;t really help&#xA;for generating the XHtml.&lt;/p&gt;&#xA;&lt;p&gt;The following bit of code is something that I found: &lt;a href=&#34;http://www.defmacro.org/ramblings/haskell-web.html&#34;&gt;Haskell and Web&#xA;applications&lt;/a&gt;.  The article&#xA;contains a simple example. I changed the code in the example to use a table&#xA;instead of the spans. This turned out to be really easy to do.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Most used commands</title>
      <link>https://peterstuifzand.nl/2008/04/16/most-used-commands/</link>
      <pubDate>Wed, 16 Apr 2008 19:52:21 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/04/16/most-used-commands/</guid>
      <description>&lt;p&gt;The command to find the list of commands that you use the most is:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;history | awk &#39;{print $2}&#39; | sort | uniq -c | sort -rn | head&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I like this version because it has uses a few simple and useful commands.&lt;/p&gt;&#xA;&lt;p&gt;My list:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;11398 ls&#xA; 6724 cd&#xA; 5200 vim&#xA; 2330 sudo&#xA; 1462 mutt&#xA; 1131 perl&#xA; 1122 mplayer&#xA; 1036 svk&#xA;  825 mpc&#xA;  795 lt&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The &lt;code&gt;lt&lt;/code&gt; command is a shell alias for &lt;code&gt;ls -lt&lt;/code&gt;. Other people don&amp;rsquo;t have a&#xA;editor in this list. This probably occurs because they use &lt;code&gt;emacs&lt;/code&gt; which works&#xA;better when it is open a long time. I use &lt;code&gt;vim&lt;/code&gt; that way sometimes, but most of&#xA;the time I use it for small and fast changes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Big error in my regex code</title>
      <link>https://peterstuifzand.nl/2008/04/10/big-error-in-my-regex-code/</link>
      <pubDate>Thu, 10 Apr 2008 20:37:04 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2008/04/10/big-error-in-my-regex-code/</guid>
      <description>&lt;p&gt;When I first posted the simple regex code I thought that it contained no&#xA;errors. But when I tried it a few days after that with a few simple testcases&#xA;(which I hadn&amp;rsquo;t considered in the test code) it failed.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ok $ match &amp;quot;world$&amp;quot; &amp;quot;world&amp;quot;&#xA;ok $ match &amp;quot;world$&amp;quot; &amp;quot; world&amp;quot;&#xA;ok $ match &amp;quot;world&amp;quot;  &amp;quot;hello world&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The first testcase worked. The other two didn&amp;rsquo;t, but they should have. After a&#xA;bit of inspection with the &lt;code&gt;trace&lt;/code&gt; function in &lt;code&gt;Debug.Trace&lt;/code&gt; I found out that&#xA;the function couldn&amp;rsquo;t move past the first character. I thought &lt;code&gt;matchhere&lt;/code&gt; would&#xA;take care of that, but it didn&amp;rsquo;t.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Interview with Richard Feynman from 1981</title>
      <link>https://peterstuifzand.nl/2008/03/18/interview-with-richard-feynman-from-1981/</link>
      <pubDate>Tue, 18 Mar 2008 11:11:15 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/03/18/interview-with-richard-feynman-from-1981/</guid>
      <description>&lt;p&gt;&lt;object width=&#34;530&#34; height=&#34;370&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/p/48C8BC738CAD541B&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/p/48C8BC738CAD541B&#34; type=&#34;application/x-shockwave-flash&#34; width=&#34;530&#34; height=&#34;370&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&#xA;&lt;p&gt;Playlist of all six parts of his interview from 1981.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Interesting video by James Randi and his million dollar prize</title>
      <link>https://peterstuifzand.nl/2008/03/11/interesting-video-by-james-randi-and-his-million-dollar-prize/</link>
      <pubDate>Tue, 11 Mar 2008 16:06:02 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/03/11/interesting-video-by-james-randi-and-his-million-dollar-prize/</guid>
      <description>&lt;p&gt;James Randi is among other things, a psychic investigator. Very interesting.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;355&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/MTPj9VlNzQ0&#34;&gt;&lt;/param&gt;&lt;param name=&#34;wmode&#34; value=&#34;transparent&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/MTPj9VlNzQ0&#34; type=&#34;application/x-shockwave-flash&#34; wmode=&#34;transparent&#34; width=&#34;425&#34; height=&#34;355&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A new Gnome Do tutorial</title>
      <link>https://peterstuifzand.nl/2008/03/07/a-new-gnome-do-tutorial/</link>
      <pubDate>Fri, 07 Mar 2008 16:32:20 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/03/07/a-new-gnome-do-tutorial/</guid>
      <description>&lt;p&gt;Christer over on Ubuntu Tutorials wrote a &lt;a href=&#34;http://ubuntu-tutorials.com/2008/03/06/how-to-install-gnome-do-plugins/&#34;&gt;tutorial about installing Do&#xA;plugins&lt;/a&gt;.&#xA;Also take a look at his other tutorial about installing Gnome Do.&lt;/p&gt;&#xA;&lt;p&gt;And if you haven&amp;rsquo;t tried &lt;a href=&#34;http://do.davebsd.com&#34;&gt;Gnome Do&lt;/a&gt; yet, please give it&#xA;a try.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple Haskell regex program</title>
      <link>https://peterstuifzand.nl/2008/03/05/simple-haskell-regex-program/</link>
      <pubDate>Wed, 05 Mar 2008 15:47:04 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/03/05/simple-haskell-regex-program/</guid>
      <description>&lt;p&gt;I wrote a small piece of code to match a regex to a string in&#xA;&lt;a href=&#34;http://haskell.org&#34;&gt;Haskell&lt;/a&gt;. The code is based on the example from&#xA;&lt;a href=&#34;http://www.oreilly.com/catalog/9780596510046/&#34;&gt;Beautiful code&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;match                       :: String -&amp;gt; String -&amp;gt; Bool&#xA;match (&#39;^&#39;:reg) s           = matchhere reg s&#xA;match reg s@(x:xs)          = if matchhere reg s&#xA;                                then True&#xA;                                else matchhere reg xs&#xA;&#xA;matchhere                   :: String -&amp;gt; String -&amp;gt; Bool&#xA;matchhere []         _      = True&#xA;matchhere (&#39;$&#39;:[])   []     = True&#xA;matchhere (x:&#39;*&#39;:xs) s      = matchstar x xs s&#xA;matchhere (r:rs)     (x:xs) | r == x    = matchhere rs xs&#xA;                            | r == &#39;.&#39;  = matchhere rs xs&#xA;                            | otherwise = False&#xA;&#xA;matchstar                   :: Char -&amp;gt; String -&amp;gt; String -&amp;gt; Bool&#xA;matchstar c []  []          = True&#xA;matchstar c _   []          = False&#xA;matchstar c reg (x:xs)      = matchhere reg xs&#xA;                              || ((c == &#39;.&#39; || c == x) &amp;amp;&amp;amp; matchstar c reg xs)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The &lt;code&gt;matchstar&lt;/code&gt; function in this example is non-greedy, because it will try to&#xA;match the character after &lt;code&gt;*&lt;/code&gt; before it tries to match the star.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Haskell and XMonad</title>
      <link>https://peterstuifzand.nl/2008/03/04/haskell-and-xmonad/</link>
      <pubDate>Tue, 04 Mar 2008 09:19:18 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/03/04/haskell-and-xmonad/</guid>
      <description>&lt;p&gt;In my quest to learn Haskell I come across XMonad, a tiling window manager. At&#xA;home I already use &lt;a href=&#34;http://pekwm.org&#34;&gt;Pekwm&lt;/a&gt;. On my laptop I use &lt;a href=&#34;http://xmonad.org&#34;&gt;XMonad&lt;/a&gt; now. To configure&#xA;it I have to use &lt;a href=&#34;http://haskell.org&#34;&gt;Haskell&lt;/a&gt;, so that helps.&lt;/p&gt;&#xA;&lt;p&gt;After sometime using Haskell, I looks like I get a hang of it. I tried it a bit&#xA;before, but now I really start to get a hang of it. If you want to learn&#xA;Haskell to take a look at &lt;a href=&#34;http://research.microsoft.com/~simonpj/papers/haskell-tutorial/index.htm&#34;&gt;A Taste of&#xA;Haskell&lt;/a&gt;&#xA;a video/presentation by &lt;a href=&#34;http://research.microsoft.com/~simonpj/&#34;&gt;Simon Peyton&#xA;Jones&lt;/a&gt; in two parts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gnome Do has a new repository</title>
      <link>https://peterstuifzand.nl/2008/02/20/gnome-do-has-a-new-repository/</link>
      <pubDate>Wed, 20 Feb 2008 12:08:58 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/02/20/gnome-do-has-a-new-repository/</guid>
      <description>&lt;p&gt;Everyone that uses &lt;a href=&#34;http://do.davebsd.com&#34;&gt;Gnome Do&lt;/a&gt; should update their package repositories, because there is a new version available.&lt;/p&gt;&#xA;&lt;p&gt;Please take a look at the &lt;a href=&#34;https://wiki.ubuntu.com/GnomeDo/Installation&#34;&gt;installation&#xA;instructions&lt;/a&gt; for more&#xA;information about the installation.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/gnome-do-screenshot.png&#34; alt=&#34;Screenshot of Gnome Do showing the play action selected&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gnome plugins in Launchpad bzr</title>
      <link>https://peterstuifzand.nl/2008/02/15/gnome-plugins-in-launchpad-bzr/</link>
      <pubDate>Fri, 15 Feb 2008 13:55:26 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/02/15/gnome-plugins-in-launchpad-bzr/</guid>
      <description>&lt;p&gt;I created a branch in Launchpad for my Gnome Do plugins. This to help&#xA;development with other people, who are already on Launchpad.&lt;/p&gt;&#xA;&lt;p&gt;So if you&amp;rsquo;re using Gnome Do please make a branch of my plugins and compile,&#xA;test and use them.&lt;/p&gt;&#xA;&lt;p&gt;Creating a branch is easy in bzr, just do:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;bzr branch http://bazaar.launchpad.net/~peter-stuifzand/gc/do-plugins-ps&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You now have a working branch. Use &lt;code&gt;make&lt;/code&gt; and &lt;code&gt;make install&lt;/code&gt; to start using&#xA;these plugins. If you don&amp;rsquo;t want to use all plugins, just use &lt;code&gt;make install&lt;/code&gt;&#xA;from the directories that you would like to use.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gnome Do plugins status</title>
      <link>https://peterstuifzand.nl/2008/02/06/gnome-do-plugins-status/</link>
      <pubDate>Wed, 06 Feb 2008 12:45:14 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/02/06/gnome-do-plugins-status/</guid>
      <description>&lt;p&gt;I now have a page that contains &lt;a href=&#34;gnome-do.html&#34;&gt;the status of my Gnome Do plugins&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gnome Do plugin for connecting to SSH</title>
      <link>https://peterstuifzand.nl/2008/02/03/gnome-do-plugin-for-connecting-to-ssh/</link>
      <pubDate>Sun, 03 Feb 2008 16:56:32 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/02/03/gnome-do-plugin-for-connecting-to-ssh/</guid>
      <description>&lt;p&gt;I created a plugin for connecting to SSH with &lt;a href=&#34;http://do.davebsd.com&#34;&gt;Gnome Do&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/gnome-do-ssh-plugin.png&#34; alt=&#34;Showing the Gnome Do SSH Plugin&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;To use the plugin type &amp;lsquo;con ssh&amp;rsquo; followed by TAB. Then type the name of the server&#xA;you want to connect to followed by Enter.&lt;/p&gt;&#xA;&lt;form action=&#34;https://www.paypal.com/cgi-bin/webscr&#34; method=&#34;post&#34;&gt;&#xA;&lt;input type=&#34;hidden&#34; name=&#34;cmd&#34; value=&#34;_s-xclick&#34;&gt;&#xA;&lt;input type=&#34;hidden&#34; name=&#34;hosted_button_id&#34; value=&#34;2060252&#34;&gt;&#xA;&lt;input type=&#34;image&#34; src=&#34;https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif&#34; border=&#34;0&#34; name=&#34;submit&#34; alt=&#34;&#34;&gt;&#xA;&lt;img alt=&#34;&#34; border=&#34;0&#34; src=&#34;https://www.paypal.com/nl_NL/i/scr/pixel.gif&#34; width=&#34;1&#34; height=&#34;1&#34;&gt;&#xA;&lt;/form&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update February, 4 2008&lt;/strong&gt;: The SSH plugin will now also list all hostnames&#xA;that are specified in your .ssh/config.&lt;/p&gt;&#xA;&lt;p&gt;If you installed the previous version please remove the &amp;lsquo;SSHAction.dll&amp;rsquo; file&#xA;from you .do/plugins directory.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySmartUSB Linux programmer control tool</title>
      <link>https://peterstuifzand.nl/2008/01/31/mysmartusb-linux-programmer-control-tool/</link>
      <pubDate>Thu, 31 Jan 2008 15:39:05 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/31/mysmartusb-linux-programmer-control-tool/</guid>
      <description>&lt;p&gt;The MySmartUSB documentation contains a paragraph about a protocol for sending&#xA;commands to the programmer. I wrote a small perl script that can send these&#xA;commands.&lt;/p&gt;&#xA;&lt;p&gt;The file: &lt;a href=&#34;https://peterstuifzand.nl/files/mysmartusb&#34;&gt;mysmartusb&lt;/a&gt;.&#xA;It requires Device::SerialPort, which is a perl module that&amp;rsquo;s available on CPAN.&lt;/p&gt;&#xA;&lt;p&gt;Or you could get the git repository from &lt;a href=&#34;http://code.peterstuifzand.nl/git/mysmartusb.git/&#34;&gt;http://code.peterstuifzand.nl/git/mysmartusb.git&lt;/a&gt; with the command:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;git clone http://code.peterstuifzand.nl/git/mysmartusb.git/&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Blinking Led video and source code</title>
      <link>https://peterstuifzand.nl/2008/01/31/blinking-led-video-and-source-code/</link>
      <pubDate>Thu, 31 Jan 2008 15:28:39 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/31/blinking-led-video-and-source-code/</guid>
      <description>&lt;p&gt;This is my first microcontroller project video.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;355&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/9ZhQ8BJVoUk&amp;rel=1&#34;&gt;&lt;/param&gt;&lt;param name=&#34;wmode&#34; value=&#34;transparent&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/9ZhQ8BJVoUk&amp;rel=1&#34; type=&#34;application/x-shockwave-flash&#34; wmode=&#34;transparent&#34; width=&#34;425&#34; height=&#34;355&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I deleted my Myspace and Friendster account</title>
      <link>https://peterstuifzand.nl/2008/01/31/i-deleted-my-myspace-and-friendster-account/</link>
      <pubDate>Thu, 31 Jan 2008 11:08:19 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/31/i-deleted-my-myspace-and-friendster-account/</guid>
      <description>&lt;p&gt;Yesterday was &lt;a href=&#34;http://bloggasm.com/international-delete-your-myspace-account-day-is-here&#34;&gt;Delete your Myspace account day&lt;/a&gt;. I don&amp;rsquo;t use any of those&#xA;social networking sites and therefore I deleted all of the sites that were&#xA;left. I cancelled my Facebook account a few weeks after using it for a few&#xA;weeks.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.informationweek.com/news/showArticle.jhtml;jsessionid=EKAFWWLN5XQV2QSNDLOSKHSCJUNN2JVN?articleID=204203573&amp;amp;pgno=2&amp;amp;queryText=&#34;&gt;Social networking sites are flawed&lt;/a&gt;, but maybe someday we will find out a way to make this work, but it is not today.&lt;/p&gt;&#xA;&lt;p&gt;If people want to communicate with each other they can use email, IRC, phone,&#xA;IM or any other way. It&amp;rsquo;s not needed to have another system for those things.&#xA;Friendships are somethingthat can&amp;rsquo;t be described in a simplistic database.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I programmed my first attiny2313</title>
      <link>https://peterstuifzand.nl/2008/01/30/i-programmed-my-first-attiny2313/</link>
      <pubDate>Wed, 30 Jan 2008 15:56:02 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/30/i-programmed-my-first-attiny2313/</guid>
      <description>&lt;p&gt;I programmed my first Atmel ATTiny2313 today. Of course this was a blinking&#xA;led program.&lt;/p&gt;&#xA;&lt;p&gt;I used the following code:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#define F_CPU 8000000UL&#xA;#include &amp;lt;avr/io.h&amp;gt;&#xA;#include &amp;lt;util/delay.h&amp;gt;&#xA;&#xA;int main(void) {&#xA;    DDRB |= 1&amp;lt;&amp;lt;PB0; /* set PB0 to output */&#xA;    while(1) {&#xA;        PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;PB0); /* LED on */&#xA;        _delay_ms(100);&#xA;        PORTB |= 1&amp;lt;&amp;lt;PB0; /* LED off */&#xA;        _delay_ms(900);&#xA;    }&#xA;    return 0;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This will blink a led if it&amp;rsquo;s connected to PB0 (or pin 12 on the&#xA;microcontroller).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sound is working</title>
      <link>https://peterstuifzand.nl/2008/01/30/sound-is-working/</link>
      <pubDate>Wed, 30 Jan 2008 12:30:42 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/30/sound-is-working/</guid>
      <description>&lt;p&gt;My laptop (a Toshiba Sattelite Pro L40) has working sound now! It started woking after I added the following two lines to the file &lt;code&gt;/etc/modprobe.d/alsa-base&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;options snd-card-0 index=0 model=3stack&#xA;options snd-hda-intel index=0 model=3stack&lt;/p&gt;&#xA;&lt;p&gt;The problem was that the audio was working when I first started the laptop, but&#xA;it would stop when I used the volume mixer. Changing the volume did something that made the audio stop working.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I really like Git</title>
      <link>https://peterstuifzand.nl/2008/01/30/i-really-like-git/</link>
      <pubDate>Wed, 30 Jan 2008 10:03:05 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/30/i-really-like-git/</guid>
      <description>&lt;p&gt;I have to say, I really like &lt;a href=&#34;http://git.or.cz&#34;&gt;git&lt;/a&gt;. I like it almost so much that I&#xA;&lt;a href=&#34;http://peterstuifzand.nl/i-installed-ubuntu-on-my-laptop.html&#34;&gt;switched to Linux for it on my laptop&lt;/a&gt;.&#xA;I have two projects of mine in a git repository and it seems to work great.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I installed Ubuntu on my laptop</title>
      <link>https://peterstuifzand.nl/2008/01/30/i-installed-ubuntu-on-my-laptop/</link>
      <pubDate>Wed, 30 Jan 2008 09:59:57 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/30/i-installed-ubuntu-on-my-laptop/</guid>
      <description>&lt;p&gt;I have installed Ubuntu Linux on my laptop. This is the second time that I&#xA;tried &lt;a href=&#34;https://peterstuifzand.nl/my-new-laptop.html&#34;&gt;installing linux on my laptop&lt;/a&gt;. The first time&#xA;there were all kinds of problems with unsupported hardware.&lt;/p&gt;&#xA;&lt;p&gt;When I installed Ubuntu yesterday, everything worked (except for Wireless).&#xA;After a bit of searching I found a solution in &lt;code&gt;ndiswrapper&lt;/code&gt;. I&amp;rsquo;m not that&#xA;happy with this, because it is using Windows drivers. I&amp;rsquo;m waiting for the&#xA;release of the new &lt;a href=&#34;http://madwifi.org&#34;&gt;madwifi wireless drivers&lt;/a&gt;, which I hope&#xA;will fix this problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim: Just once space revisited</title>
      <link>https://peterstuifzand.nl/2008/01/24/vim-just-once-space-revisited/</link>
      <pubDate>Thu, 24 Jan 2008 12:14:27 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/24/vim-just-once-space-revisited/</guid>
      <description>&lt;p&gt;At the beginning of last year I wrote a weblog entry about how to write a&#xA;function that &lt;a href=&#34;http://peterstuifzand.nl/just-one-space.html&#34;&gt;removes all space but one&lt;/a&gt; in Vim.&#xA;It didn&amp;rsquo;t work like I wanted, but now it does.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;function JustOneSpace()&#xA;    &amp;quot; replace all whitespace around the cursor with a space&#xA;    s/\s*\%#\s*/ /e&#xA;    &amp;quot; search backwards for a space&#xA;    call search(&#39; &#39;, &#39;be&#39;)&#xA;    &amp;quot; move to the first character after the space&#xA;    normal l&#xA;endfunction&#xA;&#xA;nmap &amp;lt;space&amp;gt; :call JustOneSpace()&amp;lt;cr&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I added the call to the &lt;code&gt;search()&lt;/code&gt; function to move to the space that was&#xA;substituted. All this time I wanted to fix this function by using regexes or&#xA;special vim variables. I couldn&amp;rsquo;t find these. This is quite obvious, but it&#xA;didn&amp;rsquo;t come to mind at first.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Graphical Disk Representation</title>
      <link>https://peterstuifzand.nl/2008/01/21/graphical-disk-representation/</link>
      <pubDate>Mon, 21 Jan 2008 20:52:39 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/21/graphical-disk-representation/</guid>
      <description>&lt;p&gt;This weekend I tried Gnome on Debian unstable to see how the compiz window&#xA;manager and other new stuff was working. I&amp;rsquo;m currently use&#xA;&lt;a href=&#34;http://pekwm.pekdon.net&#34;&gt;pekwm&lt;/a&gt;. After a few hours of usage, I reverted back&#xA;to my current desktop.&lt;/p&gt;&#xA;&lt;p&gt;On the way I found out a two things:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;You should remove the package files that are downloaded by &lt;code&gt;aptitude&lt;/code&gt;. I collected about 7 GB of .deb packages. You can clean this up by using the command: &lt;code&gt;apt-get autoclean&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Gnome contains a nice Graphics Disk Usage Analyzer called &lt;a href=&#34;http://www.marzocca.net/linux/baobab.html&#34;&gt;baobab&lt;/a&gt;. It shows the amount of diskspace a file or directory uses in a graphical representation.&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Using R with visitor data</title>
      <link>https://peterstuifzand.nl/2008/01/21/using-r-with-visitor-data/</link>
      <pubDate>Mon, 21 Jan 2008 17:19:46 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/21/using-r-with-visitor-data/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.r-project.org&#34;&gt;R&lt;/a&gt; is a statistics program. I can calculate&#xA;statistical functions and draw nice graphs. Today I used it for showing some&#xA;graphs.&lt;/p&gt;&#xA;&lt;p&gt;I use R on my linux system, but it also works on Windows. To install it look at&#xA;website of &lt;a href=&#34;http://www.r-project.org&#34;&gt;R&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Data from a file can be read with the function &lt;code&gt;read.table(filename)&lt;/code&gt;, where&#xA;&lt;code&gt;filename&lt;/code&gt; is the name of filename that you want to read. This would look like:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;visitors &amp;lt;- read.table(&#39;visitors.dat&#39;)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The &lt;code&gt;visitors.dat&lt;/code&gt; should contains two columns like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weekend projects podcast</title>
      <link>https://peterstuifzand.nl/2008/01/15/weekend-projects-podcast/</link>
      <pubDate>Tue, 15 Jan 2008 13:07:22 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/15/weekend-projects-podcast/</guid>
      <description>&lt;p&gt;This is a video podecast that I watch regularly by&#xA;&lt;a href=&#34;http://brepettis.com&#34;&gt;Bre Pettis&lt;/a&gt;. The&#xA;&lt;a href=&#34;http://makezine.com/podcast/&#34;&gt;Weekend projects podcast&lt;/a&gt; shows a project you can&#xA;make over the weekend. It&amp;rsquo;s very inspiring. When you haven&amp;rsquo;t seen it already,&#xA;you should take a look at the&#xA;&lt;a href=&#34;http://blog.makezine.com/archive/make_podcast/&#34;&gt;archive&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Art and electronics project</title>
      <link>https://peterstuifzand.nl/2008/01/11/art-and-electronics-project/</link>
      <pubDate>Fri, 11 Jan 2008 01:24:14 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/11/art-and-electronics-project/</guid>
      <description>&lt;p&gt;A few weeks ago I created an art project together with my girlfriend involving&#xA;video and electronics. I created the electronics part for her.&lt;/p&gt;&#xA;&lt;p&gt;The technical part of the project was based on a simple idea. When someone&#xA;walks by it should play a short piece of video.&lt;/p&gt;&#xA;&lt;h4 id=&#34;the-sensor&#34;&gt;The sensor&lt;/h4&gt;&#xA;&lt;p&gt;I made a sensor that notices changes in the light received. The idea is that&#xA;when someone walks by the light falling on the LDR changes. The resistance of&#xA;the LDR changes when the light changes. The change in resistance can be found&#xA;out by measuring the voltage over the LDR.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My website is on a new server</title>
      <link>https://peterstuifzand.nl/2008/01/09/my-website-is-on-a-new-server/</link>
      <pubDate>Wed, 09 Jan 2008 17:17:47 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2008/01/09/my-website-is-on-a-new-server/</guid>
      <description>&lt;p&gt;In the last few weeks I have moved a part of my websites to my new server. This&#xA;is now and actual server, not a computer hidden behind an ADSL router.&#xA;I&amp;rsquo;m curious to find out how this actually works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Pownce profile</title>
      <link>https://peterstuifzand.nl/2007/11/28/my-pownce-profile/</link>
      <pubDate>Wed, 28 Nov 2007 09:16:54 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/11/28/my-pownce-profile/</guid>
      <description>&lt;p&gt;Maybe I should link to &lt;a href=&#34;http://www.pownce.com/pstuifzand/&#34;&gt;my Pownce profile&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pownce</title>
      <link>https://peterstuifzand.nl/2007/11/27/pownce/</link>
      <pubDate>Tue, 27 Nov 2007 11:48:38 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/11/27/pownce/</guid>
      <description>&lt;p&gt;I just received my &lt;a href=&#34;http://www.pownce.com&#34;&gt;Pownce&lt;/a&gt; invitation. Now let&amp;rsquo;s see what this is.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The next book I&#39;m going to read</title>
      <link>https://peterstuifzand.nl/2007/11/26/the-next-book-im-going-to-read/</link>
      <pubDate>Mon, 26 Nov 2007 15:59:49 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/11/26/the-next-book-im-going-to-read/</guid>
      <description>&lt;p&gt;I just got Mastering Regular Expressions by Jeffrey Friedl. I already know&#xA;Regular Expressions and I think that I&amp;rsquo;m pretty good at them. Still I will read&#xA;this and I think I will get something out of this. Maybe a deeper&#xA;understanding of regular expressions.&lt;/p&gt;&#xA;&lt;div&gt;&#xA;&lt;img src=&#34;http://service.bfast.com/bfast/serve?bfmid=1821541&amp;siteid=41651638&amp;bfpid=9780596528126&amp;bfmtype=i&amp;PrdId=1001004002921180&#34; border=&#34;0&#34; width=&#34;1&#34; height=&#34;1&#34; nosave /&gt;&#xA;&lt;a href=&#34;http://service.bfast.com/bfast/click?bfmid=1821541&amp;siteid=41651638&amp;bfpid=9780596528126&amp;bfmtype=i&amp;PrdId=1001004002921180&#34; target=&#34;_top&#34;&gt;&#xA;  &lt;img src=&#34;http://img.bol.com/intershoproot/thumb/BOOKCOVER/FC/0/5/9/6/5/0596528124.gif&#34; border=&#34;0&#34; align=&#34;center&#34; alt=&#34;Mastering Regular Expressions&lt;br&gt;Jeffrey E.F. Friedl&#34; /&gt;&lt;br&gt;&#xA;  Mastering Regular Expressions&lt;br&gt;&#xA;  Jeffrey E.F. Friedl&lt;/a&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Kindle: ebook reader</title>
      <link>https://peterstuifzand.nl/2007/11/21/kindle-ebook-reader/</link>
      <pubDate>Wed, 21 Nov 2007 10:48:40 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/11/21/kindle-ebook-reader/</guid>
      <description>&lt;p&gt;Amazon released an ebook reader: &lt;a href=&#34;http://amazon.com/gp/product/B000FI73MA/ref=amb_link_5873612_3?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=gateway-center-column&amp;amp;pf_rd_r=07VBJBFPP484EYCRT136&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=329252801&amp;amp;pf_rd_i=507846&#34;&gt;Kindle&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Please read: &lt;a href=&#34;http://diveintomark.org/archives/2007/11/19/the-future-of-reading&#34;&gt;The Future of Reading&lt;/a&gt; and &lt;a href=&#34;http://daringfireball.net/2007/11/dum&#34;&gt;DUM&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I want Sandy</title>
      <link>https://peterstuifzand.nl/2007/11/15/i-want-sandy/</link>
      <pubDate>Thu, 15 Nov 2007 12:04:14 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/11/15/i-want-sandy/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.iwantsandy.com&#34;&gt;I want Sandy&lt;/a&gt; is a personal assistant, who will&#xA;remind and remember all things you send to here via email.&lt;/p&gt;&#xA;&lt;p&gt;Write paragraphs like:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;remind me to take out the garbage this evening&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;and Sandy will send you an email or SMS when the time comes. There&amp;rsquo;s is much&#xA;more possible using Sandy. I think you should take a look.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GTD and Vim outliner</title>
      <link>https://peterstuifzand.nl/2007/11/04/gtd-and-vim-outliner/</link>
      <pubDate>Sun, 04 Nov 2007 21:14:24 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/11/04/gtd-and-vim-outliner/</guid>
      <description>&lt;p&gt;I wrote an article about &lt;a href=&#34;https://peterstuifzand.nl/gtd-vimoutliner.html&#34;&gt;Getting Things Done using Vim outliner&lt;/a&gt;, an outliner for Vim.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Perl survey results are in</title>
      <link>https://peterstuifzand.nl/2007/10/15/the-perl-survey-results-are-in/</link>
      <pubDate>Mon, 15 Oct 2007 14:42:48 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/10/15/the-perl-survey-results-are-in/</guid>
      <description>&lt;p&gt;The results for the &lt;a href=&#34;http://www.perlsurvey.org&#34;&gt;perl survey&lt;/a&gt; are in. You can&#xA;download the raw data from the results page. The analysis of the results will&#xA;be on that same page in some time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A visual explaination of SQL joins</title>
      <link>https://peterstuifzand.nl/2007/10/15/a-visual-explaination-of-sql-joins/</link>
      <pubDate>Mon, 15 Oct 2007 13:10:13 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/10/15/a-visual-explaination-of-sql-joins/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.codinghorror.com/blog/archives/000976.html&#34;&gt;The visual explaination of SQL joins&lt;/a&gt; contains the&#xA;explaination of SQL joins that I never knew how to give. If you don&amp;rsquo;t&#xA;understand joins completely, this will give you a visual model to help you&#xA;understand SQL joins.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sanitize your database inputs</title>
      <link>https://peterstuifzand.nl/2007/10/10/sanitize-your-database-inputs/</link>
      <pubDate>Wed, 10 Oct 2007 14:10:37 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/10/10/sanitize-your-database-inputs/</guid>
      <description>&lt;p&gt;I just saw this over on &lt;a href=&#34;http://xkcd.com&#34;&gt;xkcd&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://xkcd.com/327/&#34; title=&#34;Click here to see the comic full size&#34;&gt;&lt;img src=&#34;http://imgs.xkcd.com/comics/exploits_of_a_mom.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Picture of my new workbench</title>
      <link>https://peterstuifzand.nl/2007/09/25/picture-of-my-new-workbench/</link>
      <pubDate>Tue, 25 Sep 2007 12:49:37 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/09/25/picture-of-my-new-workbench/</guid>
      <description>&lt;p&gt;Here is a picture of my new workbench.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://peterstuifzand.nl/images/workbench.jpg&#34; alt=&#34;My new workbench&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I created my own workbench</title>
      <link>https://peterstuifzand.nl/2007/09/20/i-created-my-own-workbench/</link>
      <pubDate>Thu, 20 Sep 2007 10:18:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/09/20/i-created-my-own-workbench/</guid>
      <description>&lt;p&gt;I created my own workbench a few days ago. I still have to put up a few&#xA;photos, but maybe I will do that in a few days.&lt;/p&gt;&#xA;&lt;p&gt;Creating the workbench was quite simple: I got an old top of a table and bought&#xA;a piece of particle board for hanging tools. I also added eight power sockets&#xA;so I can use my soldering iron, a power supply for 12 V and 5 V, a desk lamp&#xA;and various chargers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My new laptop</title>
      <link>https://peterstuifzand.nl/2007/09/05/my-new-laptop/</link>
      <pubDate>Wed, 05 Sep 2007 16:02:11 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/09/05/my-new-laptop/</guid>
      <description>&lt;p&gt;Yesterday I bought a new laptop. A Toshiba Sattelita Pro L40. When I tried to&#xA;install linux it looked like it work pretty good. But when I tried to connect&#xA;using the onboard wireless adapter I noticed an error in the &lt;code&gt;dmesg&lt;/code&gt; output.&lt;/p&gt;&#xA;&lt;p&gt;Today I thought of another way to get linux on my computer. I now use the&#xA;preinstalled Windows Vista Business (reinstalled from the recovery disk) and&#xA;vmplayer from &lt;a href=&#34;http://www.vmware.com&#34;&gt;VMware&lt;/a&gt; with a &lt;a href=&#34;http://www.virtualappliances.net&#34;&gt;virtual&#xA;appliance&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a sound generator with an NE555 IC</title>
      <link>https://peterstuifzand.nl/2007/09/04/create-a-sound-generator-with-an-ne555-ic/</link>
      <pubDate>Tue, 04 Sep 2007 10:19:52 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/09/04/create-a-sound-generator-with-an-ne555-ic/</guid>
      <description>&lt;p&gt;I few weeks ago I started doing some electronics projects. The second thing I&#xA;tried was using the NE555 chip. It&amp;rsquo;s was quite simple to use. Within a few&#xA;minutes I had a blinking led (remember, this is my third electronics project).&lt;/p&gt;&#xA;&lt;p&gt;This video shows how you can create a sound generator with a few NE555 chips. I&#xA;created something like it, a few days ago.&lt;/p&gt;&#xA;&lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;350&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/HteDBfSJ9zo&#34;&gt;&lt;/param&gt;&lt;param name=&#34;wmode&#34; value=&#34;transparent&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/HteDBfSJ9zo&#34; type=&#34;application/x-shockwave-flash&#34; wmode=&#34;transparent&#34; width=&#34;425&#34; height=&#34;350&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>First results of perl survey</title>
      <link>https://peterstuifzand.nl/2007/09/04/first-results-of-perl-survey/</link>
      <pubDate>Tue, 04 Sep 2007 10:00:04 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/09/04/first-results-of-perl-survey/</guid>
      <description>&lt;p&gt;The first survey results are in about the conversion rates. There is still time to complete the questions. For all the reasons mentioned on the page: &lt;a href=&#34;http://www.perlsurvey.org&#34;&gt;fill out the perl survey&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scrape stuff of webpages</title>
      <link>https://peterstuifzand.nl/2007/09/04/scrape-stuff-of-webpages/</link>
      <pubDate>Tue, 04 Sep 2007 09:56:06 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/09/04/scrape-stuff-of-webpages/</guid>
      <description>&lt;p&gt;A web scraper in Perl, which uses a simple DSL for specifying what to parse. An example for the author follows.&#xA;&lt;a href=&#34;http://feeds.feedburner.com/~r/PlanetPerl/~3/151693260/34325&#34;&gt;Web::Scraper hacks #1: Extract links linking to images&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I&#39;m unemployed (by choice)</title>
      <link>https://peterstuifzand.nl/2007/09/03/im-unemployed-by-choice/</link>
      <pubDate>Mon, 03 Sep 2007 17:11:49 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/09/03/im-unemployed-by-choice/</guid>
      <description>&lt;p&gt;For the first time in 1,5 years I&amp;rsquo;m unemployed. Not much of problem of course,&#xA;because I chose to do it this way. I have all these projects waiting for me,&#xA;but no time to work on any of them.&lt;/p&gt;&#xA;&lt;p&gt;So I chose to stop working for an employer. Today is my first day without going&#xA;to work. For a start I changed the the headers of this website and&#xA;&lt;a href=&#34;http://internettablet.nl&#34;&gt;internettablet.nl&lt;/a&gt;. my Dutch website about internet&#xA;tablets. I&amp;rsquo;m thinking about buying a server to host all my websites and a few&#xA;others.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim page</title>
      <link>https://peterstuifzand.nl/2007/06/17/vim-page/</link>
      <pubDate>Sun, 17 Jun 2007 13:42:26 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/06/17/vim-page/</guid>
      <description>&lt;p&gt;Today I created a &lt;a href=&#34;vim.html&#34;&gt;page about vim&lt;/a&gt; on this website. Vim is a useful&#xA;editor, but sometimes it would be nice to have more articles describing the&#xA;cool features that it has. The documentation describes every features in vim,&#xA;but sometimes it&amp;rsquo;s hard to know where to start looking. I&amp;rsquo;m building this page&#xA;with links to articles that describe features or general vim goodies. So enjoy!&lt;/p&gt;</description>
    </item>
    <item>
      <title>SVN repository surgery</title>
      <link>https://peterstuifzand.nl/2007/05/05/svn-repository-surgery/</link>
      <pubDate>Sat, 05 May 2007 09:55:25 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/05/05/svn-repository-surgery/</guid>
      <description>&lt;p&gt;Once upon a time I had all my projects in one subversion repository. At first&#xA;this looks simple, easy and useful. But after some time it will start to be a&#xA;problem.&lt;/p&gt;&#xA;&lt;p&gt;How can you fix your repository to have only one project in the repository.&#xA;This is what I did, including sources that I used for help.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://blog.fredrikbostrom.net/?p=40&#34;&gt;Fredrik Bostrom: Migrating part of a SVN repository&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://svnbook.red-bean.com/en/1.0/ch05s03.html&#34;&gt;The SVN Book&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;First I created a dump of the repository using the following command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Archivemail</title>
      <link>https://peterstuifzand.nl/2007/04/22/archivemail/</link>
      <pubDate>Sun, 22 Apr 2007 11:40:51 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/04/22/archivemail/</guid>
      <description>&lt;p&gt;Once every few months I have to take a look in my received spam folder. I don&amp;rsquo;t&#xA;like that, because it gets big and it takens a lot of time to load the headers.&#xA;So almost every time when I look into this I remove all messages that are in&#xA;there. It&amp;rsquo;s not that much work, but it takes some time, that I could spend&#xA;doing something else.&lt;/p&gt;&#xA;&lt;p&gt;A few years ago I used a program that would look through all the messages in a&#xA;specified folder and then deleted all messages that were older than some number&#xA;of days. The program is called&#xA;&lt;a href=&#34;http://archivemail.sourceforge.net/&#34;&gt;archivemail&lt;/a&gt; and does exactly what I&#xA;want. From today archivemail will delete all messages in my spam folder that&#xA;are older than 30 days. I use the following command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>HOWTO Edit Messages</title>
      <link>https://peterstuifzand.nl/2007/04/22/howto-edit-messages/</link>
      <pubDate>Sun, 22 Apr 2007 11:31:50 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/04/22/howto-edit-messages/</guid>
      <description>&lt;p&gt;A few weeks ago I found &lt;a href=&#34;http://www.guckes.net/mail/edit.html&#34;&gt;this nice guide&lt;/a&gt;&#xA;about howto edit and quote email messages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Questions about Internet Tablets</title>
      <link>https://peterstuifzand.nl/2007/04/06/questions-about-internet-tablets/</link>
      <pubDate>Fri, 06 Apr 2007 20:46:42 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2007/04/06/questions-about-internet-tablets/</guid>
      <description>&lt;p&gt;ThoughtFix is &lt;a href=&#34;http://tabletblog.com/2007/04/reader-poll-you-and-your-tablet.html&#34;&gt;asking questions about internet&#xA;tablets&lt;/a&gt;.&#xA;Here are my answers.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;em&gt;Do you own a Nokia 770 or Nokia N800?&lt;/em&gt;&#xA;Yes, I own both.&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;If not, what keeps you from buying one today?&lt;/em&gt;&#xA;N/A&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;If so: What do you use it for most?&lt;/em&gt;&#xA;Music. Simple lookups of information. Watching videos.&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;What applications do you desire most?&lt;/em&gt;&#xA;Canola-like email application.&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;What accessories do you desire most?&lt;/em&gt;&#xA;Maybe, highspeed wireless internet everywhere?&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;If you could change the design, how would you do it?&lt;/em&gt;&#xA;The camera is to much to the left (not really a problem, but could be better).&#xA;The camera is useful, but only in bright light conditions.&#xA;Overall I like the design.&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>A microblog</title>
      <link>https://peterstuifzand.nl/2007/03/24/a-microblog/</link>
      <pubDate>Sat, 24 Mar 2007 21:28:19 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/03/24/a-microblog/</guid>
      <description>&lt;p&gt;I started &lt;a href=&#34;http://microblog.peterstuifzand.nl&#34;&gt;my first microblog&lt;/a&gt;. I created&#xA;it using &lt;a href=&#34;http://www.plagger.org&#34;&gt;plagger&lt;/a&gt; and&#xA;&lt;a href=&#34;http://del.icio.us&#34;&gt;del.icio.us&lt;/a&gt;. To post an entry to the microblog, I have to&#xA;post a bookmark to del.icio.us containing the tag &lt;b&gt;microblog&lt;/b&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I currently use the following config file to create the page.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;global:&#xA;  # Set timezone to your local one&#xA;  timezone: Europe/Amsterdam&#xA;  # this make logger logs important information&#xA;  log:&#xA;    level: debug&#xA;&#xA;plugins:&#xA;  - module: Subscription::Config&#xA;    config:&#xA;      feed:&#xA;        - url: &#39;http://del.icio.us/rss/pstuifzand/microblog&#39;&#xA;&#xA;  - module: SmartFeed::All&#xA;&#xA;  - module: Publish::Planet&#xA;    rule:&#xA;      expression: $args-&amp;gt;{feed}-&amp;gt;id eq &#39;smartfeed:all&#39;&#xA;    config:&#xA;      dir: /home/www/microblog.peterstuifzand.nl/htdocs&#xA;      skin: microblog&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I made a little change to the default skin. It showed an url to the feed from&#xA;which the entry came, but I don&amp;rsquo;t need it, because I only have one feed from&#xA;which all entries come.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Will HTTP Auth stop comment spam?</title>
      <link>https://peterstuifzand.nl/2007/03/17/will-http-auth-stop-comment-spam/</link>
      <pubDate>Sat, 17 Mar 2007 09:25:44 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/03/17/will-http-auth-stop-comment-spam/</guid>
      <description>&lt;p&gt;As an experiment I will try HTTP authentication to stop comment spam. The&#xA;password is shown next to the chat button. I hope people will understand what&#xA;to do. I also hope it will stop comment spam.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Big Brother State</title>
      <link>https://peterstuifzand.nl/2007/03/11/big-brother-state/</link>
      <pubDate>Sun, 11 Mar 2007 20:13:31 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/03/11/big-brother-state/</guid>
      <description>&lt;p&gt;A short animation about surveillance techniques used. The animation can be&#xA;found at &lt;a href=&#34;http://www.bigbrotherstate.com&#34;&gt;Big Brother State&lt;/a&gt; in multiple&#xA;formats under a nice Creative Common license.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Power law tag size</title>
      <link>https://peterstuifzand.nl/2007/03/10/power-law-tag-size/</link>
      <pubDate>Sat, 10 Mar 2007 12:30:33 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/03/10/power-law-tag-size/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.wijvervelenons.nl&#34;&gt;Wij vervelen ons&lt;/a&gt; is my social concert calendar.&#xA;It&amp;rsquo;s a calendar where people can put their favorite concerts. A few weeks ago I&#xA;added a tag cloud. The tag cloud looked really nice because the tag with the&#xA;most concerts was bigger than other tags. I hadn&amp;rsquo;t thought this thing out, so there&#xA;was a hand coded 12-line if block that gave each tag a nice size and padding.&#xA;This block didn&amp;rsquo;t use the max count of concerts so there was a possibility that&#xA;that more tags got the huge size.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Craft your subject line</title>
      <link>https://peterstuifzand.nl/2007/02/24/craft-your-subject-line/</link>
      <pubDate>Sat, 24 Feb 2007 09:42:28 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/02/24/craft-your-subject-line/</guid>
      <description>&lt;p&gt;It looks like it still is to difficult to write a good subject line. Use words&#xA;that mean something like names, places, dates or other nouns. It should be to&#xA;the point and short. More information on &lt;a href=&#34;http://blog.guykawasaki.com/2006/02/the_effective_e.html&#34;&gt;The Effective E-mailer&lt;/a&gt; or &lt;a href=&#34;https://peterstuifzand.nl/email.html&#34;&gt;my page about sending emails&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I have a HTML feed available now</title>
      <link>https://peterstuifzand.nl/2007/02/17/i-have-a-html-feed-available-now/</link>
      <pubDate>Sat, 17 Feb 2007 17:41:33 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/02/17/i-have-a-html-feed-available-now/</guid>
      <description>&lt;p&gt;This afternoon I created a &lt;a href=&#34;feed.html&#34;&gt;feed&lt;/a&gt; in &lt;a&#xA;href=&#34;http://www.w3.org/Markup/HTML&#34;&gt;HTML&lt;/a&gt;. It&amp;rsquo;s not useful yet, because the&#xA;only useragent that will be able to read it is your webbrowser.&lt;/p&gt;&#xA;&lt;p&gt;Of course curl and wget should work too, but they are not as useful for reading&#xA;webnews. &lt;strong&gt;Less code, more content&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Drawing 2</title>
      <link>https://peterstuifzand.nl/2007/02/15/drawing-2/</link>
      <pubDate>Thu, 15 Feb 2007 22:55:59 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/02/15/drawing-2/</guid>
      <description>&lt;img alt=&#34;A drawing of a man&#34; src=&#34;https://peterstuifzand.nl/images/knakker.png&#34; width=&#34;400px&#34;/&gt;</description>
    </item>
    <item>
      <title>Drawing 1</title>
      <link>https://peterstuifzand.nl/2007/02/15/drawing-1/</link>
      <pubDate>Thu, 15 Feb 2007 22:29:21 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/02/15/drawing-1/</guid>
      <description>&lt;img alt=&#34;A picture of an old man, drawn by me.&#34; src=&#34;https://peterstuifzand.nl/images/oudeman.png&#34; width=&#34;400px&#34;/&gt;</description>
    </item>
    <item>
      <title>At last: normal URLs for entries</title>
      <link>https://peterstuifzand.nl/2007/02/03/at-last-normal-urls-for-entries/</link>
      <pubDate>Sat, 03 Feb 2007 21:52:48 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/02/03/at-last-normal-urls-for-entries/</guid>
      <description>&lt;p&gt;At last my blogging software creates entries with normal, human-readable URLs.&#xA;It was a simple change; it seems kinda strange that I haven&amp;rsquo;t changed it&#xA;earlier.&lt;/p&gt;</description>
    </item>
    <item>
      <title>We need an extensible remote control for N800 and 770</title>
      <link>https://peterstuifzand.nl/2007/01/31/we-need-an-extensible-remote-control-for-n800-and-770/</link>
      <pubDate>Wed, 31 Jan 2007 09:46:55 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/01/31/we-need-an-extensible-remote-control-for-n800-and-770/</guid>
      <description>&lt;p&gt;It looks like big buttons are in. Especially big buttons, that can be&#xA;&lt;a href=&#34;http://www.artlebedev.com/everything/optimus-mini/&#34;&gt;changed&lt;/a&gt; and &lt;a href=&#34;http://www.apple.com/iphone/&#34;&gt;be&#xA;pressed&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The Nokia 770 (and N800 now too) needs an extensible remote control&#xA;application, that will show buttons and start applications. It should be&#xA;possible to start and stop music, choose a next song, call websites via wifi,&#xA;open applications, connect my bluetooth connection. Just with a press of a&#xA;button.&lt;/p&gt;&#xA;&lt;p&gt;Is there anyone that knows an applications like this for the Nokia 770, or is&#xA;there someone who knows how to write one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Just one space</title>
      <link>https://peterstuifzand.nl/2007/01/25/just-one-space/</link>
      <pubDate>Thu, 25 Jan 2007 22:15:32 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/01/25/just-one-space/</guid>
      <description>&lt;p&gt;I always wondered why &lt;a href=&#34;http://www.vim.org&#34;&gt;vim&lt;/a&gt; didn&amp;rsquo;t have the&#xA;&lt;code&gt;just-one-space&lt;/code&gt; function.  It&amp;rsquo;s one of the most useful functions&#xA;that is available during coding.&lt;/p&gt;&#xA;&lt;p&gt;So today I tried to write one myself, the newsgroups and searchengines didn&amp;rsquo;t&#xA;come up with something good. First of course it is a good idea to understand&#xA;the effect of this operation. The just-one-space function removes all&#xA;whitespace around the cursor and replaces it with one space character.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to properly peel a banana</title>
      <link>https://peterstuifzand.nl/2007/01/08/how-to-properly-peel-a-banana/</link>
      <pubDate>Mon, 08 Jan 2007 21:15:42 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2007/01/08/how-to-properly-peel-a-banana/</guid>
      <description>&lt;p&gt;It looks like the internet is a giant lesson in&#xA;&lt;a href=&#34;http://www.wikipedia.org/wiki/Synchronicity&#34;&gt;synchronicity&lt;/a&gt;. Somehow it isn&amp;rsquo;t&#xA;strange that the internet of all places is the place where all these&#xA;synchronous things happen. There are so many people already in there.&lt;/p&gt;&#xA;&lt;p&gt;Last week I was boring my colleague about how to peel a banana. And today I&#xA;read an blog entry about it: &lt;a href=&#34;http://www.osenoa.com/log/2007/01/08/item/70&#34;&gt;How to properly peel a&#xA;banana&lt;/a&gt; The author did a bit more&#xA;research than I did and found this &lt;a href=&#34;http://www.johndilworth.com/5-&#34;&gt;How to Eat a Banana: a Design&#xA;lesson&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Top perl Modules of 2006</title>
      <link>https://peterstuifzand.nl/2006/12/30/top-perl-modules-of-2006/</link>
      <pubDate>Sat, 30 Dec 2006 16:32:15 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/12/30/top-perl-modules-of-2006/</guid>
      <description>&lt;p&gt;I was thinking about writing a list of the perl modules that I used most often,&#xA;liked best or somehow used. Some are golden oldies, others are new this year.&#xA;There is no order in the list, so no Top 10 or anything.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;DBIx::DWIW&lt;/strong&gt; this is a module that helps writing database code. It&#xA;contains methods for retrieving data and executing query&amp;rsquo;s. It removes&#xA;almost all of the repetitive database coding work. It&amp;rsquo;s nice to be able to&#xA;subclass and create a file with the configuration of the databases.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using ruby to create vim extensions</title>
      <link>https://peterstuifzand.nl/2006/12/30/using-ruby-to-create-vim-extensions/</link>
      <pubDate>Sat, 30 Dec 2006 16:16:53 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/12/30/using-ruby-to-create-vim-extensions/</guid>
      <description>&lt;p&gt;Today a simple &lt;a href=&#34;http://www.vim.org&#34;&gt;vim&lt;/a&gt; plugin is featured on the vim homepage:&#xA;&lt;a href=&#34;http://www.vim.org/scripts/script.php?script_id=1748&#34;&gt;toggle_word.vim&lt;/a&gt;. I&#xA;think the plugin in itself is not that useful, but it seems to be a good&#xA;starting point for ruby programmers who want to create their own vim plugin and&#xA;don&amp;rsquo;t know where to start.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I got a new keyboard</title>
      <link>https://peterstuifzand.nl/2006/12/29/i-got-a-new-keyboard/</link>
      <pubDate>Fri, 29 Dec 2006 22:19:13 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/12/29/i-got-a-new-keyboard/</guid>
      <description>&lt;p&gt;For the first time in years I have my own&#xA;&lt;a href=&#34;http://www.logitech.com/index.cfm/products/details/BE/NL,CRID=718,CONTENTID=10132&#34;&gt;split layout keyboard&lt;/a&gt;. I works&#xA;really great; it&amp;rsquo;s the same as the one that I use my job. My typing speed is actually increasing with this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Slowchat</title>
      <link>https://peterstuifzand.nl/2006/12/05/slowchat/</link>
      <pubDate>Tue, 05 Dec 2006 23:12:17 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/12/05/slowchat/</guid>
      <description>&lt;p&gt;Hmm slowchat. Why would anyone want it? I created this little piece of slowchat&#xA;goodness on the right side here.&lt;/p&gt;&#xA;&lt;p&gt;Post some nice messages. The winter is coming and it could be cold. Show me&#xA;some love :).&lt;/p&gt;</description>
    </item>
    <item>
      <title>RSS feeds are not a problem anymore</title>
      <link>https://peterstuifzand.nl/2006/11/15/rss-feeds-are-not-a-problem-anymore/</link>
      <pubDate>Wed, 15 Nov 2006 22:14:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/11/15/rss-feeds-are-not-a-problem-anymore/</guid>
      <description>&lt;p&gt;For the last few months I was using Plagger to read RSS feeds. These feeds&#xA;would be downloaded and send as e-mail to my gmail account. There was not a lot&#xA;wrong with this. But as always there was a better way.&lt;/p&gt;&#xA;&lt;p&gt;A few days ago I changed &lt;a href=&#34;http://www.plagger.org&#34;&gt;Plagger&lt;/a&gt; to check twice a&#xA;day. Once around 9:00 when I arrive at work and once at around 19:00, which is&#xA;when I&amp;rsquo;m back home and sitting behind my computer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Subversion diff inside Vim</title>
      <link>https://peterstuifzand.nl/2006/11/06/subversion-diff-inside-vim/</link>
      <pubDate>Mon, 06 Nov 2006 21:49:55 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/11/06/subversion-diff-inside-vim/</guid>
      <description>&lt;p&gt;I like using vim. It is simple want it to, but has a lot of possibities when&#xA;you need them. Like Perl in vim simple things are easy and hard things are&#xA;possible. Like the following piece of code.&lt;/p&gt;&#xA;&lt;p&gt;I wanted to see a diff of my current version and the version in my svn&#xA;repository.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;function Svndiff()&#xA;    let file = system(&#39;tempfile&#39;)&#xA;    execute &#39;silent !svn cat &#39; expand(&amp;quot;%&amp;quot;) &#39; &amp;gt; &#39; file&#xA;    execute &#39;silent vertical diffsplit &#39; file&#xA;endfunction&#xA;&#xA;map &amp;lt;F4&amp;gt; :call Svndiff()&amp;lt;CR&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Of course the &lt;code&gt;&amp;lt;F4&amp;gt;&lt;/code&gt; binding is like icing on the already delicious cake. The&#xA;only thing that I&amp;rsquo;m not happy about is the problem with the tempfile, that will&#xA;stay open after you&amp;rsquo;ve opened the split screen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>External programs in Vim</title>
      <link>https://peterstuifzand.nl/2006/11/01/external-programs-in-vim/</link>
      <pubDate>Wed, 01 Nov 2006 22:12:45 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/11/01/external-programs-in-vim/</guid>
      <description>&lt;p&gt;When you&amp;rsquo;re typing some text in Vim, you will sometimes need a piece of text&#xA;that is easy to generate on the command line or with a simple perl script. Maybe&#xA;you want to insert the current date, a simple calendar or a list of day names.&lt;/p&gt;&#xA;&lt;p&gt;Don&amp;rsquo;t you worry there&amp;rsquo;s a simple vim command that will help you with this. Here&#xA;are some examples. From simple to complex.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Insert the current date&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nokia 770 is back</title>
      <link>https://peterstuifzand.nl/2006/10/19/nokia-770-is-back/</link>
      <pubDate>Thu, 19 Oct 2006 20:00:16 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/10/19/nokia-770-is-back/</guid>
      <description>&lt;p&gt;A few days ago I received a Nokia 770 back. It&amp;rsquo;s not the same as I sent. The&#xA;one that I send had a gray/white screen. Which wasn&amp;rsquo;t very nice. The new one&#xA;has a working screen and the 2006 version of the firmware. It works great.&#xA;Especially the new thumb keyboard.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My very own ticket system</title>
      <link>https://peterstuifzand.nl/2006/10/18/my-very-own-ticket-system/</link>
      <pubDate>Wed, 18 Oct 2006 21:38:57 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/10/18/my-very-own-ticket-system/</guid>
      <description>&lt;p&gt;I created my first Ticket System. It may look a bit like&#xA;&lt;a href=&#34;http://www.bestpractical.com/rt&#34;&gt;RT&lt;/a&gt;, but that doesn&amp;rsquo;t matter to me. The code&#xA;was written from scratch in about 12 hours.&lt;/p&gt;&#xA;&lt;p&gt;I used &lt;a href=&#34;http://search.cpan.org/~jzawodny/DBIx-DWIW-0.44/&#34;&gt;DBIx::DWIW&lt;/a&gt;,&#xA;&lt;a href=&#34;http://search.cpan.org/~samtregar/HTML-Template-2.8/&#34;&gt;HTML::Template&lt;/a&gt;,&#xA;&lt;a href=&#34;http://search.cpan.org/~markstos/CGI-Session-4.14/&#34;&gt;CGI::Session&lt;/a&gt; and&#xA;&lt;a href=&#34;http://darcs.peterstuifzand.nl/cgi-bin/darcs.cgi/webcontroller/&#34;&gt;Web::Controller&lt;/a&gt;.&#xA;This last module was created by myself, to make it easier to create&#xA;web applications. The other modules weren&amp;rsquo;t written by me, but did make it&#xA;easier to create this application.&lt;/p&gt;&#xA;&lt;p&gt;I created a &lt;a href=&#34;http://ticket-demo.stuifzand.eu&#34;&gt;demo version of the ticket&#xA;system&lt;/a&gt;. You can login using:&#xA;&lt;b&gt;demo/demo&lt;/b&gt;. So give it a try and send me &lt;a href=&#34;mailto:ticket-demo@peterstuifzand.nl&#34;&gt;your&#xA;opinions&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Birthday 23</title>
      <link>https://peterstuifzand.nl/2006/10/03/birthday-23/</link>
      <pubDate>Tue, 03 Oct 2006 07:35:27 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/10/03/birthday-23/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s my birthday again. I&amp;rsquo;m 23 now. I bought some pies for the people at my&#xA;working place; &amp;lsquo;Herfstvlaai&amp;rsquo; and &amp;lsquo;Appelkruimeltaart&amp;rsquo;. So there are a lot&#xA;of apples in there.  It&amp;rsquo;s early, but I already have my first present. It&amp;rsquo;s a&#xA;book called &lt;a href=&#34;http://www.gladwell.com/tippingpoint/&#34;&gt;the Tipping Point&lt;/a&gt;. I&#xA;haven&amp;rsquo;t read it yet, so I can&amp;rsquo;t tell exactly what it&amp;rsquo;s about. You should read&#xA;the website for that.&lt;/p&gt;&#xA;&lt;p&gt;I hope the rest of the books will arrive today, but you can&amp;rsquo;t be to sure about&#xA;things like that; so probably it will arrive this week.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Impossible? Now is it?</title>
      <link>https://peterstuifzand.nl/2006/08/27/impossible-now-is-it/</link>
      <pubDate>Sun, 27 Aug 2006 20:57:32 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/08/27/impossible-now-is-it/</guid>
      <description>&lt;p&gt;&amp;ldquo;The person who says it cannot be done should not interrupt the person doing it.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash; Chinese proverb&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lowlands was fun</title>
      <link>https://peterstuifzand.nl/2006/08/22/lowlands-was-fun/</link>
      <pubDate>Tue, 22 Aug 2006 21:23:47 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/08/22/lowlands-was-fun/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s a shame that Lowlands only lasts for five days. That is about the most&#xA;one can get out of it. I saw some bands but not as many as I would have liked,&#xA;because of a stupid programming error (not like the ones I usually make).  Of&#xA;the four bands that I wanted to see, three  where programmed on the same day&#xA;at about the same time: Pennywise, &lt;a href=&#34;http://www.nomadesetskaetera.net/&#34;&gt;Nomades et&#xA;Skaetera&lt;/a&gt; and Danko Jones. But&#xA;that doesn&amp;rsquo;t matter; I saw Pennywise and Danko Jones and they both played a&#xA;great show (Pennywise was better, actually).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making modification to dwm is really easy</title>
      <link>https://peterstuifzand.nl/2006/08/16/making-modification-to-dwm-is-really-easy/</link>
      <pubDate>Wed, 16 Aug 2006 21:27:19 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/08/16/making-modification-to-dwm-is-really-easy/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.10kloc.org/dwm&#34;&gt;Dwm&lt;/a&gt; is the &amp;lsquo;dynamic window manager&amp;rsquo; and is&#xA;written in only 2000 lines of C code. This is quite nice. The size and the&#xA;quality of the code is really good, so its really easy for me to make some&#xA;modifications.&lt;/p&gt;&#xA;&lt;p&gt;The first modifications that I made, where for keys to start programs. F2 now&#xA;starts the terminal and F4 starts a webbrowser. F3 starts&#xA;&lt;a href=&#34;http://www.bazon.net/mishoo/gmrun.epl&#34;&gt;gmrun&lt;/a&gt;, but I&amp;rsquo;m not sure if I need, or&#xA;that I like it. Some people use it, some people like it, but most of the time&#xA;I just use a terminal. Its already open, so. The thing is: in Ion3, F3 opens a&#xA;query window just like gmrum and lets me start a program.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lowlands is only one day away</title>
      <link>https://peterstuifzand.nl/2006/08/16/lowlands-is-only-one-day-away/</link>
      <pubDate>Wed, 16 Aug 2006 15:44:30 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/08/16/lowlands-is-only-one-day-away/</guid>
      <description>&lt;p&gt;Tommorrow around this time I will be almost one my way to go to&#xA;&lt;a href=&#34;http://www.lowlands.nl&#34;&gt;Lowlands&lt;/a&gt;. Lowlands is a festival with all kinds of&#xA;different music. The big names for me this year are &lt;a href=&#34;http://www.dankojones.com/&#34;&gt;Danko&#xA;Jones&lt;/a&gt;, &lt;a href=&#34;http://www.pennywisdom.com/&#34;&gt;Pennywise&lt;/a&gt;&#xA;and &lt;a href=&#34;http://www.lessthanjake.com/&#34;&gt;Less than Jake&lt;/a&gt;. Of course there are many&#xA;bands that I&amp;rsquo;m going to see, but which I not yet know.&lt;/p&gt;&#xA;&lt;p&gt;Last year I didn&amp;rsquo;t go, because it somehow had a different thing I had to spend&#xA;time on. So let&amp;rsquo;s see what&amp;rsquo;s going to happend this year.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another window manager</title>
      <link>https://peterstuifzand.nl/2006/08/16/another-window-manager/</link>
      <pubDate>Wed, 16 Aug 2006 15:36:31 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/08/16/another-window-manager/</guid>
      <description>&lt;p&gt;It seems I&amp;rsquo;m always on the lookout for new windowmanagers. Last year started&#xA;using Ion3, which I really like. Yesterday I saw a windowmanager called&#xA;&lt;a href=&#34;http://10kloc.org/dwm/&#34;&gt;dwm&lt;/a&gt; and it is written in about 2000 lines of C code.&#xA;This is not useful in itself, but it makes it easier to understand the code&#xA;and make some small modifications without actually understanding all of it.&#xA;And 2000 lines isn&amp;rsquo;t that much either.&lt;/p&gt;&#xA;&lt;p&gt;Configuration of dwm is done through editing the source code of the program.&#xA;Which is actually quite a simple way to make changes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Traveling is fun</title>
      <link>https://peterstuifzand.nl/2006/08/14/traveling-is-fun/</link>
      <pubDate>Mon, 14 Aug 2006 22:47:04 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/08/14/traveling-is-fun/</guid>
      <description>&lt;p&gt;Sunday I returned from my nine day long trip through Europe. This is one big&#xA;lie, because Europe is bigger than just Brussels, Paris and some parts of the&#xA;Netherlands.&lt;/p&gt;&#xA;&lt;p&gt;Still, such a trip can be a fun thing to do. I had a few to do it, so its not&#xA;that big of a problem. Still I like to make a bigger trip next year. Still&#xA;trough Europe, but a few more weeks and a few more countries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deploying web applications</title>
      <link>https://peterstuifzand.nl/2006/07/26/deploying-web-applications/</link>
      <pubDate>Wed, 26 Jul 2006 21:43:41 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/07/26/deploying-web-applications/</guid>
      <description>&lt;p&gt;Deploying stuff is hard enough already. And so it shouldn&amp;rsquo;t be made harder by&#xA;code that isn&amp;rsquo;t in source code repositories. Read my &lt;a href=&#34;http://www.stuifzand.eu/articles/2006/07/deploy&#34;&gt;latest&#xA;article&lt;/a&gt; about these kinda&#xA;things and some ways to make that whole thing a bit better.&lt;/p&gt;&#xA;&lt;p&gt;The two things that I forgot to say are:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;make it repeatable,&lt;/li&gt;&#xA;&lt;li&gt;make in one command.&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Plagger: a platform for feeds</title>
      <link>https://peterstuifzand.nl/2006/07/16/plagger-a-platform-for-feeds/</link>
      <pubDate>Sun, 16 Jul 2006 22:24:13 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/07/16/plagger-a-platform-for-feeds/</guid>
      <description>&lt;p&gt;While I was reading the &lt;a href=&#34;http://planet.perl.org&#34;&gt;Perl planet&lt;/a&gt; I found a link to&#xA;a project called &lt;a href=&#34;http://www.plagger.org&#34;&gt;Plagger&lt;/a&gt;. It&amp;rsquo;s system for creating,&#xA;changing and publishing feeds.&lt;/p&gt;&#xA;&lt;p&gt;To create a new &amp;lsquo;program&amp;rsquo;, you need to make a config file. The example&#xA;directory includes a bloglines2gmail config and a config for a &amp;lsquo;planet&amp;rsquo;&#xA;aggregator. Both are less than twenty lines of configuration. It&amp;rsquo;s really easy&#xA;to create your own feeds with this.&lt;/p&gt;&#xA;&lt;p&gt;Be sure to check out the presentations on the website, for an explaination of&#xA;Plagger (the documentation is a bit light).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Some nice things about the Nokia 770</title>
      <link>https://peterstuifzand.nl/2006/07/01/some-nice-things-about-the-nokia-770/</link>
      <pubDate>Sat, 01 Jul 2006 12:09:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/07/01/some-nice-things-about-the-nokia-770/</guid>
      <description>&lt;p&gt;The Nokia 770 has Bluetooth, which allowed (see previous post) me to connect to&#xA;the internet. The connection to internet can be created in two ways, one was by&#xA;using my phone (A Nokia 6021), which worked without any problem (except for the&#xA;money bit), or by using a bluetooth attached to a linux PC with some iptables&#xA;magic.&lt;/p&gt;&#xA;&lt;p&gt;Both ways work like a charm, but the second one is a bit difficult to&#xA;configure. It would be nice if the Bluetooth via the PC would as simple as&#xA;Bluetooth via a phone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nokia is broken</title>
      <link>https://peterstuifzand.nl/2006/07/01/nokia-is-broken/</link>
      <pubDate>Sat, 01 Jul 2006 11:39:24 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/07/01/nokia-is-broken/</guid>
      <description>&lt;p&gt;Even before I had the time to write about the arrival of the Nokia 770, with&#xA;some nice pictures, it is already broken. It seems like it&amp;rsquo;s a common problem&#xA;with newer devices.&lt;/p&gt;&#xA;&lt;p&gt;The problem is that the screen is white with gray lines. I couldn&amp;rsquo;t find a&#xA;picture of it on the web, so I will post a picture of my own device. See:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://gallery.stuifzand.eu/2006-07-01.html&#34;&gt;&lt;img src=&#34;http://gallery.stuifzand.eu/th/p1000612.jpg&#34; alt=&#34;Broken Nokia 770&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;So this means that I&amp;rsquo;m not that happy, at the moment. Still, this device is&#xA;going back to Nokia and I hope they will be able to fix it, because this device&#xA;is so nice, and it works great.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Nokia 770</title>
      <link>https://peterstuifzand.nl/2006/06/28/a-nokia-770/</link>
      <pubDate>Wed, 28 Jun 2006 21:15:55 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/06/28/a-nokia-770/</guid>
      <description>&lt;p&gt;I bought a &lt;a href=&#34;http://www.nokia.com/770&#34;&gt;Nokia 770&lt;/a&gt;. Hopefully it will arrive&#xA;tomorrow. I don&amp;rsquo;t what to write, yet. But I will some more to say, when&#xA;I have my own 770 in my hands.&lt;/p&gt;&#xA;&lt;p&gt;At the moment perhaps, you should take a look at &lt;a href=&#34;http://kla.as&#34;&gt;kla.as for Nokia770 screenshots&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A clipboard webservice</title>
      <link>https://peterstuifzand.nl/2006/06/05/a-clipboard-webservice/</link>
      <pubDate>Mon, 05 Jun 2006 15:43:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/06/05/a-clipboard-webservice/</guid>
      <description>&lt;p&gt;This is my first test with my new&#xA;&lt;a href=&#34;http://cb.stuifzand.eu&#34;&gt;webbased clipboard system&lt;/a&gt;, everybody can copy a piece&#xA;text to the server. When you want to paste the text again, you can do that from&#xA;any computer that has an internet connection. The last thing you need is the&#xA;code that you got when you copied the text.&lt;/p&gt;&#xA;&lt;p&gt;One thing left to say: don&amp;rsquo;t send in stuff that you don&amp;rsquo;t want anyone else to&#xA;read. The text is saved for about one hour (actually between one and&#xA;one-and-a-half hour). Alsa anyone with enough time on his hands could go and&#xA;guess the codes; so don&amp;rsquo;t do it, or don&amp;rsquo;t care; both will work. I&amp;rsquo;m not&#xA;responsible and warned you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My new photo gallery</title>
      <link>https://peterstuifzand.nl/2006/06/04/my-new-photo-gallery/</link>
      <pubDate>Sun, 04 Jun 2006 21:02:10 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/06/04/my-new-photo-gallery/</guid>
      <description>&lt;p&gt;Just two weeks ago I bought a new digital camera. It&amp;rsquo;s a Panasonic DMC-TZ1,&#xA;which I&amp;rsquo;m pretty happy with. The nice thing about this camera is, that I can&#xA;take pictures with it.&lt;/p&gt;&#xA;&lt;p&gt;The pictures I took are visible on my new &lt;a&#xA;href=&#34;http://gallery.stuifzand.eu&#34;&gt;photo gallery&lt;/a&gt;. So take a look. Obvious&#xA;about the pictures is that I still have a lot to learn about taking pictures&#xA;in dark places.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A new website about stuff</title>
      <link>https://peterstuifzand.nl/2006/05/07/a-new-website-about-stuff/</link>
      <pubDate>Sun, 07 May 2006 17:43:58 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/05/07/a-new-website-about-stuff/</guid>
      <description>&lt;p&gt;A week ago I created &lt;a href=&#34;http://www.stuifzand.eu&#34;&gt;a website about stuff&lt;/a&gt;. The&#xA;layout is and will stay as simple as it is at this moment. At the moment it&amp;rsquo;s&#xA;mostly programming related articles. But one could expect more and different&#xA;texts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Een fijne zondagmiddag</title>
      <link>https://peterstuifzand.nl/2006/04/20/een-fijne-zondagmiddag/</link>
      <pubDate>Thu, 20 Apr 2006 22:40:56 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/04/20/een-fijne-zondagmiddag/</guid>
      <description>&lt;p&gt;This sunday there are a few bands coming to Sneek. It shall be a pretty nice&#xA;sunday afternoon. At least much better than the that you could normally do.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Bands:&lt;/strong&gt; Roger Miret and the Disasters, Demented Are Go, The Bones,&#xA;Heartbreak Engines o.a. Some people will call it a good warming-up for&#xA;&lt;a href=&#34;http://www.groezrock.be&#34;&gt;Groezrock&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>This stuff is pretty brilliant</title>
      <link>https://peterstuifzand.nl/2006/04/20/this-stuff-is-pretty-brilliant/</link>
      <pubDate>Thu, 20 Apr 2006 22:35:41 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/04/20/this-stuff-is-pretty-brilliant/</guid>
      <description>&lt;p&gt;This one is about&#xA;&lt;a href=&#34;http://www.bearskinrug.co.uk/_articles/2006/04/06/the_birdhouse/&#34;&gt;birds&lt;/a&gt;. Look&#xA;around the archive for more of this kind of comics. Especially the comics and&#xA;drawings about the monkey named Mojo, are worth a good look. Check it out!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Groezrock 2006 is not that far anymore</title>
      <link>https://peterstuifzand.nl/2006/04/18/groezrock-2006-is-not-that-far-anymore/</link>
      <pubDate>Tue, 18 Apr 2006 21:36:03 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/04/18/groezrock-2006-is-not-that-far-anymore/</guid>
      <description>&lt;p&gt;There are only two weeks left till &lt;a href=&#34;http://www.groezrock.be/&#34;&gt;Groezrock 2006&lt;/a&gt;&#xA;starts. And the program is pretty amazing:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;MAINSTAGE  Friday, 28th of April 2006 - Doors : 17:30 u. ...:&#xA;&#xA;    17.45 u. 18.10 u. : Say Anything&#xA;    18.30 u. 19.00 u. : Aiden&#xA;    19.20 u. 19.55 u. : Silverstein&#xA;    20.15 u. 20.55 u. : UnderOath&#xA;    21.15 u. 22.00 u. : Goldfinger&#xA;    22.20 u. 23.10 u. : Thrice&#xA;    23.30 u. 00.30 u. : Taking Back Sunday&#xA;&#xA;SECOND STAGE  Saturday, 29th of April 2006 - Doors : 10:00 u. ...:&#xA;&#xA;    11.00 u. 11.30 u. : The Banner&#xA;    11.55 u. 12.25 u. : The Spirit That Guides Us&#xA;    12.50 u. 13.25 u. : Officer Jones &amp;amp; HPCP&#xA;    13.50 u. 14.30 u. : The Maple Room&#xA;    15.00 u. 15.40 u. : Bold&#xA;    16.10 u. 16.50 u. : Himsa&#xA;    17.20 u. 18.05 u. : Raised Fist&#xA;    18.35 u. 19.20 u. : Comeback Kid&#xA;    20.00 u. 20.45 u. : Born From Pain&#xA;    21.30 u. 22.20 u. : All Out War&#xA;    23.00 u. 23.50 u. : Path Of Resistance&#xA;&#xA;MAINSTAGE  Saturday, 29th of April 2006 - Doors : 10:00 u. ...:&#xA;&#xA;    10.30 u. 11.00 u. : Latterman&#xA;    11.20 u. 11.55 u. : A Wilhelm Scream&#xA;    12.15 u. 12.50 u. : Peter Pan Speedsrock&#xA;    13.10 u. 13.50 u. : The Lawrence Arms&#xA;    14.15 u. 15.00 u. : Death By Stereo&#xA;    15.25 u. 16.10 u. : Anti-Flag&#xA;    16.35 u. 17.20 u. : No Use For A Name&#xA;    17.45 u. 18.35 u. : Less Than Jake&#xA;    19.00 u. 20.00 u. : Sick Of It All&#xA;    *20.30 u. 21.30 u. : Me First &amp;amp; The Gimme Gimmes*&#xA;    *22.00 u. 23.00 u. : Dropkick Murphys*&#xA;    23.30 u. 00.30 u. : Bad Religion&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;More info can of course be found on&#xA;&lt;a href=&#34;http://www.groezrock.be&#34;&gt;http://www.groezrock.be&lt;/a&gt;. So take a look. And go.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EU registration stuff</title>
      <link>https://peterstuifzand.nl/2006/04/08/eu-registration-stuff/</link>
      <pubDate>Sat, 08 Apr 2006 10:14:27 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2006/04/08/eu-registration-stuff/</guid>
      <description>&lt;p&gt;Yesterday was a crazy day. It was the third phase of the .EU domain&#xA;registrations and everybody could try and get a domain. Not everyone got what&#xA;they wanted but I am still very happy with the two domains I got:&#xA;&lt;a href=&#34;http://www.stuifzand.eu&#34;&gt;stuifzand.eu&lt;/a&gt; and &lt;a href=&#34;http://www.hobby-koopjes.eu&#34;&gt;hobby-koopjes.eu&lt;/a&gt;. The last one is of course a little&#xA;present for my father and will become the european version of the webshop&#xA;&lt;a href=&#34;http://www.hobby-koopjes.nl&#34;&gt;hobby-koopjes.nl&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;After this day, normal registrations will start, but almost all good&#xA;domainnames are already gone (about 400_000).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Even my homebrewn comments are not comments spam free</title>
      <link>https://peterstuifzand.nl/2006/03/24/even-my-homebrewn-comments-are-not-comments-spam-free/</link>
      <pubDate>Fri, 24 Mar 2006 22:44:18 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/03/24/even-my-homebrewn-comments-are-not-comments-spam-free/</guid>
      <description>&lt;p&gt;While I was working on the code that works with my comments, some bot posted a&#xA;spam comment. I thought that would only work on weblogs that use popular software.&#xA;Maybe my site uses names that are obvious enough for a bot to find out.&lt;/p&gt;&#xA;&lt;p&gt;As it&amp;rsquo;s not possible to post html or other markup to my comments, the entry is&#xA;show as text and isn&amp;rsquo;t harmful (or useful) to anyone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Synchronization for my phone</title>
      <link>https://peterstuifzand.nl/2006/03/18/synchronization-for-my-phone/</link>
      <pubDate>Sat, 18 Mar 2006 22:57:17 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/03/18/synchronization-for-my-phone/</guid>
      <description>&lt;p&gt;Now that I have &lt;a href=&#34;http://www.peterstuifzand.nl/20060311211828.html&#34;&gt;this nice&#xA;phone&lt;/a&gt;, I&amp;rsquo;m looking for a way&#xA;to synchronize my contacts, calendar items and todo lists. On Windows there is the&#xA;Nokia PC suite, but that won&amp;rsquo;t work on linux.&lt;/p&gt;&#xA;&lt;p&gt;I already found &lt;a href=&#34;http://gnokii.org/&#34;&gt;gnokii&lt;/a&gt; and &lt;a href=&#34;http://www.multisync.org/&#34;&gt;Multisync&lt;/a&gt;,&#xA;but the first is not usable enough and I can&amp;rsquo;t get the second working with my phone.&#xA;The first problem could probably be solved by using some scripts, but I was looking for&#xA;an easier solution, like a one click synchronize.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aliennation is nominated for best band of March</title>
      <link>https://peterstuifzand.nl/2006/03/18/aliennation-is-nominated-for-best-band-of-march/</link>
      <pubDate>Sat, 18 Mar 2006 22:30:19 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/03/18/aliennation-is-nominated-for-best-band-of-march/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.aliennationcrew.com&#34;&gt;Aliennation&lt;/a&gt; is nominated for &lt;a href=&#34;http://www.thegauntlet.com/mmm/index.php?sid=2&#34;&gt;March Metal&#xA;Madness&lt;/a&gt; and needs your vote&#xA;to get to the next round.  So wait no longer and go take a look and listen to&#xA;the songs on the website and cast your vote.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I have a job</title>
      <link>https://peterstuifzand.nl/2006/03/15/i-have-a-job/</link>
      <pubDate>Wed, 15 Mar 2006 21:52:27 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/03/15/i-have-a-job/</guid>
      <description>&lt;p&gt;Ok, so I already have a job for about three weeks, but still. It&amp;rsquo;s great. All&#xA;day long Perl programming. What more can one ask for?&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m not sure I can tell about the company I work for, so I won&amp;rsquo;t.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My new telephone</title>
      <link>https://peterstuifzand.nl/2006/03/11/my-new-telephone/</link>
      <pubDate>Sat, 11 Mar 2006 21:18:28 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/03/11/my-new-telephone/</guid>
      <description>&lt;p&gt;For the first time in two years I have a phone. It&amp;rsquo;s a &lt;a&#xA;href=&#34;http://www.nokia.co.uk/nokia/0,,71687,00.html&#34;&gt;Nokia 6021&lt;/a&gt;. I would&#xA;like to try and write some software for it. Maybe it&amp;rsquo;s possible, or maybe not.&lt;/p&gt;&#xA;&lt;p&gt;The phone has Bluetooth support and is actually quite simple. So that&amp;rsquo;s good. I&#xA;hope it will work with linux. You never know.&lt;/p&gt;&#xA;&lt;p&gt;When you read this and you think you need my number, please &lt;a&#xA;href=&#34;mailto:gsm@peterstuifzand.nl&#34;&gt;send me an e-mail&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Added comments to the weblog</title>
      <link>https://peterstuifzand.nl/2006/02/19/added-comments-to-the-weblog/</link>
      <pubDate>Sun, 19 Feb 2006 17:15:17 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/02/19/added-comments-to-the-weblog/</guid>
      <description>&lt;p&gt;Ok, I think it&amp;rsquo;s time for this. I added the comments feature to my website&#xA;software. It works really great now.&lt;/p&gt;&#xA;&lt;p&gt;It was a problem when I couldn&amp;rsquo;t add comments, because the pages are static. It&#xA;can be made, so I did.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Graduated</title>
      <link>https://peterstuifzand.nl/2006/02/04/graduated/</link>
      <pubDate>Sat, 04 Feb 2006 13:50:35 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/02/04/graduated/</guid>
      <description>&lt;p&gt;Yesterday was my final presentation about the Home Automation project. I&#xA;graduated. So that&amp;rsquo;s nice. Now I have to find some kind of income.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A new website: Imba-nator</title>
      <link>https://peterstuifzand.nl/2006/02/02/a-new-website-imba-nator/</link>
      <pubDate>Thu, 02 Feb 2006 10:53:31 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/02/02/a-new-website-imba-nator/</guid>
      <description>&lt;p&gt;Yesterday I created a new website. Everyone can type statements. After that&#xA;people can vote about the Imba-ness of the statement.&lt;/p&gt;&#xA;&lt;p&gt;Check it out: &lt;a href=&#34;http://imba.peterstuifzand.nl&#34;&gt;imba.peterstuifzand.nl&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox crash in debian</title>
      <link>https://peterstuifzand.nl/2006/01/26/firefox-crash-in-debian/</link>
      <pubDate>Thu, 26 Jan 2006 22:49:58 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/01/26/firefox-crash-in-debian/</guid>
      <description>&lt;p&gt;I experienced some problems while using Firefox on Debian. With the use of google it was fixed.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=348019&#34;&gt;Firefox segmentation fault debian work around&lt;/a&gt;. This&#xA;bug report contains a work around.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hit-a-Hint extension for Firefox 1.5</title>
      <link>https://peterstuifzand.nl/2006/01/18/hit-a-hint-extension-for-firefox-1.5/</link>
      <pubDate>Wed, 18 Jan 2006 14:58:12 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/01/18/hit-a-hint-extension-for-firefox-1.5/</guid>
      <description>&lt;p&gt;I just noticed that the &lt;a href=&#34;http://hah.mozdev.org&#34;&gt;Hit-a-Hint extension&lt;/a&gt; is upgraded for Firefox 1.5. This is great because&#xA;it will let click links and buttons without using the mouse.&lt;/p&gt;&#xA;&lt;p&gt;When I installed it there was one problem though, it didn&amp;rsquo;t work. The solution&#xA;was found quickly.  Goto &lt;code&gt;about:config&lt;/code&gt; and search the key&#xA;&lt;code&gt;extensions.hah.hints.tags&lt;/code&gt; and change that to:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;//a|//input|//textarea|//select|//button|//isindex|//frame|//iframe&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;and it will work. I&amp;rsquo;m not sure what the problem was, but this will at least&#xA;make it work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Alt stopped working in rxvt-unicode</title>
      <link>https://peterstuifzand.nl/2006/01/12/alt-stopped-working-in-rxvt-unicode/</link>
      <pubDate>Thu, 12 Jan 2006 13:37:05 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/01/12/alt-stopped-working-in-rxvt-unicode/</guid>
      <description>&lt;p&gt;My Alt key stopped working in rxvt-unicode. Still works in Firefox. I don&amp;rsquo;t&#xA;have any idea about how it stopped working. After some searching and trying, I&#xA;found out that I had to add a line to my &lt;code&gt;.Xdefaults&lt;/code&gt; file.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;URxvt.modifier: meta&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;After reloading the file with &lt;code&gt;xrdb -merge ~/.Xdefaults&lt;/code&gt;, the Alt key started&#xA;working again as it did before.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Added hoodwink.d to my website</title>
      <link>https://peterstuifzand.nl/2006/01/10/added-hoodwink.d-to-my-website/</link>
      <pubDate>Tue, 10 Jan 2006 22:57:44 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/01/10/added-hoodwink.d-to-my-website/</guid>
      <description>&lt;p&gt;I added &lt;a href=&#34;http://hoodwinkd.hobix.com&#34;&gt;hoodwink.d&lt;/a&gt; to my website. It&amp;rsquo;s an comment&#xA;system on top of websites. This is really nice, because my website is based on&#xA;static webpages, which makes it hard to add comments.&lt;/p&gt;&#xA;&lt;p&gt;Go to the &lt;a href=&#34;http://hoodwinkd.hobix.com&#34;&gt;hoodwink.d&lt;/a&gt; to install it and post some&#xA;&amp;lsquo;winks&amp;rsquo; here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Problem with feeds</title>
      <link>https://peterstuifzand.nl/2006/01/04/problem-with-feeds/</link>
      <pubDate>Wed, 04 Jan 2006 20:28:13 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2006/01/04/problem-with-feeds/</guid>
      <description>&lt;p&gt;One of the problems with feeds (RSS, Atom, or something) is that most of the&#xA;explaination is about XML and the technology behind it and not about the&#xA;problem it solves.&lt;/p&gt;&#xA;&lt;p&gt;I would be better if explanations about feeds wouldn&amp;rsquo;t talk about XML or other&#xA;technology parts, when explaining it to users.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weblogs looking like spam websites</title>
      <link>https://peterstuifzand.nl/2005/12/30/weblogs-looking-like-spam-websites/</link>
      <pubDate>Fri, 30 Dec 2005 16:43:35 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/12/30/weblogs-looking-like-spam-websites/</guid>
      <description>&lt;p&gt;Sometimes there&amp;rsquo;s a website that you visit which has the same properties&#xA;as a spam weblog. The website just looks like a spam weblog. Most of these&#xA;websites are based on free templates or free weblog services. I&amp;rsquo;m talking about&#xA;weblogs of &lt;a href=&#34;http://www.blogger.com&#34;&gt;Blogger&lt;/a&gt; with the standard templates, but any&#xA;service and template will do. This is the one I used.&lt;/p&gt;&#xA;&lt;p&gt;The spam is a problem on its own, but I have another problem with it. Sometimes&#xA;real websites look like spam weblogs. I had two weblogs on which I wrote, but after some&#xA;time I couldn&amp;rsquo;t anymore. Just because it felt wrong. I moved all my weblog writing&#xA;efforts to this website and I created my own design.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Faster ADSL by changing the cable</title>
      <link>https://peterstuifzand.nl/2005/12/28/faster-adsl-by-changing-the-cable/</link>
      <pubDate>Wed, 28 Dec 2005 00:19:31 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/12/28/faster-adsl-by-changing-the-cable/</guid>
      <description>&lt;p&gt;At the end of this year the download speed of our ADSL subscription is&#xA;increased to 6 MBit/s. The problem was that somehow we did get less than 1&#xA;MBit/s. This problem was fixed by making a new cable to the ADSL router/modem.&#xA;The new problem now is that I don&amp;rsquo;t have a clue about why this cable is&#xA;better than the previous one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Interesting upcoming concerts</title>
      <link>https://peterstuifzand.nl/2005/12/27/interesting-upcoming-concerts/</link>
      <pubDate>Tue, 27 Dec 2005 23:44:45 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/12/27/interesting-upcoming-concerts/</guid>
      <description>&lt;p&gt;As always while adding concerts to my &lt;a&#xA;href=&#34;http://www.wijvervelenons.nl&#34;&gt;concert website&lt;/a&gt;, I saw a nice concert.&#xA;This time it&amp;rsquo;s a concert of &lt;a&#xA;href=&#34;http://www.wijvervelenons.nl/cgi-bin/wijvervelenons/concert?action=show&amp;id=363&#34;&gt;The&#xA;Slackers&lt;/a&gt;. Another one is the &lt;a&#xA;href=&#34;http://www.wijvervelenons.nl/cgi-bin/wijvervelenons/concert?action=show&amp;id=298&#34;&gt;Paaspop&#xA;Festival&lt;/a&gt;. I&amp;rsquo;m not sure if I will be going to one of these, but it&amp;rsquo;s very&#xA;tempting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl Testing Book Received</title>
      <link>https://peterstuifzand.nl/2005/12/21/perl-testing-book-received/</link>
      <pubDate>Wed, 21 Dec 2005 20:39:09 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/12/21/perl-testing-book-received/</guid>
      <description>&lt;p&gt;Yesterday I received the Perl Testing Developers Notebook. It only took about six&#xA;days to get here, but it still is three months ago, since I won. Of course this is&#xA;no problem and I&amp;rsquo;m very happy with the new book.&lt;/p&gt;&#xA;&lt;p&gt;I like to thank &lt;a href=&#34;http://www.perlcast.com&#34;&gt;Josh&lt;/a&gt;, for the contest. Which was&#xA;actually quite easy :).&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve started reading it and it looks like it contains real nice examples for perl&#xA;testing. Some stuff that will be really useful, when I&amp;rsquo;m working on the webshop and&#xA;the &lt;a href=&#34;http://www.wijvervelenons.nl&#34;&gt;concert website&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Subject of my weblog</title>
      <link>https://peterstuifzand.nl/2005/12/19/subject-of-my-weblog/</link>
      <pubDate>Mon, 19 Dec 2005 21:49:34 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/12/19/subject-of-my-weblog/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m not yet sure what this is, but it looks like some kind of end of the year post.&#xA;But were still two weeks of.&lt;/p&gt;&#xA;&lt;p&gt;Somehow a lot of my posts are about programming and computers. This is kind&#xA;of stupid, because I do a lot of other stuff besides programming. While it may&#xA;look like it, I&amp;rsquo;m a big fan of all kinds of punk, ska, rock&amp;rsquo;n roll and reggae&#xA;music. This would become obvious if I went to more of those concerts, but their&#xA;are hard to come by in this neighbourhood.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Music Player Daemon</title>
      <link>https://peterstuifzand.nl/2005/12/10/music-player-daemon/</link>
      <pubDate>Sat, 10 Dec 2005 15:25:46 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/12/10/music-player-daemon/</guid>
      <description>&lt;p&gt;I thought about how a daemon program could be easy to use for playing&#xA;music. So I started with some research by googling for &amp;lsquo;music player daemon&amp;rsquo;.&#xA;And the first result was a link to a program called &amp;lsquo;&lt;a href=&#34;http://www.musicpd.org&#34;&gt;Music Player Daemon&lt;/a&gt;&amp;rsquo;.&lt;/p&gt;&#xA;&lt;p&gt;This program runs in the background and can be controlled with php based&#xA;websites or a command line tool. This is nice separation of concerns.&#xA;So I installed the package and tried it. I&amp;rsquo;m really impressed by how it&#xA;works, especially with the client tools, that let me select the music.&#xA;The thing that I don&amp;rsquo;t like is that I have to create playlists. But with one&#xA;playlist containing all the songs is easy to create.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Revenge of the Rock&#39;n Roll Monsters Tour</title>
      <link>https://peterstuifzand.nl/2005/12/10/revenge-of-the-rockn-roll-monsters-tour/</link>
      <pubDate>Sat, 10 Dec 2005 14:49:26 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/12/10/revenge-of-the-rockn-roll-monsters-tour/</guid>
      <description>&lt;p&gt;Revenge of the Rock &amp;rsquo;n Roll Monsters, what a show. This was best thing since&#xA;some other concert. All the bands played really well, and it looked like they&#xA;we&amp;rsquo;re having fun. Which make the whole thing just better. It was very much worth&#xA;the trip to Zwolle and the € 15,00.&lt;/p&gt;&#xA;&lt;p&gt;Tonight we&amp;rsquo;re going to &lt;a href=&#34;http://www.musicforallears.tk&#34;&gt;Music For All Ears&lt;/a&gt;,&#xA;which is organized by the &lt;a href=&#34;http://www.saidiafoundation.nl&#34;&gt;saidia foundation&lt;/a&gt;.&#xA;This organization helps motivated and talented students from developing&#xA;countries to study in Groningen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A ftp deployment tool: ftpup</title>
      <link>https://peterstuifzand.nl/2005/11/26/a-ftp-deployment-tool-ftpup/</link>
      <pubDate>Sat, 26 Nov 2005 17:05:24 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/11/26/a-ftp-deployment-tool-ftpup/</guid>
      <description>&lt;p&gt;This weekend I wrote a ftp deployment tool. It helps me deploy my changes&#xA;faster to my concert website.&lt;/p&gt;&#xA;&lt;p&gt;The program is written in ruby. It will search for the file &lt;code&gt;.ftpup&lt;/code&gt; in&#xA;this or a higher directory. In this file you can specify some rules that&#xA;let the program know where to upload the files to.&lt;/p&gt;&#xA;&lt;p&gt;The rules use regex to specify where the file should go. To let this approach&#xA;work as it should, it will first find out where the file is, relative to the&#xA;project &amp;lsquo;basedir&amp;rsquo;. The basedir is the directory where the .ftpup file is.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using ruby-xosd to show a timer</title>
      <link>https://peterstuifzand.nl/2005/11/24/using-ruby-xosd-to-show-a-timer/</link>
      <pubDate>Thu, 24 Nov 2005 23:13:49 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/11/24/using-ruby-xosd-to-show-a-timer/</guid>
      <description>&lt;p&gt;After the articles on &lt;a href=&#34;http://www.43folders.com&#34;&gt;43folders&lt;/a&gt; about &lt;a href=&#34;http://www.43folders.com/2005/11/15/mac-timers/&#34;&gt;using timers&lt;/a&gt; for&#xA;specific things, I thought I would create a timer program. Now I have a few&#xA;programs that I &amp;lsquo;integrated&amp;rsquo; in my window manager. With Alt-F4 ion3 will show a&#xA;query. I can type the number of seconds the timer should run for. A timer is&#xA;shown in the lower right corner of the screen (which is already evil enough).&lt;/p&gt;&#xA;&lt;p&gt;A next version will probably make it possible to show and hide with a push of the button.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My new repository uses Darcs</title>
      <link>https://peterstuifzand.nl/2005/11/24/my-new-repository-uses-darcs/</link>
      <pubDate>Thu, 24 Nov 2005 22:50:51 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/11/24/my-new-repository-uses-darcs/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.darcs.net/&#34;&gt;Darcs&lt;/a&gt; is a distributed revision control system. It&#xA;can be used to keep revision of documents (which includes sourcecode). I tried&#xA;to use it to keep some projects. The repository is online at &lt;a href=&#34;http://darcs.peterstuifzand.nl&#34;&gt;http://darcs.peterstuifzand.nl&lt;/a&gt; and is read-only.&lt;/p&gt;&#xA;&lt;p&gt;The nice thing about darcs is that anyone can be &lt;code&gt;get&lt;/code&gt; a version of the repository on his&#xA;own computer. That repository is a complete repository and can be used to keep&#xA;revisions locally. Changes can be &lt;code&gt;push&lt;/code&gt;-ed to or &lt;code&gt;pull&lt;/code&gt;-ed from the remote repository. This&#xA;makes it easy to work on a local copy, while keeping different revisions (actually patches).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Externals editors in Mediawiki</title>
      <link>https://peterstuifzand.nl/2005/11/15/externals-editors-in-mediawiki/</link>
      <pubDate>Tue, 15 Nov 2005 20:41:21 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/11/15/externals-editors-in-mediawiki/</guid>
      <description>&lt;p&gt;The new &lt;a href=&#34;http://www.mediawiki.org&#34;&gt;mediawiki&lt;/a&gt; supports external editors, this is about the same as&#xA;&lt;a href=&#34;20051028224159.html&#34;&gt;the hack&lt;/a&gt; I posted a few days ago. The nice thing about it is, is that&#xA;you can edit about any file or page that&amp;rsquo;s uploaded or written.&lt;/p&gt;&#xA;&lt;p&gt;The page edit part of the program very much like the program I&#xA;created. The only problem is that it uses regexe instead of a more&#xA;stable solution like &lt;a href=&#34;http://search.cpan.org/dist/WWW-Mechanize/&#34;&gt;WWW::Mechanize&lt;/a&gt;. The support for editing files is&#xA;really good.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programs I currently use</title>
      <link>https://peterstuifzand.nl/2005/11/06/programs-i-currently-use/</link>
      <pubDate>Sun, 06 Nov 2005 18:11:45 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/11/06/programs-i-currently-use/</guid>
      <description>&lt;p&gt;A short list of the applications/programs that I use.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.vim.org/&#34;&gt;vim&lt;/a&gt; - an editor&lt;/li&gt;&#xA;&lt;li&gt;rxvt-unicode - a xterminal&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://iki.fi/tuomov/ion/&#34;&gt;ion3&lt;/a&gt; - a window manager&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.mozilla.org&#34;&gt;firefox&lt;/a&gt; - a web browser&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.mutt.org&#34;&gt;mutt&lt;/a&gt; - a mail client&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.raggle.org&#34;&gt;raggle&lt;/a&gt; - a rss reader&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;20051018144033.html&#34;&gt;playmusic&lt;/a&gt; - a music player&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.vimoutliner.org&#34;&gt;vim outliner&lt;/a&gt; - a todo list/outliner tool&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.irssi.org&#34;&gt;irssi&lt;/a&gt; - an irc client&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.bitlbee.org&#34;&gt;bitlbee&lt;/a&gt; - a irc server/instant message gateway&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Time in a packet</title>
      <link>https://peterstuifzand.nl/2005/10/30/time-in-a-packet/</link>
      <pubDate>Sun, 30 Oct 2005 04:01:13 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/10/30/time-in-a-packet/</guid>
      <description>&lt;p&gt;I was so nice to create a package for &lt;code&gt;osdtime&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;source&#34;&gt;Source&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;osdtime-0.1.tar.gz&#34;&gt;osdtime-0.1.tar.gz&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On screen time display</title>
      <link>https://peterstuifzand.nl/2005/10/30/on-screen-time-display/</link>
      <pubDate>Sun, 30 Oct 2005 03:50:18 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2005/10/30/on-screen-time-display/</guid>
      <description>&lt;p&gt;Today I liked to know the time. I don&amp;rsquo;t have a clock and on my computer it&amp;rsquo;s to&#xA;much work to show the time. I use &lt;a href=&#34;http://iki.fi/tuomov/ion/&#34;&gt;ion3&lt;/a&gt; and it can&#xA;show the time in a statusbar, but I don&amp;rsquo;t like that, because it takes too much&#xA;of my screen real estate.&lt;/p&gt;&#xA;&lt;p&gt;So I created a little program that shows the time for a few seconds in the&#xA;right bottom corner of my screen. It&amp;rsquo;s called (how original) osdtime.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using a script to update Mediawiki</title>
      <link>https://peterstuifzand.nl/2005/10/28/using-a-script-to-update-mediawiki/</link>
      <pubDate>Fri, 28 Oct 2005 22:41:59 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/10/28/using-a-script-to-update-mediawiki/</guid>
      <description>&lt;p&gt;I created a script that allows me to update a page on a media wiki. It&#xA;uses &lt;a href=&#34;http://search.cpan.org/~petdance/WWW-Mechanize/&#34;&gt;WWW::Mechanize&lt;/a&gt;,&#xA;&lt;a href=&#34;http://search.cpan.org/~ingy/IO-All/&#34;&gt;IO::All&lt;/a&gt; and&#xA;&lt;a href=&#34;http://search.cpan.org/~dconway/Config-Std/&#34;&gt;Config::Std&lt;/a&gt;. The last&#xA;two modules aren&amp;rsquo;t needed probably. But it makes it all a lot simpler.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/usr/bin/perl -w&#xA;&#xA;use IO::All;&#xA;use WWW::Mechanize;&#xA;use Config::Std;&#xA;&#xA;read_config &amp;quot;$ENV{HOME}/.mediawiki&amp;quot; =&amp;gt; my %config;&#xA;&#xA;my $username = $config{login}{username};&#xA;my $password = $config{login}{password};&#xA;my $hostname = $config{login}{hostname};&#xA;&#xA;my $title = $ARGV[0] or die &amp;quot;usage:   mediawiki [page title with under scores]\n\n&amp;quot;;&#xA;my $url = &amp;quot;http://$hostname/mediawiki/index.php?title=$title&amp;amp;action=edit&amp;quot;;&#xA;&#xA;my $ua = WWW::Mechanize-&amp;gt;new;&#xA;&#xA;my $login_url = &amp;quot;http://$hostname/mediawiki/index.php?title=Special:Userlogin&amp;amp;returnto=Main_Page&amp;quot;;&#xA;$ua-&amp;gt;get($login_url);&#xA;&#xA;$ua-&amp;gt;field(&#39;wpName&#39;, $username);&#xA;$ua-&amp;gt;field(&#39;wpPassword&#39;, $password);&#xA;$ua-&amp;gt;click(&#39;wpLoginattempt&#39;);&#xA;&#xA;$ua-&amp;gt;get($url);&#xA;&#xA;$ua-&amp;gt;form_number(1);&#xA;&#xA;my $form = $ua-&amp;gt;current_form();&#xA;&#xA;my $tmpfile = io(&#39;/tmp/mediawiki-1&#39;);&#xA;$form-&amp;gt;value(&#39;wpTextbox1&#39;) &amp;gt; $tmpfile;&#xA;&#xA;system(&#39;vi /tmp/mediawiki-1&#39;);&#xA;&#xA;$tmpfile-&amp;gt;open(&#39;r&#39;);&#xA;&#xA;my $content = $tmpfile-&amp;gt;slurp;&#xA;$ua-&amp;gt;field(&#39;wpTextbox1&#39;, $content);&#xA;$ua-&amp;gt;click(&#39;wpSave&#39;);&#xA;&#xA;print &amp;quot;Done!\n\n&amp;quot;;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The configuration is read from /home/$USER/.mediawiki. It should look something like this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plugins with perl</title>
      <link>https://peterstuifzand.nl/2005/10/23/plugins-with-perl/</link>
      <pubDate>Sun, 23 Oct 2005 21:26:31 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/10/23/plugins-with-perl/</guid>
      <description>&lt;p&gt;This post is not about perl plugins (what would that be?). But&#xA;about programs that use plugins. One of those programs is&#xA;&lt;a href=&#34;http://smtpd.develooper.com/&#34;&gt;Qpsmtpd&lt;/a&gt;, a perl mail server. They use&#xA;a special and very nice way to use plugins.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.sixapart.com/movabletype/&#34;&gt;Moveable Type&lt;/a&gt; is another perl&#xA;program, that uses plugins.  These plugins are a little bit simpler than&#xA;the qpsmtpd plugins, but just as powerful.&lt;/p&gt;&#xA;&lt;p&gt;And now there is another perl program that uses plugins, my webshop. It is really&#xA;nice to see how easy it is to create a new type of shop on top of the current code.&#xA;I can&amp;rsquo;t yet show it, but within a few days it will be online.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another music player</title>
      <link>https://peterstuifzand.nl/2005/10/18/another-music-player/</link>
      <pubDate>Tue, 18 Oct 2005 14:40:33 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/10/18/another-music-player/</guid>
      <description>&lt;p&gt;The day after I posted the previous post, I became aware of a serious flaw in the design of the player. It couldn&amp;rsquo;t play music from on artist or one album. I really liked this functionality, so I wrote it.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;MUSICDIR=~/music&#xA;cd $MUSICDIR&#xA;find . -type f -name &amp;quot;*.mp3&amp;quot; -o -name &amp;quot;*.ogg&amp;quot; | grep &amp;quot;$1&amp;quot; &amp;gt; playlist&#xA;mplayer -quiet -shuffle -playlist playlist | grep Playing&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Also it tried to play the cover images that are in some of the directories. This was solved by specifying the extensions of the files to play.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My new music player tool</title>
      <link>https://peterstuifzand.nl/2005/10/02/my-new-music-player-tool/</link>
      <pubDate>Sun, 02 Oct 2005 22:14:30 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/10/02/my-new-music-player-tool/</guid>
      <description>&lt;p&gt;Today I created a new music tool quiet like the Apple Shuffle. It will play music files randomly from my &amp;lsquo;collection&amp;rsquo;. Here follows the code.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/bin/sh&#xA;cd ~/music&#xA;find . -type f &amp;gt; playlist&#xA;mplayer -quiet -shuffle -playlist playlist | grep Playing&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;It can be started in it&amp;rsquo;s own terminal and be controlled with all the normal &lt;code&gt;mplayer&lt;/code&gt; combinations. PgUp and PgDn will skip songs. Left and Right will skip in a song. &lt;code&gt;+&lt;/code&gt; and &lt;code&gt;-&lt;/code&gt; will change the volume. &lt;code&gt;Q&lt;/code&gt; let&amp;rsquo;s you quit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A code generator</title>
      <link>https://peterstuifzand.nl/2005/10/01/a-code-generator/</link>
      <pubDate>Sat, 01 Oct 2005 17:56:48 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/10/01/a-code-generator/</guid>
      <description>&lt;p&gt;At the company, where I&amp;rsquo;m doing my internship, I needed a code&#xA;generator for some C code. There was some C code needed. So I started&#xA;of writing it. After some lines, there started to show some patterns,&#xA;which could be easily handled by some description language.&lt;/p&gt;&#xA;&lt;p&gt;The first description language was a line based format. First a&#xA;line with the name of the object. And after that the names of the&#xA;functions. This format is easy to parse and easy to use. The output&#xA;was done with &lt;code&gt;print&lt;/code&gt; statements.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I won the new Perl Testing Developer Notebook</title>
      <link>https://peterstuifzand.nl/2005/09/07/i-won-the-new-perl-testing-developer-notebook/</link>
      <pubDate>Wed, 07 Sep 2005 20:32:17 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/09/07/i-won-the-new-perl-testing-developer-notebook/</guid>
      <description>&lt;p&gt;I won the Perl Testing Developer Notebook written by Ian Langworth and&#xA;chromatic on&#xA;&lt;a href=&#34;http://perlcast.com/2005/09/05/perl-testing-contest-winners/&#34;&gt;perlcast.com&lt;/a&gt;. I&amp;rsquo;m&#xA;curious about when the book will arrive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weblog now contains monthly archive pages</title>
      <link>https://peterstuifzand.nl/2005/09/03/weblog-now-contains-monthly-archive-pages/</link>
      <pubDate>Sat, 03 Sep 2005 17:52:18 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/09/03/weblog-now-contains-monthly-archive-pages/</guid>
      <description>&lt;p&gt;Today I added monthly archive pages on this weblog. The design is not&#xA;clean yet, but it works, like you can see at &lt;a href=&#34;archive.html&#34;&gt;the&#xA;archives&lt;/a&gt;. The archive page now contains a list of links&#xA;to the pages of the months with posts.&lt;/p&gt;&#xA;&lt;p&gt;The archive first contained a pages with all the posts, which uses a&#xA;little little too much bandwidth. This new approach uses just a&#xA;little.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AlienNatioN has a new website</title>
      <link>https://peterstuifzand.nl/2005/09/03/aliennation-has-a-new-website/</link>
      <pubDate>Sat, 03 Sep 2005 15:44:47 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/09/03/aliennation-has-a-new-website/</guid>
      <description>&lt;p&gt;On &lt;a href=&#34;http://spaces.msn.com/members/thehorseman82/Blog/cns!1pxAdT_8AHg4nKispzfPn6ug!674.entry&#34;&gt;Martijn&amp;rsquo;s&#xA;weblog&lt;/a&gt;&#xA;I read that &lt;a href=&#34;http://www.aliennationcrew.com&#34;&gt;AlienNatioN&lt;/a&gt; have a new&#xA;website. He&amp;rsquo;s their bassplayer. It looks pretty, but it&amp;rsquo;s full of&#xA;Flash. And as of you may know, I don&amp;rsquo;t like Flash. The good thing is,&#xA;is that the website is not totally Flash.&lt;/p&gt;&#xA;&lt;p&gt;Most of the parts are visible even if don&amp;rsquo;t have a Flash plugin (some&#xA;people don&amp;rsquo;t have it), and that&amp;rsquo;s good. But you can&amp;rsquo;t get past the&#xA;intro, because there is no link.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hoodwink.d and MouseHole</title>
      <link>https://peterstuifzand.nl/2005/09/03/hoodwink.d-and-mousehole/</link>
      <pubDate>Sat, 03 Sep 2005 12:46:02 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/09/03/hoodwink.d-and-mousehole/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://redhanded.hobix.com/inspect/mousehole11InPlainView.html&#34;&gt;MouseHole&lt;/a&gt;&#xA;is a proxy that has the ability to rewrite webpages, just like&#xA;&lt;a href=&#34;http://greasemonkey.mozdev.org&#34;&gt;GreaseMonkey&lt;/a&gt;, but instead of using&#xA;JavaScript it uses Ruby.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://hoodwink.d/&#34;&gt;Hoodwink.d&lt;/a&gt; is a comment system that is added by&#xA;MouseHole to weblogs. It&amp;rsquo;s a really nice way to combine serverside,&#xA;with clientside.&lt;/p&gt;&#xA;&lt;p&gt;This combination create the possibility for people to add comments to&#xA;all kinds of websites.&lt;/p&gt;&#xA;&lt;p&gt;What other things could be done to by using technology like this?&lt;/p&gt;</description>
    </item>
    <item>
      <title>What have I been up to the last three months</title>
      <link>https://peterstuifzand.nl/2005/08/31/what-have-i-been-up-to-the-last-three-months/</link>
      <pubDate>Wed, 31 Aug 2005 14:26:36 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/08/31/what-have-i-been-up-to-the-last-three-months/</guid>
      <description>&lt;p&gt;Here I&amp;rsquo;m back again. Maybe you missed me, maybe not. The problem is&#xA;that my computer&amp;rsquo;s harddisk crashed. That&amp;rsquo;s a whole lot of crap. And&#xA;until recently I didn&amp;rsquo;t have time to get this website working and&#xA;updated again.&lt;/p&gt;&#xA;&lt;p&gt;During this three months most of my time was invested into my &lt;a href=&#34;http://www.wijvervelenons.nl&#34;&gt;first&#xA;actual website project&lt;/a&gt; with a domain&#xA;name and all. I created a web application in Perl, that is running&#xA;that website.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Garbage Collection in Ruby</title>
      <link>https://peterstuifzand.nl/2005/06/27/garbage-collection-in-ruby/</link>
      <pubDate>Mon, 27 Jun 2005 15:56:44 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/06/27/garbage-collection-in-ruby/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.whytheluckystiff.net&#34;&gt;why&lt;/a&gt; published a nice article about &lt;a href=&#34;http://whytheluckystiff.net/articles/theFullyUpturnedBin.html&#34;&gt;garbage collection in ruby&lt;/a&gt;. It shows some problems and how these can be solved by changing some of your ruby code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create notes from webpages with Scrapbook</title>
      <link>https://peterstuifzand.nl/2005/06/27/create-notes-from-webpages-with-scrapbook/</link>
      <pubDate>Mon, 27 Jun 2005 00:41:32 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/06/27/create-notes-from-webpages-with-scrapbook/</guid>
      <description>&lt;p&gt;With &lt;a href=&#34;http://amb.vis.ne.jp/mozilla/scrapbook/&#34;&gt;Scrapbook&lt;/a&gt; you can create notes from webpages, or save complete websites on a specific date. So this extension is helpful when you&#39;re a writer, or a researcher. &lt;/p&gt; &lt;p&gt;Problems with tools like these is that you have to find some place in your workflow to use them. If you don&#39;t have a place it is possible that I will stay in tools menu for a long time without you using it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>This Delicous Tool is pretty cool</title>
      <link>https://peterstuifzand.nl/2005/06/26/this-delicous-tool-is-pretty-cool/</link>
      <pubDate>Sun, 26 Jun 2005 14:44:42 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/06/26/this-delicous-tool-is-pretty-cool/</guid>
      <description>&lt;p&gt;At &lt;a href=&#34;http://www.lifehacker.org&#34;&gt;lifehacker&lt;/a&gt; I came across this incredible tool for &lt;a href=&#34;http://del.icio.us&#34;&gt;del.icio.us&lt;/a&gt;. It is called the &lt;a href=&#34;http://johnvey.com/features/deliciousdirector/&#34;&gt;del.icio.us Direc.tor&lt;/a&gt;. It a combination of webapp and del.icio.us API and Ajax.&lt;/p&gt; &lt;p&gt;This probably is one of the steps were going to see on the web, web applications that are written over webbased apis. Web based tools with nice user friendly clean interfaces that do something that&#39;s different enough from the actual data provider website.&lt;/p&gt; &lt;p&gt;Very impressive. We need more of this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrated CVS repos to subversion</title>
      <link>https://peterstuifzand.nl/2005/06/25/migrated-cvs-repos-to-subversion/</link>
      <pubDate>Sat, 25 Jun 2005 14:50:14 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/06/25/migrated-cvs-repos-to-subversion/</guid>
      <description>&lt;p&gt;Today I have migrated a CVS repository to subversion. It was quite easy with &lt;a href=&#34;http://sam.zoy.org/writings/programming/svn2cvs.html&#34;&gt;a cvs to subversion migration howto&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;The stuff I transmitted was this website. About three months ago I started using &lt;a href=&#34;http://subversion.tigris.org/&#34;&gt;subversion&lt;/a&gt;. At first it was a try only, but now I use it for three projects and a website. I really like it. The nicest commands are the &lt;code&gt;revert&lt;/code&gt; and &lt;code&gt;status&lt;/code&gt; command. This is stuff that programmers really need to know and use, even if you&#39;re one programmer working a project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two new articles</title>
      <link>https://peterstuifzand.nl/2005/06/24/two-new-articles/</link>
      <pubDate>Fri, 24 Jun 2005 18:03:17 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/06/24/two-new-articles/</guid>
      <description>&lt;p&gt;I have written two new articles. First is about using &lt;a href=&#34;gameprog_3.html&#34;&gt;time based movement&lt;/a&gt; in a computergame. The other is about &lt;a href=&#34;java-gui1.html&#34;&gt;creating a Java/Swing GUI with RiverLayout&lt;/a&gt;. I will also try to create more articles about GUI programming in &lt;a href=&#34;http://java.sun.com/&#34;&gt;java&lt;/a&gt; and maybe about using invariants and contracts in object oriented programming.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My first game programming article</title>
      <link>https://peterstuifzand.nl/2005/06/18/my-first-game-programming-article/</link>
      <pubDate>Sat, 18 Jun 2005 14:43:40 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/06/18/my-first-game-programming-article/</guid>
      <description>&lt;p&gt;Yesterday I have written &lt;a href=&#34;gameprog_1.html&#34;&gt;my first article&lt;/a&gt; about game programming. I have ideas for some other articles that I will write in some days. It&#39;s really fun to write, but I&#39;m not yet sure if there are people who think the article is helpful.&lt;/p&gt; &lt;p&gt;I would appreciate comments, ideas, suggestions, feedback about &lt;a href=&#34;gameprog_1.html&#34;&gt;the article&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Webwinkel Reloaded</title>
      <link>https://peterstuifzand.nl/2005/06/06/webwinkel-reloaded/</link>
      <pubDate>Mon, 06 Jun 2005 16:53:19 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/06/06/webwinkel-reloaded/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.hobby-koopjes.nl/&#34;&gt;Hobby-Koopjes.nl&lt;/a&gt; has been upgraded multiple&#xA;times. I&#39;ve added all kinds of functionality.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;New products&lt;/li&gt;&#xA;&lt;li&gt;Links to other pages&lt;/li&gt;&#xA;&lt;li&gt;Ability to specify if a product should be put into a packet.&lt;/li&gt;&#xA;&lt;li&gt;Some cleanups of the order database code.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;All in all not that many upgrades, nut at least the structure of the code is&#xA;better suited now to be used with the order/billing code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Robochallenge Recap</title>
      <link>https://peterstuifzand.nl/2005/06/06/robochallenge-recap/</link>
      <pubDate>Mon, 06 Jun 2005 16:47:11 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2005/06/06/robochallenge-recap/</guid>
      <description>&lt;p&gt;Some time age I posted an entry (actually the previous one) in which I explained about the project I would be working on for some time. The project is about to end. We only have to deliver some documents (system documentation) and then we&#39;re done.&lt;/p&gt; &lt;p&gt;I&#39;m not yet sure what to tell, but at least I can tell that we&#39;ve failed. We didn&#39;t win any prices. Maybe that&#39;s not the point of the project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RoboChallenge</title>
      <link>https://peterstuifzand.nl/2004/12/11/robochallenge/</link>
      <pubDate>Sat, 11 Dec 2004 21:34:00 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2004/12/11/robochallenge/</guid>
      <description>&lt;p&gt;This is the first post about my internship. Actually it&amp;rsquo;s not really&#xA;an internship, but it&amp;rsquo;ll do for the explanation. The idea is that we make a&#xA;robot. It&amp;rsquo;s not as futuristic as it sounds. The robot will compete in&#xA;a challenge.&lt;/p&gt;&#xA;&lt;p&gt;In this game the robot has collect as many balls as possible. These&#xA;balls have different colors and sizes. Our robot uses digital&#xA;camera&amp;rsquo;s to find the balls by taking pictures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The new hobby-koopjes website is online</title>
      <link>https://peterstuifzand.nl/2004/11/13/the-new-hobby-koopjes-website-is-online/</link>
      <pubDate>Sat, 13 Nov 2004 17:19:53 +0100</pubDate>
      <guid>https://peterstuifzand.nl/2004/11/13/the-new-hobby-koopjes-website-is-online/</guid>
      <description>&lt;p&gt;It was hard work, but at last a new version of the&#xA;&lt;a href=&#34;http://www.hobby-koopjes.nl/&#34;&gt;hobby-koopjes.nl&lt;/a&gt; website is online. It&#xA;has become a nice website, with an interface that&amp;rsquo;s actually quite&#xA;pretty.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CD Ripping on Debian</title>
      <link>https://peterstuifzand.nl/2004/10/23/cd-ripping-on-debian/</link>
      <pubDate>Sat, 23 Oct 2004 01:31:04 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/10/23/cd-ripping-on-debian/</guid>
      <description>&lt;p&gt;Today I fixed my computer. It now will rip cd&amp;rsquo;s, without being really slow. Actually I only had to install a new kernel. I now use 2.6.8 instead of 2.6.7.&lt;/p&gt;&#xA;&lt;p&gt;Ripping cd&amp;rsquo;s with &lt;a href=&#34;http://www.burtonini.com/blog/computers/sound-juicer&#34;&gt;sound-juicer&lt;/a&gt; is really simple.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Webmail To RSS tool</title>
      <link>https://peterstuifzand.nl/2004/10/18/a-webmail-to-rss-tool/</link>
      <pubDate>Mon, 18 Oct 2004 16:33:00 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/10/18/a-webmail-to-rss-tool/</guid>
      <description>&lt;p&gt;At my school we now have to use a webmail client. And I don&amp;rsquo;t like&#xA;it. Because it is a lot of work to open up the page, enter a password,&#xA;look over the messages and find nothing new.&lt;/p&gt;&#xA;&lt;p&gt;I use &lt;a href=&#34;http://liferea.sourceforge.net/&#34;&gt;Liferea&lt;/a&gt; as my RSS Feed Reader and it now uses a program to get a feed of the messages. The program downloads the webpage with the messages and then generates a simple rss2.0 feed from that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>To the Toydolls</title>
      <link>https://peterstuifzand.nl/2004/10/13/to-the-toydolls/</link>
      <pubDate>Wed, 13 Oct 2004 23:49:10 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/10/13/to-the-toydolls/</guid>
      <description>&lt;p&gt;We are going to the Toydolls. They will play at the &lt;a href=&#34;http://www.de-oosterpoort.nl&#34;&gt;Oosterpoort&lt;/a&gt; in Groningen on 21 november. This is going to be so much fun. And the tickets are only EUR 15,- + EUR 3,30 administration costs. &lt;a href=&#34;http://www.ticketservice.nl&#34;&gt;TicketService&lt;/a&gt; is the best there is :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Birthday</title>
      <link>https://peterstuifzand.nl/2004/10/03/birthday/</link>
      <pubDate>Sun, 03 Oct 2004 20:20:51 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/10/03/birthday/</guid>
      <description>&lt;p&gt;I am 21 now. Ole.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notemanager Webapp</title>
      <link>https://peterstuifzand.nl/2004/10/02/notemanager-webapp/</link>
      <pubDate>Sat, 02 Oct 2004 00:52:04 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/10/02/notemanager-webapp/</guid>
      <description>&lt;p&gt;Today I started with the creation of a webapp, in which you can make notes. It&amp;rsquo;s really simple, but already it has some nice features, like categories. It is written in ruby and uses &lt;a href=&#34;http://www.yaml.org&#34;&gt;YAML&lt;/a&gt; to save the notes. This makes it easier to save and load the notes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tray Icon applet to add pages to blog</title>
      <link>https://peterstuifzand.nl/2004/10/01/tray-icon-applet-to-add-pages-to-blog/</link>
      <pubDate>Fri, 01 Oct 2004 00:10:53 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/10/01/tray-icon-applet-to-add-pages-to-blog/</guid>
      <description>&lt;p&gt;Inspired by &lt;a href=&#34;http://www.beatniksoftware.com/tomboy/&#34;&gt;Tomboy&lt;/a&gt; and &lt;a href=&#34;http://luon.net/~michiels/trashapplet/&#34;&gt;GnomeTrashApplet&lt;/a&gt; I created a TrayIconApplet to add pages to my weblog. But it&amp;rsquo;s not written in C or C#, but in &lt;a href=&#34;http://www.ruby-lang.org&#34;&gt;ruby&lt;/a&gt; using it&amp;rsquo;s &lt;a href=&#34;http://ruby-gnome2.sourceforge.jp&#34;&gt;Gtk wrappers&lt;/a&gt;. And it was easier than I at first thought.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a application around &lt;a href=&#34;pages.html&#34;&gt;pages&lt;/a&gt;. And has the following features.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;listing web pages on website&lt;/li&gt;&#xA;&lt;li&gt;editing web pages on website&lt;/li&gt;&#xA;&lt;li&gt;listing all weblog items&lt;/li&gt;&#xA;&lt;li&gt;adding new items to weblog&lt;/li&gt;&#xA;&lt;li&gt;generating the website&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a really nice app. But it&amp;rsquo;s still has lots of bugs, probably. And some stuff is not yet good enough, like the interface of the editor. It could use some extra buttons and menus, a better font (monospace at least). Also it doesn&amp;rsquo;t update the lists of pages in the interface.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nightly Build</title>
      <link>https://peterstuifzand.nl/2004/09/29/nightly-build/</link>
      <pubDate>Wed, 29 Sep 2004 02:26:28 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/09/29/nightly-build/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m thinking of creating a nightly build of the webshop I&amp;rsquo;m working&#xA;on. But what is a nightly build or what should it do?&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;get newest files from CVS&lt;/li&gt;&#xA;&lt;li&gt;prepare/compile files&lt;/li&gt;&#xA;&lt;li&gt;install files to some directory that&amp;rsquo;s visible through the webserver&lt;/li&gt;&#xA;&lt;li&gt;run all tests&lt;/li&gt;&#xA;&lt;li&gt;create all kinds of reports&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Possibly it should do more, but this is at least some of it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bugfixing and rss feed</title>
      <link>https://peterstuifzand.nl/2004/09/28/bugfixing-and-rss-feed/</link>
      <pubDate>Tue, 28 Sep 2004 11:24:03 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/09/28/bugfixing-and-rss-feed/</guid>
      <description>&lt;p&gt;After some bugfixing, I now have the permalinks working right. I also&#xA;added an RSS2.0 feed. I&amp;rsquo;m not yet sure if it&amp;rsquo;s the way I like it, or&#xA;that&amp;rsquo;s correct. But it&amp;rsquo;s a test so.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lars Frederiksen And The Bastards</title>
      <link>https://peterstuifzand.nl/2004/09/27/lars-frederiksen-and-the-bastards/</link>
      <pubDate>Mon, 27 Sep 2004 19:46:09 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/09/27/lars-frederiksen-and-the-bastards/</guid>
      <description>&lt;p&gt;Saturday evening I went to Lars Frederiksen And The Bastards with some&#xA;friends.  It was in the Melkweg in Amsterdam. That night there played three bands.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The Heartaches&lt;/li&gt;&#xA;&lt;li&gt;The Selecter&lt;/li&gt;&#xA;&lt;li&gt;Lars Frederiksen And The Bastards.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;I was really fun to these bands live. Especially since I didn&amp;rsquo;t know,&#xA;the Selecter also came to play some songs. I haven&amp;rsquo;t seen any of these&#xA;bands before, but they were all really great.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Website generation software</title>
      <link>https://peterstuifzand.nl/2004/09/27/website-generation-software/</link>
      <pubDate>Mon, 27 Sep 2004 17:48:19 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/09/27/website-generation-software/</guid>
      <description>&lt;p&gt;The website generation software I use has a few little flaws.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;It uses the filename for the date. (e.g. &lt;code&gt;20040927174819.tp&lt;/code&gt;)&lt;/p&gt;&#xA;&lt;p&gt;This actually goes two ways. On the one hand it&amp;rsquo;s a unique name for&#xA;the file. On the other hand, it has metadata on the outside of the file.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;There&amp;rsquo;s no easy way to add more data to an entry. (e.g. I can&amp;rsquo;t add&#xA;category&amp;rsquo;s)&lt;/p&gt;&#xA;&lt;p&gt;Actually I can but then I&amp;rsquo;ve to change the entry format.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My New Debian Setup</title>
      <link>https://peterstuifzand.nl/2004/09/27/my-new-debian-setup/</link>
      <pubDate>Mon, 27 Sep 2004 17:45:03 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/09/27/my-new-debian-setup/</guid>
      <description>&lt;p&gt;Yesterday I installed a new Debian setup. I used Redhat before, but I&#xA;began to show signs of old age.&lt;/p&gt;&#xA;&lt;p&gt;Now I have Gnome 2.6 and some more nice stuff. There are some many&#xA;packages, that I&amp;rsquo;m not yet sure what to install.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GMail account</title>
      <link>https://peterstuifzand.nl/2004/09/22/gmail-account/</link>
      <pubDate>Wed, 22 Sep 2004 10:26:22 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/09/22/gmail-account/</guid>
      <description>&lt;p&gt;I got my first &lt;a href=&#34;http://www.gmail.com/&#34;&gt;GMail&lt;/a&gt; account. First I&amp;rsquo;m just&#xA;going to look at how it works. If it&amp;rsquo;s as nice as the other people on&#xA;the web told.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s all really crazy around these accounts. I just found a website&#xA;that helps people to get a GMail account. &lt;a href=&#34;http://www.gmailswap.com&#34;&gt;GMail&#xA;Swap&lt;/a&gt;, and in other places people are trying&#xA;to sell them.&lt;/p&gt;&#xA;&lt;p&gt;There are also people concerned about &lt;a href=&#34;http://gmail-is-too-creepy.com/&#34;&gt;privacy issues&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Weblog Software</title>
      <link>https://peterstuifzand.nl/2004/09/21/new-weblog-software/</link>
      <pubDate>Tue, 21 Sep 2004 21:16:44 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/09/21/new-weblog-software/</guid>
      <description>&lt;p&gt;I created some new weblog software for myself. It&amp;rsquo;s written in&#xA;&lt;a href=&#34;http://www.ruby-lang.org/&#34;&gt;ruby&lt;/a&gt;, uses&#xA;&lt;a href=&#34;http://bluecloth.rubyforge.org&#34;&gt;BlueCloth&lt;/a&gt;, and is very simple.&lt;/p&gt;&#xA;&lt;p&gt;Actually it&amp;rsquo;s a part of a system that&amp;rsquo;s a little bigger. That system&#xA;generates my webpages. To create a website you only have to write the&#xA;content, all the stuff is automatically created.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gaim 1.0.0 has appeared.</title>
      <link>https://peterstuifzand.nl/2004/09/18/gaim-1.0.0-has-appeared./</link>
      <pubDate>Sat, 18 Sep 2004 13:40:17 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/09/18/gaim-1.0.0-has-appeared./</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://gaim.sf.net&#34;&gt;Gaim 1.0.0&lt;/a&gt; is ready! It&amp;rsquo;s very nice. It has&#xA;really improved in the last year. All the features like&#xA;fileupload/download and the little picture of other people (and&#xA;yourself) are implemented. Furthermore it can connect to multiple&#xA;protocols at the same time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Return from the roadtrip</title>
      <link>https://peterstuifzand.nl/2004/08/09/return-from-the-roadtrip/</link>
      <pubDate>Mon, 09 Aug 2004 11:25:50 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/08/09/return-from-the-roadtrip/</guid>
      <description>&lt;p&gt;Saturday I returned from my roadtrip. Now is a good time to tell what&#xA;we have done.&lt;/p&gt;&#xA;&lt;h3 id=&#34;sunday&#34;&gt;Sunday&lt;/h3&gt;&#xA;&lt;p&gt;First we drove to Geneva, Switzerland. We took the autobahn through&#xA;Germany. We stopped a few times. When we we&amp;rsquo;re in Switzerland out&#xA;first stop was in Basel, where we took a look at a local Mac. We&#xA;didn&amp;rsquo;t we would be staying that long, when we saw the prices there.&lt;/p&gt;&#xA;&lt;p&gt;We arrived in Geneva at about one in the afternoon after a drive of about 13&#xA;hours. We spend there two nights on a camping. Real nice, and not even&#xA;that expensive, about 10-15 Swiss Franc a night. That&amp;rsquo;s less than EUR 10.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weblog gui tweaks</title>
      <link>https://peterstuifzand.nl/2004/07/23/weblog-gui-tweaks/</link>
      <pubDate>Fri, 23 Jul 2004 16:31:08 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/07/23/weblog-gui-tweaks/</guid>
      <description>&lt;p&gt;Today I also made some tweaks to the layout of my weblog. It&amp;rsquo;s really&#xA;nice like this. Some extra space between post of another day and earlier posts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Radio Interview</title>
      <link>https://peterstuifzand.nl/2004/07/23/radio-interview/</link>
      <pubDate>Fri, 23 Jul 2004 16:20:28 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/07/23/radio-interview/</guid>
      <description>&lt;p&gt;The radio interview is done. I&amp;rsquo;ve put on the website of &lt;a href=&#34;http://www.theroadtrip2004.tk&#34;&gt;the&#xA;roadtrip&lt;/a&gt;. It&amp;rsquo;s dutch, so I think not&#xA;everybody will be able to listen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringLayout is really nice</title>
      <link>https://peterstuifzand.nl/2004/07/15/springlayout-is-really-nice/</link>
      <pubDate>Thu, 15 Jul 2004 00:48:05 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/07/15/springlayout-is-really-nice/</guid>
      <description>&lt;p&gt;Today I was creating some panels for webshop manager program I&amp;rsquo;m&#xA;creating. I used SpringLayout for this. It&amp;rsquo;s really nice, also because&#xA;I found a class called SpringUtils on &lt;a href=&#34;http://java.sun.com&#34;&gt;java.sun.com&lt;/a&gt; somewhere in&#xA;a tutorial. With this class you can connect the components on a&#xA;page. And they will be shown in a table-like fashion. At last it&amp;rsquo;s&#xA;possible, for me, to create nice and professionally looking interfaces&#xA;using java.&lt;/p&gt;&#xA;&lt;p&gt;But the strange thing is that when I tried to create the same&#xA;interface using &lt;a href=&#34;http://www.gtk.org&#34;&gt;gtk&lt;/a&gt;, I was done in a about five&#xA;minutes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GridBagLayout is evil!!</title>
      <link>https://peterstuifzand.nl/2004/07/14/gridbaglayout-is-evil/</link>
      <pubDate>Wed, 14 Jul 2004 17:24:24 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/07/14/gridbaglayout-is-evil/</guid>
      <description>&lt;p&gt;Yesterday I found an animation on the web. It will show you why&#xA;gridbags are evil. It&amp;rsquo;s briljant. Especially because I coding a GUI&#xA;myself, yesterday. An I was about to use the gridbag and the memory&#xA;came back to me&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://madbean.com/blog/2004/17/totallygridbag.html&#34;&gt;Totally Gridbag&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Forum improvements</title>
      <link>https://peterstuifzand.nl/2004/07/14/forum-improvements/</link>
      <pubDate>Wed, 14 Jul 2004 14:16:01 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/07/14/forum-improvements/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s still needed to create a better forum. I&amp;rsquo;ve have installed a&#xA;forum on the roadtrip website, but their is nobody that posts a&#xA;message.&lt;/p&gt;&#xA;&lt;p&gt;I would be nice if someone would post a message, but if you need to&#xA;register to read the forum, a lot of people will not try it. Some&#xA;people have done research on this. And I think it&amp;rsquo;s true. There was&#xA;also a problem with some cookie stuff, so people couldn&amp;rsquo;t login.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The roadtrip</title>
      <link>https://peterstuifzand.nl/2004/07/14/the-roadtrip/</link>
      <pubDate>Wed, 14 Jul 2004 02:29:59 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/07/14/the-roadtrip/</guid>
      <description>&lt;p&gt;In about 10 days, four of my friends and I, are going on&#xA;&lt;a href=&#34;http://www.theroadtrip2004.tk&#34;&gt;a roadtrip&lt;/a&gt;. We&amp;rsquo;ve bought an 10 year old van. With&#xA;this van we&amp;rsquo;re going to make a trip to Geneve, Italy and Croatia and back. We&amp;rsquo;re&#xA;are probably going to make some movies to show, when we&amp;rsquo;re back.&lt;/p&gt;&#xA;&lt;p&gt;I think I&amp;rsquo;m going to make some notes about when we&amp;rsquo;re on our way. Al&#xA;least when I&amp;rsquo;ve a place to connect to my computer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Changes to the blog</title>
      <link>https://peterstuifzand.nl/2004/07/14/changes-to-the-blog/</link>
      <pubDate>Wed, 14 Jul 2004 02:04:52 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/07/14/changes-to-the-blog/</guid>
      <description>&lt;p&gt;As you can see my blog is powered by Bryar. It can be found on&#xA;&lt;a href=&#34;http://www.cpan.org/&#34;&gt;CPAN&lt;/a&gt;. I made some changes to Bryar that I&#xA;liked. I&amp;rsquo;m not sure what to do with these changes. Should I give them&#xA;back to the owner, or not? It&amp;rsquo;s more like a &lt;em&gt;it works for me&lt;/em&gt; hack.&lt;/p&gt;&#xA;&lt;p&gt;I added the following items to the software.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Wiki formatting using &lt;a href=&#34;http://search.cpan.org/~ian/Text-KwikiFormatish-1.01/&#34;&gt;Text::KwikiFormatish&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Separated datadir and entrydir.&lt;/li&gt;&#xA;&lt;li&gt;Simple &lt;code&gt;attr_accessor&lt;/code&gt;, &lt;code&gt;attr_reader&lt;/code&gt; (like &lt;a href=&#34;http://www.ruby-lang.org/&#34;&gt;ruby&lt;/a&gt;) functions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;These items are really nice to have I think. There is some other stuff that would be nice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emacs to the rescue</title>
      <link>https://peterstuifzand.nl/2004/07/14/emacs-to-the-rescue/</link>
      <pubDate>Wed, 14 Jul 2004 01:38:06 +0200</pubDate>
      <guid>https://peterstuifzand.nl/2004/07/14/emacs-to-the-rescue/</guid>
      <description>&lt;p&gt;Now I&amp;rsquo;ve a blog, but it&amp;rsquo;s not easy to add an item. To make it somewhat&#xA;easy, I have created an elisp functions in emacs to create an entry.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://81.207.86.96/software/bryar.el&#34;&gt;the elisp file&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Archive</title>
      <link>https://peterstuifzand.nl/archives/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://peterstuifzand.nl/archives/</guid>
      <description>archives</description>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://peterstuifzand.nl/projects/logseq-to-reader/intro/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://peterstuifzand.nl/projects/logseq-to-reader/intro/</guid>
      <description>&lt;p&gt;What can this plugin do?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search</title>
      <link>https://peterstuifzand.nl/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://peterstuifzand.nl/search/</guid>
      <description>search</description>
    </item>
    <item>
      <title>Settings</title>
      <link>https://peterstuifzand.nl/projects/logseq-to-reader/settings/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://peterstuifzand.nl/projects/logseq-to-reader/settings/</guid>
      <description>&lt;p&gt;The plugin has three configuration options: token, author and title.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sponsor</title>
      <link>https://peterstuifzand.nl/sponsor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://peterstuifzand.nl/sponsor/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://paypal.me/pstuifzand&#34;&gt;Paypal&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://buymeacoffee.com/pstuifzand&#34;&gt;Buy me a coffee&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://ko-fi.com/pstuifzand&#34;&gt;Ko-Fi&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
