<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 <title>Log / Krijn Hoetmer</title>
 <author>
  <name>Krijn Hoetmer</name>
 </author>
 <id>https://krijnhoetmer.nl/log.atom</id>
 <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log" />
 <link rel="self" type="application/atom+xml" href="https://krijnhoetmer.nl/log.atom" />
 <updated>2026-05-19T16:46:23+02:00</updated>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/05/playing-with-interest-invokers</id>
  <title xml:lang="en">Playing with interest invokers</title>
  <published>2026-05-17T23:45:00+02:00</published>
  <updated>2026-05-19T16:46:23+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/05/playing-with-interest-invokers"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(3 minute read)</small></footer>
   <p>This afternoon, while writing <a href="/log/2026/05/will-teach-html-for-food" interestfor="preview">my previous post on teaching HTML</a>, I thought it would be cool to test out how <a href="https://developer.mozilla.org/en-US/docs/Web/API/Popover_API/Using_interest_invokers">interest invokers</a> worked. Here's a quick post on how I built a first prototype, showing previews for internal links on my blog.</p>
   <picture>
    <source type="image/avif" srcset="/_img/2026/05/interest-invokers.avif">
    <img src="/_img/2026/05/interest-invokers.png" width="1598" height="844" fetchpriority="high" decoding="async" alt="When hovering a link, or tabbing to a link, a little popup with a preview of that link is now shown.">
   </picture>
   <p>Obviously I had <a href="/log/2026/05/view-transitions-for-form-interactions" interestfor="preview">internal links to other posts</a> already, and to <a href="/log/2026/05/view-transitions-for-form-interactions#comment-5" interestfor="preview">specific comments</a>. So step 1 was modifying all internal links, and adding an <code>interestfor</code> attribute. Since all HTML rendering goes through the same render loop, that was an easy fix.</p>
   <pre><code class="language-html">All &lt;a href=&quot;/log/2026/05/view-transitions-for-form-interactions&quot; interestfor=&quot;preview&quot;&gt;internal links&lt;/a&gt; got upgraded.

With a &lt;a href=&quot;/log/2026/05/view-transitions-for-form-interactions#comment-5&quot; interestfor=&quot;preview&quot;&gt;simple attribute&lt;/a&gt;.</code></pre>
   <p>Step 2 was adding the popover element, which would just sit and wait for anything to happen.</p>
   <pre><code class="language-html">&lt;aside popover=&quot;hint&quot; id=&quot;preview&quot;&gt;&lt;/aside&gt;</code></pre>
   <p>Step 3: sprinkle in some JavaScript, in a new <code>&lt;script type=&quot;module&quot;&gt;</code>. The <em>non-standard</em> and <em>experimental</em> <a href="https://developer.mozilla.org/en-US/docs/Web/API/InterestEvent"><code>interest</code> event</a> is quite handy for this.</p>
   <pre><code class="language-javascript">const preview = document.getElementById('preview');
preview.addEventListener('interest', async function(ev) {
    preview.innerHTML = 'Loading…';
    const response = await fetch(ev.source.href);
    const html = await response.text();
    const parser = new DOMParser();
    const responseDOM = parser.parseFromString(html, 'text/html');
    if (ev.source.hash) {
        preview.innerHTML = responseDOM.querySelector(ev.source.hash).outerHTML;
    } else {
        preview.innerHTML = responseDOM.querySelector('h1').outerHTML + responseDOM.querySelector('footer').outerHTML + responseDOM.querySelector('p').outerHTML;
    }
});</code></pre>
   <p>Step 4, adding a bit of CSS.</p>
   <pre><code class="language-css">[popover] {
	padding: 1em;
	border: 1px solid;
	position-area: bottom;
	color: inherit;
	max-inline-size: 40em;
}</code></pre>
   <p>All supported in Chromium based browsers for now. And it's a progressive enhancement, so nothing breaks in other browsers. <ins datetime="2026-05-19" data-readable="19-05-2026">Apple <a href="https://github.com/whatwg/html/issues/10309#issuecomment-3266951344">has indicated</a> they <a href="https://github.com/WebKit/standards-positions/issues/305#issuecomment-2231000262">don't really like this idea</a>, so <a href="https://github.com/openui/open-ui/issues/1279">things might still change</a>. It's <a href="https://github.com/WebKit/standards-positions/issues/305#issuecomment-2231000262">complicated</a>.</ins></p>
   <p>Obviously this needs way more love and attention, but for a quick prototype—<a href="/log/2026/04/that-went-smooth" interestfor="preview">one of my goals</a>—on a Sunday night, this isn't too bad! And this opens up more research opportunities into <a href="https://developer.mozilla.org/en-US/docs/Web/API/Popover_API/Using#popover_anchor_positioning">popover anchor positioning</a>, <a href="https://mastodon.social/@jaffathecake/116294667726928208">nested interest invokers</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@starting-style"><code>@starting-style</code></a>, nice UX and maybe how this can play along with <a href="https://developer.mozilla.org/en-US/docs/Web/API/Speculation_Rules_API">speculation rules</a> and caching.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/05/will-teach-html-for-food</id>
  <title xml:lang="en">Will teach HTML for food</title>
  <published>2026-05-17T15:59:00+02:00</published>
  <updated>2026-05-18T11:56:38+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/05/will-teach-html-for-food"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(9 minute read)</small></footer>
   <p>Two years ago, right after <a href="/log/2024/06/leaving-css-day" interestfor="preview">my last CSS Day</a>, the <a href="https://fdnd.nl/">FDND</a> posse handed me a thank you gift, wrapped in brown paper, with a postcard attached to it. It showed the well-known “Will code HTML for food” meme, but they changed it with a little Post-it note, overwriting the word “code” with “teach”. I think about this a lot lately.</p>
   <picture>
    <source type="image/avif" srcset="/_img/2026/05/will-teach-html-for-food.avif">
    <img src="/_img/2026/05/will-teach-html-for-food.jpg" width="1600" height="1066" fetchpriority="high" decoding="async" alt="A photo was taken of this moment: a guy awkwardly holding the gift, surrounded by younger people, wearing conference badges and looking at the wrapped item, in anticipation of the dude holding it opening it. Rays of sunshine are shining on the group. In the background a “CSS Help Desk” banner is visible.">
   </picture>
   <p>Apart from the usual shelf-stacking supermarket job as a kid, I've always been self-employed, freelancing and hopping from project to project, collecting longer running clients throughout the years (vendor lock-inning them with my <a href="https://en.wikipedia.org/wiki/Software_as_a_service">SaaS</a> CMS). I don't know any better. My mom—being self-employed for as long as I can remember as well—taught me to stand on my own feet, nearly always. Not always nearby, my dad taught me to keep things simple. And not get too attached to lifely matters.</p>
   <p>My experience with my own school-going reflects this, sort of. When I was young, we moved house quite a lot. I've seen 4 different primary schools from the inside, in both The Netherlands and Belgium. While cycling through secondary school, we moved a few more times. Four years in, in 2000, we ended up 21.7 kilometers away from my school, in a different city. Or 23.8 kilometers, depending on which bridge you'd take to get there. I decided to cycle there and back every single day, choosing which bridge each morning, depending on the wind direction. And since I was the only teenager going this route, I was doing this alone 100% of the time.</p>
   <p>After secondary school I wanted to stay closer to home and spend less hours a day in solitary cycling mode. I picked a new university close by, which had a focus on building a bridge between nerds and businessy people, to put it bluntly. Part computery stuff, part communicationy stuff, part businessy stuff. Seemed like an obvious choice, and I like the bridge metaphor in retrospect.</p>
   <p>Three years in, I decided to burn my bridges and <a href="/log/2012/06/kroniek" interestfor="preview">quit school</a>. I sucked at presenting my work, which made the grading people think I didn't do enough work. I'm a drop-out. My drop-in replacement was self-education, getting hooked on reading web development blogs, and—like I did anyway—just build a lot of stuff. Both software and, accidentally, communities, eventually.</p>
   <p>In 2015 I was approached by the <a href="https://www.amsterdamuas.com/">Amsterdam University of Applied Sciences</a> to help out with a frontend course for second year students. Later, in 2016, 2017 and 2018 I helped out with the <a href="https://everythingweb.org/">Minor Web Design &amp; Development</a> for third year students. I was involved with a course on Browser Technologies, with topics like new browser APIs, accessibility, progressive enhancement and feature detection. I mostly didn't have to deal with grading students, only with the contents itself, which was great! Especially because I didn't understand why anyone would want to be graded by me. Or how that didn't collide too much with my own ideas about someone else telling them what's Right or Wrong.</p>
   <p>So I blended teaching, developing and conference organising those years, and was able to share a lot of that mix with students, like in 2017.</p>
   <picture>
    <source type="image/avif" srcset="/_img/2026/05/css-day-students-2017.avif">
    <img src="/_img/2026/05/css-day-students-2017.jpg" width="1906" height="673" loading="lazy" decoding="async" alt="A photo was shot, of a group of 12 young people wearing conference badges, smiling and waving their hands in the air, obviously posing. The photo is overlapped with orange letters in the center, saying “CSSDAY 2017”, and, smaller, “CSSDAY 2017 - 15th &amp; 16th of June - Compagnietheater, Amsterdam” beneath.">
   </picture>
   <hr>
   <p>During that period, Michelle and I had twins, our first kids. I decided to work less, and focus more on my family. On creating a robust foundation, like one does when writing HTML. Maybe I'm so focused on solid ground due to my own turbulent past, I don't know. But I didn't have the time (nor the energy) to help students anymore, and said no to the 2019 minor. A few months later, on April 4, <a href="/log/2019/04/staand-zittend-liggend" interestfor="preview">my dad passed away</a>. <code>404 Not Found</code> had a different ring to it from that day on.</p>
   <hr>
   <p>And then the Corona pandemic happened. We weren't allowed to hold any conferences for two years. Two lovely stress-free years; not worrying over selling tickets, or being inclusive enough, or looking for new talent to freshen up our line-up another time, or about still being relevant, or keeping my business partner in check. And with two young kids, my own clients and projects, a recently inherited little cottage off the grid, and years of just-in-case savings, I had plenty of stuff to do. My badminton club asked me if I could come up with something to make playing inside badminton during Corona safe, with government guidelines and safety instructions in constant flux. I <a href="https://baanindeling.app/">built a flexible web app</a> and I think we were amongst the first clubs in The Netherlands to play again that way.</p>
   <p>Another little thing I prototyped and tested during that period—being somewhat bored—was <a href="https://scorenow.app/">my score board app</a>, which <a href="https://www.linkedin.com/posts/krijnhoetmer_afgelopen-september-werd-me-gevraagd-of-ik-share-6897095479469907968-ROqc">I happily raved about on LinkedIn</a>. In March 2022 I was invited by a former student—who was now teaching at uni himself—to do a short presentation about how I built that web app. I said yes for shits and giggles, shat bricks for a while, and gave it my best shot. I had sort of forgotten how fun it was to share knowledge and enthusiasm about the Web, but afterwards, I felt like doing this more often, and told some people.</p>
   <p>Meanwhile, FDND, a new two-year Associate Degree frontend program—designed and developed by the same people behind the minor—was running its first year. I joined them as a freelance co-teacher in 2022. As a sort of “experienced person from the field”, without any responsibilities. Since I don't have any proper education, and was very reluctant to present professionally before a group of people, teaching class was quite stressful. Luckily colleagues—a word I didn't really use or <em>feel</em> until that point—provided me with a lot of feedback and feedforward, and I learned a lot. There's now less stress, and a tiny bit more confidence.</p>
   <p>A year later I became responsible for my own group of students, which I had to guide through their first two semesters. I've been doing that for three years now, meddling with <a href="https://programma.fdnd.nl/">our curriculum</a>, <a href="https://github.com/fdnd-task">workshops</a> and <a href="https://niveaumatrix.fdnd.nl/">grading method</a> along the way. Because I had so much fun, I even signed the first proper salaried employment contract in my life for a year. There was a lot of <a href="https://en.wikipedia.org/wiki/Fear,_uncertainty,_and_doubt">FUD</a> from the Dutch tax authorities involved, but here we are. In about two months that contract will expire, and with the current new registrations for September, it looks like I'm no longer needed, and I'll go my own route again. <em>Don't get too attached to lifely matters.</em></p>
   <p>As part of my contract, I had to follow the course “Basic Qualification in Teaching Competence” for half a year. During this course, I learned a lot of theory which I hadn't applied so far, or at most unknowingly. I heard stuff about self-determination theory, didactic coaching, constructive alignment, blended learning and group dynamics, and I had to try some of these new things out in my workshops and coaching.</p>
   <p>At home, we talk a lot about what we learn and do during the days. My kids are eight years old now, devour books in an enviable way, and were very interested in learning about what I was <em>learning</em> at school—less so in what I was <em>teaching</em> students. Of course I had already tried to spoon-feed them bits of HTML when they were younger, but it missed some basic ingredients I didn't know about back then. Two months ago I tried out something new I picked up about the <a href="https://en.wikipedia.org/wiki/Self-determination_theory">self-determination theory</a>, which is mostly about human <em>motivation</em>. Basically, the theory says you need <em>autonomy</em>, <em>competence</em>, and <em>relatedness</em>. Together we designed <a href="https://codepen.io/krijnhoetmer/pen/JoROzZW?editors=1000">a coding workshop</a> for their classmates, and a few days later we had a lot of fun teaching (and learning) HTML together.</p>
   <picture>
    <source type="image/avif" srcset="/_img/2026/05/code-a.avif">
    <img src="/_img/2026/05/code-a.jpg" width="2100" height="1123" loading="lazy" decoding="async" alt="I presented in front of a big screen, with a slide saying “Wie weet wat programmeren is?”. This photo was taken from the back of the classroom, with kids from behind, pixelated to make them unrecognizable.">
   </picture>
   <p>And since my kids are in separate classes, I got to do it again, with a slightly improved version and some bugfixes, two days later.</p>
   <picture>
    <source type="image/avif" srcset="/_img/2026/05/code-b.avif">
    <img src="/_img/2026/05/code-b.jpg" width="2100" height="1191" loading="lazy" decoding="async" alt="This photo shows a different classroom, and me wearing a different sweater. I'm looking at the screen, which shows “&lt;code&gt; 👩‍💻 &lt;/code&gt;” in large print, with “Wat valt je op?” below it. Kids are photographed from behind, pixelated again, but you can recognize a laptop and a child raising their finger.">
   </picture>
   <p>As a thank you, I received some chocolate from their teachers. So, in a way, I'm finally teaching HTML for food. There might not be a market for this, but since we've paid off our mortgage this month anyway, perhaps teaching HTML for food isn't that bad of a new hobby going forward.</p>
   <p>And maybe something fundamental like HTML should just be part of each primary school's curriculum.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/05/view-transitions-for-form-interactions</id>
  <title xml:lang="en">View transitions for form interactions</title>
  <published>2026-05-15T14:30:00+02:00</published>
  <updated>2026-05-16T10:59:55+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/05/view-transitions-for-form-interactions"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(2 minute read)</small></footer>
   <p>Recently, <a href="https://blog.jim-nielsen.com/">Jim Nielsen</a> has been playing with <a href="https://blog.jim-nielsen.com/2026/out-with-js-in-with-html/">simplifying interactions with HTML and view transitions</a>. This made me think about doing this after <code>&lt;form&gt;</code> submissions as well. How would this work?</p>
   <p>To test this out, I've just added a simple <a href="/ama">Ask me anything</a> sort of guestbook (why isn't this a <a href="https://slashpages.net/">slash page</a>?), which works like this now, without any JavaScript:</p>
   <video width="375" height="668" src="/_img/2026/05/view-transitions-forms.mp4" controls playsinline>
    <p><a href="/_img/2026/05/view-transitions-forms.mp4">Download video</a>.</p>
   </video>
   <p>It's a real quick prototype, using the view transition default animations for now. I've added some <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/How_to/Use_data_attributes"><code>data</code> attributes</a> to my HTML, since I want to keep my selectors simple, I don't want to have to change CSS each time I'm coming up with a new interaction, and I want to stitch this together with HTML:</p>
   <pre><code class="language-html">&lt;input type=&quot;text&quot; name=&quot;name&quot; data-vt=&quot;question-name&quot;&gt;

…

&lt;textarea name=&quot;question&quot; data-vt=&quot;question-text&quot;&gt;&lt;/textarea&gt;</code></pre>
   <p>And in the response page, which adds the question to the database, does some session stuff, hides the comment form for just that view, and adds these <code>data</code> attributes dynamically to the question you just asked:</p>
   <pre><code class="language-html">&lt;article&gt;
	&lt;p data-vt=&quot;question-text&quot;&gt;{{ question }}&lt;/p&gt;
	&lt;footer data-vt=&quot;question-name&quot;&gt;{{ name }}&lt;/footer&gt;
&lt;/article&gt;</code></pre>
   <p>Combined with this bit of CSS, which uses <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/attr#parsing_attr_values_as_custom-idents">the <code>attr()</code> function and type parameter</a>:</p>
   <pre><code class="language-css">@media (prefers-reduced-motion: no-preference) {
	[data-vt] {
		view-transition-name: attr(data-vt type(&lt;custom-ident&gt;));
	}
}</code></pre>
   <p><ins datetime="2026-05-16" data-readable="16-05-2026">At the time of writing this, this only works in Chromium based browsers. Firefox doesn't support <code>@view-transition</code> and both Safari and Firefox don't support advanced <code>attr()</code> yet. Firefox is <a href="https://groups.google.com/a/mozilla.org/g/dev-platform/c/9tQ-XV82EqU/m/_-NCVEYzAgAJ">working on it</a> and Safari has it <a href="https://webkit.org/blog/17934/release-notes-for-safari-technology-preview-242/">in their Technology Preview</a>. Both advanced <code>attr()</code> and <code>@view-transition</code> are part of <a href="https://wpt.fyi/interop-2026">Interop 2026</a>.</ins></p>
   <p>Still playing with doing the same on the comment form below, but it's more complicated there, since the resulting page redirects and automatically smooth-scrolls to the <code>#comment</code> you just added. <ins datetime="2026-05-15" data-readable="15-05-2026">Removed smooth scrolling, so it should work here now as well. Since people are trying it out anyway..</ins></p>
   <p>Jim is definitely onto something!</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/05/toggling-line-wrap-in-code-blocks</id>
  <title xml:lang="en">Toggling line wrap in code blocks</title>
  <published>2026-05-09T17:15:00+02:00</published>
  <updated>2026-05-09T17:22:48+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/05/toggling-line-wrap-in-code-blocks"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(5 minute read)</small></footer>
   <p>Yesterday I <a href="/log/2026/05/added-photos" interestfor="preview">added some longer code blocks</a>, which made me reconsider <code>white-space: pre</code> and <code>white-space: pre-line</code> for those. Since this is a user preference, I added a simple toggle button just now. Here's a quick post on how I built this with Progressive Enhancement in mind, using the new element-scoped view transitions and some other things I learned recently. Buzzword galore for your enjoyment. Or mine.</p>
   <picture>
    <source type="image/avif" srcset="/_img/2026/05/toggle-wrapping.avif">
    <img src="/_img/2026/05/toggle-wrapping.png" width="1362" height="730" fetchpriority="high" decoding="async" alt="A screenshot of an HTML code block showing “&lt;picture&gt; &lt;source type=&quot;image/avif&quot; srcset=&quot;/_img/2026/05/cssday-” in white on a dark background. The code, right before wrapping to the next line, then fades out into gray and gets cross-faded with other code below, making it harder to read. In the top right there's a button saying “Toggle wrapping”.">
   </picture>
   <p>Showing code will be a big part of my blog, so I'm tweaking tiny bits on a daily basis. Yes, syntax highlighting is on my todo list. And yes, I know I can include GitHub gists or whatever. And that this is a solved problem already. But I guess you sort of know where this is going: there's joy in playing with this.</p>
   <p>So, the problem was quite obvious: what to do with line-wrapping in code? I couldn't figure it out, and I wanted to add some interactive elements to code blocks anyway, so I started off with this little thing:</p>
   <pre><code class="language-javascript">const codes = document.querySelectorAll('[class|=&quot;language&quot;]');
codes.forEach(function(code) {
	if (code.scrollWidth &lt;= code.offsetWidth) {
		return;
	}
	const button = document.createElement('button');
	button.textContent = 'Toggle wrapping';
	button.addEventListener('click', function() {
		const preEl = this.parentNode;
		const codeEl = this.parentNode.querySelector(':scope code');
		const toggle = function() {
			preEl.style.whiteSpace = getComputedStyle(preEl).whiteSpace == 'pre-wrap' ? 'pre' : 'pre-wrap';
		};
		if (codeEl.startViewTransition) {
			codeEl.startViewTransition(toggle);
		} else {
			toggle();
		}
	});
	code.parentNode.prepend(button);
});</code></pre>
   <p>Some notes, in random order:</p>
   <p>I only “render” this script in a <code>&lt;script type=&quot;module&quot;&gt;</code> when a code block is used somewhere on the page. <a href="/log/2026/04/view-source" interestfor="preview">View Source to make sure</a>. No code blocks? No useless querySelectoring going on. I know this is a pretty oldskool style—or <strong><a href="https://thathtml.blog/2026/04/two-paradigms-for-enhancing-html-tags/">bad way</a></strong>—of doing things, but I'll get back to how I do this on larger sites at a later point. Or maybe I'll implement a different way at that same point as well.</p>
   <p>I'm using the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/Attribute_selectors#attrvalue_3"><code>|=</code> operator attribute selector</a>, since the server always renders <code>&lt;pre&gt;&lt;code class=&quot;language-...&quot;&gt;</code> for these blocks. I chose this markup, because there's a <a href="https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-code-element">line in the HTML specification</a> saying:</p>
   <blockquote>
    <p>There is no formal way to indicate the language of computer code being marked up. Authors who wish to mark <code>code</code> elements with the language used, e.g. so that syntax highlighting scripts can use the right rules, can use the <code>class</code> attribute, e.g. by adding a class prefixed with &quot;<code>language-</code>&quot; to the element.</p>
   </blockquote>
   <p>If the code block isn't overflowing when it's rendered, just skip the rest of the code. If it is, create a button, add some text and a click handler and prepend it in the <code>pre</code> element. I should probably put that button in a <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/menu"><code>&lt;menu&gt;</code></a>, since it's now a toolbar. Next time. Just like adding a <a href="https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver">ResizeObserver</a> for when the code blocks start or stops overflowing after a resize. There's so many details to take into account, you'd almost not ship anything at all. But that's not how I roll.</p>
   <p>And when clicking that button, it toggles an inline style, which changes the wrapping. Could've used a <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Cascading_variables/Using_custom_properties">custom property</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/setProperty">setProperty</a> here, but that would still change an inline style, so I think this is simpler.</p>
   <p>Maybe <a href="https://www.w3.org/People/Bos/">Bert Bos</a> was right after all, about <a href="https://www.w3.org/People/Bos/CSS-variables">“variables” in CSS being harmful</a>. Most developers think they're just global constants om some magic <code>:root</code> incantation anyway. But I digress.</p>
   <p>The last bits involve getting back the <code>&lt;code&gt;</code> element from the clicked button. I only recently <a href="https://webweekly.email/archive/web-weekly-176/">learned</a> about <code>querySelector</code> not doing what I always assumed, but <a href="https://tinytip.co/tips/js-query-selector-scope/">needing <code>:scope</code> in there</a> for that. Never too old to learn, I guess.</p>
   <p>Oh, right, and there's a new element-scoped view transition in there. You can <a href="https://github.com/WICG/view-transitions/blob/main/scoped-transitions.md">read the explainer about those</a>, but they work just like normal view transitions. Except they are, well, scoped to elements. First time playing with those, and apart from using <a href="https://jakearchibald.com/2024/view-transitions-handling-aspect-ratio-changes/">the inevitable Jake Archibald material</a>, I guess you can use these new view transitions without <code>view-transition-name</code> in this case. No idea if it's smart to use in production already, but hey.</p>
   <pre><code class="language-css">code[class|=&quot;language&quot;]::view-transition-old(root),
