<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>benzblog</title>
    <link>https://bentsukun.ch/</link>
    <description>Recent content on benzblog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 25 May 2026 11:05:19 +0200</lastBuildDate>
    <atom:link href="https://bentsukun.ch/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MCP bad?</title>
      <link>https://bentsukun.ch/posts/mcp/</link>
      <pubDate>Mon, 25 May 2026 11:05:19 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/mcp/</guid>
      <description>&lt;p&gt;A while ago, I made an off-hand remark that got some followup questions. I said&#xA;that in AI applications, Model Context Protocol (MCP) is no longer a favored&#xA;extension model for tools. The question was essentially &amp;ndash; Really? What to use&#xA;instead?&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-the-problem-with-mcp&#34;&gt;What is the problem with MCP?&lt;/h2&gt;&#xA;&lt;p&gt;MCP is a chatty protocol. Connecting to any MCP endpoint will hand the AI model&#xA;a full description of &lt;em&gt;all&lt;/em&gt; the possible calls, including some explanatory text&#xA;and parameters.&lt;/p&gt;</description>
    </item>
    <item>
      <title>It&#39;s not Track 9 3/4</title>
      <link>https://bentsukun.ch/posts/track_9_3_4/</link>
      <pubDate>Tue, 17 Mar 2026 17:38:34 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/track_9_3_4/</guid>
      <description>&lt;p&gt;I recently spent a week in London, as one does. As I walked through the King&amp;rsquo;s Cross train station, it struck me: if anything, &lt;strong&gt;it should be track 8 3/4 and not 9 3/4&lt;/strong&gt;. Let me explain.&lt;/p&gt;&#xA;&lt;p&gt;In case you have been living under a rock: in the &lt;em&gt;Harry Potter&lt;/em&gt; book series, the protagonists run through a wall to reach the &amp;ldquo;hidden&amp;rdquo; platform 9 3/4, where the Hogwarts Express departs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rust in the Kernel, and other odd decisions</title>
      <link>https://bentsukun.ch/posts/netbsd-rust-kernel/</link>
      <pubDate>Fri, 30 Jan 2026 12:19:28 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/netbsd-rust-kernel/</guid>
      <description>&lt;p&gt;My email inbox is like the pile of documents on my desk. Things that I wanted to get back to ends up moving towards the bottom, into the never-ending pile of &amp;hellip; stuff. For the first time in a while, I have looked at the bottom &amp;ndash; and found an inquiry from someone who had seen my presentation at FOSDEM 2024.&lt;/p&gt;&#xA;&lt;p&gt;They had a question for me, which I am going to paraphrase below. I am going to reproduce my answer here because it may be interesting for others.&lt;/p&gt;</description>
    </item>
    <item>
      <title>San Francisco, 2025</title>
      <link>https://bentsukun.ch/posts/san-francisco-2025/</link>
      <pubDate>Sat, 15 Nov 2025 17:01:14 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/san-francisco-2025/</guid>
      <description>&lt;p&gt;Last week, I visited the Bay Area for a business trip. Most of my time was&#xA;spent in the South Bay, but I also spent a day in SF.&lt;/p&gt;&#xA;&lt;p&gt;In the afternoon, I went to Ocean beach and dipped my feet in the Pacific&#xA;Ocean for a tiny bit. The water was pretty cold! Where I live, we have&#xA;beautiful landscapes but the country is landlocked, so going to ocean shore is&#xA;special for me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Booting NetBSD from a wedge, the hard way</title>
      <link>https://bentsukun.ch/posts/netbsd-wedge-boot/</link>
      <pubDate>Fri, 29 Aug 2025 09:49:34 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/netbsd-wedge-boot/</guid>
      <description>&lt;p&gt;I have a Raspberry Pi 3 with NetBSD 10, running CI jobs. Because SD cards are notoriously unreliable, I attached a USB hard drive to it. The HDD has a swap partition and scratch space for the builds, while root is on the SD. Unfortunately, some writes end up going to the root file system after all, which meant that the SD card was destroyed after only about a year!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Some nuanced thoughts on AI</title>
      <link>https://bentsukun.ch/posts/ai-nuance/</link>
      <pubDate>Sun, 04 May 2025 16:51:02 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/ai-nuance/</guid>
      <description>&lt;p&gt;&lt;em&gt;I have stuggled with writing this for a while. This has the potential to&#xA;be controversial: Some people have very strong opinions on this, while&#xA;my own opinion is more &amp;hellip; nuanced. &amp;ndash;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I live in two different worlds regarding AI.&lt;/p&gt;&#xA;&lt;p&gt;During the day, I am working in a big tech company that is betting big&#xA;on AI. AI is everywhere, and (at least some) people are excited about&#xA;the possibilities.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developing pkgsrc with git</title>
      <link>https://bentsukun.ch/posts/pkgsrc-with-git/</link>
      <pubDate>Sun, 09 Mar 2025 17:13:42 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/pkgsrc-with-git/</guid>
      <description>&lt;p&gt;I stopped developing pkgsrc with CVS.&lt;/p&gt;&#xA;&lt;p&gt;Quick bit of background: NetBSD is still using CVS as its version control system. The decision to move to something else has been taken long ago, but the switch has not happened as of today.&lt;/p&gt;&#xA;&lt;p&gt;Working with CVS is painful for many reasons. For instance, there is no way to see your local changes without waiting several minutes for a &lt;code&gt;cvs up -n&lt;/code&gt;. A full tree update (&lt;code&gt;cvs up&lt;/code&gt;) churns for quite a while before it even starts updating any files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>&#34;Founder Mode&#34;</title>
      <link>https://bentsukun.ch/posts/founder-mode/</link>
      <pubDate>Sun, 19 Jan 2025 21:46:45 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/founder-mode/</guid>
      <description>&lt;p&gt;My current work project started last summer, as a bit of experimentation. A few of us sat together in a room and started writing down a hypothetical piece of configuration. Within less than a week, we had actually written a prototype-quality piece of software accepting exactly the configuration we had brainstormed.&lt;/p&gt;&#xA;&lt;p&gt;A few months later however, this project went through a difficult phase where we realized that we actually needed to write down a plan for bringing the software to a stable, usable state. This ended up a painful couple of weeks of planning ahead and realizing that our goal of shipping this was slipping.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tracking Bulk Builds in pkgsrc: from Cloud to NetBSD Native</title>
      <link>https://bentsukun.ch/talks/fosdem2025/</link>
      <pubDate>Wed, 01 Jan 2025 15:30:00 +0100</pubDate>
      <guid>https://bentsukun.ch/talks/fosdem2025/</guid>
      <description></description>
    </item>
    <item>
      <title>Emulating *BSD on ARM, Part 3: OpenBSD</title>
      <link>https://bentsukun.ch/posts/openbsd-arm-qemu/</link>
      <pubDate>Mon, 23 Dec 2024 11:41:28 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/openbsd-arm-qemu/</guid>
      <description>&lt;p&gt;This is part 3 of my blog post series about emulating BSD operating systems for&#xA;32-bit ARM with QEMU. Buckle up, today we will need to do an actual OS&#xA;installation!&lt;/p&gt;&#xA;&lt;p&gt;In OpenBSD/armv7, the miniroot image is an installer, so we also need a new&#xA;empty drive image to install to. I recommend the qcow2 format, since it&#xA;consumes only the space that is actually occupied. The 10G image created below&#xA;is only 192 kilobytes initially. Here is how you create the root image:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emulating *BSD on ARM, Part 2: FreeBSD</title>
      <link>https://bentsukun.ch/posts/freebsd-arm-qemu/</link>
      <pubDate>Mon, 11 Nov 2024 20:52:35 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/freebsd-arm-qemu/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://bentsukun.ch/posts/bsd-arm-qemu/&#34;&gt;Part 1&lt;/a&gt; of this blog post series, I explained how I recently spent some time getting various BSD OSes to run on QEMU, for 32-bit ARM (ARMv7). This part deals with FreeBSD.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Spoiler: it was easier than the others.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I started by downloading an image from&#xA;&lt;a href=&#34;https://download.freebsd.org/releases/arm/armv7/ISO-IMAGES/&#34;&gt;https://download.freebsd.org/releases/arm/armv7/ISO-IMAGES/&lt;/a&gt;. Mine was&#xA;called&#xA;&lt;a href=&#34;https://download.freebsd.org/releases/arm/armv7/ISO-IMAGES/14.1/FreeBSD-14.1-RELEASE-arm-armv7-GENERICSD.img.xz&#34;&gt;FreeBSD-14.1-RELEASE-arm-armv7-GENERICSD.img.xz&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;uefi&#34;&gt;Preparing UEFI&lt;/h2&gt;&#xA;&lt;p&gt;Warner Losh has thankfully written &lt;a href=&#34;http://bsdimp.blogspot.com/2023/12/freebsdarmv7-in-qemu.html&#34;&gt;a blog&#xA;post&lt;/a&gt;&#xA;about how to get it running in QEMU, which we are going to follow.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emulating *BSD on ARM, Part 1: Introduction</title>
      <link>https://bentsukun.ch/posts/bsd-arm-qemu/</link>
      <pubDate>Mon, 28 Oct 2024 20:30:07 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/bsd-arm-qemu/</guid>
      <description>&lt;p&gt;In my copious spare time, I maintain the Go CI system for certain platforms. These days, Go uses LUCI, the same CI pipeline that Chromium is using.&lt;/p&gt;&#xA;&lt;p&gt;My current rabbit hole is making the &amp;ldquo;swarming bot&amp;rdquo; work on NetBSD/arm &amp;ndash; that&amp;rsquo;s 32-bit ARM, not aarch64. When building Go code for 32-bit ARM, the &lt;code&gt;GOARM&lt;/code&gt; environment variable can be set to the instruction set version, i.e. &lt;code&gt;GOARM=6&lt;/code&gt; (ARMv6, the default) and &lt;code&gt;GOARM=7&lt;/code&gt; (ARMv7). One of the things that ARMv7 has that v6 doesn&amp;rsquo;t is atomic synchronisation instructions. At least on BSD systems, Go needs those for multi-core systems (which is more or less &lt;em&gt;all systems&lt;/em&gt; these days). Thus, ARMv6 Go binaries exit on startup if run on a system with multiple cores.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NetBSD 10 -- 30 Jahre und immer noch da</title>
      <link>https://bentsukun.ch/talks/linuxday2024/</link>
      <pubDate>Mon, 23 Sep 2024 17:49:46 +0100</pubDate>
      <guid>https://bentsukun.ch/talks/linuxday2024/</guid>
      <description></description>
    </item>
    <item>
      <title>The code is not enough</title>
      <link>https://bentsukun.ch/posts/reading-code/</link>
      <pubDate>Tue, 27 Aug 2024 11:46:46 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/reading-code/</guid>
      <description>&lt;p&gt;In my job, I read a &lt;em&gt;lot&lt;/em&gt; of code. I read more code than I write. I suppose&#xA;that&amp;rsquo;s true for many engineers at the senior level or above.&lt;/p&gt;&#xA;&lt;p&gt;For instance, a new piece of code integrates with a library, or with another&#xA;code base, and I want to understand how the integration works. Or I am the&#xA;supplier of the infrastructure/library/framework and I need to debug someone&amp;rsquo;s&#xA;(mis-)use.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Why does this not compile?&lt;/li&gt;&#xA;&lt;li&gt;Why does it compile but then crashes on startup with a cryptic error&#xA;message?&lt;/li&gt;&#xA;&lt;li&gt;Why does it seem to work but then all requests return the same error?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;&#xA;&lt;p&gt;Code is nothing without the corresponding configuration, particularly when you&#xA;are looking at builds or deployments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fedora Update: btrfs self-destruct</title>
      <link>https://bentsukun.ch/posts/fedora-btrfs/</link>
      <pubDate>Tue, 07 May 2024 22:21:21 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/fedora-btrfs/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://bentsukun.ch/posts/fedora-asahi&#34;&gt;A while ago&lt;/a&gt;, I installed Fedora Asahi Remix on my M2&#xA;MacBook Air, and I was very positive about it. So positive, in fact, that I&#xA;ended up making it the default partition in the bootloader. I haven&amp;rsquo;t used&#xA;macOS in weeks. But then, a few days ago, something weird happened:&lt;/p&gt;&#xA;&lt;p&gt;In the middle of some development work, running &lt;code&gt;cvs update&lt;/code&gt; on the &lt;a href=&#34;https://pkgsrc.org/&#34;&gt;pkgsrc&lt;/a&gt;&#xA;repository, the screen suddenly filled with a bunch of &amp;ldquo;read-only file system&amp;rdquo;&#xA;errors. It turned out that both &lt;code&gt;/&lt;/code&gt; and &lt;code&gt;/home&lt;/code&gt; had remounted themselves&#xA;read-only, without my intervention.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The XZ Backdoor</title>
      <link>https://bentsukun.ch/posts/xz-backdoor/</link>
      <pubDate>Sun, 31 Mar 2024 20:32:45 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/xz-backdoor/</guid>
      <description>&lt;p&gt;Over the Easter weekend 2024, there was a big kerfuffle around a compression&#xA;tool named &lt;code&gt;xz&lt;/code&gt;. Honestly, the story is so amazing that it could be a gripping&#xA;novel. In fact, what happened is not dissimilar to the book &lt;a href=&#34;https://mwl.io/fiction/crime&#34;&gt;$ git commit&#xA;murder&lt;/a&gt; My Michael Warren Lucas.&lt;/p&gt;&#xA;&lt;p&gt;A PostgreSQL developer, Andres Freund, was running some benchmarks and trying&#xA;to reduce the noise from other programs on the system. While doing so, he&#xA;noticed that &lt;code&gt;sshd&lt;/code&gt; would take more CPU than expected during logins, for about&#xA;0.5 seconds at a time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fedora Asahi Remix</title>
      <link>https://bentsukun.ch/posts/fedora-asahi/</link>
      <pubDate>Sat, 03 Feb 2024 10:21:03 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/fedora-asahi/</guid>
      <description>&lt;p&gt;I have been following Asahi Linux for a while. Linux for my MacBook Air M2 &amp;ndash; sure, why not? But I wasn&amp;rsquo;t particularly interested in a distribution based on Arch Linux.&lt;/p&gt;&#xA;&lt;p&gt;In late 2023, the Asahi folks presented a new distro that they called &lt;em&gt;Fedora Asahi Remix&lt;/em&gt;. The promise is to combine the ground-breaking Kernel development of Asahi with the polish of Fedora Linux. I thought I would give it a go.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NetBSD 10: Thirty Years, Still Going Strong!</title>
      <link>https://bentsukun.ch/talks/fosdem2024/</link>
      <pubDate>Thu, 01 Feb 2024 11:00:00 +0200</pubDate>
      <guid>https://bentsukun.ch/talks/fosdem2024/</guid>
      <description>&lt;p&gt;In 2023, the NetBSD project celebrated 30 years since its first release, 0.8.&#xA;Now, four years after NetBSD 9, NetBSD 10 brings a huge number of changes and&#xA;improvements. This talk will dive into the most important new features of&#xA;NetBSD 10, such as performance and security improvements, expanded CPU and&#xA;GPU support, improved virtualization and more!&lt;/p&gt;&#xA;&lt;p&gt;Another strength of NetBSD is its package system, pkgsrc, which is portable&#xA;to dozens of other OSes and can even be used like virtualenv for development&#xA;and deployment environments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The VS Code Flatpak is useless</title>
      <link>https://bentsukun.ch/posts/vscode-flatpak/</link>
      <pubDate>Sun, 14 Jan 2024 18:47:30 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/vscode-flatpak/</guid>
      <description>&lt;p&gt;I installed Fedora 39 the other day. (More on that in one of the next posts.) It&#xA;has a nifty software installer thing named &amp;ldquo;Discover&amp;rdquo;. When I typed &amp;ldquo;Visual&#xA;Studio Code&amp;rdquo; into the search box, it dutifully installed VS Code. As a Flatpak.&lt;/p&gt;&#xA;&lt;p&gt;This was the first time I interacted with Flatpak, and it did not go well.&lt;/p&gt;&#xA;&lt;h1 id=&#34;aside-why-vs-code&#34;&gt;Aside: Why VS Code&lt;/h1&gt;&#xA;&lt;p&gt;I want to use VS Code for editing Go code, with &lt;code&gt;gopls&lt;/code&gt;, since it provides a&#xA;really good integration. It turns out that a majority of Go developers use VS&#xA;Code, so the language server integration is well tested and complete. In short,&#xA;it&amp;rsquo;s the well-lit path.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a NetBSD ramdisk kernel</title>
      <link>https://bentsukun.ch/posts/ramdisk-kernel/</link>
      <pubDate>Sun, 26 Nov 2023 15:08:37 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/ramdisk-kernel/</guid>
      <description>&lt;p&gt;When I used OpenBSD, I was a big fan of &lt;code&gt;bsd.rd&lt;/code&gt;: a kernel that includes a root&#xA;file system with an installer and a few tools. When I invariably did something&#xA;bad to my root file system, I could use that to repair things. &lt;code&gt;bsd.rd&lt;/code&gt; is&#xA;also helpful for OS updates. And there is only a single file involved.&lt;/p&gt;&#xA;&lt;p&gt;On NetBSD however, there is usually no &lt;code&gt;netbsd.rd&lt;/code&gt; kernel installed, or even&#xA;available by default. The facility is there, it&amp;rsquo;s just not standard. To be&#xA;fair, there are a number of architectures that use kernels with a ramdisk for&#xA;installation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Talk about the Basics</title>
      <link>https://bentsukun.ch/posts/talk-about-basics/</link>
      <pubDate>Sat, 14 Oct 2023 21:23:20 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/talk-about-basics/</guid>
      <description>&lt;p&gt;Whenever I send around a Call for Papers for an open source conference, some&#xA;people reply something like&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Unfortunately, I don’t have anything to present right now. My work on XYZ is&#xA;simply not far enough along.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Or similar. However, &lt;strong&gt;this does not matter.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I’ll let you in on a secret: When I was in academia, when someone was talking&#xA;about their results at a conference, I mostly did not give a shit about the&#xA;results themselves. (Unless I was working on something narrowly related, which&#xA;was rare.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>pkgsrc statt Containern!</title>
      <link>https://bentsukun.ch/talks/linuxday2023/</link>
      <pubDate>Sat, 30 Sep 2023 17:37:10 +0200</pubDate>
      <guid>https://bentsukun.ch/talks/linuxday2023/</guid>
      <description>&lt;h1 id=&#34;1&#34;&gt;1.&lt;/h1&gt;&#xA;&lt;p&gt;Es gibt da dieses Betriebssystem, und es ist nicht Linux.&lt;/p&gt;&#xA;&lt;p&gt;NetBSD.&lt;/p&gt;&#xA;&lt;p&gt;NetBSD besteht nicht nur aus einem Kernel, sondern aus einem Basissystem, in dem&#xA;auch eine Shell, ein Compiler, der X-Server, usw. ist. Aber zum Beispiel kein&#xA;Firefox.&lt;/p&gt;&#xA;&lt;p&gt;Was mache ich jetzt, wenn ich aber Firefox installieren möchte?&lt;/p&gt;&#xA;&lt;p&gt;Dafür gibt es pkgsrc, gesprochen „package source“. Wie der Name schon sagt, ist&#xA;es eine Sammlung von Quellpaketen, also Rezepten, um Software aus dem Quelltext&#xA;zu bauen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Culture is about the small things</title>
      <link>https://bentsukun.ch/posts/culture-small-things/</link>
      <pubDate>Thu, 14 Sep 2023 11:43:00 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/culture-small-things/</guid>
      <description>&lt;p&gt;I have lived outside the country I was born in for more than 17 years now.&lt;/p&gt;&#xA;&lt;p&gt;When I lived in France, I eventually had a pretty good grasp of the language. I&#xA;could give tech talks, write reports, talk to my coworkers, neighbours and&#xA;friends — including casual banter and that sort of thing. I like to think that&#xA;I actually fit in pretty well.&lt;/p&gt;&#xA;&lt;p&gt;However, one evening I watched &lt;em&gt;Qui veut gagner des millons?&lt;/em&gt; on TV, the French&#xA;edition of &lt;em&gt;Who wants to be a Millionaire&lt;/em&gt;. And I realized that I would not&#xA;even be able to get through the initial round of quick-fire questions. Most of&#xA;the time, I did not know the answer to the 500 euro question! The reason for&#xA;that is that these questions rely on shared cultural understandings, such as&#xA;that TV series everyone watched when they were a kid, popular books and snacks&#xA;and the like. I grew up with different series. I have not watched many of the&#xA;movies that &amp;ldquo;everyone&amp;rdquo; remembers from way back when, such as &lt;em&gt;La cité de la&#xA;peur&lt;/em&gt; or &lt;em&gt;Le Père-Noël est une ordure&lt;/em&gt;. &lt;em&gt;La classe Américaine&lt;/em&gt; was excellent&#xA;though :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Operating Systems, Transit and Cultural Influences</title>
      <link>https://bentsukun.ch/posts/os-culture/</link>
      <pubDate>Sat, 17 Jun 2023 11:50:15 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/os-culture/</guid>
      <description>&lt;p&gt;All of the dominant commercial operating systems in desktop and mobile&#xA;computing — macOS, iOS, Windows, Android, Chrome OS — are made in the US,&#xA;on the West Coast. Except for Microsoft, they are heavily concentrated in&#xA;the SF Bay Area. (Note that I am not talking about free software such as&#xA;GNU/Linux, BSD, etc., which is probably more diverse regarding the location&#xA;of their developers.)&lt;/p&gt;&#xA;&lt;h1 id=&#34;flight-tracking&#34;&gt;Flight Tracking&lt;/h1&gt;&#xA;&lt;p&gt;All of these OSes are very eager to support you with flight tickets and&#xA;boarding passes. For instance, you can add your boarding pass to Apple Wallet,&#xA;or Google Wallet, and it will automatically surface when you are at the&#xA;airport. Very convenient!&lt;/p&gt;</description>
    </item>
    <item>
      <title>On Meetings</title>
      <link>https://bentsukun.ch/posts/meetings/</link>
      <pubDate>Sun, 23 Apr 2023 21:17:45 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/meetings/</guid>
      <description>&lt;p&gt;&lt;em&gt;I recently made two LinkedIn posts about meetings. I thought it would make&#xA;sense to reproduce them here for posterity.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Normalize ending meetings early.&lt;/p&gt;&#xA;&lt;p&gt;If you have scheduled a 1-hour meeting but you are done with your agenda after&#xA;30 minutes, there is no need to scramble to think about more things to say. No&#xA;one will judge you (hopefully) if you just end the meeting at that point and&#xA;make a more productive use of the remaining time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Lua from Go</title>
      <link>https://bentsukun.ch/posts/go-lua/</link>
      <pubDate>Mon, 06 Feb 2023 14:51:03 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/go-lua/</guid>
      <description>&lt;p&gt;Last weekend, at &lt;a href=&#34;https://fosdem.org&#34;&gt;FOSDEM 2023&lt;/a&gt;, I watched a Lightning Talk&#xA;by Frank Vanbever titled &lt;a href=&#34;https://fosdem.org/2023/schedule/event/lua_for_the_lazy_c_developer/&#34;&gt;&amp;ldquo;Lua for the Lazy C&#xA;developer&amp;rdquo;&lt;/a&gt;.&#xA;I had recently suggested at work that we should be using Lua to script the&#xA;behavior of some systems which are written in Go, so the talk strongly&#xA;resonated with me.&lt;/p&gt;&#xA;&lt;p&gt;Lua is an ideal scripting language for embedding into other programs because&#xA;it is small and provides excellent bindings in both directions &amp;ndash; Lua code can&#xA;call native code, and vice versa. Because Go has good hash tables as part of&#xA;the language, using Lua as a container for your hash tables is probably less&#xA;interesting than from C though.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pkgsrc and a Call for Action</title>
      <link>https://bentsukun.ch/posts/pkgsrc-agitprop/</link>
      <pubDate>Fri, 03 Feb 2023 09:54:31 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/pkgsrc-agitprop/</guid>
      <description>&lt;p&gt;I have been a pkgsrc developer for several years. For what it&amp;rsquo;s worth, I think&#xA;pkgsrc is wonderful: a large selection of third-party software, packaged so&#xA;that it is easy to install with a single command &amp;ndash; either building everything&#xA;from source, or relying on binary packages. pkgsrc supports dozens of OSes &amp;ndash;&#xA;not just NetBSD but also other BSDs, macOS, Linux, Illumos and more.&lt;/p&gt;&#xA;&lt;p&gt;On the other hand, unfortunately, pkgsrc and NetBSD in general are suffering&#xA;from what I would call a &lt;em&gt;loss of mindshare&lt;/em&gt;. When I joined the NetBSD&#xA;Foundation as a developer, I had the impression that NetBSD had more users and&#xA;community than OpenBSD or, say, Dragonfly. In recent years however, it seems&#xA;to me that people have more or less forgotten about NetBSD and pkgsrc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Over to Mastodon, I guess</title>
      <link>https://bentsukun.ch/posts/fediverse/</link>
      <pubDate>Sat, 19 Nov 2022 11:11:37 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/fediverse/</guid>
      <description>&lt;p&gt;It took me quite a while to realize that I have been here before.&lt;/p&gt;&#xA;&lt;p&gt;When Google+ (the greatest social network I have used, by the way) was killed,&#xA;somebody spun up &lt;strong&gt;Pluspora&lt;/strong&gt; as a refuge. It was a Pod of something called&#xA;&lt;a href=&#34;https://diasporafoundation.org&#34;&gt;diaspora&lt;/a&gt;. It was nice in the beginning, then&#xA;gradually I interacted with it less &amp;ndash; since, TBH, there wasn&amp;rsquo;t much content,&#xA;and I also didn&amp;rsquo;t post much. Eventually, the person running the Pod died, and&#xA;their family ended up switching it off.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using a Mi Band with Strava</title>
      <link>https://bentsukun.ch/posts/mi-band-strava/</link>
      <pubDate>Thu, 13 Oct 2022 18:23:20 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/mi-band-strava/</guid>
      <description>&lt;p&gt;I have used a Mi Band as a smartwatch / fitness tracking device for the last&#xA;couple years. Compared to, say, a Wear OS device, it offers a vastly better&#xA;deal:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It&amp;rsquo;s cheap, at around 30-40 CHF.&lt;/li&gt;&#xA;&lt;li&gt;The battery lasts several weeks.&lt;/li&gt;&#xA;&lt;li&gt;It shows the time and tracks steps and movement.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Wear OS device costs 5-10 times as much and needs daily charging. To be&#xA;fair, in addition to showing the time and tracking fitness data, it does many&#xA;other things that I don&amp;rsquo;t need.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Agile Development: Micromanage yourself</title>
      <link>https://bentsukun.ch/posts/agile/</link>
      <pubDate>Sun, 10 Apr 2022 17:13:05 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/agile/</guid>
      <description>&lt;p&gt;Recently, I was thinking about one of my previous software development teams at&#xA;work. Our program manager was a former Scrum master, so he taught us the basics&#xA;of the Scrum method, which is one of the Agile development methodologies.&lt;/p&gt;&#xA;&lt;p&gt;Now, the funny thing was that Scrum includes a number of rituals and techniques,&#xA;and the book essentially states that you must do all of them or it won&amp;rsquo;t work;&#xA;despite that, we used a subset and were somewhat successful with it. We also&#xA;practiced continuous delivery by accident: because we didn&amp;rsquo;t use experiments or&#xA;another way to gate new features, they became available to users as soon as they&#xA;got merged, with the next daily release.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The BulkTracker Outage</title>
      <link>https://bentsukun.ch/posts/bulktracker-outage/</link>
      <pubDate>Sat, 08 Jan 2022 17:12:44 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/bulktracker-outage/</guid>
      <description>&lt;p&gt;I have been running the &lt;a href=&#34;https://bulktracker.appspot.com/&#34;&gt;BulkTracker&lt;/a&gt; web app for keeping track of &lt;a href=&#34;https://pkgsrc.org/&#34;&gt;pkgsrc&lt;/a&gt;&#xA;bulk package build results since about 2015.&lt;/p&gt;&#xA;&lt;p&gt;After running without problems since the start (!!), the BulkTracker app had its&#xA;first outage in November of 2021. It turns out that the function that renders&#xA;the home page returns a 500 if it gets an error from Datastore. The error that&#xA;was returned was:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rpc error: code = ResourceExhausted desc = Quota exceeded.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After &lt;a href=&#34;https://twitter.com/bentsukun/status/1466492927643987976&#34;&gt;complaining on Twitter&lt;/a&gt;, I fixed the handler to return at least a&#xA;degraded home page in case of Datastore errors. But why was there an error in&#xA;the first place? According to the &amp;ldquo;Quotas&amp;rdquo; page on the Google Cloud Console,&#xA;there are no Datastore-related quotas that can be exhausted &amp;ndash; essentially, you&#xA;can use as much as you need as long as you pay for it. I fixed the handler to&#xA;return at least a degraded home page in case of Datastore errors.&lt;/p&gt;</description>
    </item>
    <item>
      <title>go-modules.mk</title>
      <link>https://bentsukun.ch/posts/go-modules-mk/</link>
      <pubDate>Sun, 07 Nov 2021 11:27:00 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/go-modules-mk/</guid>
      <description>&lt;p&gt;The BSD build system in general, and pkgsrc in particular, have a large number&#xA;of Makefiles ending in &lt;code&gt;.mk&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Recently, I was looking at a commit message in Gmail and noticed that these&#xA;names are linkified. At the time, I was looking at a &lt;a href=&#34;https://bentsukun.ch/posts/go-mod-support-3&#34;&gt;Go module&#xA;package&lt;/a&gt;, where there is a&#xA;&lt;a href=&#34;https://go-modules.mk/&#34;&gt;&lt;code&gt;go-modules.mk&lt;/code&gt;&lt;/a&gt; file containing details about&#xA;dependencies. This got me thinking: Why is this file name turned into a link?&lt;/p&gt;&#xA;&lt;p&gt;It turns out that &lt;code&gt;.mk&lt;/code&gt; is the ccTLD of the Republic of North Macedonia! So I&#xA;did what I had to do: I went to the website of a registrar in Skopje and&#xA;reserved the &lt;a href=&#34;https://go-modules.mk/&#34;&gt;go-modules.mk&lt;/a&gt; domain.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More Go modules in pkgsrc</title>
      <link>https://bentsukun.ch/posts/go-mod-support-3/</link>
      <pubDate>Wed, 12 May 2021 18:31:25 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/go-mod-support-3/</guid>
      <description>&lt;p&gt;This weekend, I made a series of somewhat unusual changes to pkgsrc.&lt;/p&gt;&#xA;&lt;p&gt;I removed a bunch of Go packages.&lt;/p&gt;&#xA;&lt;p&gt;Why? Because of &lt;strong&gt;Go modules&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h1 id=&#34;what-are-go-modules&#34;&gt;What are Go modules?&lt;/h1&gt;&#xA;&lt;p&gt;Since my series of design-ish blog posts(&lt;a href=&#34;https://bentsukun.ch/posts/go-mod-support&#34;&gt;part 1&lt;/a&gt;, &lt;a href=&#34;https://bentsukun.ch/posts/go-mod-support-2&#34;&gt;part 2&lt;/a&gt;), Go module builds&#xA;have fully landed in pkgsrc, to the point that they are now the preferred way to&#xA;build Go packages.&lt;/p&gt;&#xA;&lt;p&gt;To recap: There are two ways to use the &lt;code&gt;go&lt;/code&gt; tool to build Go code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NetBSD VM on bhyve (on TrueNAS)</title>
      <link>https://bentsukun.ch/posts/bhyve-netbsd/</link>
      <pubDate>Sun, 25 Apr 2021 16:50:20 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/bhyve-netbsd/</guid>
      <description>&lt;p&gt;My new NAS at home is running &lt;a href=&#34;https://truenas.com/truenas-core/&#34;&gt;TrueNAS Core&lt;/a&gt;. So far, it has been excellent,&#xA;however I struggled a bit setting up a NetBSD VM on it. Part of the problem is&#xA;that a lot of the docs and how-tos I found are stale, and the information in it&#xA;no longer applies.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://truenas.com/truenas-core/&#34;&gt;TrueNAS Core&lt;/a&gt; allows running VMs using &lt;strong&gt;bhyve&lt;/strong&gt;, which is FreeBSD&amp;rsquo;s hypervisor.&#xA;NetBSD is not an officially supported OS, at least according to the guest OS&#xA;chooser in the &lt;a href=&#34;https://truenas.com/&#34;&gt;TrueNAS&lt;/a&gt; web UI :) But since the release of NetBSD 9 a while ago,&#xA;things have become far simpler than they used to be &amp;ndash; with one caveat (see&#xA;below).&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Refinery, an Analogy for Distributed Systems</title>
      <link>https://bentsukun.ch/posts/refinery/</link>
      <pubDate>Thu, 04 Mar 2021 14:06:35 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/refinery/</guid>
      <description>&lt;p&gt;Back when I was in &lt;a href=&#34;https://ecpm.unistra.fr/&#34;&gt;Engineering school&lt;/a&gt;, my&#xA;first-year internship happened in a refinery. In retrospect, this turned out&#xA;to be extremely relevant for my current job in tech.&lt;/p&gt;&#xA;&lt;p&gt;The subject of my internship was the optimization of an existing process. The&#xA;unit had been planned on paper by an engineer on another continent, installed&#xA;according to specs, and it turned out to be &amp;hellip; not working so well.&lt;/p&gt;&#xA;&lt;h1 id=&#34;dont-believe-tech-is-unique&#34;&gt;Don&amp;rsquo;t believe Tech is unique&lt;/h1&gt;&#xA;&lt;p&gt;A refinery is a distributed system. There are specs and basically internal&#xA;contracts on each sub-unit regarding the quantity it should process per day,&#xA;what the requirements for inputs and the desired output characteristics are.&#xA;Instead of queries, the inputs and outputs are, you know, oil and gas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSD Rochade</title>
      <link>https://bentsukun.ch/posts/ssd-rochade/</link>
      <pubDate>Mon, 04 Jan 2021 20:25:48 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/ssd-rochade/</guid>
      <description>&lt;p&gt;My desktop PC has two NVMe drives, one for Windows and one for NetBSD. With&#xA;Steam game footprints being what they are, the Windows one (256 GB) has been&#xA;perpetually overfull, so it was time for something bigger.&lt;/p&gt;&#xA;&lt;p&gt;At the same time, I had bought an NVMe daughter board for my&#xA;&lt;a href=&#34;https://bentsukun.ch/posts/pinebook-pro&#34;&gt;&lt;strong&gt;Pinebook Pro&lt;/strong&gt;&lt;/a&gt;. My impression with the PBP is that&#xA;the I/O performance of the eMMC module is holding it back, so I am excited to&#xA;give it fast storage :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reflections on Ops</title>
      <link>https://bentsukun.ch/posts/ops/</link>
      <pubDate>Fri, 23 Oct 2020 06:50:32 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/ops/</guid>
      <description>&lt;p&gt;I never spent much time toiling in the &amp;ldquo;sysadmin job&amp;rdquo; mines, though my first&#xA;job was user support and admin. Later, I joined Google SRE and worked with&#xA;both world-class and mediocre tools. As a junior SRE, you are mostly a &lt;em&gt;user&lt;/em&gt;&#xA;of these tools, though it is easy to pat yourself on the back and think of&#xA;yourself as better than the run-of-the-mill admin because all this automation&#xA;is available to you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pkgsrc Developer Monotony</title>
      <link>https://bentsukun.ch/posts/pkgsrc-toil/</link>
      <pubDate>Tue, 08 Sep 2020 18:19:24 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/pkgsrc-toil/</guid>
      <description>&lt;p&gt;Somehow, my contributions to NetBSD and pkgsrc have become monotonous.&#xA;Because I am busy with work, family and real life, the amount of time I can&#xA;spend on open source is fairly limited, and I have two commitments that I try&#xA;to fulfill:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Member of pkgsrc-releng: I process most of the pull-ups to the stable&#xA;quarterly branch.&lt;/li&gt;&#xA;&lt;li&gt;Maintainer of Go and its infrastructure.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Unfortunately, these things are always kinda the same.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using CPU Subsets for Building Software</title>
      <link>https://bentsukun.ch/posts/psrset/</link>
      <pubDate>Sat, 04 Jul 2020 14:53:01 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/psrset/</guid>
      <description>&lt;p&gt;Like many ARM CPUs, the one in the Pinebook Pro has a &amp;ldquo;big.LITTLE&amp;rdquo;&#xA;architecture, where some cores are more powerful than others:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[     1.000000] cpu0 at cpus0: Arm Cortex-A53 r0p4 (v8-A), id 0x0&#xA;[     1.000000] cpu1 at cpus0: Arm Cortex-A53 r0p4 (v8-A), id 0x1&#xA;[     1.000000] cpu2 at cpus0: Arm Cortex-A53 r0p4 (v8-A), id 0x2&#xA;[     1.000000] cpu3 at cpus0: Arm Cortex-A53 r0p4 (v8-A), id 0x3&#xA;[     1.000000] cpu4 at cpus0: Arm Cortex-A72 r0p2 (v8-A), id 0x100&#xA;[     1.000000] cpu5 at cpus0: Arm Cortex-A72 r0p2 (v8-A), id 0x101&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The A72 is a more powerful than the efficiency-oriented A53, it has&#xA;out-of-order execution, plus it reaches a higher maximum clock rate (1.4 GHz&#xA;for the A53 and 2.0 GHz for the A72 in the Pinebook Pro).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting Started with NetBSD on the Pinebook Pro</title>
      <link>https://bentsukun.ch/posts/pinebook-pro-netbsd/</link>
      <pubDate>Sat, 20 Jun 2020 18:09:23 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/pinebook-pro-netbsd/</guid>
      <description>&lt;p&gt;If you buy a Pinebook Pro now, it comes with Manjaro Linux on the internal eMMC storage. Let&amp;rsquo;s install NetBSD instead!&lt;/p&gt;&#xA;&lt;p&gt;The easiest way to get started is to buy a decent micro-SD card (what sort of markings it should have is a science of its own, by the way) and install NetBSD on that. On a warm boot (i.e. when rebooting a running system), the micro-SD card has priority compared to the eMMC, so the system will boot from there.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pinebook Pro, First Impressions</title>
      <link>https://bentsukun.ch/posts/pinebook-pro/</link>
      <pubDate>Sun, 31 May 2020 16:04:25 +0000</pubDate>
      <guid>https://bentsukun.ch/posts/pinebook-pro/</guid>
      <description>&lt;p&gt;&lt;em&gt;Note: This post was written on the Pinebook Pro :)&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;After seeing it in action at FOSDEM (from afar, as the crowd was too&#xA;large), I decided to buy a Pinebook Pro for personal use. From the&#xA;beginning, the intention was to use it for pkgsrc development, with&#xA;NetBSD as the main OS. It was finally delivered on Thursday, one day&#xA;earlier than promised, so I thought I would write down my first&#xA;impressions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to do Pull-ups to pkgsrc-stable</title>
      <link>https://bentsukun.ch/posts/pullups/</link>
      <pubDate>Mon, 03 Feb 2020 11:30:58 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/pullups/</guid>
      <description>&lt;p&gt;I am part of the pkgsrc releng (release engineering) team. My main task there is&#xA;handling pull-ups into the stable branch.&lt;/p&gt;&#xA;&lt;p&gt;pkgsrc creates a stable branch every three months and names it after the&#xA;respective quarter &amp;ndash; for example, the last branch was called 2019Q4. Pull-ups&#xA;are tickets to &amp;ldquo;pull up&amp;rdquo; one or more commit from the development branch into the&#xA;stable branch. Typical justifications for pull-ups are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;security updates&lt;/li&gt;&#xA;&lt;li&gt;build fixes&lt;/li&gt;&#xA;&lt;li&gt;important bug fixes (such as when the package crashes on startup)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In addition, sometimes we pull up updates to packages if they are &amp;ldquo;leaves&amp;rdquo; and&#xA;stop working without regular updates. Some web scrapers, for example, need&#xA;regular updates to keep up with changes in the sites they scrape.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Tale of Two Spellcheckers</title>
      <link>https://bentsukun.ch/posts/pkgsrccon-2019/</link>
      <pubDate>Mon, 15 Jul 2019 20:44:00 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/pkgsrccon-2019/</guid>
      <description>&lt;p&gt;This is a transcript of the talk I gave at &lt;a href=&#34;https://pkgsrc.org/pkgsrcCon/2019/&#34;&gt;pkgsrcCon 2019&lt;/a&gt; in Cambridge, UK. It&#xA;is about spellcheckers, but there are much more general software engineering&#xA;lessons that we can learn from this case study.&lt;/p&gt;&#xA;&lt;p&gt;The reason I got into this subject at all was my paternal leave last year, when&#xA;I finally had some more time to spend working on pkgsrc. It was a tiny item in&#xA;the enormous &lt;code&gt;TODO&lt;/code&gt; file at the top of the source tree (&amp;ldquo;update enchant to&#xA;version 2.2&amp;rdquo;) that made me go into this rabbit hole.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pkgsrccon 2019: Talk Announcement</title>
      <link>https://bentsukun.ch/posts/pkgsrccon-2019-ann/</link>
      <pubDate>Tue, 02 Jul 2019 19:29:04 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/pkgsrccon-2019-ann/</guid>
      <description>&lt;p&gt;In a few weeks, on the weekend of July 13 and 14, the annual &lt;a href=&#34;https://pkgsrc.org/&#34;&gt;pkgsrc&lt;/a&gt;&#xA;conference, &lt;a href=&#34;http://pkgsrc.org/pkgsrcCon/2019/&#34;&gt;pkgsrcCon 2019&lt;/a&gt;, will take place in Cambridge, UK. Whether you are&#xA;a user or developer of pkgsrc, this is a really nice place to meet the&#xA;developers and spend some time hacking together and listening to talks.&lt;/p&gt;&#xA;&lt;p&gt;My talk this year was originally supposed to be about Go module support in&#xA;pkgsrc, but that work did not get done in time. So instead, I will talk about&#xA;something entirely different:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Supporting Go Modules in pkgsrc (Part 2)</title>
      <link>https://bentsukun.ch/posts/go-mod-support-2/</link>
      <pubDate>Tue, 30 Apr 2019 20:19:43 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/go-mod-support-2/</guid>
      <description>&lt;p&gt;This announcement dropped today:&lt;/p&gt;&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;The &lt;a href=&#34;https://twitter.com/hashtag/golang?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#golang&lt;/a&gt; Module Mirror (~caching proxy), Index, and Checksum DB have launched:&lt;a href=&#34;https://t.co/IrUZXimjCk&#34;&gt;https://t.co/IrUZXimjCk&lt;/a&gt;&lt;a href=&#34;https://t.co/sO1wvgsKxx&#34;&gt;https://t.co/sO1wvgsKxx&lt;/a&gt;&lt;a href=&#34;https://t.co/8XrlUF3cX5&#34;&gt;https://t.co/8XrlUF3cX5&lt;/a&gt;&lt;br&gt;&lt;br&gt;Announcement:&lt;a href=&#34;https://t.co/kjWK58OKsb&#34;&gt;https://t.co/kjWK58OKsb&lt;/a&gt;&lt;br&gt;&lt;br&gt;Props to team. (I did nothing.)&lt;br&gt;&lt;br&gt;🚀🎉&lt;/p&gt;&amp;mdash; Brad Fitzpatrick (@bradfitz) &lt;a href=&#34;https://twitter.com/bradfitz/status/1122966144346759168?ref_src=twsrc%5Etfw&#34;&gt;April 29, 2019&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#34;https://platform.twitter.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&lt;p&gt;I realized that this is the missing piece for supporting Go modules in pkgsrc.&#xA;If you go back and reread the &amp;ldquo;fetch&amp;rdquo; section in &lt;a href=&#34;https://bentsukun.ch/posts/go-mod-support&#34;&gt;Supporting Go Modules in&#xA;pkgsrc&lt;/a&gt;, it seems a bit awkward compared to a standard fetch action. The&#xA;reason is that &lt;code&gt;go mod download&lt;/code&gt; re-packs the source into its own zip format&#xA;archive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pkgsrc Buildbots</title>
      <link>https://bentsukun.ch/posts/pkgsrc-buildbots/</link>
      <pubDate>Mon, 04 Feb 2019 17:15:42 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/pkgsrc-buildbots/</guid>
      <description>&lt;p&gt;After talking to Sijmen Mulder on IRC (thanks, TGV Wi-Fi!), I began thinking more about how you could automate the pkgsrc release engineers away.&lt;/p&gt;&#xA;&lt;p&gt;The basic idea for a buildbot would be this:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Download and unpack latest pkgsrc.tar.gz for the stable branch.&lt;/li&gt;&#xA;&lt;li&gt;Run the pullup script with the ticket number, then run whatever pullup script it outputs.&lt;/li&gt;&#xA;&lt;li&gt;Figure out the package that this concerns (perhaps from filenames).&lt;/li&gt;&#xA;&lt;li&gt;Go to the package in question, install its dependencies from binary packages.&lt;/li&gt;&#xA;&lt;li&gt;Build (&lt;code&gt;make package&lt;/code&gt; is probably enough, or perhaps also install?).&lt;/li&gt;&#xA;&lt;li&gt;Upload build log to Cloud Storage.&lt;/li&gt;&#xA;&lt;li&gt;Post an email to the pullup thread with status and a link to the log.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;For extra points, do this in a fresh, ephemeral VM, triggered by an incoming mail.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Supporting Go Modules in pkgsrc, a Proposal</title>
      <link>https://bentsukun.ch/posts/go-mod-support/</link>
      <pubDate>Sat, 29 Dec 2018 13:12:02 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/go-mod-support/</guid>
      <description>&lt;p&gt;Go 1.11 introduced a new way of building Go code that no longer needs a &lt;code&gt;GOPATH&lt;/code&gt; at all. In due course, this will&#xA;become the default way of building. What&amp;rsquo;s more, sooner or later, we are going to want to package software that&#xA;&lt;em&gt;only&lt;/em&gt; builds with modules.&lt;/p&gt;&#xA;&lt;p&gt;There should be some package-settable variable that controls whether you want to use modules or not. If you are going&#xA;to use modules,  then the repo should have a &lt;code&gt;go.mod&lt;/code&gt; file. Otherwise (e.g. if there is a &lt;code&gt;dep&lt;/code&gt; file or something),&#xA;the build could start by doing &lt;code&gt;go mod init&lt;/code&gt; (which needs to be after &lt;code&gt;make extract&lt;/code&gt;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Race Condition at the Pool</title>
      <link>https://bentsukun.ch/posts/race-condition-at-the-pool/</link>
      <pubDate>Tue, 20 Nov 2018 20:10:09 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/race-condition-at-the-pool/</guid>
      <description>&lt;p&gt;Recently, I stumbled upon an odd race condition, at the local public pool of&#xA;all places. The following workflow, which should be standard, does not work:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Buy a 10-entry ticket and pay with debit card.&lt;/li&gt;&#xA;&lt;li&gt;Immediately try to redeem one entry to, well, go for a swim.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The freshly printed card will be declined, and you have to ask for help. When&#xA;you leave (because this is Switzerland and everyone is honest, right!?), you&#xA;hand in the card at the cash desk, and it is perfectly fine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pkgsrc: Upgrading, Part 1</title>
      <link>https://bentsukun.ch/posts/pkgsrc-upgrade1/</link>
      <pubDate>Sat, 10 Nov 2018 18:46:40 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/pkgsrc-upgrade1/</guid>
      <description>&lt;p&gt;&lt;em&gt;I found this text in my post drafts, where it had been sitting for a bit.&#xA;Consider this the first part of a series on keeping pkgsrc up to date.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you have not upgraded the packages in your pkgsrc installation in a while,&#xA;you might be so far behind on updates that most or all your packages are&#xA;outdated. Now what?&lt;/p&gt;&#xA;&lt;p&gt;The easiest way to update you packages in order is to simply use&#xA;&lt;a href=&#34;http://pkgsrc.se/pkgtools/pkg_rolling-replace&#34;&gt;&lt;code&gt;pkg_rolling-replace&lt;/code&gt;&lt;/a&gt;. Update your pkgsrc tree (either to the latest from&#xA;cvs, or to a supported quarterly release), then simply run&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build Systems: CMake and Autotools</title>
      <link>https://bentsukun.ch/posts/build-systems/</link>
      <pubDate>Sat, 10 Nov 2018 17:53:22 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/build-systems/</guid>
      <description>&lt;p&gt;&lt;strong&gt;I think I am finally warming up to CMake&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Eight years ago (at &lt;a href=&#34;https://fosdem.org/&#34;&gt;FOSDEM&lt;/a&gt; 2010), I gave a talk on build systems that explains&#xA;the fundamentals of automake, autoconf and libtool:&lt;/p&gt;&#xA;&lt;iframe src=&#34;//www.slideshare.net/slideshow/embed_code/key/3TWxVBByTyeiE3&#34;&#xA;width=&#34;595&#34; height=&#34;485&#34; frameborder=&#34;0&#34; marginwidth=&#34;0&#34; marginheight=&#34;0&#34;&#xA;scrolling=&#34;no&#34; style=&#34;border:1px solid #CCC; border-width:1px;&#xA;margin-bottom:5px; max-width: 100%;&#34; allowfullscreen&gt; &lt;/iframe&gt; &lt;div&#xA;style=&#34;margin-bottom:5px&#34;&gt; &lt;strong&gt; &lt;a&#xA;href=&#34;//www.slideshare.net/bsiegert/build-systems-with-autoconf-automake-and-libtool&#34;&#xA;title=&#34;Build Systems with autoconf, automake and libtool [updated]&#34;&#xA;target=&#34;_blank&#34;&gt;Build Systems with autoconf, automake and libtool [updated]&lt;/a&gt;&#xA;&lt;/strong&gt; by &lt;strong&gt;&lt;a href=&#34;//www.slideshare.net/bsiegert&#34;&#xA;target=&#34;_blank&#34;&gt;Benny Siegert&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;&#xA;&lt;p&gt;There is nothing in this talk that is no longer valid today as far as I can see,&#xA;though CMake was &amp;ldquo;newfangled&amp;rdquo; then and is a lot less so today. In any case, my&#xA;conclusion still stands:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Working categories</title>
      <link>https://bentsukun.ch/posts/categories/</link>
      <pubDate>Sun, 05 Aug 2018 14:43:49 +0300</pubDate>
      <guid>https://bentsukun.ch/posts/categories/</guid>
      <description>&lt;p&gt;Vacation is a good time for some housekeeping. So I managed to get categories&#xA;for posts working! In the process, I learned a bit about how&#xA;&lt;a href=&#34;https://gohugo.io/&#34;&gt;hugo&lt;/a&gt; works.&lt;/p&gt;&#xA;&lt;p&gt;Hugo automatically creates so-called &lt;em&gt;taxonomies&lt;/em&gt; for tags and categories. The&#xA;theme I have been using only shows categories in the header itself. And I&#xA;managed to &lt;em&gt;disable&lt;/em&gt; the categories taxonomy in the config file. And I got the&#xA;syntax for specifying them wrong.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 10 April Update, unbootable system</title>
      <link>https://bentsukun.ch/posts/april-update/</link>
      <pubDate>Wed, 09 May 2018 18:44:00 +0200</pubDate>
      <guid>https://bentsukun.ch/posts/april-update/</guid>
      <description>&lt;p&gt;A few days ago, I installed the Windows 10 “April update”, and it broke my GRUB installation. What happened?&lt;/p&gt;&#xA;&lt;p&gt;My primary disk has an MBR partition table. (Apparently, booting from GPT requires using UEFI, which exposes a whole new exciting set of firmware bugs.) GRUB was installed in a small ext2 partition (primary partition #3), while primary partitions #1 and #2 were used by Windows 10. Installing the April update created another primary partition and &lt;em&gt;moved my ext2 partition to slot #4&lt;/em&gt; so grub can no longer find its files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Blog!</title>
      <link>https://bentsukun.ch/posts/new-blog/</link>
      <pubDate>Thu, 18 Jan 2018 19:44:52 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/new-blog/</guid>
      <description>&lt;p&gt;My new year&amp;rsquo;s resolution for 2018 has been to blog more. So I decided to create&#xA;an actual blog!&lt;/p&gt;&#xA;&lt;p&gt;It started with me closing my Amazon AWS account and writing about it. The&#xA;posting was up as a Gist on Github, and I shared that URL. This does give&#xA;a useful viewer and the ability to add comments, but it is hardly discoverable.&#xA;Anyway, the post was somewhat widely circulated (the provocative title certainly&#xA;helped) and even made it to&#xA;&lt;a href=&#34;https://www.reddit.com/r/BSD/comments/7hjy1x/leaving_aws/&#34;&gt;Reddit&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leaving AWS</title>
      <link>https://bentsukun.ch/posts/leaving-aws/</link>
      <pubDate>Sun, 03 Dec 2017 22:16:42 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/leaving-aws/</guid>
      <description>&lt;p&gt;Today, I deleted my Amazon AWS account.&lt;/p&gt;&#xA;&lt;figure&gt;&lt;img src=&#34;https://bentsukun.ch/img/close-aws-account.png&#34; width=&#34;100%&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;And done!&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;I had been on AWS since about 2011. My usage was mainly for two things:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Saving large amounts of files (build logs and such) on S3;&lt;/li&gt;&#xA;&lt;li&gt;Running NetBSD VMs on EC2.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;EC2 is based on Xen, and NetBSD runs really well in PV (paravirtualized) mode on Xen. However, &lt;a href=&#34;https://xenbits.xen.org/xsa/advisory-240.html&#34;&gt;XSA-240&lt;/a&gt; means that a malicious PV guest may crash (or even otherwise exploit) the hypervisor, with the recommended fix being to not run untrusted PV guests. Over night, Amazon disabled PV, making NetBSD VMs useless.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Packaging Go code in pkgsrc</title>
      <link>https://bentsukun.ch/talks/fosdem2017/</link>
      <pubDate>Fri, 03 Feb 2017 20:25:36 +0200</pubDate>
      <guid>https://bentsukun.ch/talks/fosdem2017/</guid>
      <description></description>
    </item>
    <item>
      <title>New Features in BulkTracker</title>
      <link>https://bentsukun.ch/talks/pkgsrccon2015/</link>
      <pubDate>Sat, 04 Jul 2015 15:00:00 +0100</pubDate>
      <guid>https://bentsukun.ch/talks/pkgsrccon2015/</guid>
      <description></description>
    </item>
    <item>
      <title>blog @ TNF</title>
      <link>https://bentsukun.ch/posts/blog-tnf/</link>
      <pubDate>Tue, 20 Mar 2012 20:53:03 +0100</pubDate>
      <guid>https://bentsukun.ch/posts/blog-tnf/</guid>
      <description>&lt;p&gt;So now I am even &lt;a href=&#34;http://blog.NetBSD.org/tnf/entry/new_netbsd_flyers_available&#34;&gt;posting over at&#xA;TNF&lt;/a&gt; on&#xA;&lt;a href=&#34;http://blog.NetBSD.org/&#34;&gt;http://blog.NetBSD.org/&lt;/a&gt;. Julian Fagir made new NetBSD flyers, and I committed&#xA;them to the TNF website.&lt;/p&gt;&#xA;&lt;p&gt;I know that I should write more here but there is not much new on the&#xA;MirBSD front.&lt;/p&gt;&#xA;&lt;p&gt;I updated the showcase to NetBSD-6_BETA on the Dom0, and now X refuses&#xA;to start. Oh well. X does start when using a GENERIC kernel. This is&#xA;very bad for showcase use, of course :(. pkgsrc is going into freeze&#xA;very soon, and I did not do a whole lot of MirBSD fixes this time&#xA;around. This is due to illness, searching for a new job, and working on&#xA;&lt;a href=&#34;https://golang.org/&#34;&gt;the Go programming language&lt;/a&gt;, which is&#xA;expected to hit version 1.0 Real Soon Now(TM).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
