<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Chaosmonkey</title>
    <link>https://vanderkleijn.net/</link>
    <description>Recent content on Chaosmonkey</description>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>Copyright &amp;copy; 1995-2025, Martijn van der Kleijn. All rights reserved.</copyright>
    <lastBuildDate>Fri, 19 Sep 2025 12:45:00 +0200</lastBuildDate>
    <atom:link href="https://vanderkleijn.net/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ahoy There! How Corporate Greed Made Pirates of Us All</title>
      <link>https://vanderkleijn.net/posts/international-speak-like-a-pirate-day/</link>
      <pubDate>Fri, 19 Sep 2025 12:45:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/international-speak-like-a-pirate-day/</guid>
      <description>&lt;p&gt;Today is &lt;em&gt;International Talk Like a Pirate Day&lt;/em&gt; — that wonderfully ridiculous holiday&#xA;born out of a racquetball match in the mid-90s and later popularized by Dave Barry’s&#xA;column. For most people, it’s a once-a-year excuse to growl “Arrr!” and make a joke&#xA;about parrots at the office.&lt;/p&gt;&#xA;&lt;p&gt;For me, though, it always raises a different association: piracy in the digital sense.&#xA;And this year, more than ever, it struck me just how deeply corporations themselves&#xA;have recreated the conditions for piracy to thrive again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Boardmember of the OpenCommit Foundation</title>
      <link>https://vanderkleijn.net/posts/boardmember-of-opencommit/</link>
      <pubDate>Wed, 10 Sep 2025 18:45:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/boardmember-of-opencommit/</guid>
      <description>&lt;h1 id=&#34;chairing-the-opencommit-foundation&#34;&gt;Chairing the OpenCommit Foundation&lt;a class=&#34;anchorjs-link&#34; href=&#34;#chairing-the-opencommit-foundation&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;I’m happy to share that I’ve taken on the role of &lt;strong&gt;Chair of the Board&lt;/strong&gt; at the&#xA;&lt;strong&gt;&lt;a href=&#34;https://www.opencommit.eu&#34; target=&#34;_blank&#34;&gt;OpenCommit Foundation&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;img src=&#34;https://vanderkleijn.net/img/logo-opencommit.png&#34; alt=&#34;OpenCommit Logo&#34; style=&#34;width: auto; height: auto; max-width: none;&#34; /&gt;&#xA;&lt;p&gt;If you know me or followed me here or elsewhere, you’ll know that open source has&#xA;been a big part of my life for decades. From writing tools and libraries for fun,&#xA;to contributing to projects like Forgejo, to running self-hosted experiments in my&#xA;homelab — FLOSS has always been where my curiosity and community meet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Releasing Forgejo SDK</title>
      <link>https://vanderkleijn.net/posts/releasing-forgejo-sdk/</link>
      <pubDate>Sun, 16 Jun 2024 00:50:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/releasing-forgejo-sdk/</guid>
      <description>&lt;h1 id=&#34;releasing-forgejo-sdk&#34;&gt;Releasing Forgejo SDK&lt;a class=&#34;anchorjs-link&#34; href=&#34;#releasing-forgejo-sdk&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Not too long ago, &lt;a href=&#34;https://forgejo.org&#34; target=&#34;_blank&#34;&gt;Forgejo&lt;/a&gt; &lt;a href=&#34;https://forgejo.org/2024-02-forking-forward/&#34; target=&#34;_blank&#34;&gt;announced their decision&lt;/a&gt; to become a hard fork of Gitea, instead of the soft fork it had been up to that point. Forgejo had diverged from Gitea and turning it into a hard fork simply made sense.&lt;/p&gt;&#xA;&lt;p&gt;A little after that, when I became aware of their decision, I decided to look for a Forgejo SDK for one of my projects instead of continuing to rely on the Gitea SDK.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Backfilling old posts</title>
      <link>https://vanderkleijn.net/posts/backfilled-old-posts/</link>
      <pubDate>Mon, 10 Jun 2024 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/backfilled-old-posts/</guid>
      <description>&lt;h1 id=&#34;backfilling&#34;&gt;Backfilling&lt;a class=&#34;anchorjs-link&#34; href=&#34;#backfilling&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Just wanted to let people know that I&amp;rsquo;ve been backfilling my site with old(er) posts&#xA;that were posted before the migration to Hugo.&lt;/p&gt;&#xA;&lt;p&gt;Backfills mostly concern some old fiction that was once posted here and on Elfwood as well as a few generic posts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HomeDash v1.2.0</title>
      <link>https://vanderkleijn.net/posts/homedash-v1.2.0/</link>
      <pubDate>Tue, 23 Jan 2024 16:30:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/homedash-v1.2.0/</guid>
      <description>&lt;h1 id=&#34;homedash&#34;&gt;HomeDash&lt;a class=&#34;anchorjs-link&#34; href=&#34;#homedash&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;HomeDash is a simplistic, centralized &amp;amp; dynamic dashboard application for your container based home network.&#xA;It provides a REST API endpoint that allows you to add applications to the dashboard.&lt;/p&gt;&#xA;&lt;p&gt;See my &lt;a href=&#34;https://vanderkleijn.net/posts/homedash/&#34;&gt;original post&lt;/a&gt; or the &lt;a href=&#34;https://github.com/mvdkleijn/homedash&#34; target=&#34;_blank&#34;&gt;full readme&lt;/a&gt; for more details.&lt;/p&gt;&#xA;&lt;h2 id=&#34;update-to-v120&#34;&gt;Update to v1.2.0&lt;a class=&#34;anchorjs-link&#34; href=&#34;#update-to-v120&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;This release mostly adds support for statically defined applications.&lt;/p&gt;&#xA;&lt;p&gt;Apart from that, code was shifted around, cleaned up, etc. I also replaced the logrus&#xA;package with the zerolog package for logging.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Speaker at DPC24</title>
      <link>https://vanderkleijn.net/posts/phpconference-talk/</link>
      <pubDate>Mon, 15 Jan 2024 14:50:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/phpconference-talk/</guid>
      <description>&lt;h1 id=&#34;dutch-php-conference-24&#34;&gt;Dutch PHP Conference &amp;lsquo;24&lt;a class=&#34;anchorjs-link&#34; href=&#34;#dutch-php-conference-24&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;It&amp;rsquo;s official: I will be giving &lt;a href=&#34;https://phpconference.nl/session/tools-over-processes-over-people-or-not/&#34; target=&#34;_blank&#34;&gt;my agile talk&lt;/a&gt; to the good people over at the Dutch PHP Conference 2024 in Amsterdam as &lt;a href=&#34;https://phpconference.nl/speaker/martijn-van-der-kleijn/&#34; target=&#34;_blank&#34;&gt;one&lt;/a&gt; of &lt;a href=&#34;https://phpconference.nl/speakers/&#34; target=&#34;_blank&#34;&gt;their speakers&lt;/a&gt; on Friday.&lt;/p&gt;&#xA;&lt;p&gt;The Schedule just went live over at &lt;a href=&#34;https://phpconference.nl/schedule-2024/&#34; target=&#34;_blank&#34;&gt;https://phpconference.nl/schedule-2024/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;  &lt;a class=&#34;paragraph-image&#34;&gt;&#xA;    &lt;img data-src=&#34;https://vanderkleijn.net/img/dpc24/dpc24-wide-attendees.png&#34; data-action=&#34;zoom&#34; alt=&#34;Conference attendees&#34;  class=&#34;lazyload&#34;&gt;&#xA;  &lt;/a&gt;&#xA;  &#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;The Dutch PHP Conference is an annual web technology conference around PHP technology. The conference is completely in English and is focused on mobile- and web development related to PHP technology. However, it also has two sister conferences: Appdevcon and Webdevcon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>go-simplequeue v1.1.0</title>
      <link>https://vanderkleijn.net/posts/go-simplequeue-v1.1.0/</link>
      <pubDate>Mon, 15 Jan 2024 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/go-simplequeue-v1.1.0/</guid>
      <description>&lt;h1 id=&#34;go-simplequeue&#34;&gt;Go-simplequeue&lt;a class=&#34;anchorjs-link&#34; href=&#34;#go-simplequeue&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;h2 id=&#34;release-v110&#34;&gt;Release v1.1.0&lt;a class=&#34;anchorjs-link&#34; href=&#34;#release-v110&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Support for Go 1.21.x&lt;/li&gt;&#xA;&lt;li&gt;Dropped support for Go 1.19&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;more-information-and-support&#34;&gt;More information and support&lt;a class=&#34;anchorjs-link&#34; href=&#34;#more-information-and-support&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Github: &lt;a href=&#34;https://github.com/mvdkleijn/go-simplequeue&#34; target=&#34;_blank&#34;&gt;https://github.com/mvdkleijn/go-simplequeue&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Generated Go packages info: &lt;a href=&#34;https://pkg.go.dev/github.com/mvdkleijn/go-simplequeue&#34; target=&#34;_blank&#34;&gt;https://pkg.go.dev/github.com/mvdkleijn/go-simplequeue&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;licensing&#34;&gt;Licensing&lt;a class=&#34;anchorjs-link&#34; href=&#34;#licensing&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The go-simplequeue is made available under the MPL-2.0 license.&lt;/p&gt;&#xA;&lt;p&gt;A slightly easier to read format can be found at &lt;a href=&#34;https://choosealicense.com/licenses/mpl-2.0/&#34; target=&#34;_blank&#34;&gt;https://choosealicense.com/licenses/mpl-2.0/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Healthchecker v1.1.0</title>
      <link>https://vanderkleijn.net/posts/healthchecker-v1.1.0/</link>
      <pubDate>Sat, 13 Jan 2024 11:50:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/healthchecker-v1.1.0/</guid>
      <description>&lt;h1 id=&#34;healthchecker-release-v110&#34;&gt;Healthchecker release v1.1.0&lt;a class=&#34;anchorjs-link&#34; href=&#34;#healthchecker-release-v110&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;&#xA;&lt;li&gt;Bumped supported Go version to 1.21&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;support-and-details&#34;&gt;Support and details&lt;a class=&#34;anchorjs-link&#34; href=&#34;#support-and-details&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Go versions, see: &lt;a href=&#34;https://endoflife.date/go&#34; target=&#34;_blank&#34;&gt;https://endoflife.date/go&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Architectures: amd64, arm64 on Windows and Linux&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Source code and issues: &lt;a href=&#34;https://github.com/mvdkleijn/healthchecker&#34; target=&#34;_blank&#34;&gt;https://github.com/mvdkleijn/healthchecker&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Blog post original release: &lt;a href=&#34;https://vanderkleijn.net/posts/healthchecker/&#34; target=&#34;_blank&#34;&gt;https://vanderkleijn.net/posts/healthchecker/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;licensing&#34;&gt;Licensing&lt;a class=&#34;anchorjs-link&#34; href=&#34;#licensing&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;The healthchecker utility is made available under the MPL-2.0 license.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;For more information on what that means in detail, you can read the license in full here: &lt;a href=&#34;https://www.mozilla.org/en-US/MPL/&#34; target=&#34;_blank&#34;&gt;https://www.mozilla.org/en-US/MPL/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Homedash sidecar v1.2.0</title>
      <link>https://vanderkleijn.net/posts/homedash-sidecar-v1.2.0/</link>
      <pubDate>Fri, 12 Jan 2024 21:30:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/homedash-sidecar-v1.2.0/</guid>
      <description>&lt;h1 id=&#34;homedash-sidecar&#34;&gt;Homedash sidecar&lt;a class=&#34;anchorjs-link&#34; href=&#34;#homedash-sidecar&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Homedash sidecar is the sidecar application that reports running containers to the Homedash server.&lt;/p&gt;&#xA;&lt;h2 id=&#34;update-to-v120&#34;&gt;Update to v1.2.0&lt;a class=&#34;anchorjs-link&#34; href=&#34;#update-to-v120&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;This release add support for a new environment variable named &lt;code&gt;HOMEDASH_SIDECAR_UUID&lt;/code&gt;. It can be used to make the&#xA;UUID of the sidecar persistent.&lt;/p&gt;&#xA;&lt;p&gt;The sidecar will still work fine without it, it will simple (re)generate a new UUID upon restart.&lt;/p&gt;&#xA;&lt;p&gt;See the &lt;a href=&#34;https://github.com/mvdkleijn/homedash-sidecar&#34; target=&#34;_blank&#34;&gt;README.md&lt;/a&gt; for details.&lt;/p&gt;&#xA;&lt;h2 id=&#34;previous-releases&#34;&gt;Previous releases&lt;a class=&#34;anchorjs-link&#34; href=&#34;#previous-releases&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;v110&#34;&gt;v1.1.0&lt;a class=&#34;anchorjs-link&#34; href=&#34;#v110&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A maintenance release that:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Adds support for Go 1.21.x;&lt;/li&gt;&#xA;&lt;li&gt;Updates the dependencies to the latest versions;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;getting-support&#34;&gt;Getting support&lt;a class=&#34;anchorjs-link&#34; href=&#34;#getting-support&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;You can find the Github repositories at:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Homedash sidecar v1.1.0</title>
      <link>https://vanderkleijn.net/posts/homedash-sidecar-v1.1.0/</link>
      <pubDate>Fri, 12 Jan 2024 17:03:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/homedash-sidecar-v1.1.0/</guid>
      <description>&lt;h1 id=&#34;homedash-sidecar&#34;&gt;HomeDash sidecar&lt;a class=&#34;anchorjs-link&#34; href=&#34;#homedash-sidecar&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;HomeDash sidecar is the sidecar application that reports running containers to the HomeDash server.&lt;/p&gt;&#xA;&lt;h2 id=&#34;update-to-v110&#34;&gt;Update to v1.1.0&lt;a class=&#34;anchorjs-link&#34; href=&#34;#update-to-v110&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;A maintenance release that:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Adds support for Go 1.21.x;&lt;/li&gt;&#xA;&lt;li&gt;Updates the dependencies to the latest versions;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;getting-support&#34;&gt;Getting support&lt;a class=&#34;anchorjs-link&#34; href=&#34;#getting-support&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;You can find the Github repositories at:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mvdkleijn/homedash&#34; target=&#34;_blank&#34;&gt;https://github.com/mvdkleijn/homedash&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mvdkleijn/homedash-sidecar&#34; target=&#34;_blank&#34;&gt;https://github.com/mvdkleijn/homedash-sidecar&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There you can read more details in the README files, report issues and/or collaborate in its development.&lt;/p&gt;&#xA;&lt;p&gt;Currently supported stack:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Go versions, see: &lt;a href=&#34;https://endoflife.date/go&#34; target=&#34;_blank&#34;&gt;https://endoflife.date/go&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Architectures: amd64, arm64&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;licensing&#34;&gt;Licensing&lt;a class=&#34;anchorjs-link&#34; href=&#34;#licensing&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;HomeDash is made available under the &lt;a href=&#34;https://choosealicense.com/licenses/mpl-2.0/&#34; target=&#34;_blank&#34;&gt;MPL-2.0&lt;/a&gt;&#xA;license. The full details are available from the &lt;a href=&#34;https://vanderkleijn.net/LICENSE&#34;&gt;LICENSE&lt;/a&gt; file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HomeDash</title>
      <link>https://vanderkleijn.net/posts/homedash/</link>
      <pubDate>Sat, 10 Jun 2023 09:30:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/homedash/</guid>
      <description>&lt;h1 id=&#34;homedash&#34;&gt;HomeDash&lt;a class=&#34;anchorjs-link&#34; href=&#34;#homedash&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;HomeDash is a simplistic, centralized &amp;amp; dynamic dashboard application for your container based home network.&#xA;It provides a REST API endpoint that allows you to add applications to the dashboard.&lt;/p&gt;&#xA;&lt;p&gt;Features include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Single, statically compiled binary&lt;/li&gt;&#xA;&lt;li&gt;Basic UI for dashboard based on plain HTML, CSS and a sprinkling of VueJS&lt;/li&gt;&#xA;&lt;li&gt;Automated, regular removal/refresh of entries older that X minutes&lt;/li&gt;&#xA;&lt;li&gt;Configuration through environment variables or config.yml file&lt;/li&gt;&#xA;&lt;li&gt;Swagger docs for REST API (see &lt;a href=&#34;http://localhost:8080/static/docs&#34; target=&#34;_blank&#34;&gt;http://localhost:8080/static/docs&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;Distroless container image&lt;/li&gt;&#xA;&lt;li&gt;Multi-architecture container image&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Keep in mind that dashboard is intended for local usage, so there are no provisions for authentication, etc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Healthchecker utility</title>
      <link>https://vanderkleijn.net/posts/healthchecker/</link>
      <pubDate>Mon, 05 Jun 2023 18:21:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/healthchecker/</guid>
      <description>&lt;h1 id=&#34;healthchecker&#34;&gt;Healthchecker&lt;a class=&#34;anchorjs-link&#34; href=&#34;#healthchecker&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;I made a simplistic Go utility that does a HTTP HEAD check to see if a server app is alive.&#xA;Ideal for in distroless containers in my opinion.&lt;/p&gt;&#xA;&lt;p&gt;All it does (and likely will ever do) is:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Send HTTP HEAD request to a specified URL;&lt;/li&gt;&#xA;&lt;li&gt;On return of HTTP status code 200, exit with value 0;&lt;/li&gt;&#xA;&lt;li&gt;Else exit with value 1;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;a class=&#34;anchorjs-link&#34; href=&#34;#usage&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Build it yourself or download a pre-built release.&lt;/li&gt;&#xA;&lt;li&gt;Point it to your server&amp;rsquo;s URL.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;examples&#34;&gt;Examples&lt;a class=&#34;anchorjs-link&#34; href=&#34;#examples&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;On the commandline:&lt;/p&gt;</description>
    </item>
    <item>
      <title>A small library called go-simplequeue</title>
      <link>https://vanderkleijn.net/posts/announcing-go-simplequeue/</link>
      <pubDate>Wed, 15 Mar 2023 18:45:40 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/announcing-go-simplequeue/</guid>
      <description>&lt;h1 id=&#34;go-simplequeue&#34;&gt;Go-simplequeue&lt;a class=&#34;anchorjs-link&#34; href=&#34;#go-simplequeue&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Since I had need for a simple queueing system and it seemed like a fun project to quickly hack out, I built it.&lt;/p&gt;&#xA;&lt;p&gt;Its a simple locking queue system with workers, written in Go. It served my needs, maybe it&#xA;can serve yours.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m making it available as an Open Source library as I stongly believe in FOSS and giving&#xA;back to the community.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Github: &lt;a href=&#34;https://github.com/mvdkleijn/go-simplequeue&#34; target=&#34;_blank&#34;&gt;https://github.com/mvdkleijn/go-simplequeue&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Generated Go packages info: &lt;a href=&#34;https://pkg.go.dev/github.com/mvdkleijn/go-simplequeue&#34; target=&#34;_blank&#34;&gt;https://pkg.go.dev/github.com/mvdkleijn/go-simplequeue&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;example-of-usage&#34;&gt;Example of usage&lt;a class=&#34;anchorjs-link&#34; href=&#34;#example-of-usage&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;// Define a job that conforms to the simplequeue.Job interface&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;type&lt;/span&gt; MyJob &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;struct&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;    id &lt;span style=&#34;color:#8be9fd&#34;&gt;int&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;func&lt;/span&gt; (mj &lt;span style=&#34;color:#ff79c6&#34;&gt;*&lt;/span&gt;MyJob) &lt;span style=&#34;color:#50fa7b&#34;&gt;ID&lt;/span&gt;() &lt;span style=&#34;color:#8be9fd&#34;&gt;int64&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;int64&lt;/span&gt;(mj.id)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;func&lt;/span&gt; (mj &lt;span style=&#34;color:#ff79c6&#34;&gt;*&lt;/span&gt;MyJob) &lt;span style=&#34;color:#50fa7b&#34;&gt;Do&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6272a4&#34;&gt;// Lets just pause the job for a little time&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;    ms &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; time.&lt;span style=&#34;color:#50fa7b&#34;&gt;Duration&lt;/span&gt;(rand.&lt;span style=&#34;color:#50fa7b&#34;&gt;Intn&lt;/span&gt;(&lt;span style=&#34;color:#bd93f9&#34;&gt;1000&lt;/span&gt;)&lt;span style=&#34;color:#ff79c6&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#ff79c6&#34;&gt;*&lt;/span&gt; time.Millisecond&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;    time.&lt;span style=&#34;color:#50fa7b&#34;&gt;Sleep&lt;/span&gt;(ms)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;    fmt.&lt;span style=&#34;color:#50fa7b&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;Job %d executing\n&amp;#34;&lt;/span&gt;, mj.&lt;span style=&#34;color:#50fa7b&#34;&gt;ID&lt;/span&gt;())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;// Create some jobs for our test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#50fa7b&#34;&gt;createJobs&lt;/span&gt;(number &lt;span style=&#34;color:#8be9fd&#34;&gt;int&lt;/span&gt;) []&lt;span style=&#34;color:#ff79c6&#34;&gt;*&lt;/span&gt;MyJob {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;    jobs &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;make&lt;/span&gt;([]&lt;span style=&#34;color:#ff79c6&#34;&gt;*&lt;/span&gt;MyJob, &lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;for&lt;/span&gt; i &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;; i &lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;lt;=&lt;/span&gt; number; i&lt;span style=&#34;color:#ff79c6&#34;&gt;++&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;        jobs = &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;append&lt;/span&gt;(jobs, &lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;amp;&lt;/span&gt;MyJob{id: i})&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;return&lt;/span&gt; jobs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;// Run our program&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#50fa7b&#34;&gt;main&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30&lt;/span&gt;&lt;span&gt;    ctx &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; context.&lt;span style=&#34;color:#50fa7b&#34;&gt;Background&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;31&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;32&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6272a4&#34;&gt;// How much we want of each&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;33&lt;/span&gt;&lt;span&gt;    numWorkers &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#bd93f9&#34;&gt;15&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;34&lt;/span&gt;&lt;span&gt;    numJobs &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#bd93f9&#34;&gt;200&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;35&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;36&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6272a4&#34;&gt;// Create some jobs with a helper function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;37&lt;/span&gt;&lt;span&gt;    jobs &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#50fa7b&#34;&gt;createJobs&lt;/span&gt;(numJobs)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;38&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;39&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6272a4&#34;&gt;// Create a queue&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;40&lt;/span&gt;&lt;span&gt;    q &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; sq.&lt;span style=&#34;color:#50fa7b&#34;&gt;CreateQueue&lt;/span&gt;(ctx)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;41&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;42&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6272a4&#34;&gt;// Initialize the workers&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;43&lt;/span&gt;&lt;span&gt;    workers &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; sq.&lt;span style=&#34;color:#50fa7b&#34;&gt;InitializeWorkers&lt;/span&gt;(ctx, numWorkers)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;44&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;45&lt;/span&gt;&lt;span&gt;    fmt.&lt;span style=&#34;color:#50fa7b&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;Number of workers in pool: %d\n&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;len&lt;/span&gt;(workers))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;46&lt;/span&gt;&lt;span&gt;    fmt.&lt;span style=&#34;color:#50fa7b&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;Number of jobs for queue: %d\n&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;len&lt;/span&gt;(jobs))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;47&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;48&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6272a4&#34;&gt;// Push the jobs onto the Queue&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;49&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;for&lt;/span&gt; _, job &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;range&lt;/span&gt; jobs {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;50&lt;/span&gt;&lt;span&gt;        q.&lt;span style=&#34;color:#50fa7b&#34;&gt;Push&lt;/span&gt;(job)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;51&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;52&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;53&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6272a4&#34;&gt;// Process the queue with some workers&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;54&lt;/span&gt;&lt;span&gt;    q.&lt;span style=&#34;color:#50fa7b&#34;&gt;Process&lt;/span&gt;(ctx, workers)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;55&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;56&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#6272a4&#34;&gt;// Show some stats afterwards&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;57&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;var&lt;/span&gt; totalJobsHandled &lt;span style=&#34;color:#8be9fd&#34;&gt;int64&lt;/span&gt; = &lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;58&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;for&lt;/span&gt; _, w &lt;span style=&#34;color:#ff79c6&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;range&lt;/span&gt; workers {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;59&lt;/span&gt;&lt;span&gt;        totalJobsHandled &lt;span style=&#34;color:#ff79c6&#34;&gt;+=&lt;/span&gt; w.&lt;span style=&#34;color:#50fa7b&#34;&gt;Handled&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;60&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;61&lt;/span&gt;&lt;span&gt;        fmt.&lt;span style=&#34;color:#50fa7b&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;Worker %d processed a total of %d jobs\n&amp;#34;&lt;/span&gt;, w.&lt;span style=&#34;color:#50fa7b&#34;&gt;ID&lt;/span&gt;(), w.&lt;span style=&#34;color:#50fa7b&#34;&gt;Handled&lt;/span&gt;())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;62&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;63&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;64&lt;/span&gt;&lt;span&gt;    fmt.&lt;span style=&#34;color:#50fa7b&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;Total jobs handled: %d\n&amp;#34;&lt;/span&gt;, totalJobsHandled)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;65&lt;/span&gt;&lt;span&gt;    fmt.&lt;span style=&#34;color:#50fa7b&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;Total workers: %d\n&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;len&lt;/span&gt;(workers))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;66&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;licensing&#34;&gt;Licensing&lt;a class=&#34;anchorjs-link&#34; href=&#34;#licensing&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Always a difficult topic. &lt;strong&gt;The go-simplequeue is made available under the MPL-2.0 license.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Replanting forests</title>
      <link>https://vanderkleijn.net/posts/treenation/</link>
      <pubDate>Tue, 18 Oct 2022 17:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/treenation/</guid>
      <description>&lt;p&gt;Recently I gave a talk at the 2022 &lt;a href=&#34;https://re-factor.be&#34; target=&#34;_blank&#34;&gt;Re:factor Conference&lt;/a&gt; titled &amp;ldquo;Tools over Processes over People &amp;hellip;or not&amp;rdquo;. In the course of twenty minutes, I highlighted some potential problems, solutions and my personal experiences.&lt;/p&gt;&#xA;&lt;p&gt;So how does that fit in with replanting forests?&lt;/p&gt;&#xA;&lt;p&gt;Well, in these turbulent times of economic woes, rising tensions among nations as well as a global problem called climate change, it is always nice to be able to do something. Thanks to the team over at the &lt;a href=&#34;https://re-factor.be&#34; target=&#34;_blank&#34;&gt;Re:factor Conference&lt;/a&gt;, I was able not only to give a talk on Agile, but at the same time contribute a little something to the environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What&#39;s happening here?</title>
      <link>https://vanderkleijn.net/posts/my-first-post/</link>
      <pubDate>Wed, 12 Oct 2022 22:01:29 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/my-first-post/</guid>
      <description>&lt;h1 id=&#34;let-me-explain&#34;&gt;Let me explain..&lt;a class=&#34;anchorjs-link&#34; href=&#34;#let-me-explain&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;I&amp;rsquo;ve finally managed to find some time to setup a new site. The intention is for me to semi-regularly fill it with content&#xA;of both technical as well as non-technical nature. Some possible future topics could include articles about the agile mindset&#xA;writing Golang software or about home automation for example.&lt;/p&gt;&#xA;&lt;p&gt;My intent is also to include some of my original fiction and articles that could be considered more as thought experiments&#xA;on various topics such as economics or the UBI. More on that later though.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The story of the S.S. Useless</title>
      <link>https://vanderkleijn.net/fiction/ssuseless/</link>
      <pubDate>Mon, 08 Nov 2010 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/ssuseless/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;The story of the S.S. Useless&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;This is a story about the intrepid crew of the S.S. Useless. The Useless is a Nonexistent class vessel and is the first and only vessel of its class to ever reach completion. Soon after completing the Useless, some of its leftover parts were used in building a planetary shield, plunging the planet into perpetual Nonexistence almost immediately.&#xA;&lt;p&gt;This, of course, rather worried the crew of the S.S. Useless since they were now faced with the annoyingly difficult task of finding the Nonexistent planet. Fortunately, as everyone knows, Nonexistence doesn’t actually remove an object from existence. It more or less congeals around it, temporarily removing the item from detection by any means. Several esteemed Nonexistent scientists noted that this didn’t matter, since Nonexistence is quite something else from nonexistence.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing a book</title>
      <link>https://vanderkleijn.net/posts/writing-a-book/</link>
      <pubDate>Sun, 08 Aug 2010 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/writing-a-book/</guid>
      <description>&lt;p&gt;In November of 2010 I&amp;rsquo;ll be taking a break from my main project, Wolf CMS, to spend time on a new project: NanoWrimo 2010. It is an online writing competition that anyone can enter. You can&amp;rsquo;t really win anything as its just for the fun of it. The intention is to write a novel in one month.&lt;/p&gt;&#xA;&lt;p&gt;As its 50,000 words at least that I need to write, I&amp;rsquo;m giving no guarantees if I&amp;rsquo;ll make it. But I&amp;rsquo;ll sure be trying!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Going to FOSDEM 2010</title>
      <link>https://vanderkleijn.net/posts/going-to-fosdem-2010/</link>
      <pubDate>Wed, 27 Jan 2010 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/going-to-fosdem-2010/</guid>
      <description>&lt;p&gt;&lt;figure&gt;&#xA;  &lt;a class=&#34;paragraph-image&#34;&gt;&#xA;    &lt;img data-src=&#34;https://vanderkleijn.net/img/going-to-fosdem-2010.png&#34; data-action=&#34;zoom&#34; alt=&#34;/img/going-to-fosdem-2010.png&#34;  class=&#34;lazyload&#34;&gt;&#xA;  &lt;/a&gt;&#xA;  &#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; yep, I&amp;rsquo;ll be there. The first session I&amp;rsquo;m planning to attend is &amp;ldquo;Evil on the Internet&amp;rdquo; @ 11:45 on Saturday.&lt;/p&gt;&#xA;&lt;p&gt;&lt;del&gt;At least, that&amp;rsquo;s my intention. I still need to work out a few kinks but since Wolf CMS 0.6.0 final is planned for January 31st, I should be safe.&lt;/del&gt;&lt;/p&gt;&#xA;&lt;p&gt;The FOSDEM conference is entirely free (no registration required) and is held in Brussels, Belgium. If you&amp;rsquo;ll be there and want to talk about Wolf CMS for example, maybe we can hook up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Education in The Netherlands</title>
      <link>https://vanderkleijn.net/posts/letters-education-in-nl/</link>
      <pubDate>Mon, 14 Apr 2008 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/letters-education-in-nl/</guid>
      <description>&lt;p&gt;Dear Dutchies,&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;d love to propose some changes to the Dutch education system.&lt;/p&gt;&#xA;&lt;p&gt;The study finance, college registration costs and mandatory parental contributions should be removed. This would prevent a lot of money from being needlessly being &amp;ldquo;pumped around&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Only a single set of schoolbooks should be used throughout the country. The book that&amp;rsquo;s used to study English in Leiden, should also be used in Franeker (for example).&lt;/p&gt;&#xA;&lt;p&gt;Schoolbooks should remain useable for at least three consecutive years.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Does capitalism work?</title>
      <link>https://vanderkleijn.net/posts/letters-does-capitalism-work/</link>
      <pubDate>Wed, 02 Apr 2008 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/letters-does-capitalism-work/</guid>
      <description>&lt;p&gt;Does capitalism work? I always wonder what would happen if people were not obligated to work. If they were provided with free housing, electricity and food. It would leave them free to do whatever they wanted.&lt;/p&gt;&#xA;&lt;p&gt;Personally I feel that many people would simply still work. They would probably switch jobs much quicker and would probably be much happier doing it. Would people no longer be nurses, teachers or even street cleaners? Maybe, maybe not. There are plenty of people out there who love to do simple things like sweeping the street.&lt;/p&gt;</description>
    </item>
    <item>
      <title>See you at JavaPolis 2007</title>
      <link>https://vanderkleijn.net/posts/see-you-at-javapolis/</link>
      <pubDate>Mon, 19 Nov 2007 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/posts/see-you-at-javapolis/</guid>
      <description>&lt;p&gt;Another JavaPolis conference will be held from december 10th - 14th in Antwerp, Belgium. Since I heard a lot of good stuff about the last JavaPolis sessions, I&amp;rsquo;ve decided to take a look.&lt;/p&gt;&#xA;&lt;p&gt;For a relatively small pricetag of € 410,- for five full days, you get a large number of interesting presentations to attend.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve noted some which I find interesting and will probably attend:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.javapolis.com/confluence/display/JP07/Spring&amp;#43;2.5%2C&amp;#43;an&amp;#43;Update&#34; target=&#34;_blank&#34;&gt;Spring 2.5, an Update&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.javapolis.com/confluence/display/JP07/Task-focused&amp;#43;programming&amp;#43;with&amp;#43;Mylyn&#34; target=&#34;_blank&#34;&gt;Task-focused programming with Mylyn&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.javapolis.com/confluence/display/JP07/OpenJDK&amp;#43;BOF%2C&amp;#43;get&amp;#43;involved&#34; target=&#34;_blank&#34;&gt;OpenJDK BOF, get involved&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.javapolis.com/confluence/display/JP07/New&amp;#43;Java&amp;#43;Language&amp;#43;Features&#34; target=&#34;_blank&#34;&gt;New Java Language Features&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;The State of the Java Universe by James Gosling&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.javapolis.com/confluence/display/JP07/The&amp;#43;future&amp;#43;of&amp;#43;Computing&#34; target=&#34;_blank&#34;&gt;The Future of Computing&lt;/a&gt; panel with James Gosling, Neal Gafter, Joshua Bloch &amp;amp; Martin Odersky&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.javapolis.com/confluence/display/JP07/Effective&amp;#43;Java&amp;#43;Reloaded&#34; target=&#34;_blank&#34;&gt;Effective Java Reloaded&lt;/a&gt; by Joshua Bloch&lt;/li&gt;&#xA;&lt;li&gt;And lots more!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For those who are interested, I&amp;rsquo;ll also be meeting up with &lt;a href=&#34;http://www.vqwiki.org/&#34; target=&#34;_blank&#34;&gt;VQWiki&lt;/a&gt; users during the conference to talk about the up and coming version 3.0 of VQWiki. If you&amp;rsquo;d like to be there as well, drop a note on the &lt;a href=&#34;http://vqwiki.org/wiki/jsp/Wiki?JavaPolis2007&#34; target=&#34;_blank&#34;&gt;VQWiki wiki&lt;/a&gt; about it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flora - scene 5</title>
      <link>https://vanderkleijn.net/fiction/flora-scene-5/</link>
      <pubDate>Tue, 20 Dec 2005 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/flora-scene-5/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Flora - scene 5&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;It had been a couple of days now since the attack on her family by the soldiers. They had taken her and murdered her family though why they had spared her she did not know. At first, she had assumed the worst. After all, she was a pretty and young girl captured by a bunch of ruff necked mercenary soldiers. Though the soldiers hadn&#39;t treated her kindly in any way, they hadn&#39;t hurt her either. She wondered where they were taking her.&#xA;&lt;p&gt;Their group had turned onto a well traveled road that morning and had been traveling hard all day. From the pace the mecenaries were keeping to, Flora guessed they must be getting close to their destination. It was getting crowded on the road. More people than she was accustumed to were arround her and she started to feel uncomfortable. A mere twenty minutes later they rounded a hill and she saw it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Priest Dun - II</title>
      <link>https://vanderkleijn.net/fiction/priest-dun-part2/</link>
      <pubDate>Sun, 21 Apr 2002 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/priest-dun-part2/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Priest Dun - II&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;When we left our good-humored priest last time, he was just heading out from the small village of Erisgate quietly cursing under his breath because, as usual, his god had played another trick on him. There was a small rain cloud over his head, following his every move. It’s probably a good thing that our priest Dun recognized the fact that he couldn’t do anything about it, otherwise he might have gotten the impression that he could quit his job. And that wouldn’t please his god at all.&#xA;&lt;p&gt;Well, priest Dun was traveling to a distant Lord’s manner this time. Somehow a small artifact of tremendous power had accidentally found its way into priest Dun’s hands, despite him trying to avoid touching anything for this exact reason. He wasn’t at all convinced his god had nothing to do with it. This small artifact had turned out to have, rather conveniently he thought, the owner’s name and address on the bottom. Not an everyday sight and he felt that it would be prudent to make the long journey to the owner and return the item. Otherwise he’d probably wouldn’t get any rest until he did anyway.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The people of the dust</title>
      <link>https://vanderkleijn.net/fiction/people-of-the-dust/</link>
      <pubDate>Sun, 24 Jun 2001 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/people-of-the-dust/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;The people of the dust&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;In a house not far from here, there is big room. On a sunny day, when the sun sends bright rays of light through the windows of that room, one might see the many particles of dust that float around that very room.&#xA;&lt;p&gt;Have you noticed that it is always very quiet in such a room? One might use that quiet and really listen to the sounds of a room, for in every such room, it is never completely silent. Now, try to imagine the room. It is a sitting room with wooden floors and comfortable chairs, big windows facing the south with colorful panes of glass in the top, a clock softly ticking away time and dust floating through the air, clearly visible in the bright sun light.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Midwinter</title>
      <link>https://vanderkleijn.net/fiction/midwinter/</link>
      <pubDate>Mon, 19 Feb 2001 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/midwinter/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Midwinter&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;A white satin blanket of snow covered the ground. The guard looked up at the moon. Almost two by his estimate. His watch would be over soon. It was midwinter today and he never liked winter anyways. Turning his gaze around, he noticed a small red light from the east side of the camp. Easing his sword in its scabbard, he moved to get a better view of the tiny spek of light. From out of nowhere appeared another red dot, hovering about five meters apart from the first. Feeling some apprehensions about the whole situation, he moved towards one of the sleeping figures closer to the center of the encampment.&#xA;&lt;p&gt;‘Baldor&amp;hellip; Baldor&amp;hellip; I think we might have trouble.’ He whispered whilst gently rousing his comrade.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Chronicles of Dawn</title>
      <link>https://vanderkleijn.net/fiction/chronicles-of-dawn/</link>
      <pubDate>Tue, 29 Aug 2000 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/chronicles-of-dawn/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Chronicles of Dawn&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;‘Show him in.’  The double doors swung open.  In strode a man with an air of confidence.  He looked brave yet strangely awed.  He stopped, looked around for a moment and spoke.&#xA;&lt;p&gt;‘Lord Dragon, I would ask of you to keep under control you own.’&lt;/p&gt;&#xA;&lt;p&gt;‘What do you mean, human?  You know very well that the dragons of Tir harm none.’ Ser Gilliam took a step backwards to look the dragon in it’s eye.  Something about that black hole made him shiver.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A small collection of poems</title>
      <link>https://vanderkleijn.net/fiction/poems/</link>
      <pubDate>Thu, 01 Jun 2000 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/poems/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34; style=&#34;text-align: center;&#34;&gt;&#xA;&lt;strong&gt;My Heart&lt;/strong&gt;&#xA;&lt;p&gt;My heart, it is made of stone.&lt;br/&gt;&#xA;It has walled itself in, my heart.&lt;br/&gt;&#xA;Few have made those walls shudder.&lt;br/&gt;&#xA;And none have made them sunder.&lt;br/&gt;&#xA;My heart, how foolish is my heart.&lt;/p&gt;&#xA;&lt;p&gt;&lt;sub&gt;march, 1999&lt;/sub&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&lt;br/&gt;&#xA;&lt;div class=&#34;typewriter-page&#34; style=&#34;text-align: center;&#34;&gt;&#xA;&lt;strong&gt;Spring&lt;/strong&gt;&#xA;&lt;p&gt;A new spring,&lt;br/&gt;&#xA;Birds take to wing.&lt;/p&gt;&#xA;&lt;p&gt;New grass grows,&lt;br/&gt;&#xA;New water flows.&lt;/p&gt;&#xA;&lt;p&gt;All things blossom,&lt;br/&gt;&#xA;In Mother Nature&amp;rsquo;s bosom.&lt;/p&gt;&#xA;&lt;p&gt;&lt;sub&gt;march, 1999&lt;/sub&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&lt;br/&gt;&#xA;&lt;div class=&#34;typewriter-page&#34; style=&#34;text-align: center;&#34;&gt;&#xA;&lt;strong&gt;The Wellspring&lt;/strong&gt;&#xA;&lt;p&gt;From a creative wellspring&lt;br/&gt;&#xA;Come one by one,&lt;br/&gt;&#xA;Fishes called story and song.&lt;br/&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elf?</title>
      <link>https://vanderkleijn.net/fiction/elf/</link>
      <pubDate>Fri, 01 Oct 1999 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/elf/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Elf?&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Walking in the mist, I suddenly came upon her. At first she seemed frightened, yet green fire jumped out at me from her eyes, telling me to tred carefully. Her long golden hair waved in the wind when she turned. She strode off into the mist.&lt;/p&gt;&#xA;&lt;p&gt;At first I couldn’t find her. I walked on aimlessly for a while trying to find that girl. Without warning I cleared the fog and found myself standing on top of a cliff. The girl looked at me with those teasing eyes as if she was saying ‘Will you follow me even if I jump?’.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Priest Dun</title>
      <link>https://vanderkleijn.net/fiction/priest-dun/</link>
      <pubDate>Tue, 10 Aug 1999 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/priest-dun/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Priest Dun&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Pulling along his cart, the farmer reached the small village of Erisgate just before nightfall.&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;Good&amp;rdquo;, he thought, &amp;ldquo;I&amp;rsquo;ll be just in time for the evening meal.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;The farmer, a somewhat older man with a nasty looking scar across his face, heaved for a last time and pushed his cart into place. Dropping the handles, he moved towards the local inn.&lt;/p&gt;&#xA;&lt;p&gt;Upon opening the Inn’s door, a strong odor filled his nostrils. Meat. The smell of freshly roasted meat wafted out the kitchen door. The sound and smell of ale drifted over from the bar. Tobacco smoke you could cut with a knife hung in the air and conversations floated across it. The farmer’s attention fell upon a man in the center of the room.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dead by claw</title>
      <link>https://vanderkleijn.net/fiction/dead-by-claw/</link>
      <pubDate>Sun, 01 Aug 1999 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/dead-by-claw/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Dead by claw&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Darkness descended onto the land and evil lurked everywhere. Or so it seemed, at least, in the imagination of the small boy wielding his sword. It was a simple wooden sword, one every small boy would have. One day however he would inherit his fathers sword and Dukedom.&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;How are you feeling, my boy?&amp;rdquo; the man walking up to him said. &amp;ldquo;Practicing your sword again? I’ll ask your father tomorrow if we can’t start real lessons.&amp;rdquo; The man ruffled his hair and moved towards the doorway leading out of the small courtyard. Rounding the corner, he walked down the corridor. Upon passing a statue, he heard faint clicking. He stopped. Looking around, he didn’t notice anything out of place.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Storyteller</title>
      <link>https://vanderkleijn.net/fiction/the-storyteller/</link>
      <pubDate>Thu, 29 Jul 1999 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/the-storyteller/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;The Storyteller&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;A large, sprawling palace complex lies overlooking a green valley and a winding river. The valley is covered with huge palm trees, smaller shade giving trees and shrubs of all kinds. Further out to the east, across the slowly moving river farm fields can be seen, with farmers driving their oxen to plow them. The palace complex itself is home to the royal family of this land.&#xA;&lt;p&gt;Though it counts less than fifteen towers in all, the complex is so large that it is a small city unto itself. There are many palace court yards which contain gardens with flowers of all variety. Like small green islands, these courtyards are the hub of palace life. Ringed by beautiful stone arches and covered walkways, many of these gardens are visited only by the palace staff.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Fallen</title>
      <link>https://vanderkleijn.net/fiction/fallen/</link>
      <pubDate>Sat, 10 Jul 1999 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/fallen/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;The Fallen&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;A man walking down the street. People swirving to avoid him. He looks sad and at the same time menacing. Black hair and black eyes, he stalks the street. People push back against the wall, cowering in fear as he passes by, yet why they do not know. This stranger dressed all in black invokes fear and screams of terror fill their minds. A big, killer of a dog regards the man but a bearest moment before yelping a plea for help and hurrying away.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Betrayed</title>
      <link>https://vanderkleijn.net/fiction/betrayed/</link>
      <pubDate>Tue, 01 Jun 1999 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/betrayed/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Betrayed&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The man shifted uncomfortably around his cushion. Perhaps his master would forgive his failure and allow him to live. Gloom set in. His master was not of the forgiving type. He done his best though, more he could not do. The empty room, in which he awaited his master looked like it always did, sparsely decorated yet extremely beautiful and elegant in its simplicity. His master’s love for flowers was evident. On the raised platform a small vase stood to one side containing a few delicate blossoms.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Asking questions</title>
      <link>https://vanderkleijn.net/fiction/asking-questions/</link>
      <pubDate>Mon, 01 Mar 1999 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/asking-questions/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;Asking Questions&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Turning away from his practice partner, with which he was practicing his fencing, he looks you over for a moment. The young man then says,&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;Him? He just moves me, literally. That&amp;rsquo;s just &amp;lsquo;bout as much as I know about him.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;The young man turns back toward his fencing with a smile. Wouldn&amp;rsquo;t do to let the Duke know he&amp;rsquo;d been neglecting his combat skills.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The fronteer</title>
      <link>https://vanderkleijn.net/fiction/the-fronteer/</link>
      <pubDate>Tue, 30 Sep 1997 09:00:00 +0200</pubDate>
      <guid>https://vanderkleijn.net/fiction/the-fronteer/</guid>
      <description>&lt;div class=&#34;typewriter-page&#34;&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;The fronteer&lt;br/&gt;&#xA;&lt;sup&gt;by Martijn van der Kleijn&lt;/sup&gt;&#xA;&lt;/div&gt;&#xA;Coming out of hyper-space, the ship bucked like a wild horse.  From the side window where he was sitting, Roger had an excellent view of the planet they were headed to. The planet Darnak looked like any other Terran class planet.&#xA;&lt;p&gt;‘Incomprehensible’ he thought.&lt;/p&gt;&#xA;&lt;p&gt;‘How could such a beautiful planet be so dangerous?’  For a long time now, he had wanted to visit Darnak.  Hearing all of the stories about this place, he just couldn’t believe that it was as bad as it sounded. One day he had met a woman who claimed to come from this planet and who had begged him to go there and use his newspaper column to expose the terrors the planetary council was committing.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