code[class|=&quot;language&quot;]::view-transition-new(root) {
	height: 100%;
	object-fit: none;
	overflow: clip;
	object-position: top;
}</code></pre>
   <p>I don't have Google Chrome installed, but it works great-ish in <a href="https://vivaldi.com/blog/desktop/snapshots/">Vivaldi Snapshot</a>, which uses Chromium 147. Still need to dive into <a href="https://developer.chrome.com/docs/devtools/css/animations/">figuring out the inner workins of these animations</a>, because they're a bit wonky now. Next time.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/05/added-photos</id>
  <title xml:lang="en">Added photos</title>
  <published>2026-05-08T17:13:00+02:00</published>
  <updated>2026-05-15T14:44:10+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/05/added-photos"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(5 minute read)</small></footer>
   <p>It sounds silly, but I spent some <em>hours</em> adding <code>&lt;img&gt;</code> tags to my blog, for my <a href="/log/2024/06/leaving-css-day" interestfor="preview">previous</a> two <a href="/log/2026/05/attending-css-day-again" interestfor="preview">posts</a>. Let's write something about Open Graph metadata, <code>alt</code> attributes, <code>lazy</code> loading, <code>async</code> decoding, <code>&lt;picture&gt;</code> and AVIF.</p>
   <p>My CMS (which I <a href="/log/2011/12/door-een-frobelaar" interestfor="preview">wrote about in Dutch 15 years ago</a>) obviously already supported uploading images (most clients actually think that's a handy feature). But as <a href="/log/2026/04/that-went-smooth" interestfor="preview">I mentioned</a>, every time I'm coding a new website, I get to have fun again on a new frontend, add in new things I've learned and ditch old habits.</p>
   <p>In my CMS, each bit of content is its own structured thing, like a <a href="https://www.joelonsoftware.com/2022/01/27/making-the-web-better-with-blocks/">block</a>. When “rendering” a page, I add in the HTML details for each “block”. This has a lot of advantages, but also brings some challenges.</p>
   <p>Anyway, this is the HTML output I started with for an image:</p>
   <pre><code class="language-html">&lt;picture&gt;
	&lt;source type=&quot;image/avif&quot; srcset=&quot;/_img/2026/05/cssday-2024.avif&quot;&gt;
	&lt;img src=&quot;/_img/2026/05/cssday-2024.jpg&quot; width=&quot;1600&quot; height=&quot;1066&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;A photo of 16 people obviously posing; 5 in the front, 11 in the back, all next to a CSS Day branded lectern. Some people in the back are holding large gold balloon letters, spelling “CSS Day”. One guy in the middle in the back is cheekingly looking through the “D”. The background shows more balloons and a large slide showing the CSS Day logo, brand and date, saying “Welcome to our 10th edition!”.&quot;&gt;
&lt;/picture&gt;</code></pre>
   <p>I used a <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/picture"><code>&lt;picture&gt;</code> element</a>, which lets the browser automatically choose the right source. For that one percent of <a href="https://caniuse.com/?search=webp">extra reach of WebP</a> I don't think I'm going to add that format. <a href="https://jakearchibald.com/2020/avif-has-landed/">AVIF</a> (AV1 Image File Format) it is.</p>
   <p>Those <code>width</code> and <code>height</code> attributes will prevent a janky <a href="https://web.dev/articles/cls">layout shift</a> once the image is loaded. Jen Simmons has <a href="https://www.youtube.com/watch?v=4-d_SoCHeWE">a nice explanation</a> about that. We basically add the width and height of the original image, and that's it. Well, combined with a bit of CSS:</p>
   <pre><code class="language-css">img {
	max-inline-size: 100%;
	block-size: auto;
}</code></pre>
   <p>I'm trying to use <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Logical_properties_and_values">logical properties</a> more, since they're quite new for me, but in this case I don't know if I should just use <code>max-width: 100%</code> and <code>height: auto</code>, since the HTML markup doesn't use logical properties either.. Something to investigate and improve on later. <ins datetime="2026-05-09" data-readable="09-05-2026"><a href="https://ericportis.com">Eric Portis</a> <a href="https://front-end.social/@eeeps/116541628327959772">helped me out</a> with this, so I changed it indeed.</ins></p>
   <p><code>loading=&quot;lazy&quot;</code> and <a href="https://www.tunetheweb.com/blog/what-does-the-image-decoding-attribute-actually-do/"><code>decoding=&quot;async&quot;</code></a> are added in automatically. For lazy loading that's not the smartest thing to do, because images are now actually loaded <em>slower</em>, when they're at the top of a post. <code>loading=&quot;lazy&quot;</code> tells the <a href="https://hacks.mozilla.org/2017/09/building-the-dom-faster-speculative-parsing-async-defer-and-preload/#:~:text=Back%20to%20the%20future%20%E2%80%93%20speculative%20parsing">browser's preload scanner</a> to ignore that image. But once the pixels need to be drawn, it suddenly figures out it needs to fetch that image. That's one of the challenges I'm going to fix at some point. Maybe give certain images extra priority, which could even add a <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/fetchpriority"><code>fetchpriority=&quot;high&quot;</code></a> attribute. <ins datetime="2026-05-15" data-readable="15-05-2026">I've fixed this just now, while adding <code>loading=&quot;lazy&quot;</code> support <a href="/log/2026/05/view-transitions-for-form-interactions" interestfor="preview">for <code>&lt;video&gt;</code></a>.</ins></p>
   <p>On to the <code>alt</code> attribute. Many people think of this as a description, but it's really an <em>alternative</em> for that image. For when it doesn't load, or when you can't see it. Nowadays, with “AI” being able to describe images better than I possibly can, I think it's a lost cause, but I'm still holding on to my beliefs.</p>
   <p>I'm part of the <a href="/log/2026/05/attending-css-day-again" interestfor="preview">previous photo</a>, the one cheekingly looking through the “D”. But if you don't know me, or know how I look, you wouldn't know that. An “AI” wouldn't know that. So what should the <code>alt</code> attribute say in this case? Should it include something like “I'm standing in the middle, looking through one of the balloons”? Then the <code>alt</code> attribute might have <em>more</em> information than the photo itself. Should it include the names of the other people then as well? What about a photo with well-known people in them, like in <a href="/log/2024/06/leaving-css-day" interestfor="preview">this post</a>? Should that say something like “Jeremy Keith, Roel Nieskens, Sarah Dayan and Miriam Suzanne are breathing in my neck, wondering when they can leave for bitterballs”?</p>
   <p>And the last bit, <a href="https://ogp.me/">Open Graph metadata</a>. I already <a href="/log/2026/04/on-metadata" interestfor="preview">added some little things</a>, but now the first image in a post is used as an <code>og:image</code>:</p>
   <pre><code class="language-html">&lt;meta property=&quot;og:image&quot; content=&quot;https://krijnhoetmer.nl/_img/2024/06/speech-cssday.jpg&quot;&gt;
&lt;meta property=&quot;og:image:type&quot; content=&quot;image/jpeg&quot;&gt;
&lt;meta property=&quot;og:image:width&quot; content=&quot;1600&quot;&gt;
&lt;meta property=&quot;og:image:height&quot; content=&quot;1066&quot;&gt;
&lt;meta property=&quot;og:image:alt&quot; content=&quot;I stood there; a bold dude, wearing a khaki shirt, holding a microphone somewhat confident, behind a lectern with two laptops on it. Behind me some other people—conference speakers, some wearing their lanyard—were standing and looking at me.. Maybe wondering who the hell this guy was..&quot;&gt;</code></pre>
   <p>Today I learned about <code>og:image:alt</code> as well, and now I wonder which tools use that part.. <ins datetime="2026-05-09" data-readable="09-05-2026">After asking about it, <a href="https://kilianvalkhof.com/">Kilian</a> told me <a href="https://polypane.app/">Polypane</a> helps you out with these sorts of things! I've used Polypane in 2020–2021—also to support Kilian—and I'm recommending it to students nowadays. Might need a new subscription again soon!</ins></p>
   <p><ins datetime="2026-05-09" data-readable="09-05-2026">Somehow it's weird I'm picking JPG as a default here, even though AVIF support is so widespread. Since the Open Graph protocol doesn't define how “responsive images” are supposed to work there, I'm playing it safe. It would be great if alternative image formats can be shared via Open Graph metadata as well, but I'm sure someone has already figured out how this doesn't work. Or maybe it does, by picking smart defaults in the order of formats. There's no way I'm the first one to think about this, but I might experiment with this in the future.</ins></p>
   <p>And another thing on my todo list for this site: play around with different image sizes, especially now <a href="https://piccalil.li/blog/the-end-of-responsive-images/"><code>sizes=&quot;auto&quot;</code></a> is a thing. I've been messing with <code>srcset</code> and <code>sizes</code> a lot over at <a href="https://royalholidays.eu/egypt/jungle-aqua-park">RoyalHolidays.eu</a>, but as a hand coder, I'm really happy with this becoming much simpler!</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/05/attending-css-day-again</id>
  <title xml:lang="en">Attending CSS Day again</title>
  <published>2026-05-08T15:12:00+02:00</published>
  <updated>2026-05-09T17:49:22+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/05/attending-css-day-again"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(1 minute read)</small></footer>
   <p>Last year I attended <a href="https://cssday.nl/">CSS Day</a> for the very first time. And next month will be my <em>12th edition</em>!</p>
   <p>I'm <a href="/log/2024/06/leaving-css-day" interestfor="preview">not involved anymore</a>, but it's always a lot of fun. Especially now I can sit back, enjoy the show, and actually have time to talk to people. Assuming I'll be able to walk again by then, but so far my kneehabilitation is going in the right <code>dir</code>.</p>
   <picture>
    <source type="image/avif" srcset="/_img/2026/05/cssday-2024.avif">
    <img src="/_img/2026/05/cssday-2024.jpg" width="1600" height="1066" fetchpriority="high" decoding="async" alt="A photo of 16 people obviously posing; 5 in the front, 11 in the back, all next to a CSS Day branded lectern. Some people in the back are holding large gold balloon letters, spelling “CSS Day”. One guy in the middle in the back is cheekingly looking through the “D”. The background shows more balloons and a large slide showing the CSS Day logo, brand and date, saying “Welcome to our 10th edition!”.">
   </picture>
   <p>It took 10 years of polishing, but I think the CSS Day audience is the most fun to be around, of all conferences I attended throughout the years. Maybe partly because I got to enjoy and share many editions together with students and old Fronteers friends, I don't know.</p>
   <p>So, who am I running into next month?</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/commenting-on-comments</id>
  <title xml:lang="en">Commenting on comments</title>
  <published>2026-04-30T00:00:00+02:00</published>
  <updated>2026-05-09T10:26:49+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/commenting-on-comments"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(2 minute read)</small></footer>
   <p>Yesterday <a href="https://sinds1971.nl/">Sanne</a> posted <a href="/log/2026/04/making-a-fun-color-scheme-toggle#comment-1" interestfor="preview">some</a> valuable <a href="/log/2026/04/making-a-fun-color-scheme-toggle#comment-2" interestfor="preview">feedback</a> on my lazy prototype, which made me think about commenting on comments a bit longer.</p>
   <p>About 22 years ago I wrote columns for my former badminton club, which were published in our monthly newsletter. I wrote them under a pseudonym back then, probably too scared of what people would think of me. But I missed the feedback. So I turned my columns into a separate website and added a comment form. The <a href="https://web.archive.org/">Wayback Machine</a> still has <a href="https://web.archive.org/web/20080224064937/http://kronkels.net/1/kolom">a copy archived</a>, and I'll probably add most of what I wrote during those days to my own website. Time to fully face my fears. <ins datetime="2026-05-09" data-readable="09-05-2026"><a href="/log/2004/05/kolom" interestfor="preview">My older writings</a> (and all comments from back then) are up here now.</ins></p>
   <p>Anyway, I went overboard with PHP, MySQL, HTML, CSS and JS (responsive didn't exist yet), and I added replies to comments, so I could have a sort of anonymous interactive conversation with my readers.</p>
   <p>Fast forward half my life: I've also added some sort of conversational UI over here, for short emoji responses and full replies, and I made myself a place to <a href="/log/comments" interestfor="preview">keep track of comments</a>. Chat bot interfaces are super popular these days, so I went with that style. Or maybe it was the Messages interface I copied, I don't know. It made me play with <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Anchor_positioning">anchor positioning</a> for a bit, which is the joyful part.</p>
   <p>Let me know your thoughts and feedback, so I can test it out :)</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/making-a-fun-color-scheme-toggle</id>
  <title xml:lang="en">Making a fun color-scheme toggle</title>
  <published>2026-04-29T15:58:00+02:00</published>
  <updated>2026-04-29T16:06:33+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/making-a-fun-color-scheme-toggle"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(5 minute read)</small></footer>
   <p>One of <a href="/log/2026/04/that-went-smooth" interestfor="preview">the things I wanted to do</a> on my own site, is play around with code, and some of the newer stuff in browsers. I hadn't done anything with dark mode before (apart from telling students it's available), so that's a nice thing to start with. I learned some stuff along the way, so time for another short piece.</p>
   <p>I already started off with <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/name/color-scheme">this HTML meta tag</a>, which gives us the basics:</p>
   <pre><code class="language-html">&lt;meta name=&quot;color-scheme&quot; content=&quot;dark light&quot;&gt;</code></pre>
   <p>From there on, I tried to do everything without color values, custom properties, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@media/prefers-color-scheme"><code>prefers-color-scheme</code> media queries</a> or <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color_value/light-dark"><code>light-dark()</code></a> (which <a href="https://caniuse.com/wf-light-dark-image">now supports background images</a> as well!). Only using defaults in browsers for now, to see how far that gets me. I can always complicate stuff later on—and improve on the design, I agree!</p>
   <p>Code blocks and <code>&lt;kbd&gt;</code> elements get a nice <code>background-color</code>, combining <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color_value/color-mix"><code>color-mix</code></a> and <code>currentColor</code>. Still no color values. On my laptop I'm constantly in dark mode, but on my phone it automatically switches during the day. Been playing and tweaking for a week, works rather well.</p>
   <p>I'm not using dark and light mode together on one page, so I'll probably not need the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/color-scheme"><code>color-scheme</code> CSS property</a>. Unless I'm misunderstanding this thing, I think I only need the meta tag.</p>
   <p>Every cool kid on the block makes a <code>color-scheme</code> toggle button thingy these days, even though your browser and operating system probably knows best. I'm not sure I agree it's needed, just like we don't have “Print this page” buttons anymore, but it's a fun exercise to play with.</p>
   <p>So let's play.</p>
   <p>When building web stuff, I always try to think in HTML first: what can HTML already do to make this happen? What can the server prepare? What would be the most performant solution for end users? (It's almost always HTML-related.) I already answered that question in the beginning: the <code>color-scheme</code> meta tag. That's what needs to change. And since I'm using server-side rendering (aargh, that term again!), the server should probably do this. So I made a form with two buttons:</p>
   <pre><code class="language-html">&lt;form method=&quot;post&quot; action=&quot;/&quot; hidden&gt;
	&lt;button type=&quot;submit&quot; name=&quot;toggle-color-scheme&quot; value=&quot;light&quot; title=&quot;Switch to light mode&quot;&gt;☀️&lt;/button&gt;
	&lt;button type=&quot;submit&quot; name=&quot;toggle-color-scheme&quot; value=&quot;dark&quot; title=&quot;Switch to dark mode&quot;&gt;🌙&lt;/button&gt;
&lt;/form&gt;</code></pre>
   <p>Hidden by default, since I don't know if the browser will support switching the color scheme. Next up, some CSS:</p>
   <pre><code class="language-css">@supports (color-scheme: dark light) {
	header &gt; form {
		display: block;
	}
}</code></pre>
   <p>Some basic feature detection: if the browser supports <code>color-scheme: dark light</code>, show the form. I think only Safari 12.1 supports the meta tag and <em>not</em> the CSS property, but I can live with that. Those users won't see the toggle form, even though their browser supports switching. Oh well.</p>
   <p>Another bit of CSS, since the form contains two buttons. Which of those two should be hidden. The browser knows. When in light mode, hide the “Switch to light mode” button. And when in dark mode…well, you get the idea:</p>
   <pre><code class="language-css">@media (prefers-color-scheme: dark) {
	button[name=&quot;toggle-color-scheme&quot;][value=&quot;dark&quot;] {
		display: none;
	}
}
@media (prefers-color-scheme: light) {
	button[name=&quot;toggle-color-scheme&quot;][value=&quot;light&quot;] {
		display: none;
	}
}</code></pre>
   <p>That's the basic user interface done. Server-side I'm waiting for a form POST, set a session variable to the preferred color scheme (using a cookie), and redirect the user back to where they came from (with <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/303">a <code>303</code></a>). When spitting out the meta tag, I check if there's a preference in the session:</p>
   <pre><code class="language-html">&lt;meta name=&quot;color-scheme&quot; content=&quot;{{ colorSchemeFromSession || 'dark light' }}&quot;&gt;</code></pre>
   <p>This makes sure there's no FART, or <a href="https://css-tricks.com/flash-of-inaccurate-color-theme-fart/">Flash of inAccurate coloR Theme</a>, either.</p>
   <p>If there's a preference, I don't write out the <code>@supports</code> and media queries in CSS, and show a simpler form, with just one button, for the other color scheme. I played with an 'Auto' button, removing the session cookie, but I'm not convinced it's that helpful.</p>
   <p>That's where I stopped yesterday. The basic view transition I had in place made this really smooth:</p>
   <pre><code class="language-css">@media (prefers-reduced-motion: no-preference) {
	@view-transition {
		navigation: auto;
	}
}</code></pre>
   <p>But today I added some client-side enhancements, in another <code>&lt;script type=&quot;module&quot;&gt;</code>. I basically wanted to play with <a href="https://unsung.aresluna.org/which-is-definitely-not-good-to-do-to-it/">something</a> I learned from Marcin Wichary last week. I don't want to use <code>npm</code> or a boat load of dependencies, so I <a href="https://github.com/lochie/web-haptics">read the code</a>, made myself <a href="https://codepen.io/krijnhoetmer/pen/zxoYwyO">a quick test on CodePen</a> and ended up with this:</p>
   <pre><code class="language-javascript">const form = document.querySelector('header form');

// When the form is submitted
form.addEventListener('submit', function(event) {

	// Play a little sound
	// (Will probably switch to the Web Audio API at some point, but for now this'll do)
	const sound = new Audio('/_downloads/switch.mp3');
	sound.play();

	// Vibrate the users' device a little
	if ('vibrate' in navigator) {

		// Using the native browser API if that's supported
		navigator.vibrate(100);
	} else if ('switch' in document.createElement('input')) {

		// Or using a Safari 'feature'
		const switchInput = document.createElement('input');
		switchInput.type = 'checkbox';
		switchInput.id = 'switch';
		switchInput.setAttribute('switch', '');
		switchInput.hidden = true;

		const switchLabel = document.createElement('label');
		switchLabel.setAttribute('for', 'switch');
		switchLabel.hidden = true;

		document.body.appendChild(switchLabel);
		document.body.appendChild(switchInput);

		switchLabel.click();
	}

	// Let the server know about this as well, so the session cookie gets set for the next page view
	// (This could be done with sendBeacon as well)
	fetch(form.action, {method: 'POST', body: new URLSearchParams({'toggle-color-scheme': event.submitter.value})});

	// Switch the color scheme and change the UI, providing feedback and feedforward for the user
	const switchColorScheme = function() {
		const meta = document.querySelector('meta[name=&quot;color-scheme&quot;]');
		event.submitter.classList.add('touched');
		meta.setAttribute('content', event.submitter.value);
		event.submitter.textContent = event.submitter.value == 'light' ? '🌙' : '☀️';
		event.submitter.title = 'Switch to ' + (event.submitter.value == 'light' ? 'dark' : 'light') + ' mode';
		event.submitter.value = event.submitter.value == 'light' ? 'dark' : 'light';
	}

	// Fire a view transition, if that's supported
	if (document.startViewTransition) {
		document.startViewTransition(switchColorScheme);
	} else {
		switchColorScheme();
	}

	// Prevent the default form submit, if everything went smooth
	// If an error did occur, the form will just submit and the server will take over
	event.preventDefault();
});</code></pre>
   <p>Learning by playing. I love it!</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/hard-to-read-one-liners</id>
  <title xml:lang="en">Hard to read one-liners</title>
  <published>2026-04-28T15:03:00+02:00</published>
  <updated>2026-04-28T15:24:35+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/hard-to-read-one-liners"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(3 minute read)</small></footer>
   <p>All surgical staples got removed from my knee today, so that's a win. You could say I got rid of some optional closing tags. So, sitting with my leg up again, time for a knee-jerk reaction on <a href="/log/2026/04/view-source#comment-1" interestfor="preview">Vasilis' comment the other day</a>, <q>your source looks nice (except for the style block, with the hard to read one-liners</q>.</p>
   <p>This is interesting in multiple ways, because somehow, as a community, we agreed that this <q>looks nice</q>:</p>
   <pre><code class="language-html">&lt;input type=&quot;text&quot; name=&quot;foo&quot; id=&quot;whatever&quot; class=&quot;something&quot; autofocus placeholder=&quot;Hold it&quot;&gt;</code></pre>
   <p>Something, with some properties and some values.</p>
   <p>But this is a <q>hard to read one-liner</q>:</p>
   <pre><code class="language-css">input { box-sizing: border-box; max-inline-size: 100%; border-radius: 1.23em; font: inherit; }</code></pre>
   <p>Something, with some properties and some values.</p>
   <p>As if CSS has some unwritten rule about how it should be written. Many people would say this looks nicer:</p>
   <pre><code class="language-css">input {
	box-sizing: border-box;
	max-inline-size: 100%;
	border-radius: 1.23em;
	font: inherit;
}</code></pre>
   <p>Something, with some properties and values, separated on each line.</p>
   <p>Applying that logic to HTML, would those people also say this looks nicer?</p>
   <pre><code class="language-html">&lt;input
	type=&quot;text&quot;
	name=&quot;foo&quot;
	id=&quot;whatever&quot;
	class=&quot;something&quot;
	autofocus
	placeholder=&quot;Hold it&quot;
&gt;</code></pre>
   <p>Something, with some properties and values, separated on each line.</p>
   <p>Let me try to change your mind on CSS one-liners. Or, a bit more realistic, show what's on my mind about this. After writing CSS for about 25 years, and trying out various, uh, styles: In 90% of all cases, I think, the complexity isn't in the properties and values, but <em>in the selectors</em>. And in the scope, and in figuring out how you've structured and ordered your selectors. Or how the person before you tried to do that. I'm trying to optimize for that part, when writing plain CSS (which is always, on my own projects). Also, when coding, screens are typically landscape oriented. One-liners make sure I'm using more of my available pixels.</p>
   <p>I know, with version control, and teams, and same-line commits, you'll have conflicts with one-liners. But I'm not in a team today. And I'm not using version control for my own projects anyway. (In teams, I'll adapt to whatever is used, and I'll try to blend in. For a while.)</p>
   <p>At <a href="https://programma.fdnd.nl/">FDND</a> we're doing a mix of this, since we do want to make our students nice team players. But we also want to nudge them into not writing too many selectors, by <a href="https://github.com/fdnd-task/the-client-website/blob/main/docs/code-conventies.md#%EF%B8%8F-doe-dit-niet-2">nesting their media queries</a>. Since <a href="https://caniuse.com/css-nesting">CSS nesting</a> will be Baseline Widely available in two months, we think that's smart to start using at school. And most will eventually use tools like Sass, which transpiles this anyway. Or never write CSS again and cry about React and Tailwind complexity all day. But I digress.</p>
   <p>Oh, right, media queries. I haven't added those to this site yet, but now I'm thinking about it, I want to try out this style:</p>
   <pre><code class="language-css">body { max-inline-size: 40em; margin-inline: auto; padding-inline: 1em; font-family: sans-serif; line-height: 1.6;
	@media (min-width: 30em) { display: grid; grid-template-column: 1fr 1fr; }
	@media (min-width: 50em) { grid-template-columns: 1fr 2fr auto; }
	@media (prefers-reduced-motion: no-preference) { transition: .2s ease-out; }
	@container style(--theme: whatever) { --do-something: different; }
}</code></pre>
   <p>As in: put the <em>selector and the media queries as close to each other as possible</em>. That's where the complexity is in responsive design. Not in the finicky details and syntax within.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/view-source</id>
  <title xml:lang="en">View Source</title>
  <published>2026-04-26T11:14:00+02:00</published>
  <updated>2026-04-28T13:54:34+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/view-source"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(2 minute read)</small></footer>
   <p><a href="https://en.wikipedia.org/wiki/View-source_URI_scheme">According to Wikipedia</a>, <q>In the early Internet, the View Source technique helped people learn by example to create their own web pages.</q> I think dinosaurs would've laughed their asses off about how we treat short-term evolution these days, but fine.</p>
   <p>Firefox and Chromium based browsers still support the scheme. If you navigate to <code>view-source:https://krijnhoetmer.nl/log/2026/04/view-source</code> directly (or by using <kbd>Ctrl+U</kbd>, <kbd>⌘U</kbd> or <kbd>⌥⌘U</kbd>) you can still see the <a href="https://en.wikipedia.org/wiki/WordPerfect#Reveal_codes"><em>underwater screen</em></a>.</p>
   <p>You used to be able to link to the view-source URI scheme in those browsers, but due to security reasons, that has been removed from the web platform. Eric Lawrence has a nice <a href="https://textslashplain.com/2021/11/11/view-source/">write-up</a> about some of the details. Showing your code, the easiest way to do, went the way of the dodo.</p>
   <p>Imagine teaching others how to do things, by just linking to your own code. Like in the early Internet. Especially now you can <a href="https://developer.mozilla.org/en-US/docs/Web/URI/Reference/Fragment/Text_fragments">link to text fragments</a>, that would've been beautiful! Chromium based browsers strip the fragment identifier when viewing source, but in Firefox this works. What if instead of copying code, wrapping it in a <code>&lt;pre&gt;</code> element, formatting it nicely, escaping special characters, messing with <code>overflow</code> and adding syntax highlighting to your TODO list, you could just link to <code>view-source:https://krijnhoetmer.nl/log/2026/04/spam-filtering#:~:text=%3Clabel%20for=%22comment-spam%22%3E,%3C/script%3E</code>. Or am I the only person on this planet still caring about nicely indenting their HTML? Like a dinosaur right before some major extinction event.</p>
   <p>Ok, maybe it's not the most user-friendly way of sharing code. But while writing this down, I learned a lot about text fragments. Half an hour ago I didn't know you could link to multiple fragments for example, or how prefixes and suffixes worked. So that's part of my day well spent, just by playing around with the view-source interface.</p>
   <p>Another fun way to share your HTML code would be <a href="https://secretgeek.github.io/html_wysiwyg/html.html">in a quine</a>, by the way. Or this <a href="https://www.aleksandrhovhannisyan.com/blog/local-code-embeds/">custom element</a> I read about recently. Two of my inspirations for showing code and live demos in blog posts are <a href="https://jakearchibald.com/">Jake Archibald</a> and <a href="https://www.joshwcomeau.com/">Josh Comeau</a>. One can dream, right?</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/on-metadata</id>
  <title xml:lang="en">On metadata</title>
  <published>2026-04-25T00:00:00+02:00</published>
  <updated>2026-04-25T11:01:37+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/on-metadata"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(1 minute read)</small></footer>
   <p>Just added some hidden metadata to my HTML: <a href="https://ogp.me/">Open Graph data</a> and <a href="https://rknight.me/blog/setting-up-mastodon-author-tags/">some bits for Mastodon</a>.</p>
   <p>Let's see if it becomes visible somewhere, because the biggest problem with <em>hidden</em> metadata is that we—humans—tend to forget about it. That's why we have validators and tools like <a href="https://polypane.app/">Polypane</a> to make it visible to us.</p>
   <p>My biggest help is to keep hidden and visible metadata as close as possible to each other in source code. And to stay as close to the raw materials as possible, without abstracting too much. A simple partial template or include with a bunch of HTML lines, over some <code>&lt;AbstractedMetadataFactory&gt;</code> for example. So next time I'm updating a visible bit, I'm required to <em>also</em> think about some invisible bits a few lines down. And preferably test those as well.</p>
   <p>The best example of hidden metadata not working probably is ARIA. We—humans—are just too stupid <a href="https://webaim.org/projects/million/#aria">to use it correctly</a>, which is <a href="https://www.w3.org/TR/using-aria/#rule1">why the advice to <em>not</em> use it</a> is so interesting.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/spam-filtering</id>
  <title xml:lang="en">Spam filtering</title>
  <published>2026-04-24T00:00:00+02:00</published>
  <updated>2026-04-28T15:32:01+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/spam-filtering"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(2 minute read)</small></footer>
   <p>Interesting question today: <a href="/log/2026/04/and-some-basic-interactivity#comment-3" interestfor="preview"><q>What are you doing for spam filtering?</q></a> — thanks for giving me a reason to write something on my girlfriend’s birthday, Sander! :) Nothing fancy, actually, to answer your question.</p>
   <p>This simple strategy has been working for me for about 20 years, on various websites:</p>
   <pre><code class="language-html">&lt;!-- Other form elements --&gt;

&lt;p&gt;
	&lt;label for=&quot;comment-spam&quot;&gt;Are you a spammer? &lt;em&gt;Fill in “No”&lt;/em&gt;&lt;/label&gt;
	&lt;input type=&quot;text&quot; name=&quot;spam&quot; id=&quot;comment-spam&quot;&gt;
&lt;/p&gt;

&lt;button type=&quot;submit&quot;&gt;Add comment&lt;/button&gt;

&lt;script type=&quot;module&quot;&gt;
	const spamInput = document.getElementById('comment-spam');
	spamInput.value = 'No';
	spamInput.parentNode.hidden = true;
&lt;/script&gt;</code></pre>
   <p>In my server-side validation I just check if “No” was filled in. If JavaScript isn't available, or <code>type=&quot;module&quot;</code> isn't supported, or hell breaks loose, you just have to fill in that bit yourself. Progressive Enhancement. Or some sort of Captcha honeypot whatever, without being annoying for 99.9% of real users. Doesn't keep human spammers out, but I'm ok with manually removing stuff again. For now.</p>
   <p>If spam bots do catch up, or someone specifically targets this website with some script, I'll change “No” to “Nope”, and they'll have to start over again. The answer has literally been spelled out for them for years, so any “AI” can fill in the blanks.</p>
   <p>A few weeks ago I read <a href="https://spencermortensen.com/articles/email-obfuscation/">Email address obfuscation: What works in 2026?</a>. It's quite amazing how simple solutions can still be so effective.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/and-some-basic-interactivity</id>
  <title xml:lang="en">And some basic interactivity</title>
  <published>2026-04-23T00:00:00+02:00</published>
  <updated>2026-04-23T18:32:09+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/and-some-basic-interactivity"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(2 minute read)</small></footer>
   <p>Added some basic commenting functionality. Apparently a <code>&lt;form&gt;</code> element, HTTP and a <code>POST</code> method still work.</p>
   <p>I reused and remixed some code from one of my oldest and longest running websites: I don't play badminton at Badminton Club Almere anymore, but I'm still hosting and maintaining <a href="https://www.bvalmere.nl/">their website</a>, launched in <a href="https://www.bvalmere.nl/nieuws/2005/11/website-vernieuwd">2005</a>. Until some other volunteer steps up and takes over.</p>
   <p>About 17.000 comments were posted throughout the years. It was one of the most (inter)active badminton club websites in The Netherlands. A while ago the current board asked me to remove the commenting feature. I guess people think everyone's on Instagram these days, and don't use websites anymore. Or everyone's busy talking to chat bots in echo chambers, I don't know. Luckily they allowed me to at least keep all the current comments publicly available.</p>
   <p>Fronteers is a different story. In 2007 I built their website, including the blog. And because I had some code laying around, of course we had comments there as well. Two years ago <a href="https://www.fronteers.nl/nl/blog/2024/10/nieuwe-website">the website relaunched</a>. Different volunteers took over. It happens. Unfortunately over 2.000 comments—and the feature—got lost in that migration.</p>
   <p>At <a href="https://fdnd.nl/">FDND</a> we're teaching students in Semester 2 to work with <em>server-side rendering</em> (I will write about what I think of this term some other day). After some of the basics about HTML, CSS and JS in Semester 1, we're introducing them to HTTP, forms and designing and developing with dynamic data. And Progressive Enhancement, browsers, User Experience, performance. Basically: web stuff. It's really cool to see students get enthusiastic about making something interactive, like a comment form.</p>
   <p>I miss simple comment forms on websites.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/added-a-feed</id>
  <title xml:lang="en">Added a feed</title>
  <published>2026-04-22T16:00:00+02:00</published>
  <updated>2026-05-08T20:09:07+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/added-a-feed"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(2 minute read)</small></footer>
   <p>Just added <a href="/log.atom">an RSS feed (Atom)</a> to this beautiful website, and I immediately have some questions already. Like, why am I writing XML by hand? It's 2026.</p>
   <p>While typing <code>&lt;link rel=&quot;alternate&quot; type=&quot;application/atom+xml&quot; href=&quot;/log.atom&quot;&gt;</code> in the <code>&lt;head&gt;</code> I wondered, shouldn't that <code>&lt;link&gt;</code> only be added to <a href="/log">/log</a>? Technically it's only an <em>alternative</em> for that page. Not for blog posts itself, and not for my homepage either.</p>
   <p>Glad <a href="https://annevankesteren.nl/2005/03/autodiscovery">Anne had the same thoughts</a> 21 years ago, so it's probably not something to worry about anymore. Stop overthinking.</p>
   <p>So there you have it, a minimal feed. Will add more stuff when I want to.</p>
   <p>Oh, and I've redirected my previous feed URLs with a <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/301"><code>301</code></a>, in case anyone was still subscribed. My server logs don't think so, but <a href="https://www.w3.org/Provider/Style/URI">Cool URIs don't change</a>.</p>
   <p>No idea how popular feeds are nowadays. I'm a huge <a href="https://netnewswire.com/">NetNewsWire</a> user myself, and still read daily, but my frontend students had never heard <a href="https://aboutfeeds.com/">about RSS feeds</a> when I told them what they were. “It’s like podcasts — but for reading.”</p>
   <p>Some of the feeds I shared with them a while ago:</p>
   <ul>
    <li>WebKit blog: <a href="https://webkit.org/feed/">https://webkit.org/feed/</a></li>
    <li>Web.dev: <a href="https://web.dev/feed.xml">https://web.dev/feed.xml</a></li>
    <li>Frontend Masters: <a href="https://frontendmasters.com/blog/feed/">https://frontendmasters.com/blog/feed/</a></li>
    <li>CSS Weekly: <a href="https://feeds.feedburner.com/CSS-Weekly">https://feeds.feedburner.com/CSS-Weekly</a></li>
    <li>CSS Tricks: <a href="https://css-tricks.com/feed/">https://css-tricks.com/feed/</a></li>
    <li>Mozilla Hacks: <a href="https://hacks.mozilla.org/feed">https://hacks.mozilla.org/feed</a></li>
    <li>Polypane blog: <a href="https://polypane.app/rss.xml">https://polypane.app/rss.xml</a></li>
    <li>Web Performance Calendar: <a href="https://calendar.perfplanet.com/feed/">https://calendar.perfplanet.com/feed/</a></li>
    <li>Frontend Focus: <a href="https://frontendfoc.us/rss/">https://frontendfoc.us/rss/</a></li>
    <li>Fronteers blog: <a href="https://www.fronteers.nl/feeds/blog.xml">https://www.fronteers.nl/feeds/blog.xml</a></li>
    <li>Modern Web Weekly: <a href="https://modernwebweekly.substack.com/feed">https://modernwebweekly.substack.com/feed</a></li>
   </ul>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/that-went-smooth</id>
  <title xml:lang="en">That went smooth</title>
  <published>2026-04-21T16:25:00+02:00</published>
  <updated>2026-04-29T15:57:01+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/that-went-smooth"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(2 minute read)</small></footer>
   <p>Because I reused some bits from the old Fronteers website <a href="https://www.fronteers.nl/nl/blog/2007/12/welkom">I built in 2007</a>. I sort of reached my goal for today already, but let's come up with a todo list for myself.</p>
   <p>I'm using my own 20+ year old CMS for this website, which still works reasonably well. My original goal back then was to make the frontend completely separate from the backend. What you'd call headless nowadays, but I had no idea. Let's see if that original goal still holds up, and I can use some modern web dev stuff. As in new HTML, and CSS, and browser APIs. I don't care about all the JavaScript frameworks that came and went.</p>
   <p>Right now I've only allowed myself to use paragraphs and lists. Mostly default styling for now, I can iterate on that later on.</p>
   <p>So, a TODO list, in random order, and not caring about whether or not I'll ever get to it:</p>
   <ul>
    <li>Collect some of my old posts and writings and publish them on my own website</li>
    <li>Find out if I want to publish my old Tweets and (recent) Toots here</li>
    <li>Figure out how personal I'm going to make this all (do I still care what others think, really?)</li>
    <li>Play around with code, like <a href="/stuff/">I used to do</a></li>
    <li><del>Add an RSS feed, even though this is probably being scraped right now (well, not while writing, but while you're reading this (is anyone reading this? Who cares!))</del> <ins>(<a href="/log/2026/04/added-a-feed" interestfor="preview">Added the day after</a>)</ins></li>
    <li><del>Add dates to posts (yes, Alex!)</del> <ins>(Added the same day)</ins></li>
    <li>Link to interesting stuff I'm reading (like, everything from <a href="https://unsung.aresluna.org/">Marcin</a>)</li>
    <li>Add some styling, completely embracing my inner impostor</li>
    <li><del>Add comments, because why not</del> <ins>(<a href="/log/2026/04/and-some-basic-interactivity" interestfor="preview">Added two days later</a>)</ins></li>
    <li>Inspire some students, maybe my own kids as well</li>
    <li>Play around with Webmentions</li>
    <li>Showcase some of my work, projects, hobbies, whatever</li>
   </ul>
   <p>Some sub-goals on the styling front:</p>
   <ul>
    <li>Only use <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Logical_properties_and_values">logical properties and values</a> (haven't played enough with those)</li>
    <li><del>Implement dark mode stuff, with switches and all</del> (first part done with <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/name/color-scheme"><code>&lt;meta name=&quot;color-scheme&quot;&gt;</code></a>, <ins><a href="/log/2026/04/making-a-fun-color-scheme-toggle" interestfor="preview">added a switch as well</a></ins>)</li>
    <li>Try out <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Anchor_positioning">anchor positioning</a></li>
    <li>Play with <a href="https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API">view transitions</a></li>
   </ul>
   <p>Ow, right, I'm working live on my server. Like a mad man. <code>sshfs</code> for life. Things will break. Refresh at will.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2026/04/new-goals</id>
  <title xml:lang="en">New goals</title>
  <published>2026-04-21T15:21:00+02:00</published>
  <updated>2026-04-21T16:18:11+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2026/04/new-goals"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(1 minute read)</small></footer>
   <p>Right, so I'm sitting at home, recovering from a knee surgery, with not that much to do. Apart from reading RSS feeds and worrying about the world. Time to pick up my own website again. All hand-coded and hand-written, because part of the worrying comes from all the AI bullshit out there.</p>
   <p>About 20 years ago I tried blogging, but I never really continued. Always worried about not being good enough. About not being enough of a designer. About not having anything new to bring to the world. Like an impostor. With a syndrome.</p>
   <p>Well, screw that. I'm going to try to write something about whatever interests me each day from now on. And work on my own website each day as well.</p>
   <p>Step one: a first post. And a template that shows the stuff. And some URL design. Let's see where this goes. See you in the browser!</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2024/06/leaving-css-day</id>
  <title xml:lang="en">Leaving CSS Day</title>
  <published>2024-06-07T17:53:12+02:00</published>
  <updated>2024-06-07T17:53:12+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2024/06/leaving-css-day"></link>
  <content type="html" xml:lang="en"><![CDATA[
   <footer><small>(2 minute read)</small></footer>
   <p>In 2024 I decided to quit the conference business by the end of that year. After being involved with 30 conferences, both voluntary and as an entrepeneur, it was about time to focus on other things. For the first time ever, sweating my ass off, I took the stage, for a speech I had prepared during the breaks that day. Later that year I'd still help out with performance.now() for the last time, but the CSS Day audience was my precious.</p>
   <hr>
   <p>Can we have a warm hand for Miriam as well please, she did a great job today, thanks!</p>
   <p>By the way, Miriam does amazing work in the CSS Working Group, but her funding stopped recently.</p>
   <p>If we want her to continue to work on CSS, please take a moment to support her on Open Collective, via this QR code.</p>
   <p>Come on, I'll wait.</p>
   <hr>
   <p>And of course a warm hand for Jeremy, thanks for MC'ing yesterday!</p>
   <hr>
   <p>Thanks also to all speakers for your wonderful talks this year.</p>
   <hr>
   <picture>
    <source type="image/avif" srcset="/_img/2024/06/speech-cssday.avif">
    <img src="/_img/2024/06/speech-cssday.jpg" width="1600" height="1066" loading="lazy" decoding="async" alt="I stood there; a bold dude, wearing a khaki shirt, holding a microphone somewhat confident, behind a lectern with two laptops on it. Behind me some other people—conference speakers, some wearing their lanyard—were standing and looking at me.. Maybe wondering who the hell this guy was..">
   </picture>
   <hr>
   <p>So, for those of you who've been here multiple times, this is a weird situation..</p>
   <p>In the past ten years I'd run away at this point, and let ppk take over the microphone.</p>
   <p>I've written some words in the break just now, so I need to read them out.</p>
   <p>Like a pro. From a laptop. Behind a desk.</p>
   <p>Not a lot of people know this, but this conference is being run by two people.</p>
   <p>And we've run about 25 different conferences together, in the past 13 years.</p>
   <p>You could say...ppk is the foreground color in this story, and I'm the background color.</p>
   <p>Or more like a box-shadow.</p>
   <p>A box-shadow shitting box-sized bricks at the moment, since speaking isn't my thing.</p>
   <p>As you're probably noticing :)</p>
   <p>The reason for this small change, is we're having a bit of fun this year, and it's our 10th anniversary party (yay!)</p>
   <p>And also because, after this edition, I am stopping with organising CSS Day (aaw)..</p>
   <p>And I wanted to personally thank all of you for 10 amazing editions of this lovely niche conference.</p>
   <p>So...thank you all for attending! I'm going to miss all of this :)</p>
   <p>Also, thanks ppk for all those years working together. It's been a fun ride! :)</p>
   <p>But, luckily, and the most important thing, CSS Day is continuing.</p>
   <p>And I will finally be enjoying all talks as an attendee!</p>
   <p>Thank you! :)</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2019/04/staand-zittend-liggend</id>
  <title xml:lang="nl">Staand. Zittend. Liggend. (NL)</title>
  <published>2019-04-11T16:00:00+02:00</published>
  <updated>2026-05-17T17:04:02+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2019/04/staand-zittend-liggend"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(6 minuten lezen)</small></footer>
   <p>Op 4 april 2019 overleed mijn vader. Dit was de speech die ik gaf op zijn uitvaart.</p>
   <hr>
   <p>Nou, pa, je hebt jezelf mooi tuk. Als je had geweten hoeveel aandacht dit je zou opleveren, had je hier vast wel een stokkie voor gestoken. “Waar maken jullie je druk om?!”, ik hoor het je door de planken heen denken.</p>
   <p>Ik zal het kort houden. Maar ik heb hier nog wat flarden staan. En we zitten hier nou eenmaal, dus je kunt net zo goed nog even blijven liggen.</p>
   <hr>
   <p><q>Dat is toch die boze man op die fiets?</q>, hoorde ik deze week iemand gekscherend over je zeggen. Nee hoor, dat was die man, die zich vólledig op de dingen concentreerde. Met hooguit een enorme frons. Écht boos heb ik je nog nooit gezien. Hoewel, er was de laatste jaren iets met een schapendame, die volgens mij het uiterste van je overtuigingen en oefenen vroeg..</p>
   <p>Fietsen was wel echt je ding, en in mijn puberteit was je daarin ook mijn voorbeeld. Elke dag door weer en wind die 20 kilometer naar school. Want zo deed m’n pa het ook. En net als bij jou is autorijden nog steeds niet m'n hobby. Maar dat zelf zeilen me nooit zo lag, heeft onbewust misschien altijd best een afstand tussen ons laten zitten.</p>
   <hr>
   <p>Ook qua woordgrappen, spitsvondigheden en gepiel met taal konden we elkaar goed vinden. Iets wat ik amper van je geleerd kan hebben, dus dat moet via genen doorgegeven worden. En je hebt er jammer genoeg te weinig van meegekregen, maar je kleindochters zijn inmiddels ook al aardig op weg met hun eerste woordjes. Dus ik ben benieuwd.</p>
   <p>Ik ben deze week trouwens nog een leuk stukje ironie tegengekomen, wat bijna geen toeval kan zijn. Als zeiler heb je natuurlijk aardig wat jachthavens gezien, en op veel plekken betaalde je netjes liggeld. En soms zat het je mee en spaarde je eens een nachtje uit, door voor anker te gaan ergens op het water.</p>
   <p>Drie keer raden welke term de staat verzonnen heeft voor de kosten van je overnachtingen sinds afgelopen donderdag, waardoor ze nu al die besparingen weer bij je terughalen.</p>
   <p>Jep, liggeld.</p>
   <hr>
   <p>Volgens mij was het meest luxe ding in je caravan in Nederhorst een CD speler. Afgelopen week vonden we in je huisje de CD’s terug, die ik jaren geleden voor je brandde; je voorliefde voor gekke vrolijke deuntjes—vaak door vrouwen vertolkt—kwam weer even naar boven. Ik heb lang overwogen om wat van die gekte hier te laten horen. Waarschijnlijk had je het helemaal top gevonden, maar ik heb het niet gedurfd. En misschien ging het toen helemaal niet om de muziek, maar om een aanknopingspunt voor weer wat contact.</p>
   <p>Hoe dan ook, we zijn vandaag lekker veilig gebleven bij wat muziek van één van je favoriete films, wat pianomuziek die je recent nog mooi vond, een nummer wat ik toepasselijk vond, een liefdesliedje, en hierna nog wat van een Ierse zangeres, die je hoog had zitten. Als we hier dan toch zijn, dan ook maar met emoties.</p>
   <p>Wat luxe betreft heb je sinds je verhuizing naar Almere wel een behoorlijke upgrade doorgemaakt. Je waagde je hier aan een eigen tv, een DVD speler, Digitenne, een centrifuge, en uiteindelijk zelfs een waterkoker. En u zult het niet geloven, maar hij knutselde ook zijn eigen zitvlakverwarming in elkaar. Ziet u het voor zich? Mediterend in een koud huisje, maar wel met een paar warme billen. Gemak dient de mens.</p>
   <p>Spekken dat je de economie deed de laatste jaren, toen het geld dankzij je AOW niet op te maken was. Je leek je prima staande te houden in de consumptiemaatschappij, en je er bij neergelegd te hebben. Hoe zit dat toch?</p>
   <hr>
   <p><q>Blijf op je hoede</q>, zei je me als we eens wat dieper gingen. Bijvoorbeeld voor het alsmaar complexer wordende leven. Iets wat je natuurlijk ook bij mij zag gebeuren zo door de jaren heen. Relaties, verhuizingen, een hypotheek, kinderen, werk, verzekeringen, afijn; u kent allemaal wel het systeem waar ‘ie het vaak over had. Het leven simpel houden was je mantra, en dat is je aardig goed gelukt. Dat van mij is de twee extremen die zowel jij als m'n moeder zijn te combineren in mijn leven. En volgens mij lukt dat ook aardig.</p>
   <p>En als je dan wel klaar was met een gesprek, stond je op, en zei je. ““Nou, ik heb niks meer te liegen. Heb ik alles? Stuk in m’n kraag? Lood in m’n schoenen? Bord voor m’n kop? Ja, volgens mij kan ik gaan.””</p>
   <p>Bijna pa, bijna. Je bent alleen nog iemand een pakkie sigaretten schuldig. Bertus; sorry voor de vertraging, we hadden het even druk afgelopen week. Maar geloof me: die €6,50 lag donderdag al netjes voor je klaar op z’n aanrechtblad.</p>
   <p>En hij was altijd op z'n hoede voor verspilling, dus dat laatste pakje Camel zit nu ook gewoon in z’n binnenzak.</p>
   <hr>
   <p>Zo’n 35 jaar geleden zou je naar Nieuw-Zeeland verhuisd zijn. Over ergens een stokkie voor steken gesproken. Of eigenlijk een tentstokkie, als ik de wilde verhalen van je zus en m’n moeder moet geloven. Volgens mij mag ik jullie alledrie wel voor die nacht bedanken, dus bij dezen.</p>
   <p>Zonder had ik hier niet gestaan. En als het aan jou lag, had je dan zéker ergens anders gezeten.</p>
   <hr>
   <p>Het was fijn om de helft van je leven met je mee te kunnen varen. Op sommige momenten wat intensiever dan andere, dat weten we allebei. Maar je hebt me—zonder m'n moeder en tóch met m'n moeder—genoeg wijsheid meegegeven. Bedankt.</p>
   <p>Bedankt ook jullie allemaal voor het hier zijn vandaag, iedereen die afgelopen week voor me klaar stond, en Michelle en m’n twee meiden in het bijzonder. Dit in m'n eentje doen was me niet gelukt :*</p>
   <p>En dat is ook meteen het grote punt waarop we verschilden; volgens mij hoort hechten én onthechten er wél gewoon bij in het leven. Je hoeft de dingen niet alleen te doen.</p>
   <p>Pa, ik heb niks meer te liegen. Volgens mij wordt het tijd om de trossen los te gooien, het ruime sop te kiezen, en de jachthaven voor altijd te verlaten.</p>
   <p>Niet staand. Maar lekker liggend.</p>
   <p>Nooit meer zittend. Maar wel( )varend.</p>
   <p>Vaarwel :)</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2012/06/kroniek</id>
  <title xml:lang="nl">Kroniek (NL)</title>
  <published>2012-06-06T00:00:00+02:00</published>
  <updated>2012-06-06T00:00:00+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2012/06/kroniek"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(14 minuten lezen)</small></footer>
   <p><i>Dit stuk stond voorheen op kronkels.net, waar ik anoniem columns en hersenspinsels plaatste, maar steeds opener werd. Na zeven jaar leek het me leuk weer wat te schrijven. Maar dit was ook meteen mijn laatste stuk daar. Een paar jaar later heb ik die website offline gehaald.</i></p>
   <p>Zeven jaar. Een kwart van mijn leven heeft zich afgespeeld sinds mijn vorige stukje op deze schijndode site. Wat is er zoal gebeurd?</p>
   <p>Ik ben gestopt als <a href="/log/2004/05/kolom" interestfor="preview">columnist</a>, ik ben voornamelijk <a href="/log/2004/06/kaaskoppen-in-europa" interestfor="preview">in Europa</a> gebleven, ik ben de <a href="/log/2004/09/kreeftdicht" interestfor="preview">kreeft</a> gebleven die ik altijd was, ik ben <a href="/log/2004/10/karakter" interestfor="preview">mezelf</a> beter gaan <a href="/log/2004/11/kennis" interestfor="preview">leren kennen</a>, ik stuur nog steeds geen <a href="/log/2004/12/kerstgedachten" interestfor="preview">kerstkaarten</a>, mijn <a href="/log/2005/01/kronkels" interestfor="preview">oorspronkelijke idee</a> is geflopt, ik drink nog steeds <a href="/log/2005/01/koffie" interestfor="preview">koffie</a>, ik heb nog geen behoefte aan <a href="/log/2005/01/krachten-der-natuur" interestfor="preview">trouwen</a>, ik doe nog steeds niet aan visitekaartjes, ik ben afgelopen jaar bijna <a href="/log/2005/01/kilogrammen" interestfor="preview">15 kilo afgevallen</a>, zo nu en dan draag ik zonnebrandcrème, ik <a href="/log/2005/02/klapband" interestfor="preview">fiets</a> nog steeds, ik draai geen <a href="/log/2005/03/kantinedienst" interestfor="preview">kantinedienst</a> meer voor m'n clubje en ik heb de stekker getrokken uit onze <a href="/log/2005/05/kleding" interestfor="preview">tweedehands kledingwinkel</a>.</p>
   <p>Waarom nu opeens een update? Al een paar jaar rond 29 mei krijg ik weer de behoefte om te schrijven, maar steeds lukte het me niet. Via Twitter en Facebook kon ik al genoeg onzin delen met de wereld, dus echt nodig was het ook niet. Maar ergens dit jaar kreeg ik het idee om met Twitter te stoppen. Bij 10.000 tweets vond ik het mooi geweest. Wellicht dat ik er ooit weer mee start, maar voorlopig vind ik het wel best zo. Dus, zeven jaar samengevat in één zin met referenties naar gedachtegangen van een eeuwigheid terug. Dat kan toch nooit alles zijn? Tussen de regels door is er nog het een en ander gebeurd inderdaad. Normaal ben ik niet iemand die in het verleden leeft, maar om de titel van dit stukje eer aan te doen, hieronder enkele highlights, zodat ik daarna de rode draad weer kan oppakken. Details zullen hier en daar vast en zeker ontbreken.</p>
   <p>In 2005 ben ik, na drie jaar te hebben uitgezeten en de finish in zicht te hebben, gestopt met mijn opleiding. De eindpresentatie van mijn laatste stage werd niet helemaal goedgekeurd en er werd gesteld dat ik in de zomervakantie een herkansing mocht doen. Ik weet niet of het lag aan het feit dat ik geen pak droeg, maar ook de presentatie van dit gedrocht kwam niet door de ballotagecommissie. Na wat overleg met onze begeleider kwamen we gelukkig tot een compromis: als we de volgende periode gewoon bij zijn bedrijfje stage kwamen lopen, was het goed. Chantage? Ik weet het niet, maar deze oplossing kon wat mij betreft snel verdampen. Volgens mij heb ik meteen die dag besloten dat ik zelfs met een papiertje later niet in zo'n zakenwereld wilde verkeren. En waarom zou je dan je bewijsje van goed gedrag halen? Misschien een verkeerde keuze, maar ik ben zonder pardon en terugkijken gestopt. M'n moeder, vrijheidsstrijdster pur sang, stond achter me, vierkant. Rondhangen in ons toen nog kleine winkeltje is wat ik de rest van het jaar deed. Via zelfstudie, waar ik al een aantal jaar mee bezig was, werkte ik de plannen voor mijn eigen CMS verder uit. In november ging de nieuwe website van mijn badmintonvereniging <a href="https://www.bvalmere.nl/nieuws/2005/11/website-vernieuwd">online</a>, gebaseerd op dit systeem.</p>
   <p>In 2006 begon ik echt met freelancen. Tom van Info.nl uit Amsterdam was blijkbaar onder de indruk van de broncode van mijn sportclub en nodigde me uit voor een project voor Volkskrant Banen. Na wat inwendig gesteggel over mijn uurtarief (ik wilde te weinig, aangezien ik geen papiertje had, onzeker was over mijn kunnen en niet veel nodig had) begon ik aan mijn grootste en spannendste project tot dan toe. Naast Volkskrant Banen heb ik dat jaar voor Info.nl nog wat klussen gedaan en ook met mijn eigen software heb ik wat kleine klantjes binnengehaald. Pas een jaar later heb ik mijn freelance uurtarief iets verhoogd, na uitlach- en aanmoedigingssessies van wat concullega's.</p>
   <p>In 2007 werd <a href="https://fronteers.nl/">Fronteers</a> opgericht. Begin dat jaar riep Peter-Paul (ppk), die ik sinds 2004 kende, een paar webbedrijven en freelancers bij elkaar om zijn plannen voor een vereniging te delen. Ik zat bij die eerste lichting en heb vanaf het begin alle discussies meegemaakt. Al snel werd duidelijk dat er behoefte was aan een vakvereniging voor beoefenaars van front-end web development. Ik nam de website en daarna de ledenadministratie voor mijn rekening en ondertussen zijn we vijf jaar verder; met zo'n 450 leden een redelijk succes. In dat jaar werd ik ook benaderd door Ahold en heb ik mee mogen werken aan Albert.nl en de migratie van de webwinkels. Qua hoeveelheid verschillende klanten en facturen was 2007 mijn topjaar. Slechter was het voor de winkel. In januari werd er ingebroken en werd de laptop van mijn moeder gejat. Een oud ding (die laptop) met maar één nadeel; geen backups. Jaren werk armer en een hoop frustratie en achterstand rijker. Door die tegenslag besloot mijn moeder werk en gezin weer bij elkaar te willen brengen. Mijn vader, die niet bij ons woonde, maar waar ik wel regelmatig contact mee had, vond het toen tijd om mijn moeder te helpen met de winkel en de verbouwing. De tweede en derde verdieping werden erbij gehuurd voor mijn moeder, broertje (Martijn) en zusje (Maaike). Een deel van het huis aan de Grasmeent werd tijdelijk verhuurd, na eerst een hele tijd te koop te hebben gestaan. Ik had al een tijdje een inschrijving bij Woningnet. De tijd was rijp om uit te vliegen.</p>
   <p>In 2008 ben ik uit huis gegaan en samen gaan wonen met mijn eerste vriendin, waar ik toen een paar jaar wat mee had. In het begin van het jaar heb ik het wat rustiger gedaan qua werk, zodat ik samen met m'n vader ons (huur)huisje licht kon verbouwen. Ik had wat geld opgespaard het jaar ervoor. Ik besloot ook penningmeester te worden van Fronteers, vooral omdat niemand anders zich geroepen voelde; ik deed de ledenadministratie al, dus waarom niet. In september hielden we het eerste Fronteers congres in Pakhuis de Zwijger. Qua sprekers, bezoekers en sfeer een redelijk succes, maar qua geld totaal niet; de vereniging ging er bijna aan ten onder. Een leerzame eerste periode als penningmeester dus. Mijn grootste freelance klus dat jaar was AH Wijndomein.</p>
   <p>In 2009 hield ik me, naast kleine projecten en eigen sites vooral bezig met de nieuwe sites van Gall &amp; Gall en Etos. De kledingwinkel was op dat moment al uit haar voegen gegroeid en de huur was evenredig omhoog gegaan. Aangezien mijn eigen leven vrij simpel was ingericht en ik niet veel kosten had, ging al het geld dat ik extra verdiende naar onze winkel. Liever investeren in het geluk van mijn moeder dan het weggooien onder het kopje belasting, is wat ik altijd dacht en zei. Zij had meer dan 20 jaar geld en energie gestoken in mijn opvoeding; waarom zou het niet eens andersom kunnen? Mijn geld werd nuttig besteed en ik kon ruim leven wanneer ik dat wilde. Een perfecte combinatie. Met het tweede congres van Fronteers ben ik me wat meer gaan bemoeien. Mede door de bekendheid van onze vereniging en de tijd en energie die ppk in het congres stak, werd het dit jaar wel een doorslaand succes en verkochten we uit in Felix Meritis, met 300 bezoekers. ppk gaf hierna aan dat dit zijn laatste vrijwillige congres was. Aan het eind van het jaar werd ik benaderd om <a href="https://royallanzarote.nl/">Royal Lanzarote</a> in mijn CMS te ontwikkelen. Ondertussen is dat idee uitgegroeid tot zo'n 30 verschillende bestemmingen, waar ik voorlopig nog amper geld mee verdien.</p>
   <p>In 2010 kreeg ik de kans om mee te werken aan Appie, een scrum project met een onduidelijke doorlooptijd. In februari waren we nog op vakantie geweest en toen werd pijnlijk duidelijk dat het niet meer liep tussen ons. Onverwerkte gevoelens, onzekerheid en jaloezie van mijn kant, gecombineerd met een depressie waar zij al wat jaren in hing. Ik hakte de knoop door voor ons allebei. Een keuze die zij nooit zou hebben gemaakt, gezien ons verleden. In maart, een week nadat ik bij Appie begon, gingen we uit elkaar. Ik stortte me vier dagen per week op deze stressvolle klus met politiek aan alle kanten en werkte in de overige drie dagen veelal gratis voor kleinere klanten en vrijwillig aan Fronteers. Het congres beloofde dat jaar, zonder de hulp van ppk, een enorme kluif te worden. We wilden groter en beter, maar vooral ook bewijzen dat het zonder ppk ook zou lukken, simpelweg door het werk goed te verdelen binnen een commissie en het leuk en behapbaar te houden voor iedereen. Ik leefde een aantal maanden op een recept dat mijn vader al jaren staande hield; salades en rauwkost. In juli al zag ik dat ik overwerkt ging worden dat jaar en besloot ik mijn maandelijkse badmintonbardienst per volgend seizoen op te zeggen. De keren daarvoor liet ik me vaak al overnemen door iemand anders, om zelf in slaap te vallen op de bank in de hoek. Eind juli tijdens een korte zeilvakantie met lange gesprekken met mijn vader laadde ik weer wat op, om daarna weer door te gaan met de ratrace. Door een zwanger commissielid leek het congres van 2010 vooral op mijn schouders te gaan rusten qua organisatie. Het werk goed verdelen bleek een utopie, misschien door mijn drang naar perfectie. Mede door de hulp en het oplossende vermogen van Martijn bleef ik overeind in de laatste weken. Nadat we in oktober in Pathé Tuschinski uitverkochten en 450 bezoekers welkom heetten was de toon voor de volgende jaren gelukkig gezet. Ook bij ppk begon het weer te kriebelen en hij besloot zich weer aan te melden voor 2011. Daarnaast had hij nog een plan voor een ander, commercieel congres, gericht op het mobiele web: Mobilism. Hij vroeg mij of ik hem wilde helpen en we begonnen samen een bedrijfje voor het organiseren van congressen en workshops in Amsterdam. In de koude decembermaand zocht ik genegenheid bij mijn teammaatje, wetende dat ik eigenlijk nog niet over mijn vorige relatie heen was en niet op zoek was naar een nieuwe. Iets wat ik voor mijn gevoel ook duidelijk uitte naar haar.</p>
   <p>In 2011 had ik inmiddels een aardige achterstand met mijn eigen klantenbestand opgebouwd. Appie ging als een dolle door en pas in april kreeg ik de rust om mijn andere achterstallige werk weg te werken. In mei vond vervolgens Mobilism plaats, wat een enorm succes was voor zo'n eerste keer. Meteen daarna ben ik een maand met de trein, een rugzak en twee vrienden door Europa gaan reizen. Door de nieuwe energie en inzichten die ik daar kreeg, durfde ik het uit te maken. Ik had me te snel aangepast aan deze nieuwe situatie en was mezelf verloren. Zij had zich aan die persoon gehecht, ik wilde weer alleen zijn. Vrij snel daarna gaf ik bij Appie aan naar drie dagen per week te willen, wat ook makkelijk kon. Via een collega kwam ik bij de boeken The 4-Hour Body en idem Workweek terecht. Dat eerste boek zorgde ervoor dat ik ondertussen bijna 15 kilo kwijt ben en me fitter dan ooit voel, vooral door wat veranderingen in mijn eetpatroon. Dat tweede boek bevestigde wat ik al een tijdje wist. In november besloot ik te gaan stoppen bij Appie. Ik was freelancer geworden om een reden, niet om alsnog verkapt loonslaaf te zijn. Mijn verslaving aan de enige realiteit in mijn leven, onzekerheid, kwam weer terug. In theorie wist ik wat dit betekende voor de winkel. Ik wist voor welke bedragen ik iedere maand een factuur stuurde en ik wist hoe relatief weinig ik daarvan zelf gebruikte of naar mijn spaarrekening schoof. Na overleg met mijn moeder, die weer achter mijn keuze stond, begon ik met afbouwen. Ik had het gehad met geld en gaf ook bij Fronteers aan geen penningmeester meer te willen zijn. Op oudejaarsavond voorspelde ik, op dat moment nog via Twitter, dat 2012 een interessant jaar ging worden.</p>
   <p>In 2012, op 10 januari om precies te zijn, stopte ik bij Appie. Ik stuurde mijn laatste twee facturen en vertelde mijn moeder dat die voor mezelf waren, als buffer voor de komende tijd. Ik had twee jaar lang nieuwe projecten afgeslagen, liep misschien wel achter qua kennis en had geen idee hoe snel ik weer iets nieuws zou vinden. Onzekerheid. Precies wat ik wilde. Misschien wel met een laptop op reis, onderweg werken? Simpelweg slapen in Nederland kost me al bijna 20,- per nacht, dus waarom zou ik dat niet ergens anders kunnen doen? Mijn moeder, die al een aantal jaar ook haar eigen administratiekantoor aan het afbouwen was, maakte de balans op. Wat betekende die door mij gestremde kruiwagen met geld, die iedere maand de bodemloze put tevergeefs vulde, voor de toekomst van de winkel? De cijfers maakten het zo inzichtelijk dat ze er zelf van schrok. Al een jaar lang was de huur niet betaald. Zelfs mét mijn hulp was het niet gelukt om uit de schulden te blijven. Niet dat de winkel zelf geen omzet maakte, maar de kosten waren gewoon te hoog. Personeel, huur, gas, licht, de investering in een café; alles bij elkaar financieel gezien een hopeloze onderneming. Zelfs mét mijn hulp was me niet gelukt wat ík wilde; mijn moeder, broertje en zusje gelukkig zien. De complexiteit van het pand veroorzaakte eerder een hoop spanning dan wat anders. En het feit dat ik voor een groot deel geldschieter was, zorgde ook voor een verkeerde relatie met ze. Op 31 januari barstte de bom na een ruzie met m'n moeder. Ik besloot in Almere Haven, aan een bevroren strand middels tranen die datzelfde lot te wachten stonden, door te gaan met ademen en me zakelijk niet meer te bemoeien met de winkel. Loslaten. Eén van m'n betere beslissingen dit jaar. Het weekend daarop deed ik mee aan een badmintontoernooi in Rotterdam. Nog zo'n goede beslissing. Toen ik terugkwam bij de winkel hing het voor de ramen: 'Leegverkoop'. Eind april werd de winkel definitief gesloten. Gelukkig vond mijn moeder in de weken daartussen de kracht om een <a href="https://tweedetrefpunt.nl/nieuws/2012/03/een-nieuwe-fase">doorstart</a> te maken, als stichting. Voor het eerst in al die tijd is ze los van mij en kan ze zelf weer gaan ondernemen. Martijn en Maaike kunnen ook eindelijk zelf de keuze gaan maken; mee terug verhuizen naar de Grasmeent of zelf wat gaan zoeken. Het zal niet makkelijk voor ze worden, maar het is wel het best voor iedereen. Ikzelf ben nog steeds aan het genieten van de rust die ik heb nu. Iedereen vraagt me of ik vakantie heb, wat mijn plannen zijn, hoe ik het verder aan ga pakken. Ik zie het wel. Ik ga weer rustig afwachten tot er werk mijn kant op komt en tussendoor meehelpen met congresjes organiseren. Geld lijkt gelukkig oneindig aanwezig in deze wereld; je moet het gewoon niet allemaal nodig willen hebben.</p>
   <p>En over dat toernooi in Rotterdam... Ik werd ingedeeld in een team met vier onbekenden en één bekend gezicht. Dat van een meisje uit Amsterdam waar ik al een aantal jaar competitie tegen speelde. Gelukkig herkende ze mij ook, waardoor we naar elkaar toe trokken dat weekend. We vertelden elkaar alles wat los en vast zat, niet wetende dat dit onze eerste date was. De vonk sloeg over, duidelijk merkbaar voor iedereen om ons heen. Klik na klik werkten we af, nog steeds allebei met het idee dat we blij waren met ons leventje zoals het ging, alleen. Die zondag in de trein terug richting Amsterdam wist ik wat me te doen stond; haar nummer vragen. Als ik dit gevoel zou negeren, zou ik een eikel zijn. Thuisgekomen zonder nummer wist ik wat me te doen stond; haar e-mailadres vinden. 's Nachts typte ik de laatste regel van mijn drie regels tellende mail. Rond 10 uur de volgende dag kreeg ik er eentje terug, met lievere inhoud dan ik me had voorgesteld. Een dag later hadden we onze eerste geplande date. Ondertussen zijn we vier maanden verder en ben ik nog steeds smoorverliefd. Ik plan het liefst zo min mogelijk, maar ik hoop dat ik nog een hele tijd in haar planning pas.</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2011/12/door-een-frobelaar</id>
  <title xml:lang="nl">Content management door de ogen van een vrolijke front-end fröbelaar (NL)</title>
  <published>2011-12-24T00:00:00+01:00</published>
  <updated>2011-12-24T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2011/12/door-een-frobelaar"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(13 minuten lezen)</small></footer>
   <p><i>Ik schreef dit stuk in 2011 op het Fronteers blog, als afsluiting van de eerste adventskalender. M'n doel was om elk artikel uit de kalender aan te halen (wat het hier en daar ietwat gekunsteld maakte :)</i></p>
   <p>&quot;<a href="https://www.fronteers.nl/blog/2011/12/het-platform-bouwen" title="Het platform bouwen">Dat kan beter.</a>&quot; Zo dacht ik in 2004 ook toen ik het zoveelste op maat gemaakte BeheerDing in elkaar geknutseld had en ontevreden was met het resultaat.</p>
   <p>Na het klooien met een Enterprise Content Management System (Magnolia 2.0) tijdens een stage begin 2005 en het klagen over de markup die mijn toenmalige blog (WordPress 1.5) uitkakte, had ik het door: &quot;Dit moet beter.&quot; Niet omdat het Web het nodig had, niet omdat <a href="https://www.fronteers.nl/blog/2011/12/clients-from-heaven" title="Clients from heaven">klanten</a> er om vroegen en niet omdat ik een gat in de markt zag, maar gewoon omdat ik het nodig vond. Ik was klaar met steeds opnieuw het wiel uitvinden en uitvinden dat ik aan het eind van de rit eigenlijk maar een klein rondje gemaakt had. Ik had een missie: het bouwen van een CMS dat ik steeds opnieuw weer in kon zetten en dat toch met me mee kon <a href="https://www.fronteers.nl/blog/2011/12/patronen-voor-de-groei" title="Patronen voor de groei">groeien</a> door de jaren heen. En iets wat perfect ingesprongen HTML uitspuwde natuurlijk, als ik dan toch bezig was. Wat volgt, is een vrij samengeraapt en toch onsamenhangend verhaal over mijn zoektocht naar het ideaal dat ik voor ogen had, en nog steeds heb, gecombineerd met de afsluiting van een in mijn ogen <a href="https://www.fronteers.nl/blog/2011/11/adventskalender" title="Adventskalender 2011">geslaagd idee van Arjan</a>.</p>
   <p>Het allereerste probleem bij een CMS is natuurlijk de vraag: wat is content? Volgens Van Dale heeft het iets te maken met tevredenheid, maar als je eens rondvraagt bij een willekeurig aantal inhoudsbestuurders om je heen, merk je dat het eigenlijk niet echt heel leuk werk is, dat content managen. Vreemd, als je bedenkt dat <a href="http://www.amazon.com/Content-Management-Bible-Bob-Boiko/dp/0764573713/" title="http://www.amazon.com/Content-Management-Bible-Bob-Boiko/dp/0764573713/">de bijbel voor content management</a> qua diepgang en dikte <a href="http://www.amazon.com/Lord-Rings-J-R-R-Tolkien/dp/0618260587" title="The Lord of the Rings">de bijbel voor ringheren</a> benadert. Vanzelfsprekend, als je bedenkt dat een groot deel (van dat eerste boek) over <a href="https://www.fronteers.nl/blog/2011/12/waarom-standaarden-essentieel-zijn" title="Waarom standaarden essentieel zijn">XML</a> gaat. En verontrustend, als je bedenkt dat <a href="http://www.amazon.com/XML-Bible-Elliotte-Rusty-Harold/dp/0764549863/" title="XML 1.1 Bible">de bijbel voor validatienazi's</a> eenzelfde hoeveelheid pagina's telt. Ruim drieduizend bladzijden, waarvan slechts 33% <a href="https://www.fronteers.nl/blog/2011/12/dr-strangescope" title="Dr. Strangescope or: How I Learned to Stop Worrying and Love the Closure">filmmateriaal</a> bleek. Nee, al vrij snel wordt duidelijk dat je, met oog op het verlangen naar een vrolijkheidsfactor, de beerput die content heet fijn dicht moet laten.</p>
   <p class="note">Overigens heeft de werkversie van het laatste deel van The Lord of the Rings een tijdje 'Return of the Content 1.0' geheten, maar is in de jaren daarna door een werkgroep voor een andere naam gekozen; 'The Return of the King', afgekort tot LOTR5. Tegenwoordig spreekt men gewoon van 'The Living Hobbit', omdat in de praktijk blijkt dat deze hele ringzoekexercitie maar om één persoon gaat. Afijn, naast op het grote doek zien we deze geschiedenis in ons vege en vage vakgebied vandaag de dag mooi samengevat terug als het welbekende 'Content is King'. Als je je dus afvroeg waar dat vandaan kwam; je las het hier voor het eerst.</p>
   <p>Iedere stinkende hoop kan een hoop lekkerder gemaakt worden door het te prefixen met 'Web'. Developers zijn doorgaans door wereldvreemdheid opvallende mensen, maar zodra je er Web voor zet, zijn ze opeens mondig (kijk naar de rellen rondom <a href="http://24ways.org/">24 ways</a> op Twitter de afgelopen weken). Zet daar nog eens <a href="https://www.fronteers.nl/">Front-end</a> voor en je hebt een heel <a href="https://www.fronteers.nl/blog/2011/12/waarom-een-slicer-een-front-end-developer-is-geworden" title="Waarom een slicer een front-end developer is geworden">nieuw vakgebied</a> gecreëerd (met succes overigens, <em>hulde aan alle vrijwilligers</em> die hier aan hebben meegeholpen!). Ooit gehoord van <a href="http://nl.wikipedia.org/wiki/Cd-video">Cd-video</a>? Maak er <a href="https://www.fronteers.nl/blog/2011/12/html5-video-een-overzicht">Web-video</a> van en je hebt <a href="http://youtube-global.blogspot.com/2011/12/what-were-we-watching-this-year-lets.html" title="In total, there were more than 1,000,000,000,000 playbacks on YouTube this year.">een hit</a>. Met <a href="http://www.mturk.com/" title="Mechanical Turk">sommige workers</a> communiceer je helemaal niet, terwijl je met <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html">Web workers</a> wel <em>moet</em> praten. Zelfs bij het <em>Semantic Web</em> werkt dit fixeren op een pre: Web 3.0 is <em>zoveel</em> sexyer… Hmm, nee, inderdaad, bij deze strontvlieg gaat die vlieger niet op, naar mijn idee. Een mening die niet uit de lucht gegrepen is trouwens; wij HTML'ers snappen gewoon niet wat <em>hidden metadata</em> is, wat je er mee moet, en hoe je het behapbaar moet houden. Google <a href="http://support.google.com/webmasters/bin/answer.py?hl=en&amp;answer=146898" title="In general, Google won't display content that is not visible to the user.">heeft dit voor een groot deel door</a>, anderen <a href="http://tech.burningbird.net/article/w3c-html-wg-decisions-hidden-longdesc-table-summary-and-myth-hidden-metadata" title="There is no &quot;hidden&quot; metadata—all the data in the web page is &quot;visible&quot; to some audience.">hebben andere dingen door</a>. Wellicht dat een Web Semantics 5 specificatie dit probleem ooit op gaat lossen. Of misschien lost het zichzelf wel op, zoals een <em>acidic</em> reactie op een post (die hieronder overigens gewoon welkom zijn).</p>
   <p>De term content beperken tot het Web lijkt dus een keuze die leidt tot <a href="https://www.fronteers.nl/blog/2011/12/het-is-al-goud-wiens-cursor-blinkt" title="Het is al goud wiens cursor blinkt">goud en bling-bling</a>. Zelfs <a href="http://en.wikipedia.org/wiki/Web_content" title="Web content">Wikipedia</a> heeft hier een pagina over, dus dan is het waar—een <a href="http://nl.wikipedia.org/wiki/Drogreden" title="Drogreden">gedrochtreden</a>, ik weet het. Maar om het nog simpeler te maken: met Web content bedoel <em>ik</em> tastbare 'dingen' op een website, <a href="http://nl.wikipedia.org/wiki/Tautologie_%28stijlfiguur%29" title="Tenenkrommende tautologie is tenenkrommend!">zoals bijvoorbeeld</a> pagina's, nieuwsberichten, reacties, alinea's, tabellen, afbeeldingen, kaarten en video's. En dan heb ik het dus <em>niet</em> over <code>onze-voorpagina-met-achtergrondinformatie.html</code>, <code>Nieuws%20brief%20%28september%202011%29.doc</code>, <code>&lt;li&gt;First! <a href="http://ragefac.es/23">LOL</a>&lt;/li&gt;</code>, <code>&lt;p&gt;ee&lt;p&gt;ee</code>, <a href="http://www.hotdesign.com/seybold/" title="Herinnert iemand zich deze nog?"><code>&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;table&gt;</code>...</a>, <code>&lt;img src=&quot;please-4.gif&quot; alt=&quot;Please forgive!&quot;&gt;</code>, <code>&lt;iframe src=&quot;http://maps.yahoo.com/embed#q=Amsterdam&amp;amp;conf=1&amp;amp;start=1&amp;amp;lat=52.373089&amp;amp;lon=4.8933&amp;amp;zoom=12&amp;amp;mvt=m&amp;amp;trf=0&amp;amp;tt=&quot;&gt;&lt;/iframe&gt;</code> of <code>&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://www.youtube.com/v/XSGBVzeBUbk&quot; width=&quot;425&quot; height=&quot;350&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;</code>. Dat is het idee dat wij nerds van content hebben, maar waar je verder (<a href="https://www.fronteers.nl/blog/2011/12/acteurs-schilders-en-technici" title="Acteurs, schilders en technici">bijna</a>) <em>niemand</em> mee moet vermoeien. Die <em>implementatiedetails</em> (de tagkoek die voor ons gesneden soep is) zijn niet wat die dingen uniek en bruikbaar maken. Over een jaar wil je misschien de achtergrondinformatie ook op een andere pagina gebruiken, nieuwsberichten of reacties in een feed terug laten komen, tabulaire data als <a href="http://code.google.com/apis/chart/" title="Google Chart Tools">taartdiagram weergeven</a>, <a href="http://www.sitepoint.com/forums/showthread.php?428205-Frequently-Asked-Questions-about-HTML#q30" title="So what is a good text equivalent for a given image? That depends on the context in which the image is used! It's not like there is a single 'perfect' text equivalent for each image.">bepaalde plaatjes voor iets anders gebruiken</a>, overstappen naar Google Maps (omdat die fijn met <a href="https://www.fronteers.nl/blog/2011/12/3d-graphics" title="3D-graphics">3D</a> aan het pielen zijn), of in <a href="https://www.fronteers.nl/blog/2011/12/een-tik-op-de-neus" title="Een tik op de neus">één tik</a> de iPad ondersteunen. Sla de dingen dus zo klein en specifiek mogelijk op; je gaat hier later <a href="https://www.fronteers.nl/blog/2011/12/javascript-pret-met-alle-karakters-in-een-string" title="JavaScript-pret met alle karakters in een string">pret mee hebben</a>. Dit lijkt logisch,  maar de eerste grote fout bij de meeste CMS'en is dat ze content en HTML als hetzelfde ding zien.</p>
   <p>Het woord 'management' <a href="https://www.fronteers.nl/blog/2011/12/deferred-en-promise-in-jquery" title="Deferred en promise in jQuery">belooft</a> niet veel goeds. Hierbij denk ik, vrijblijvende knutselaar die ik ben, aan <a href="https://www.fronteers.nl/blog/2011/12/geharnast-javascript" title="Geharnast JavaScript">een keurslijf</a>, regeltjes naleven en een pedante stropdas dragen. Hoe erg ik ook gruwel van die ideeën; als ik als HTML-freak graag wil dat mijn open- en sluit-tags inspringen als perfecte pendanten en niet de spuigaten uit spuiten qua <a href="http://krijnhoetmer.nl/zooi/screenshots/out.png" title="Markup die ik ooit terugkreeg van een back-end partij die mijn HTML had geïmplementeerd.">hoeveelheid en nesteldrang</a>, zal er ergens een bepaalde vorm van structuur geforceerd moeten worden. Een web developer is <a href="http://vimeo.com/33650934" title="Chris Heilmann | The prestige of being a web developer | Fronteers 2011">geen magiër</a> en je kunt maar tot op zekere hoogte bijsturen. Volgens mij ligt een groot deel van het beheersbaar maken, voor zowel de developer(s) als degene(n) die met het CMS moet(en) gaan werken, bij de basis.</p>
   <p>Je hebt vast wel eens te maken gehad met een gammele WYSIWYG-editor, die een hoop details wegpoetst en een website zogenaamd beheersbaar maakt. Het lijkt aan de oppervlakte een perfect concept en het verkoopt makkelijk. De structuur die wij kennen (HTML) wordt vertaald naar een structuur die de gebruiker kent (een visuele representatie van die HTML), en andersom. Voordat we ook maar een front-end hebben waar we trots op kunnen zijn, is er dus al een vertaalslag geweest. En met een beetje ongeluk zit je je in allerlei bochten te wringen om twee compleet verschillende omgevingen (de publieke website én het CMS) van misschien wel dezelfde CSS te voorzien. Respect voor iedereen die daar overdag mee bezig is!</p>
   <p class="note">Met WYSIWYG-editor hierboven bedoel ik trouwens een HTML-editor. Een editor als <a href="http://xopus.com/">Xopus</a> is wat mij betreft iets totaal anders, aangezien die tot op het laagste niveau iets van de structuur weet, en dus de echte content beheert. Helaas zijn er maar weinig <a href="http://q42.nl/" title="Q42, maar ik bedoel natuurlijk ook de mensen van Silk.">goden</a> op de wereld, moeten de meeste baksels het gewoon met HTML doen en gaat er nog steeds een hoop fout.</p>
   <p>Tuurlijk, er zijn tegenwoordig perfecte editors die schone HTML teruggeven, maar ik heb ooit voor het meeste simpele model gekozen, waar ik geen spijt van heb. Een WYSIWYG-editor is niet eens mogelijk, aangezien bij de content <em>geen</em> HTML wordt opgeslagen en het CMS niet weet hoe bepaalde <em>dingen</em> verrijkt worden. Het uitleggen van deze kluif aan klanten lijkt misschien een grote, maar in de praktijk blijkt dit één van de makkelijkste punten te zijn. Het belang van een WYSIWYG-editor wordt volgens mij enorm overschat, terwijl het één van de grootste pijnpunten voor vrolijke front-enders is. Ik hoop dat <a href="https://www.fronteers.nl/blog/2011/12/klaar-voor-de-mobiele-tsunami" title="Klaar voor de mobiele tsunami">de mobiele tsunami</a> en misschien de <a href="https://www.fronteers.nl/blog/2011/12/webrichtlijnen-2-de-nieuwe-standaard" title="Webrichtlijnen 2: de nieuwe standaard">nieuwe Webrichtlijnen</a> dit de komende jaren duidelijk gaan maken, maar we moeten <a href="http://vimeo.com/27182344" title="Bryan Rieger | Muddling Through the Mobile Web | Mobilism 2011">loslaten en met betere oplossingen komen</a>. Het beheersbaar maken van <a href="https://www.fronteers.nl/blog/2011/12/responsive-images-een-experiment" title="Responsive images; een experiment">verschillende formaten afbeeldingen</a> op dezelfde pagina is een goed voorbeeld dat het WYSIWYG-probleem meteen al op de proef gaat stellen.</p>
   <p>Eén van de grote voordelen van het hebben van aparte stukjes inhoud, is dat je per inhoudstype een specifieke <em>user interface</em> kunt aanbieden. Wat je inlevert aan What You See Is What You Get, krijg je ruimschoots terug bij What You Want Is What You'll Get. Een <a href="http://www.bvalmere.nl/nieuws/2011/12/speelweek-11">lijst met uitslagen</a>? Gewoon een begin- en einddatum vragen. Een <a href="http://www.bvalmere.nl/team-1/2011-2012">speelschema voor een team</a>? Een seizoen, afdeling en team vragen. Een <a href="https://www.fronteers.nl/congres/2011/venue">Google Map</a>? Een adres, zoals je die ook invoert op <a href="http://maps.google.nl/">maps.google.nl</a>. Het beheren van dit soort content kan niet veel makkelijker voor de gebruiker. En het later aankleden van die content ligt helemaal in handen van de front-end developer, die zo door de jaren heen met <a href="https://www.fronteers.nl/blog/2011/12/kijk-mama-zonder-afbeeldingen-grafische-elementen-maken-met-css" title="Kijk mama, zonder afbeeldingen! Grafische elementen maken met CSS">steeds minder markup</a> uit de voeten kan. Voor beide partijen is 'managen' opeens een leuk woord geworden.</p>
   <p class="note">Natuurlijk zijn er ook andere voorbeelden te bedenken, die lastiger zijn. Complexe tabellen onderhouden is nog steeds een ramp, niet alleen in een online editor, maar eigenlijk ook in Excel. Aan de andere kant kun je stellen dat als een tabel te complex is om te onderhouden, deze waarschijnlijk ook te complex is om aan de voorkant te begrijpen. <a href="http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2008-March/014245.html" title="[whatwg] several messages about tables and related subjects">Dezelfde uitleg</a> wordt ook gegeven als de discussie over het via extra markup (<code>headers=&quot;&quot;</code>, <code>scope=&quot;&quot;</code>, <code>summary=&quot;&quot;</code>, etc.) toegankelijk maken van tabellen weer eens oplaait binnen de HTML Working Group. De informatie opsplitsen lijkt dus sowieso geen gek idee, en ik steek mijn tijd liever in het maken van een begrijpelijke front-end, dan in het maken van de perfecte tabel-editor.</p>
   <p>De vertaling naar ons favoriete formaat (HTML, voor de duidelijkheid) is makkelijk; ieder type content krijgt van de server een stukje logica mee wat 'm in een kaal jasje steekt. Alle <em>alinea's</em> krijgen een <code>&lt;p&gt;</code>- en <code>&lt;/p&gt;</code>-paartje. Iedere <em>lijst</em> wordt verpakt in een <code>&lt;ul&gt;</code> en iedere regel van die lijst krijgt een <code>&lt;li&gt;</code>-omhulsel voor z'n kiezen. Een <em>notitie</em> krijgt een <code>&lt;p class=&quot;note&quot;&gt;</code>, een blok code krijgt <code>&lt;pre&gt;&lt;code&gt;…&lt;/code&gt;&lt;/pre&gt;</code>, enz. Grootste voordeel hiervan: dit maakt de belofte <a href="http://www.csszengarden.com/" title="css Zen Garden: The Beauty in CSS Design">die CSS ooit maakte</a> beter mogelijk. Bij een redesign van een site kun je bepaalde inhoud net even wat andere HTML <a href="https://www.fronteers.nl/blog/2011/12/front-end-meta-languages" title="Front-end meta languages">laten genereren</a>. En dat is nodig, want HTML en CSS zijn <em>niet</em> los van elkaar te zien, ondanks dat we onszelf continu voorhouden dat dit wel zo is. &quot;Ja, maar, heiden! Als ik m'n stylesheet weggooi in Firebug, kan ik nog steeds een duidelijke structuur zien. En dat is omdat ik semantische HTML gebruik. You suck.&quot; Nee, dat is omdat je browser dan eindelijk 'ns <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#the-css-user-agent-style-sheet-and-presentational-hints" title="The CSS user agent style sheet and presentational hints">haar eigen schitterende stylesheet</a> mag laten zien.</p>
   <p class="note">Ja, ik heb wel eens van XSLT gehoord. En nee, ik ken het niet goed genoeg om het een fijne techniek te vinden. Van de extra complexiteit die deze laag introduceert, blijf ik zo ver mogelijk vandaan. Vooral omdat ik met XML en XSLT geen enkel probleem oplos, maar alleen maar voor buzzword compliance zou gaan. In de korte tijd die we hebben op deze aardkloot wil ik de dingen zo simpel mogelijk houden. Daarnaast, stel dat we ooit Hixie op <a href="https://www.fronteers.nl/congres" title="Fronteers Conference">ons congres</a> krijgen, dan wil ik hem zonder schaamte aan kunnen kijken.</p>
   <p>Om al die kleine vertaalblokjes overzichtelijk te houden, heb ik ooit gekozen om mijn CMS op één server te laten draaien, met een gedeelde codebase voor al mijn klanten. Aangezien elk van de ongeveer 100 sites die er nu op draaien het concept 'Alinea' implementeert, is het logisch om de drie regels code die een <code>&lt;p&gt;</code> genereert te delen. En vindt een <a href="http://37signals.com/svn/archives/001053.php" title="&quot;Hire&quot; the right clients">bepaalde klant</a> het nodig om <a href="http://enterprise-html.com/" title="Enterprise HTML - Provides proven high performance, enterprise-level and scalable HTML tips and best practices.">zich groter voor te doen</a> dan 'ie is, dan is het mogelijk om specifiek voor diegene een nieuwe vertaling te maken, die voor <code>&lt;div class=&quot;paragraph&quot;&gt;</code> zorgt ;) Zonder flauwekul: ook deze keuze heeft me veel vrolijkheid opgeleverd, naast het feit dat het lekker <a href="https://www.fronteers.nl/blog/2011/12/scalable-vector-graphics-en-responsive-web" title="Scalable Vector Graphics en responsive web">schaalt</a>. Ja, je kunt waarschijnlijk meer geld verdienen door klanten een SLA aan te smeren en de zoveelste security update tegen betaling door hun strot te duwen. Genoeg Joomla-boeren die hier hun brood mee verdienen. Niets mis mee natuurlijk, maar ik doe er niet aan mee. Niet omdat ik denk dat Vespasianus gelijk had toen 'ie tijdens het zeiken een goed idee kreeg, maar omdat ik niet Caligula achterna wil qua krankzinnigheid; ik wil leuk werk doen. Wat dat betreft zijn wij developers wel magiërs; we <em>kunnen</em> ons eigen werk beïnvloeden.</p>
   <p>Los van de kleine blokjes content waar wij tags voor kennen, zijn er ook grotere concepten, zoals pagina's, secties, nieuwsberichten en producten. Deze moeten ook allemaal zonder moeite uitgelegd kunnen worden aan iemand, dus het is het handigst om zo dicht mogelijk bij het tastbare ding te blijven en zoveel mogelijk structuur af te dwingen. Zo hangt een pagina bij mij altijd onder een andere pagina, en komt deze altijd voor of na een andere pagina. Een regel die het makkelijk maakt om menu's te genereren en <a href="http://css-tricks.com/guidelines-for-uri-design/" title="Guidelines for URI Design">URLs netjes leesbaar en gestructureerd</a> te houden. Bij nieuwsberichten is er bijvoorbeeld altijd een auteur en datum, bij producten altijd een naam en prijs. Probeer per concept een stramien te bedenken waarin je net genoeg vrijheid biedt en al het andere dichttimmert. En hou daarbij rekening met het veranderlijke karakter van het web; er gaat <em>sowieso</em> ooit nog wat overhoop gehaald worden. Paginastructuren worden omgegooid, producten krijgen nieuwe eigenschappen, etc. Een CMS dat hier niet <a href="https://www.fronteers.nl/blog/2011/12/learn-you-a-flexbox-for-great-good" title="Learn you a Flexbox for Great Good!">flexibel</a> op kan inspelen, is niet gemaakt voor het Web. Iets wat niet betekent dat een CMS <a href="http://nl.wikipedia.org/wiki/Paretoprincipe" title="Paretoprincipe">alles</a> moet kunnen.</p>
   <p class="note">Een belangrijk deel van veel CMS'en is workflow management en gebruikersrechten. Ik ben zelf van mening dat deze vooral in het leven zijn geroepen om bepaalde mensen zich niet verantwoordelijk te hoeven laten voelen voor het werk dat ze doen, of om een organisatie een gevoel van veiligheid te geven. Ik hoop de komende jaren wat milder te worden, maar voorlopig zit het er niet in. Ook hier geldt voor mij de complexiteit die het oplevert, maar ook het vertrouwen in het goede van de mens. Geef iemand de controle over iets en de kans is vrij groot dat diegene zijn of haar best daar ook voor gaat doen. In de afgelopen maand hebben een paar schrijvers bijvoorbeeld gevraagd of ze toegang mochten krijgen tot het CMS achter deze site, zodat ze zelf nog hun post konden aanpassen, wat perfect werkt.</p>
   <p>Een hoop ontwikkelaars zijn nog steeds <a href="https://www.fronteers.nl/blog/2011/12/welkom-op-het-audiologische-internet" title="Welkom op het Audiologische Internet">gillend</a> op zoek naar het ideale CMS, en een hoop CMS'en proberen alles te doen, tot aan <a href="http://cms.com.au/" title="Coffee Machines Services">koffie</a> zetten toe. <a href="https://www.fronteers.nl/blog/2011/12/closure-tools" title="Closure Tools">Volgens mij</a> bestaat die combinatie niet, en moeten we ons gaan beperken tot plezier hebben in het werk dat we doen. Ik weet dat ik met mijn geknutsel nooit de grote massa ga bereiken (<a href="http://gall.qontent.nl/">een</a> <a href="https://www.fronteers.nl/blog/2011/12/prototype-in-javascript" title="Prototype in JavaScript">prototype</a> daargelaten), maar ik weet ook dat ik het heerlijk vind om te neuzelen in de marge die HTML-indenting heet. De realiteit is toch dat alles wat we online doen over een paar jaar weer compleet vernieuwd wordt.</p>
   <p>Het enige nadeel van werken op het Web? Het kan <em>altijd</em> beter. En dat is ook meteen het voordeel.</p>
   <p>Aan iedereen die deze maand heeft meegelezen: bedankt voor je overlevend overlezend vermogen. Beleef de komende dagen feestelijk en het nieuwe jaar vooral gelukkig!</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2005/05/kleding</id>
  <title xml:lang="nl">Kleding (NL)</title>
  <published>2005-05-29T00:00:00+02:00</published>
  <updated>2005-05-29T00:00:00+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2005/05/kleding"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(4 minuten lezen)</small></footer>
   <p><i>Mijn negende column voor de <a href="https://www.bvalmere.nl/">BVA</a>. Waarschijnlijk de laatste, want de nieuwsbrief gaat stoppen. Dat wil echter niet zeggen dat ik ook stop met schrijven voor deze site.</i></p>
   <p>Zo, dat is alweer een tijd geleden. De afgelopen keer kon ik geen gaatje vinden om een stukje te schrijven. Het leven van een weinig studerende student heeft ook zo z'n drukke periodes.</p>
   <p>Deze keer had het te maken met <a href="http://www.sqr.nl/">een stage</a> (die in Rotterdam, inderdaad, waar ik maar over blijf vertellen en wat ik na elke verliespartij steeds weer als excuus gebruik), mijn <a href="https://qontent.nl/">normale werk</a> (freelance computer nerd, zoals dat in de volksmond heet) en de zojuist geopende <a href="https://tweedetrefpunt.nl/">tweedehands kledingwinkel</a> van mij en mijn moeder (in Almere-Haven). Vooral in die eerste twee ging veel tijd zitten. Gelukkig is die stage bijna voorbij, zodat ik me wat meer op andere dingen kan concentreren. De kledingperikelen van de winkel laat ik lekker over aan mijn moeder. Zij heeft er zoveel meer verstand van. Zo'n 20 jaar geleden heeft ze in Zeeland ook een aantal jaar een tweedehands kledingwinkel gehad. Als ukkie kroop ik daar dan rond te banjeren tussen de kledingconsumerende massa.</p>
   <p>Met de paplepel ingegoten en ondertussen weer volledig verleerd. Ik ben echt slecht in alles wat met kleding te maken heeft. De huidige mode interesseert me dan ook totaal niet. Je broek half afgezakt, je arm slechts door één mouw; ik zie er het nut niet van in. Dit vage gedrag is voor mij niet uit de kast gelegd. Generaliseren natuurlijk wel, maar dit is zo'n beetje het beeld dat ik heb van Almere Centraal.</p>
   <p>Wat betreft de mode in de badmintonhal ben ik vaak ook niet correct bezig. Meestal speel ik in het koele katoenen wit. Tijdens een competitiewedstrijd probeer ik me wel in het BVA-geel te vertonen, maar het gaat nog wel eens verkeerd. Gelukkig komt een hoge pief je — terecht — altijd wel verbaal op je vingers tikken. Om boetes zit immers niemand verlegen. Zelfs een verlegen persoon als ondergetekende niet. Sommige mensen zouden, vanwege een (on)bepaalde manier van communiceren, misschien stoppen met waar zij vrij goed in zijn, maar ik vind het spelletje veel te leuk om dat in dit geval ook te doen. Daarbij ben ik ook niet goed genoeg om gemist te worden. Ik heb wel eens ontslag genomen om (een meningsverschil over) een kledingstuk en het karakter van mijn <a href="http://www.c1000.nl/">toenmalige baas</a>; het deed mij (of hem) de das om.</p>
   <p>Tot zover de onderwerpen waarvan ik me voorgenomen had erover te schrijven; wat relatieve reclame, een veelal vergeten verleden en mijn overbodige opinie over oproerige omstandigheden. Wat luchtiger kan ik het verder nog hebben over nachtkleding en het onvermijdelijke bruggetje naar de Nacht van Almere.</p>
   <p>Een nacht met (z)onder meer geldige gezelligheid, menslievende muziek, gesponsord geel, belemmerende ballonnen, pluralisloze pyjama's, superfoute shortama's, bezette barkrukken, smakelijke saucijzenbroodjes en pretentieloze prijzen. Eigenlijk te veel om, vergezeld door een allitererend adjectief, op te noemen; je had erbij moeten zijn, is wat ik bedoel te vertellen. Grijp volgend jaar dus de kans op de tweede Nacht!</p>
   <p>De kans op het lezen (of schrijven voor mij) van columns in de nieuwsbrief is er volgend jaar waarschijnlijk niet meer bij. Voorzover ik weet gaat de informatiebrief in het nieuwe seizoen niet meer door. Na een jaar zowel op de baan als achter de computer met betrekking tot badminton gezweet te hebben, is mijn glorieuze—kuch—carrière als columnist dan dus voorbij. Of er dit seizoen nog eentje komt, weet ik niet. Als het aan mij ligt wel, maar de toegevoegde waarde van de nieuwsbrief is, puur met oog op nieuws, inderdaad vrij laag.</p>
   <p>In ieder geval bedankt voor het lezen en tot ziens!</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2005/03/kantinedienst</id>
  <title xml:lang="nl">Kantinedienst (NL)</title>
  <published>2005-03-02T00:00:00+01:00</published>
  <updated>2005-03-02T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2005/03/kantinedienst"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(4 minuten lezen)</small></footer>
   <p><i>Mijn achtste column voor de <a href="https://www.bvalmere.nl/">BVA</a>. Nog steeds onder een pseudoniem, maar steeds meer mensen binnen de club hadden ondertussen door dat ik het was.</i></p>
   <p>Dat is het eerste gespreksonderwerp dat mij nu, zittend in een halfvolle trein van hartelijk Rotterdam richting huiselijk Almere, een avondje badminton tegemoet reizend, te binnen schiet. Eigenlijk is bardienst een betere verwoording, maar ik probeer natuurlijk consequent te blijven wat betreft de titels; een detail dat de doorgewinterde lezer, die op dit moment waarschijnlijk ingesneeuwd is, allang opgevallen was.</p>
   <p>Een avondje zelf bardraaien komt eens in de vier weken voor en op dat moment sta ik wat anderen betreft stilletjes achter de bar biertjes te tappen, flesjes te ontdoen van hun dop en zwart en doorzichtig water uit een automaat te persen. Zo makkelijk als ik nu mijn kantje volschrijf, zo moeilijk heb ik het op dat moment met het voeren van een zinnig of zelfs zinloos gesprek met willekeurige barhangers, mensen die ik amper ken. Misschien ligt het wel aan het feit dat ik achter de bar sta en er niet aan zit. Meestal lukt een redevoering aan de andere kant wel redelijk, maar dat kan liggen aan het feit dat je dan je gesprekspartners min of meer zelf uitkiest en alleen gaat zitten bij mensen aan wie je echt iets te vertellen hebt of die je interesseren. Of misschien merk je niet dat een gesprek niet loopt, omdat je wegloopt als het afgelopen is. Tijdens een bardienst doe je dit laatste, als het communicatief even niet lukt, natuurlijk niet.</p>
   <p>Hoe dan ook; ik heb zelf gekozen voor het tappende vrijwilligerswerk en eigenlijk vind ik het wel leuk. Net zoals ik toegezegd heb deze column eens in de maand te schrijven. Iets dat me iedere keer weer van mijn belangrijke studentenwerk houdt, maar dat me tijdens de bezigheid en ook achteraf telkens weer goed stemt. Het is een vreemd iets. Waarom doen mensen soms toch dingen waar ze niet goed in zijn of waar ze geen tijd voor hebben? Is het de drang naar het oneindige leren? Of is dat alleen een raar iets bij mij? Ik zou niet weten wat ik zonder deze houvasten in het leven moet. Het enige zekere is nou eenmaal dat je nooit uitgeleerd bent. En natuurlijk dat niets zeker is.</p>
   <p>Wat ook zeker nooit zeker is, is het tijdstip dat je op een doordeweekse speelavond de kantine verlaat. In de kantineregels van 12 februari staat immers niets over de sluitingstijd. Wel een heel stuk over het verbod op het zelf meenemen van etens- en drinkwaren, wat voor volgend jaar betekent dat er, in ieder geval door mij, geen exotische chips meer genuttigd zullen worden na een competitiewedstrijd en dat de frituurpan dan maar overuren zal moeten maken, maar dat even terzijde. Nee, het tijdstip van de laatste ronde ligt maar net aan de persoon achter de bar en het gezellige inlevingsvermogen van diegene.</p>
   <p>Voorzover ik het kan beoordelen heb ik dat vermogen wel. Ik benut het alleen nooit voluit, wat vaak leidt tot aantijgingen als &quot;goh, wat ben jij ongezellig&quot;. Een antwoord dat daarop meestal in mijn hoofd rondcirkelt, is &quot;goh, wat ben jij onwetend&quot;, maar uit angst voor het vertonen van arrogantie en het ontlokken van onbegrip laat ik die gedachte meestal voor wat het is; een stukje confrontatie waar de wereld niet op voorbereid is. Een brede glimlach en een vol glas schuimend bier doen op zo'n moment beter dienst als wondermiddel. Een middel dat als enig doel heeft de gezelligheid in de kantine te handhaven. En wie ben ik om daar een stokje voor te willen steken?</p>
   <p>Tot aan of achter de bar!</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2005/02/klapband</id>
  <title xml:lang="nl">Klapband (NL)</title>
  <published>2005-02-05T00:00:00+01:00</published>
  <updated>2005-02-05T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2005/02/klapband"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(6 minuten lezen)</small></footer>
   <p>Dat was wat mij donderdag jl. in een grimmig Almeers bos overkwam. Verlaat door een uitgelopen telefoongesprek met mijn vader sprong ik op mijn roestig ros. Met nog 15 minuten op de klok om het traject Almere-Haven - Sporthal de Toekomstgroep af te leggen deed de adrenaline zijn werk en pompte mijn hart alsof het een inscriptie van Grundfos wilde ontvangen. Rond 20:50 uur kwam de satan der fietsenden om de hoek van het onaffe Almeerse kasteel kijken; een lekke band.</p>
   <p>Een klapband welteverstaan. De killing koning onder de lekke banden. In de twee jaar dat ik iedere dag naar mijn middelbare school in Hilversum fietste, heb ik nog nooit zo'n exorbitante vorm van luchtexorcisme meegemaakt. Voordat het ongelukkige tot mijn door de kou op een lager pitje gezette brein doordrong, fietste ik nog een aantal meters door op mijn luchtledige binnenband, die inmiddels zijn functie had doorgegeven aan de minder competente velg. Van een bij Marktplaats op de kop getikte tweedehands fiets voor € 75,-, met twee uitgedoofde redenen voor een forse bekeuring, drie versnellingen, waarvan twee het licht hebben gegeven en de derde toevallig genoeg de derde is, twee door de wind geperforeerde licht- en luchtdoorlatende jasbeschermers en een zadel dat slechts door een plastieken tasje van mijn ex-werkgever op zijn plaats wordt gehouden, zou je toch verwachten dat die er nu helemaal de brui aan geeft. Niets was minder waar. Met gemak, maar ook met veel inspanning, had ik door kunnen fietsen. Uit respect voor het stuk roest ben ik echter afgestapt, mijzelf schikkend in het klemrijdend lot van mijn niet-rijdend krot.</p>
   <p>Ondertussen was er ook weer tijd om zuurstof te vervoeren naar het topje van mijn hoofd en de activiteit daar aan te slingeren. Misschien kan ik terug- of doorlopen tot de eerstvorige of -volgende bushalte. Almere telt immers genoeg hokken, waar mensen samenkomen om collectief te wachten op een vervoermiddel of hun deconstructivisme te uiten en het windwerende glas door middel van een willekeurige stoeptegel een reden tot omsmelting te geven. Hmm, stop maar met dat zijsprongetje. Je portemonnee, met daarin je door het Rijk verschafte OV-jaarkaart ligt toch thuis. Nee, niet thuis; in de auto van je moeder. In je notebooktas in de auto van je moeder, om precies te zijn. Daar had die de hele dag al onaangeroerd gelegen. Mijn idee dat een draagbare computer die dag nuttig kon zijn sloeg ook nergens op.</p>
   <p>We waren namelijk in België geweest, om een winkel, qua inrichting, leeg te halen. Mijn moeder heeft haar ludieke — en in theorie lucratieve — idee doorgezet en ondertussen is er een pand in het hartje van Haven gehuurd. De bestemming; een tweedehands kledingwinkel, gecombineerd met het administratiekantoor dat ze nu al heeft. In de jaren na mijn geboorte heeft ze ook acht jaar zo'n winkel gehad en nu komen de kringloopkriebels weer terug. De opgehaalde winkelinrichting kwam trouwens helemaal bij onze zuiderburen vandaan, omdat mijn oom, haar broer, een ander idee had voor zijn perceel aan die kant van de grens; een kunstgalerij. Interessant reclameachtig geleuter, maar het hield me bezig die dag :).</p>
   <p>Hoe dan ook, ik besloot de moeder in kwestie te bellen en te vragen waar zij was met haar auto en mijn bewijs dat ik gratis met de bus mag rondscheuren. Net thuis, dus ik bedacht dat zij me wel op kon pikken bij SV Almere en me een lift naar de hal, waar échte sport bedreven wordt, kon geven. Na het uiteraard begeerlijke frame met wielen veilig vast te hebben gemaakt aan een nietsvermoedende lantaarnpaal bij de Grienden rende ik naar het grasrijke sportpark in de Marken, waar ik in een auto sprong. Zwetend zat ik me daar 10 minuten voor te bereiden op het verdere gezweet van die avond. Ik pakte mijn knip en rende naar binnen, waar de digitale klok mij liet weten dat ik slechts 15 minuten te laat was. Dan maar wat langer doorgaan.</p>
   <p>Toen het claustrofobische bier rond 23:15 uur verlost werd door het koolzuur moest ik aan enkele barzittenden uitleggen waarom ik te laat was en waarom de onderkant van mijn hoofd leek op dat van een door een grasmaaier geschoren Kabouter Plop. De link naar België — nee, niet vanwege de lelijke mensen — en reclame voor een tweedehands kledingwinkel was dus snel gemaakt.</p>
   <p>Rond middernacht ging het ondertussen bekende geluid van het alarm af. Nog nooit had dit gevolgen gehad. Een halfuur later kregen we van twee carnavallende travestieten achter de bar te horen dat de laatste ronde een feit was. De irrationele reden was dat ze voordat het alarm afging de boel wilden afsluiten. De inleving in een vrouwenrol ging wel erg ver ;).</p>
   <p>Gelukkig rijden de bussen in Almere tot zo'n anderhalf uur na middernacht, dus ik had tijd genoeg om de laatste te pakken, uit te stappen bij de Grienden, mijn barrel op te halen en mijn weg lopend over de busbaan te vervolgen. Een hele busbaan voor mij alleen; heerlijk. Thuisgekomen heb ik mijn rijwiel in de schuur gegooid en een p(l)akkende oplossing uitgesteld tot vandaag, zaterdag.</p>
   <p>Vanochtend heb ik al mijn technisch inzicht uit de kast gehaald en mijn fiets van alle kanten bekeken. Een methode die jammer genoeg nooit echt iets uithaalt. Na het loswrikken van mijn bijna in staat van ontbinding zijnde buitenband kwam ik tot de conclusie dat er een gat van een centimeter in mijn binnenband zat. Een gat waar ik met mijn huidige plaktechnieken niets mee kan. Sowieso was deze binnenband aan vernieuwing toe; hij zat haast half dubbelgevouwen in een te kleine buitenband. Eén brok ellende. Ik bedacht dat ik er gewoon even een nieuw stuk rubber in zou leggen. Na een ringsleutel te hebben gepakt — en daarna een andere, omdat die eerste niet paste — en wat aan de moeren te hebben gedraaid zag ik het licht. Twee uur zitten prutsen zonder enig resultaat is vrij nutteloos, dus laat een professional dit varkentje maar wassen. Maandag wordt mijn invalide velo opgehaald door het Fietsenpaleis en valide teruggebracht :).</p>
   <p>Als die tweedehands kledingwinkel nou ook tweedehands fietsen in het assortiment gaat opnemen ben ik alvast de eerste klant.</p>
   <p>K.</p>
   <p>(Update: Zonet (dinsdag 8 februari) is mijn fiets in relatief perfecte staat teruggebracht door een gezellige fietsenspecialist. Hoera voor de uitvinder van outsourcing, in dit geval.)</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2005/01/kilogrammen</id>
  <title xml:lang="nl">Kilogrammen (NL)</title>
  <published>2005-01-26T00:00:00+01:00</published>
  <updated>2005-01-26T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2005/01/kilogrammen"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(4 minuten lezen)</small></footer>
   <p><i>De zevende column voor de nieuwsbrief van mijn <a href="https://www.bvalmere.nl/">badmintonvereniging</a>, die ik anoniem schreef.</i></p>
   <p>Lekker als een onderwerp zich precies op het goede moment aandient. Zoals natuurlijk altijd iedereen uiterst gezellig doet na de training bleven wij ook gisteren weer even zitten om onder het genot van een koud biertje de afgelopen dagen te bespreken. Opeens echter voelde ik me niet meer thuis in het voor de rest levendige gesprek; twee mannen hadden het over afvallen. En wel in die context dat ze er zelf relatief actief mee bezig waren.</p>
   <p>Ik dacht altijd dat dat alleen iets was voor vrouwen. Iets waarbij mannen rationeel de erin te stoppen energie afwegen tegenover de uiteindelijke effecten die het zou opleveren en dan tot de logische conclusie komen dat het werkelijk nergens over gaat. Niet dus; bedankt voor het radicaal omverwerpen van mijn beeld van mijn wenselijke werkelijkheid. Blijkbaar vinden mannen bewondering inderdaad een belangrijke vorm van liefde. Eentje die het op het gebied van een aantal kilo's wint van factoren als acceptatie en waardering, dat wij toch eigenlijk ook hoog in ons vaandel hebben staan. Of zal het verliezen van overtollig vet iets zijn wat je voor jezelf doet? Iets om je zelfverzekerdheid mee op te krikken. Iets wat je indirect dus niet voor jezelf doet, maar voor de doelgroep, die dit onderwerp ook veelvuldig in praktijk brengt.</p>
   <p>In het rijtje van de dermate deugddoende dingen des dames vinden we echter geen reden die hen motiveert een afneming in gewicht, terwijl ze op een weegschaal staan, te overwegen. Zorgzaamheid, begrip, respect, toewijding, bevestiging en geruststelling; de 6 gedaantes van mogelijke multifunctionele mannelijke minne waarop een vrouw zit te wachten — als je de boeken, waarvan ik nog wel meer kilo's wil lezen, moet geloven. Het zal ook wel weer met het moeilijk meetbare aspect eigenwaarde te maken hebben, maar gezichtsverlies op dit vlak heeft volgens mij echt niets te maken met negatief gewichtsverlies. Op het moment dat een weegschaal je moet vertellen dat je te zwaar bent, zit er ergens een denkfout. Zonder deze materiële uitvinding als rotsvast bewijs van de creativiteit van de praktische mens was je variabele gewicht dus wel acceptabel geweest? Zoals <a href="https://en.wikipedia.org/wiki/Baz_Luhrmann">Baz Luhrmann</a> zei, <q>you're not as fat as you imagine</q> en <q>do not read beauty magazines, they will only make you feel ugly</q>. Wijze lessen, die ik graag ook zou willen verkondigen. En niets weerhoudt mij ervan dat te doen, dus bij dezen.</p>
   <p>Natuurlijk heb ik het hierboven niet over de extreme gevallen. Als je zonder takelwagen 's ochtends niet heelhuids je bed uit kunt komen is het een ander verhaal. Echter, dan is het niet de schaal, die je vertelt dat er in de weg hangende massa geofferd moet worden, maar de mening van de menselijke massa. Tegen besluiten tot collectieve vermagering van <a href="https://nl.wikipedia.org/wiki/De_Tokkies">De Tokkies</a>, en ma in het bijzonder, heb ik bijvoorbeeld geen enkel bezwaar. Het lijkt mij niet verkeerd als die eens wat beweging ondergaan. En dan bedoel ik niet in een busje smartlappen 'zingen', een optreden geven, je knie bezeren — waardoor deze nog dikker uit de verf komt — of de mensen thuis op een andere willekeurige wijze laten lijden. Nee; ga eens sporten, ga badmintonnen. Maar blijf dan alsjeblieft wel weg van onze vereniging. Het is hier al gezellig genoeg!</p>
   <p>Over lijden gesproken; vorige week heb ik toevallig een workshop inleiding in het boeddhisme bezocht. De eerste edele waarheid volgens die leer luidt als volgt.</p>
   <blockquote>
    <p>Leven is lijden.</p>
   </blockquote>
   <p>Lekker ongenuanceerd, en bij de uitleg is het al niet anders.</p>
   <blockquote>
    <p>Geboorte is lijden, ouderdom is lijden, ziekte is lijden, dood is lijden, verdriet en weeklagen, pijn, smart en wanhoop zijn lijden; omgaan met diegene en datgene waarvan je een afschuw hebt is lijden, gescheiden worden van het geliefde is lijden, niet krijgen wat men wil hebben, is lijden — kortom, de vijf groepen (die object zijn) van hechten, zijn lijden.</p>
   </blockquote>
   <p>Vanavond is het tweede deel van de workshop. Misschien gaan ze het dan hebben over lijnen, zodat ik iets meer duidelijkheid heb en volgende keer kan terugkomen op wat ik eerder zei. Tot die tijd blijft mijn mening niet gewichtig.</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2005/01/krachten-der-natuur</id>
  <title xml:lang="nl">Krachten der natuur (NL)</title>
  <published>2005-01-16T00:00:00+01:00</published>
  <updated>2005-01-16T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2005/01/krachten-der-natuur"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(3 minuten lezen)</small></footer>
   <p><i>Voorheen stond dit stuk op kronkels.net (inmiddels offline), waar ik anoniem schreef.</i></p>
   <p>Vrijdagavond was <a href="http://www.imdb.com/title/tt0141098/">deze film</a> op tv. Even lekker onderuitzakken en maar eens beoordelen of we hier te maken hebben met pulp. Niet dat de uitkomst van die beschouwing ook maar enigszins boeit. Het gaat om het bewegende beeld en de positie die je op de bank hebt ingenomen. Dat eerste was er genoeg en dat tweede bracht genoegdoening. De meest onwaarschijnlijke rampen kwamen voorbij. Sowieso natuurlijk natuurlijke, maar ook culturele, zoals een vliegtuigongeluk en zelfs het huwelijk.</p>
   <blockquote>
    <p>One should always be in love. This is the reason one should never marry.</p>
   </blockquote>
   <p>Fijne gast, die <a href="https://en.wikipedia.org/wiki/Oscar_Wilde">Oscar Wilde</a>. En met een boeiend leven ook. In juni 1999 heb ik voor <a href="https://www.comenius-hilversum.nl/">school</a> eens een stukje over hem moeten schrijven. Natuurlijk vond ik alle verplichtingen m.b.t. mijn toenmalige opleiding compleet nutteloos, dus de meeste zaken heb ik rechtstreeks van internet gehaald. Net heb ik voor de grap het toen ingeleverde verslagje (van 504 woorden) weer eens doorgelezen. Hier had ik voor de verandering écht mijn best op gedaan! Niet gek dat Walther Könings ons in de vierde terug wilde hebben. Een jaar waarin het een stuk slechter ging met mijn inzet. Volgens mij heb ik geen enkel boek gelezen. Ik was meer bezig met het doornemen van recensies van boekverslagen, beide door anderen verschaft… Overigens, Walther, als je dit ooit leest; mijn welgemeende excuses! Ik heb nog steeds diep respect voor de tolerantie die je door mij verder hebt moeten ontwikkelen.</p>
   <blockquote>
    <p>Education is an admirable thing, but it is well to remember from time to time that nothing that is worth knowing can be taught.</p>
   </blockquote>
   <p>Waar een quote al niet toe kan leiden. Die eerste heeft het in ieder geval tot diep in het script van Forces of nature gered. Op zich heeft Wilde wel meer dingen gezegd. Bovenstaand citaat slaat wat mij betreft wel ergens (een spijker op de k)op. Heeft ook te maken met hoe ik — inderdaad, alweer — mijn opleiding(en) ervaar. Hieronder nog een paar woorden, die je aan het denken kunnen zetten.</p>
   <blockquote>
    <p>Women are meant to be loved, not to be understood.</p>
   </blockquote>
   <p>Vandaar dat 'ie heaumeaux is geworden? Ignorance is bliss, right?</p>
   <blockquote>
    <p>Men marry because they are tired; women because they are curious. Both are disappointed.</p>
   </blockquote>
   <p>Beetje tegenstrijdig met het vorige, aangezien hij vrouwen niet begrijpt. Jammer voor hem dat hij <a href="https://en.wikipedia.org/wiki/John_Gray_(American_author">John Gray</a>) en diens boeken — die ik overigens wél echt lees — niet mee heeft mogen maken. Had dan ook minder wild gedaan en geen hersenvliesontsteking gekregen!</p>
   <blockquote>
    <p>Marriage is the triumph of imagination over intelligence.</p>
   </blockquote>
   <p>En nog eentje van <a href="https://en.wikipedia.org/wiki/Voltaire">Voltaire</a>, om maar weer terug te komen op de krachten der natuur:</p>
   <blockquote>
    <p>Love is a canvas furnished by nature and embroidered by imagination.</p>
   </blockquote>
   <p>Als je dit alles combineert, krijg je ongeveer het volgende; liefde wordt ingevuld door je aard en verrijkt door je verbeelding. En verliefdheid moet je continu voelen, dus trouwen is niet zo handig. Maar als je trouwt, betekent dat dat je fantasie het gewonnen heeft van de ratio, omdat je vermoeid bent door het vele denken.</p>
   <p>Pff, wat een gedoe allemaal. Gelukkig ben ik nog niet klaar met of moe door denken en ben ik nog niet toe aan een huwelijk. De rest laat ik natuurlijk over aan de niet te bestrijden krachten van <del>de</del> mijn natuur.</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2005/01/koffie</id>
  <title xml:lang="nl">Koffie (NL)</title>
  <published>2005-01-13T00:00:00+01:00</published>
  <updated>2005-01-13T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2005/01/koffie"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(3 minuten lezen)</small></footer>
   <p><i>Het is nu ongeveer 4 uur in de ochtend ;)</i></p>
   <p>Note to self: overdag minder vaak je kopje volgooien met dat zwarte spul. Je blijft er te lang te actief van. Nee, uitte het zich eigenlijk maar in actief zijn. Verschrikkelijk loom en ontiegelijk sloom; dat is een betere samenvatting van mijn huidige gemoedstoestand. En dat terwijl ik toch wel nuttige dingen heb gedaan vandaag. Vanochtend bijvoorbeeld lekker uitgeslapen. Toch geen reet te doen. Hooguit voor school, maar daar zijn ze toch niet zo snel. Niet alleen van begrip, maar ook qua begrip tonen. Werkelijk te idioot voor woorden wat daar allemaal gebeurt. Zo gek, dat ik er vast nog wel eens wat over ga zeggen binnenkort. Niet nu. Nu ben ik te moe en eigenlijk te futloos.</p>
   <p>Moe van bijvoorbeeld gisteravond; hangen aan een bar is ook slopend voor je geest. Dodend gelukkig niet, dat zou er nog maar bij moeten komen. Uitputtend, afbrekend, desastreus. Allemaal termen die de lading net of compleet niet dekken. Prettig, gezellig, opbouwend. Die brengen wel voldoening. Op zich net zo makkelijk weer af te zwakken door nutteloosheid, sleurwerk en inertie ten geschrijve te brengen, maar dat zou weer zo depressief overkomen. Alleen de gedachte maakt je al moe.</p>
   <p>Futloos door bijvoorbeeld een hele avond besteden aan het doorspitten van de ranzige, onpraktische, verouderde broncode van een website, die je ook nog eens zelf gemaakt hebt. Lusteloos gekronkeld door je eigen stommiteit. Waarom probeer je jezelf dan ook te verbeteren? Waarom schrijf je 2 jaar na dato andere dingen dan toen? Waarom ben je niet gewoon blijven steken en waarom moet je jezelf continu bewijzen? En voor wie? Nut en fut zitten jammer genoeg dicht bij elkaar.</p>
   <p>Grappig trouwens dat je allerlei emoties kunt bedenken, faken en combineren als je koffie op hebt. En ook leuk dat je slobber kunt misbruiken, wanneer je daar maar zin in hebt.</p>
   <p>Er was trouwens ook gezellige broncode vandaag. Het blijft een koele site. Natuurlijk vooral door de inhoud, want de techniek is ondertussen alweer achterhaald. Spreek ik mezelf nou tegen? Jazeker. Maar eigenlijk ook weer niet, want gezellig kan best oké zijn. Hmm, nou spring ik weer naar die bar van gisteravond, terwijl ik mezelf juist voorgenomen had dat onderwerp lekker te laten rusten. Laat ik dus maar weer terugspringen naar die jongen met z'n Aziëreis. Nog een laatste keer reclame maken en dan gaan we weer verder. Hoewel, als ik ooit zin heb weer eens te beginnen over deze site, doe ik dat lekker. Misschien dat ik over 2 jaar wel net zo klaag over mijn werkwijze van nu, toen in dat geval, als over mijn werkwijze van toen, nu net in bovenstaand geval. De tijd zal het leren. En ik hoop daarvan lekker een graantje mee te pikken. Stilstand is immers achteruitgang.</p>
   <p>En stilstaan doe ik wel op school; daar hoef ik niet voor thuis te blijven. De koffie is hier echter lekkerder.</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2005/01/kronkels</id>
  <title xml:lang="nl">Kronkels? (NL)</title>
  <published>2005-01-10T00:00:00+01:00</published>
  <updated>2005-01-10T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2005/01/kronkels"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(3 minuten lezen)</small></footer>
   <p><i>Voorheen stond dit stuk op kronkels.net (inmiddels offline), waar ik anoniem schreef. Anderen konden hier ook een account aanmaken om zelf te schrijven. 21 jaar later, in 2026, heb ik mijn eigen oude stukjes overgezet naar deze site.</i></p>
   <p>Welkom op mijn log, kronkels.net. Na een zestal columns te hebben geschreven, kwam ik erachter dat schrijven toch wel een prettige bezigheidstherapie is. Vandaar dus dat ik vanaf vandaag het web ga bestoken met mijn gedachtes, mijn kronkels.</p>
   <p>Aangezien ik niet de enige ben die van zijn hart geen kuil met nietszeggende lijken probeert te maken, heb ik een mede-kronkelaar gevonden; Joost. Net een zware reis achter de rug en nu alweer vol ideeën. Of zijn zijn kronkels juist gevormd door die reis en alles wat hij daarbij meegemaakt heeft?</p>
   <blockquote>
    <p>Ik vind het ineens lekker om alleen te zijn. Om niets te doen. Om het eens NIET gek te vinden dat ik nergens zin in heb. Om me te realiseren dat anderen zich maar eens moeten realiseren dat mijn gevoelens, MIJN gevoelens zijn</p>
   </blockquote>
   <p>Deze site zat er al aan te komen, maar de extra stimulans was wel nuttig. Als er nog meer gegadigden zijn; schroom niet om ook een accountje aan te vragen. Enige vereiste is dat kronkels een groot onderdeel van uw bestaan uitmaken. Ow, en dat u geen prutser bent, want in dat geval is het, op semantisch gebied, invalide web-log.nl een beter alternatief.</p>
   <p>In de komende periode zullen er nog een aantal nuttige onderdelen toegevoegd worden. De ontwikkelaar in mij wil natuurlijk ook iets te doen hebben. Verschillende categorieën, een optie tot zoeken, links naar andere kronkel(aar)s, feeds, et cetera. Sowieso blijven mijn columns voor de — door werkelijk enorm veel mensen <strong>kuch</strong> gelezen — nieuwsbrief van mijn sportvereniging ook hier verschijnen. U kunt dus gewoon lekker blijven zitten en uw brein op non-actief zetten. Hoewel, doe eigenlijk maar niet.</p>
   <p>Tot zover het oninteressante geblaat. Waar gaat dit nou écht over? Er zijn al genoeg plekken op internet (weblogs in de volksmond) waar gelezen kan worden over de frustraties van de gemiddelde mens. Daarop zal deze site geen uitzondering vormen, maar dat zal mij ook eigenlijk een bal jeuken. Ik ga hier lekker uitweiden over mijn boeiende leven, zelfs als dat even, of misschien wel continu, niet boeiend is, de mensen die ik tegenkom, de frustraties die ik niet kan ontlopen, de verhalen die je niemand vertelt, de dingen die ik meemaak en de interesses waar ik voor gekozen heb, op welk gebied dan ook.</p>
   <p>Ik, ik, ik, en nog eens ik; die boodschap lijkt mij zo ondertussen wel duidelijk. Als het u niet bevalt, stel ik voor dat u fijn buiten gaat spelen.</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2004/12/kerstgedachten</id>
  <title xml:lang="nl">Kerstgedachten (NL)</title>
  <published>2004-12-23T00:00:00+01:00</published>
  <updated>2004-12-23T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2004/12/kerstgedachten"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(4 minuten lezen)</small></footer>
   <p><i>Ik schreef (anoniem) columns voor mijn badmintonclub. Deze ging over het rondsturen van kerstkaarten. Ook mijn sportvereniging maakt zich daar schuldig aan. Een vreemd kaartje weliswaar.</i></p>
   <p>Schrijven over kerst rond deze tijd van het jaar is natuurlijk volkomen onlogisch en waarschijnlijk had dan ook niemand dit verwacht. Heel goed, want verwachtingen, zowel negatieve als positieve, zijn de moeder der alle kwaad. Ga het maar eens na. Tegenwoordig wordt er bijvoorbeeld van je verwacht dat je een kerstkaart stuurt naar al je <a href="/log/2004/11/kennis" interestfor="preview">kennissen</a>. Zelfs die paar die je nooit ziet en alleen tegenkomt in een stoffig adresboekje, dat je compleet doorworstelt om, ironisch genoeg, maar niemand te vergeten, want dat kun je natuurlijk niet maken. Althans, dat is de gang van zaken in huize K. Eentje waaraan ik niet deelneem.</p>
   <p>Asociaal, egoïstisch en saai; een mooie samenvatting van mijn persoontje in onder andere bovenstaand geval. Hoewel, een licht gevoel van schuld komt hier toch door de wolken schijnen. Als iemand vol enthousiasme vertelt dat er een ter gelegenheid van Kerstmis verstuurde wenskaart jouw kant op komt of is gekomen, valt het gesprek vaak even stil. Inderdaad, een tijdje blijf ik zweven op een keerpunt, dat men in een leven wel vaker tegenkomt. Een — in mijn geval schijnvrome — overpeinzing, gekenmerkt door een sfeer van vrede en welwillendheid; de kerstgedachte. Nu is de mogelijkheid gekomen iets te veranderen aan je algehele doen en laten. Al is het maar iets simpels als een ander mens blij maken met een stukje wenskarton. Want zo is het nou eenmaal. Iedereen raakt verheugd als er een kaart op de deurmat valt, waarbij ik er voor het gemak lustig op los generaliseer (zat ik deze column, ten behoeve van de woordspeling, nou maar kalm op een archaïstisch rijpaard voort te brengen). Zelfs het eerste t…euh…Dekker Almere stuurt een foto van zichzelf naar ons toe. Een betere kerstwens kun je je niet wensen. En dan heb ik het natuurlijk niet over de kwaliteit van de foto, de vertoonde sluikreclame of het feit dat ik met 62,5% van ons aller eerste nog nooit een woord gewisseld heb. Nee, het gaat om het idee; de gedachte.</p>
   <p>Ziedaar de spreekwoordelijke aap uit de mouw. Bij mij gaat het ook om het denkbeeld. Het grootste probleem is echter dat die over het algemeen lekker warm in mijn hoofd blijft hangen. Daar is het immers een gedachte voor. Die aap komt alleen naar buiten tijdens het schrijven, wat je natuurlijk ook naar hartelust op de achterkant van de voorkant van een kerstkaart kunt doen, maar soit.</p>
   <p>Min of meer al dit, en meer, schiet in een paar milliseconden door je hoofd. Wat zou je graag net zo'n enthousiasteling zijn als de persoon tegenover je of je in ieder geval vereenzelvigen met diegene. En toch blijf je, bedoeld of onbedoeld, vastzitten in je <a href="/log/2004/10/karakter" interestfor="preview">karakter</a>, je principes, je idealen, je tekortkomingen, et cetera. Wat ben ik toch blij dat het nu de tijd van wederzijds begrip is. Hele stukken zouden er anders een heel stuk anders uit zien. Dus, bedankt voor jullie begrip! Voor, of beter gezegd van, mij dit jaar en waarschijnlijk vele volgende jaren geen gezellig kaartje met een voorgedrukte wens, die er alleen maar staat, omdat een marktonderzoek ooit uitgewezen heeft dat de vraag naar dat geschreven gegeven het hoogst is; &quot;Prettige kerstdagen en een gelukkig nieuwjaar&quot;. Ik wens het u toe. Tot 2 januari, op de nieuwjaarsreceptie, waar ik u allen verwa…hoop te zien, om het gelukkige nieuwe jaar zonder tussenkomst van papier of monitor in te luiden.</p>
   <p>En nu gooi ik het toetsenbord er bij neer, want ik moet voor iemand nog wat kaarten op de bus doen…<strong>zucht</strong>…vrouwen!</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2004/11/kennis</id>
  <title xml:lang="nl">Kennis (NL)</title>
  <published>2004-11-24T00:00:00+01:00</published>
  <updated>2004-11-24T00:00:00+01:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2004/11/kennis"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(4 minuten lezen)</small></footer>
   <p><i>Ik schreef deze columns toen voor <a href="https://www.bvalmere.nl/">mijn badmintonclub</a>, anoniem. Op school net bezig geweest over analytisch denken en als 'kritiek' op mijn vorige column(s) te horen gekregen dat deze te moeilijk was/waren.</i></p>
   <p>Ben ik het voor u? Een bekende, iemand waarmee u regelmatig omgaat? De meeste badmintonners, die ik ken, weten ook wie deze column schrijft. Hopelijk is deze groep echter niet de enige die dit stukje leest, maar dat zullen we nooit weten. Misschien moet ik me eens wat meer verdiepen in de uitgebreide statistieken. Hoewel, &quot;statistieken zijn als bikini's; wat ze tonen is suggestief, wat ze niet tonen is essentieel&quot;. Hoe dan ook, het relevante feit in dit geheel is dat mensen die je kennen anders communiceren dan diegenen die dat niet doen. Een reden temeer om anoniem te schrijven. Het blijven is een utopie. Ik heb het al vaker als verweermiddel gebruikt, maar bij deze nog een keer. Ik hoef niet per se leuke reacties, puur ter streling van het ego — in dit geval dat van mij. Een geforceerde mening vereist te veel inspanning om inhoud te hebben. Waar je iets mee kunt, is opbouwende kritiek, waarbij niet wordt gekeken naar de schrijver en naar de eventueel aanwezige persoonlijke verhouding, maar naar wat er geschreven staat. Daarom; geef een teken van leven, geef kritiek. Een goed voorbeeld hiervan is <a href="/log/2004/09/kreeftdicht#comment-1" interestfor="preview">Cock</a>, die op een wijze subtiele wijze aangaf dat een lezer zonder woordenboek deze column niet overleeft. Ik neem aan dat hij daarmee doelt op kennis?</p>
   <p>In bovenstaand voorbeeld gaat het om kinderen, die dit alles volgens mij überhaupt niet eens lezen. Niet omdat hun kennis niet toereikend is, maar omdat de interesse ergens anders ligt. Kennis (en inzicht) en interesse moeten eigenlijk ook niet door elkaar gehaald worden. Het laatste is namelijk het enige belangrijke onderdeel. De overige zaken kunnen daarmee gecompenseerd worden. Een paar vreemde woorden dat slechts een elitair gezelschap kent, veranderen mijns inziens niets aan de toegankelijke begrijpbaarheid voor de egalitaire groep. Ergo…euh…dus ik ga lekker door met waar ik mee bezig was; de bodemloze term kennis tot op de bodem uitzoeken. Dit alles vanzelfsprekend binnen de gelukkig beperkte grenzen van deze <a href="/log/2004/05/kolom" interestfor="preview">column</a>. Gaat u in de tussentijd op zoek naar het inmiddels bekende korreltje zout?</p>
   <p>Kennisleer, of epistemologie, komt met vragen als 'wat is waarheid?' en 'wat is het verschil tussen weten en geloven?' en heeft daarom betrekking op de filosofie, en misschien zelfs de psychologie. Nog zo'n toegankelijk onderwerp waar ieder mens zich van tijd tot tijd mee bezighoudt. Filosoferen over kennis is makkelijk; je kan het doen zonder kennis. Het is immers vrijblijvend en niemand zal tijdens het proces raar opkijken van een andere mening of uitspraak. Hmm, niemand… Mij zul je toch echt niet meer wijsgerig tekeer zien of horen gaan, fietsend in de Linnaeusstraat in onze hoofdstad. Plato had het wat dat betreft makkelijk. Die kon vroeger zonder enige godsdienst tegen de schenen te trappen lekker uitweiden over grotten, vuur, schimmen en de werkelijkheid. Nostalgie gaat wat ver, maar het komt in de buurt. Niet dat een mening tegenwoordig onder stoelen of banken geschoven hoeft te worden, want boven een barkruk in de kantine zit meestal wel iemand met een luisterend oor. En als die iemand dan ook nog een echt goede kennis blijkt te zijn, zal die je niet alleen aanhoren, maar ook kritiekpunten aanboren. Of is deze kennis dan geëvolueerd tot vriend, kompaan?</p>
   <p>Ach, wat maakt het stempel ook eigenlijk uit. Om een bekend citaat van Plato te gebruiken en aan te passen — en zodoende waarschijnlijk te verminken, mea culpa: wie veel wil weten moet niet zijn kennis vergroten, maar zijn kennissenkring verkleinen. Aan de ene kant ben ik blij dat ik niet alles weet, maar aan de andere kant is het net zo fijn om niet iedereen kennis te hoeven noemen.</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2004/10/karakter</id>
  <title xml:lang="nl">Karakter (NL)</title>
  <published>2004-10-27T00:00:00+02:00</published>
  <updated>2004-10-27T00:00:00+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2004/10/karakter"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(3 minuten lezen)</small></footer>
   <p><i>Ik schreef deze column voor <a href="https://www.bvalmere.nl/">mijn badmintonvereniging</a>, anoniem.</i></p>
   <p>Alweer zo'n heerlijke ondefinieerbare term. Als gewenning aan deze column u niet overgeslagen heeft, zou u denken dat ik het erom doe. Dat voorlaatste activum mag, maar bedaar daarmee niet uw waarschijnlijk verstrekkende gedachtegang en stel uzelf de vraag wat u onder karakter verstaat. Ziet u deze tekst als één aaneenschakeling van symbolen met een kenmerkende aard waardoor die zich onderscheidt? Misschien is karakterologie dan wel wat voor u en heeft u wellicht uw roeping misgelopen. Of denkt u bij dat woord aan Ferdinand Bordewijk, boekverslagen op een middelbare school of een film uit 1997? Over het laatste kan ik niet meepraten, maar over het eerste eigenlijk evenmin. Voor school verplicht literatuur gadeslaan, zonder enig hoger doel, past gewoonweg niet bij mijn karakter. En hier snapte u zonder uitleg of vragen over welke betekenis ik het had. Een interessant fenomeen, dat wel een uitweiding kan gebruiken.</p>
   <p>Hoe kan een karakter tegelijkertijd ondefinieerbaar zijn en als kapstok dienen voor in principe nodeloos onderbouwbare persoonlijke eigenschappen. Als je iets ophangt, weet je toch wát je ophangt? Ook de uitspraak &quot;die [iemand] toont [tenminste] karakter&quot; wordt vaak de buitenlucht in geslingerd. Blijkbaar kan de gebruiker van die al dan niet niet-negatieve aantijging menselijke karakters waarnemen, vergelijken, beoordelen en zonder problemen publiekelijk bekend maken. Veelal gaat het echter niet om een summa cum laude afgestudeerde psycholoog, dus in hoeverre is het gegrond wat diegene zojuist aan ons meedeelde? Niemand weet het en nog minder mensen denken erover na. Vraag daarom de volgende keer dat u iemand zo interessant hoort doen voor de grappigheid eens naar een uitleg of achterliggende gedachte. Zeer waarschijnlijk levert dat een boeiend en leerzaam gesprek op voor, zeer onwaarschijnlijk, beide partijen.</p>
   <p>Hoe zit het overigens met relaties en de daarin vaak voorkomende botsende karakters? Als minstens twee auto's gezellig met elkaar een carambole maken, zijn die meestal stuk, total loss of een variabele combinatie van die twee. Ik kan me zo voorstellen dat de aard van een persoon ook verminkt wordt, als die een stoot krijgt. Maar wie is de automonteur voor het menselijke apparaat en behoeven gebotste karakters überhaupt wel reparatie?</p>
   <p>Misschien is alles wat ze nodig hebben gewoon een ontspannend potje inspannend badminton. De waarschijnlijkheid is laag, maar een terugkerend sprongetje naar onze sport is letterlijk nooit weg. Badminton vereist overigens ook een bepaald karakter. Onze trainer verwoordt en verbeeldt (in deze context de niet wederkerende vorm) doorgaans wel meer, maar iets waar hij op blijft hameren is de manier waarop je speelt. Doe dit zakelijk, effectief, efficiënt, opportunistisch, met een plan. Hoe het ook wordt genoemd; het heeft alles te maken met je zakelijke karakter, je effectieve methode, je efficiënte handelen, je opportunistische instelling en de reden achter je plan. Kortom, met wie je bent. &quot;Als je [vul hier de overtreffende trap van één van de termen in] speelt, kun je met gemak [vul hier een getal tussen 1 en 4 in] klassen hoger spelen.&quot; Het klinkt mij bekend in de oren. Is het bij de andere partij tussen de oren echter wel bekend dat het aanpassen van je eigen karakter niet met gemak gaat? Misschien is het zelfs niet eens mogelijk. Of verschuil ik me dan te makkelijk? Ja, ik wíl het gewoon niet veranderen. Laat mij lekker onzakelijk spelen in een klasse die past bij mijn karakter, met een tweetal trainingsavonden waarbij ik voldoening heb, met mensen die ik mag. Een pure vorm van egoïsme, zonder verontschuldiging. En sorry, maar zo zit mijn karakter nou eenmaal in elkaar.</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2004/09/kreeftdicht</id>
  <title xml:lang="nl">Kreeftdicht (NL)</title>
  <published>2004-09-29T00:00:00+02:00</published>
  <updated>2004-09-29T00:00:00+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2004/09/kreeftdicht"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(4 minuten lezen)</small></footer>
   <p><i>Weer een column voor <a href="https://www.bvalmere.nl/">mijn sportvereniging</a>. Vandaar ook de bruggetjes naar badminton. Ik schreef deze columns anoniem.</i></p>
   <p>Een teleurstelling vooraf; deze column is niet als retrograde geschreven. Naar mijn idee is het sowieso vrij onmogelijk om op die manier een column, die door iedereen wordt begrepen, te produceren. En dat is natuurlijk wel wat we willen. Op een gekunsteld verhaal, bestaande uit zinnen als &quot;iets aparte tetra-pastei&quot; of &quot;mooie zeeman nam Anna mee, zei oom&quot;, zit waarschijnlijk niemand te wachten. Het schrijven van veelvuldige παλινδρομος (palin dromos; terug lopen) blijft voor mij een droomoord en laat ik dan ook graag over aan Battus.</p>
   <p>Over de klassieke (Griekse) Oudheid gesproken; het sterrenbeeld kreeft komt volgens een bepaalde theorie ook hiervandaan. Om een lange mythe kort te maken; toen Herakles (of Hercules voor de latinisten) in zijn jonge jaren bezig was met het doden van een negenkoppige Hydra, kwam een krab diezelfde koppigaard een handje helpen. Herakles was natuurlijk een heuse mythische held, dus beide andere creaturen legden het loodje. Hierover alleen al kun je uren uitweiden, maar het volstaat te vertellen dat uiteindelijk de krab door Hera (of Iuno) aan de hemel geplaatst werd. Vroeger werden dit soort verhalen wel vaker verteld, ter verkläring ende vermaeck. Net als de columns van nu; die bestaan vaak ook uit bullshit, en tóch worden ze gelezen. Ik ben er blij om, want deze interessante menselijke eigenschap maakt het schrijven (van) een stuk makkelijker.</p>
   <p>Terug naar de krab (cancer in het Latijn) uit het verhaal. Die heeft blijkbaar ook het grootste werk van Ovidius gelezen en zich in het Nederlands tot kreeft gemetamorfoseerd. Misschien is dit wel de reden dat mensen met dit sterrenbeeld zo ingewikkeld in elkaar zitten. Ook ikzelf maak me schuldig aan laatstgenoemde. Op alle gebieden in mijn leven komt de kreeftheid terug.</p>
   <p>Zo ook tijdens het badmintonnen. De intermenselijke krachtstrijd tijdens bijvoorbeeld een single is niet alleen een fysieke, maar zeker ook een mentale. De controle over dat laatste is vooral belangrijk als je met plezier wilt spelen. Op de baan op een discursieve manier aanvoelen wanneer je kunt discussiëren over het discutabele feit dat een discus..euh..shuttle in of uit is, zonder daarbij jezelf en je tegenstander in diskrediet te brengen, zou daarom eigenlijk een vast onderdeel van het kleurenschema moeten zijn. Vanzelfsprekend niet geheel met die terminologie, want zelfs ik snap voorgaande zin al niet meer. Wat ik bedoel te zeggen, is dat gezelligheid tijdens het spel als eerste op mijn badmintonwensenlijst voorkomt. Niet alleen het spelletje zelf, maar ook het nazitten met anderen wordt drastisch door dit gegeven beïnvloed. Voor mij zowel een prettig middel als doel.</p>
   <p>Wordt bovenstaande denkwijze gevormd door een bepaalde stand waarin sterren stonden tijdens mijn geboorte? Of had Jean-Paul Sartre gelijk met &quot;zijn&quot; existentialisme? Cogito ergo sum draaide hij gewoon om; ik ben, dus ik denk, doe en schrijf maar wat. De buitenwereld heeft hier totaal geen invloed op en de mens is niets anders dan wat het van zichzelf maakt. Interessante redenering, maar in de praktijk zal het maar weinig voorkomen. Sociale vaardigheden zijn wel degelijk de pap waar andere mensen een vinger in hebben. Dat maakt het nou eenmaal tot een sociaal iets. Die van mij zijn bijvoorbeeld nog niet geheel ontwikkeld. Zo heb ik nogal eens de behoefte mij niet op mijn gemak te voelen bij mensen die zich niet bij mij op hun gemak voelen. Een circulus vitiosus, ik hoor het u denken. En inderdaad; dat is het. Gelukkig kan deze cirkel, net als alle andere anacyclische-, anastrofe-, bifrontale-, diabolische-, janus-, karkinische-, keer-, kreeft-, recurrente-, retrograde-, sotadische- of symmetrische woorden worden gelezen als een simpele palindroom.</p>
   <p>Net als deze tekst, die achteraf toch wel als een kreeftdicht geschreven is; lees hem van achter naar voor en het slaat nog steeds nergens op.</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2004/06/kaaskoppen-in-europa</id>
  <title xml:lang="nl">Kaaskoppen in Europa (NL)</title>
  <published>2004-06-23T00:00:00+02:00</published>
  <updated>2004-06-23T00:00:00+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2004/06/kaaskoppen-in-europa"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(4 minuten lezen)</small></footer>
   <p><i>Mijn tweede column voor <a href="https://www.bvalmere.nl/">Badminton Vereniging Almere</a>, die ik anoniem schreef. Natuurlijk in het kader van voetbal, de gevormde poule bij Villa BvD en vakantie.</i></p>
   <p>Daar zitten we weer; u in een positie waarin u makkelijk leest, ondergetekende met vrij onregelmatig uitbrekend angstzweet op het voorhoofd. Waarover deze maand te schrijven? De hamvraag voor de komende twee uur. Plannen is nooit mijn sterkste punt geweest, maar dit keer zie ik het positief in. De vakantie, voor (c.q. door, zo u wilt) zowel school als badminton, is zo goed als begonnen. Twee maanden lang zullen we onze badmintoncapriolen op een andere plek gestalte moeten geven. Hetzij op een met zonlicht overgoten strand in Frankrijk, een met extra zand bestrooide arena in Spanje, een door regen ondergelopen plein in Engeland, een met bier geplaveide straat in Duitsland, een met zweet besprenkeld voetbalveld in Portugal, een met gras begroeide camping in Hongarije, of gewoon in een met barbecuelucht besmeurde achtertuin in Nederland. Hoe en waar dan ook; keep the badminton soul alive.</p>
   <p>Over Europa geschreven, het EK en de daarbij behorende BVA poule zijn ook nog in volle gang. De spanning bij laatstgenoemde is al redelijk verdwenen. Aisha heeft overduidelijk met de resultaten zitten sjoemelen. Dit kan gewoon niet anders. De grappige pathetische oordelen van de mannelijke deelnemers op het prikbord hebben weinig nut gehad. Uiteindelijk zal de vrouw op mentaal gebied gewoon weer het sterkere geslacht blijken. Of zal er in de laatste paar rondes korte metten gemaakt worden met de voorsprong? We zullen het zien.</p>
   <p>Over het echte voetbal heeft ook iedereen zich inmiddels een mening gevormd. Je kunt de tv niet aanzetten of er is wel een inhoudloze discussie over de eventuele gebrekkigheden aan de komende, in feite nog onbekende opstelling van Oranje. Ook de toegevoegde waarde van de snerpende vragensalvo's van Bert Maalderink is vrijwel nihil. Natuurlijk, als speler en coach weet je dat je je met een stukje pr moet gaan bezighouden. Een kruisverhoor, waarin je verantwoording moet afleggen voor hetgeen je die dag gedaan hebt, is echter iets compleet anders. Niemand zit hierop te wachten. Niemand, behalve de mensen thuis, die het ene moment en masse achter het team staan en zich even later laten leiden door de mening van een opportunistische journalist. Of is het andersom? Vertegenwoordigt deze persoon de mening van het volk achter de teevee? Is er sprake geweest van enige democratie in dit geheel? Ik heb er in ieder geval niets van gemerkt. En de mensen in Portugal ook niet. Die kijken naar kijkcijfers en daaruit maken ze op dat Bertje mag blijven. Bij deze mijn kritiek op dat systeem. Hier zal het ook bij blijven, want vanavond gaat er, ook door mij, gewoon gekeken worden naar een spannende wedstrijd en de daaropvolgende idem nabeschouwing. Irriterend of niet; het blijft amusement en de discipline, deze vorm van meelopen in de hedendaagse maatschappij compleet overboord te gooien, gaat zelfs mij te ver. Ik probeer dit al genoeg, of zelfs teveel.</p>
   <p>Hoe beviel overigens mijn subtiele ontwijking van een uiteenzetting over het fenomeen vrouw? Niet opgevallen? Mooi, want hierover zal ik op deze plek niet uitweiden. Ten eerste heb ik, sowieso in deze column, te weinig &quot;papier&quot; tot mijn beschikking. Ten tweede is dit fascinerende onderwerp tijdloos en het is onlogisch mijzelf een potentieel schrijfgegeven voor volgend seizoen te ontnemen. Ja, volgend seizoen. Eerst vakantie om onder andere bij te komen van een Europees Kampioenschap en een druk en gezellig badmintonjaar. En zoals Danny al aangaf in zijn vorige column; nazitters, vermenigvuldig u. Maak er wat van deze vakantie. Zo niet, dan toch. Tot de volgende column!</p>
   <p>K.</p>
  ]]></content>
 </entry>
 <entry>
  <id>https://krijnhoetmer.nl/log/2004/05/kolom</id>
  <title xml:lang="nl">Kolom (NL)</title>
  <published>2004-05-26T00:00:00+02:00</published>
  <updated>2004-05-26T00:00:00+02:00</updated>
  <link rel="alternate" type="text/html" href="https://krijnhoetmer.nl/log/2004/05/kolom"></link>
  <content type="html" xml:lang="nl"><![CDATA[
   <footer><small>(4 minuten lezen)</small></footer>
   <p><i>Dit is mijn eerste column voor de nieuwsbrief van <a href="https://www.bvalmere.nl/">Badminton Vereniging Almere</a>. Aangezien een columnist stopte, werd mij gevraagd zo nu en dan eens een stukje te schrijven. Ik schreef deze stukken toen anoniem. Eerst even uitzoeken wat een column nou eigenlijk is.</i></p>
   <p>Om maar meteen door de virtuele brievenbus van de deur in huis te vallen; een column, wat is het en wat maakt dit fenomeen het lezen waard?</p>
   <p>Volgens Van Dale is deze vorm van eenzijdige communicatie een regelmatig verschijnende, ondertekende rubriek in een dag- of weekblad, met een eigen karakter. Het eenmaal per maand verschijnen bepaalt de regelmatigheid en het tekenen gaat hieronder wellicht nog gebeuren. Tot zover het vrij makkelijk reproduceerbare gedeelte. Een moeilijker aspect wordt bepaald door de karakteristieke inhoud, die, in de meest ideale situatie, door de doelgroep ook nog eens als aangenaam aangenomen wordt. Hieruit blijkt dat de doelgroep een cruciale rol vervult in dit verhaal. Dus wat is mijn doelgroep? Badmintonnenden die nog nooit gehoord hebben van prozaïsch enkelvoud of de pejoratief BrEeZaHtAaL? Ik hoop het, want hierover valt toch echt weinig zinnigs te vertellen. Of is de doelgroep ondergeschikt en moet ik gewoon schrijven over hetgeen mij bezighoudt in het dagelijks leven? Over badminton, en in het bijzonder de daarbij behorende competitiewedstrijden, zal het de komende tijd sowieso wat minder gaan. Immers; veel enerverende gebeurtenissen om aan de grote klok te hangen vinden niet plaats. En als deze al plaatsvinden, worden die ruimschoots door een groot publiek besproken op onze webstek. Het reilen en zeilen van een abattoir is jammer genoeg ook al redelijk volledig besproken. Weer een onderwerp minder, waar ik graag een kantje aan had besteed. Overigens ben ik van mening dat sarcasme een prachtige uitvinding is. Niet te verwarren met het woord spasme, waarmee het broodnodige badminton bruggetje in dit stukje meteen gemaakt is.</p>
   <p>Zoals ondertussen wel duidelijk is geworden; Nederlands, of taal in het algemeen, is een onderwerp waar ik vrij veel mee bezig ben. Ik zal dan ook proberen iedere maand harmonie te vinden tussen (het schrijven over) het nonchalante badminton dat ikzelf tentoonspreid, de algemene badmintonzaken rondom deze gebeurtenis en de puristische instelling die ik behartig op het gebied van taal. Hierbij is vooral het eerste element het minst boeiend voor de gemiddelde columnlezer. In feite is alleen het tweede onderwerp dit niet, waarmee we weer bij de doelgroep belanden. Wat is boeien eigenlijk? Uitgaande van de meest gangbare betekenis, althans, in mijn beschermde omgeving, is dat iets wat de aandacht vasthoudt, of de geest bezighoudt. Of allebei tegelijk, maar dat ligt aan de mate van zweverigheid van columnlezende badmintonners. De ontwijkende uitspraak &quot;Boeie!&quot; gebruik ik persoonlijk regelmatig. In mijn geval is dat dus meestal om het onderwerp van onderwerp te doen veranderen. Als iets boeiend is, bedoel ik dus vaak dat het eigenlijk niet boeiend is. Het tegenovergestelde is doorgaans echter niet waar. De term boeiend is in principe dus al boeiend op zich en verzorgt daarmee voor zichzelf een functie als solitair pleonasme. Of ligt dit niet aan het woord, maar aan de kronkel in mijn hoofd? De onontkoombare feitelijkheid is dat u alleen al vrijwillig aan het lezen van deze column bent begonnen en dat u het tot hier hebt uitgehouden. Hiervan uitgaande zeg ik dat u wellicht een deel van deze kronkel met mij deelt en dat op zich is al genoeg informatie om de hele analyse met betrekking tot de doelgroep achterwege te laten. De grap is echter dat deze ontleding een fundamenteel onderdeel is van dit stukje. Mijn stukje met de kronkels die daarbij horen. De kronkels van een karakteristieke column. En dat deze column eigenlijk als twee gepresenteerd wordt (in de nieuwsbrief), is hopelijk de enige onvolkomenheid. Bedankt voor uw overlevend overlezend vermogen.</p>
   <p>K.</p>
  ]]></content>
 </entry>
</feed>