RSSAmplifier

Blog

benzblog

Recent content on benzblog

bentsukun.chRSS feed ↗58 posts

Latest posts

Some nuanced thoughts on AI, part 2

It has been a bit over a year since I wrote Some nuanced thoughts on AI . Much of what I said then still stands. 
 On the other hand, the AI models have continued improving. Even more so, the “harness” running it has gone through multiple iterations. Back then, the main mode of interacting with an LLM during coding was through autocomplete. The LLM would guess what you wanted to…

MCP bad?

A while ago, I made an off-hand remark that got some followup questions. I said
that in AI applications, Model Context Protocol (MCP) is no longer a favored
extension model for tools. The question was essentially – Really? What to use
instead? 
 What is the problem with MCP? 
 MCP is a chatty protocol. Connecting to any MCP endpoint will hand the AI model
a full…

It's not Track 9 3/4

I recently spent a week in London, as one does. As I walked through the King’s Cross train station, it struck me: if anything, it should be track 8 3/4 and not 9 3/4 . Let me explain. 
 In case you have been living under a rock: in the Harry Potter book series, the protagonists run through a wall to reach the “hidden” platform 9 3/4, where the Hogwarts Express departs.

Rust in the Kernel, and other odd decisions

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 … stuff. For the first time in a while, I have looked at the bottom – and found an inquiry from someone who had seen my presentation at FOSDEM 2024. 
 They had a question for me, which I am going to paraphrase below. I am…

San Francisco, 2025

Last week, I visited the Bay Area for a business trip. Most of my time was
spent in the South Bay, but I also spent a day in SF. 
 In the afternoon, I went to Ocean beach and dipped my feet in the Pacific
Ocean for a tiny bit. The water was pretty cold! Where I live, we have
beautiful landscapes but the country is landlocked, so going to ocean shore is
special for me.

Booting NetBSD from a wedge, the hard way

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!

Some nuanced thoughts on AI

I have stuggled with writing this for a while. This has the potential to
be controversial: Some people have very strong opinions on this, while
my own opinion is more … nuanced. – 
 I live in two different worlds regarding AI. 
 During the day, I am working in a big tech company that is betting big
on AI. AI is everywhere, and (at least some) people are excited…

Developing pkgsrc with git

I stopped developing pkgsrc with CVS. 
 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. 
 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 cvs up -n . A full…

"Founder Mode"

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. 
 A few months later however, this project went through a difficult phase where…

Tracking Bulk Builds in pkgsrc: from Cloud to NetBSD Native

Emulating *BSD on ARM, Part 3: OpenBSD

This is part 3 of my blog post series about emulating BSD operating systems for
32-bit ARM with QEMU. Buckle up, today we will need to do an actual OS
installation! 
 In OpenBSD/armv7, the miniroot image is an installer, so we also need a new
empty drive image to install to. I recommend the qcow2 format, since it
consumes only the space that is actually occupied. The 10G image…

Emulating *BSD on ARM, Part 2: FreeBSD

In Part 1 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. 
 Spoiler: it was easier than the others. 
 I started by downloading an image from
 https://download.freebsd.org/releases/arm/armv7/ISO-IMAGES/ . Mine was
called
…

Emulating *BSD on ARM, Part 1: Introduction

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. 
 My current rabbit hole is making the “swarming bot” work on NetBSD/arm – that’s 32-bit ARM, not aarch64. When building Go code for 32-bit ARM, the GOARM environment variable can be set to the instruction set version, i.e.…

NetBSD 10 -- 30 Jahre und immer noch da

The code is not enough

In my job, I read a lot of code. I read more code than I write. I suppose
that’s true for many engineers at the senior level or above. 
 For instance, a new piece of code integrates with a library, or with another
code base, and I want to understand how the integration works. Or I am the
supplier of the infrastructure/library/framework and I need to debug…

Fedora Update: btrfs self-destruct

A while ago , I installed Fedora Asahi Remix on my M2
MacBook Air, and I was very positive about it. So positive, in fact, that I
ended up making it the default partition in the bootloader. I haven’t used
macOS in weeks. But then, a few days ago, something weird happened: 
 In the middle of some development work, running cvs update on the pkgsrc 
repository, the screen…

The XZ Backdoor

Over the Easter weekend 2024, there was a big kerfuffle around a compression
tool named xz . Honestly, the story is so amazing that it could be a gripping
novel. In fact, what happened is not dissimilar to the book $ git commit
murder My Michael Warren Lucas. 
 A PostgreSQL developer, Andres Freund, was running some benchmarks and trying
to reduce the noise from other programs…

Fedora Asahi Remix

I have been following Asahi Linux for a while. Linux for my MacBook Air M2 – sure, why not? But I wasn’t particularly interested in a distribution based on Arch Linux. 
 In late 2023, the Asahi folks presented a new distro that they called Fedora Asahi Remix . The promise is to combine the ground-breaking Kernel development of Asahi with the polish of Fedora Linux. I thought I…

NetBSD 10: Thirty Years, Still Going Strong!

In 2023, the NetBSD project celebrated 30 years since its first release, 0.8.
Now, four years after NetBSD 9, NetBSD 10 brings a huge number of changes and
improvements. This talk will dive into the most important new features of
NetBSD 10, such as performance and security improvements, expanded CPU and
GPU support, improved virtualization and more! 
 Another strength of NetBSD…

The VS Code Flatpak is useless

I installed Fedora 39 the other day. (More on that in one of the next posts.) It
has a nifty software installer thing named “Discover”. When I typed “Visual
Studio Code” into the search box, it dutifully installed VS Code. As a Flatpak. 
 This was the first time I interacted with Flatpak, and it did not go well. 
 Aside: Why VS Code 
 I want to use VS…

Building a NetBSD ramdisk kernel

When I used OpenBSD, I was a big fan of bsd.rd : a kernel that includes a root
file system with an installer and a few tools. When I invariably did something
bad to my root file system, I could use that to repair things. bsd.rd is
also helpful for OS updates. And there is only a single file involved. 
 On NetBSD however, there is usually no netbsd.rd kernel installed, or…

Talk about the Basics

Whenever I send around a Call for Papers for an open source conference, some
people reply something like 
 
 Unfortunately, I don’t have anything to present right now. My work on XYZ is
simply not far enough along. 
 
 Or similar. However, this does not matter. 
 I’ll let you in on a secret: When I was in academia, when someone was talking
about their results at a…

pkgsrc statt Containern!

1. 
 Es gibt da dieses Betriebssystem, und es ist nicht Linux. 
 NetBSD. 
 NetBSD besteht nicht nur aus einem Kernel, sondern aus einem Basissystem, in dem
auch eine Shell, ein Compiler, der X-Server, usw. ist. Aber zum Beispiel kein
Firefox. 
 Was mache ich jetzt, wenn ich aber Firefox installieren möchte? 
 Dafür gibt es pkgsrc, gesprochen „package source“. Wie der…

Culture is about the small things

I have lived outside the country I was born in for more than 17 years now. 
 When I lived in France, I eventually had a pretty good grasp of the language. I
could give tech talks, write reports, talk to my coworkers, neighbours and
friends — including casual banter and that sort of thing. I like to think that
I actually fit in pretty well. 
 However, one evening I watched Qui…

Operating Systems, Transit and Cultural Influences

All of the dominant commercial operating systems in desktop and mobile
computing — macOS, iOS, Windows, Android, Chrome OS — are made in the US,
on the West Coast. Except for Microsoft, they are heavily concentrated in
the SF Bay Area. (Note that I am not talking about free software such as
GNU/Linux, BSD, etc., which is probably more diverse regarding the location
of their…

On Meetings

I recently made two LinkedIn posts about meetings. I thought it would make
sense to reproduce them here for posterity. 
 Normalize ending meetings early. 
 If you have scheduled a 1-hour meeting but you are done with your agenda after
30 minutes, there is no need to scramble to think about more things to say. No
one will judge you (hopefully) if you just end the meeting at that…

Using Lua from Go

Last weekend, at FOSDEM 2023 , I watched a Lightning Talk
by Frank Vanbever titled “Lua for the Lazy C
developer” .
I had recently suggested at work that we should be using Lua to script the
behavior of some systems which are written in Go, so the talk strongly
resonated with me. 
 Lua is an ideal scripting language for embedding into other programs…

pkgsrc and a Call for Action

I have been a pkgsrc developer for several years. For what it’s worth, I think
pkgsrc is wonderful: a large selection of third-party software, packaged so
that it is easy to install with a single command – either building everything
from source, or relying on binary packages. pkgsrc supports dozens of OSes –
not just NetBSD but also other BSDs, macOS, Linux,…

Over to Mastodon, I guess

It took me quite a while to realize that I have been here before. 
 When Google+ (the greatest social network I have used, by the way) was killed,
somebody spun up Pluspora as a refuge. It was a Pod of something called
 diaspora . It was nice in the beginning, then
gradually I interacted with it less – since, TBH, there wasn’t much content,
and I also didn’t…

Using a Mi Band with Strava

I have used a Mi Band as a smartwatch / fitness tracking device for the last
couple years. Compared to, say, a Wear OS device, it offers a vastly better
deal: 
 
 It’s cheap, at around 30-40 CHF. 
 The battery lasts several weeks. 
 It shows the time and tracks steps and movement. 
 
 The Wear OS device costs 5-10 times as much and needs daily charging. To…

Agile Development: Micromanage yourself

Recently, I was thinking about one of my previous software development teams at
work. Our program manager was a former Scrum master, so he taught us the basics
of the Scrum method, which is one of the Agile development methodologies. 
 Now, the funny thing was that Scrum includes a number of rituals and techniques,
and the book essentially states that you must do all of them or it…

The BulkTracker Outage

I have been running the BulkTracker web app for keeping track of pkgsrc 
bulk package build results since about 2015. 
 After running without problems since the start (!!), the BulkTracker app had its
first outage in November of 2021. It turns out that the function that renders
the home page returns a 500 if it gets an error from Datastore. The error that
was returned was:…

go-modules.mk

The BSD build system in general, and pkgsrc in particular, have a large number
of Makefiles ending in .mk . 
 Recently, I was looking at a commit message in Gmail and noticed that these
names are linkified. At the time, I was looking at a Go module
package , where there is a
 go-modules.mk file containing details about
dependencies. This got me thinking: Why is this file…

More Go modules in pkgsrc

This weekend, I made a series of somewhat unusual changes to pkgsrc. 
 I removed a bunch of Go packages. 
 Why? Because of Go modules . 
 What are Go modules? 
 Since my series of design-ish blog posts( part 1 , part 2 ), Go module builds
have fully landed in pkgsrc, to the point that they are now the preferred way to
build Go packages. 
 To recap: There are two ways to…

NetBSD VM on bhyve (on TrueNAS)

My new NAS at home is running TrueNAS Core . So far, it has been excellent,
however I struggled a bit setting up a NetBSD VM on it. Part of the problem is
that a lot of the docs and how-tos I found are stale, and the information in it
no longer applies. 
 TrueNAS Core allows running VMs using bhyve , which is FreeBSD’s hypervisor.
NetBSD is not an officially supported OS,…

The Refinery, an Analogy for Distributed Systems

Back when I was in Engineering school , my
first-year internship happened in a refinery. In retrospect, this turned out
to be extremely relevant for my current job in tech. 
 The subject of my internship was the optimization of an existing process. The
unit had been planned on paper by an engineer on another continent, installed
according to specs, and it turned out to be…

SSD Rochade

My desktop PC has two NVMe drives, one for Windows and one for NetBSD. With
Steam game footprints being what they are, the Windows one (256 GB) has been
perpetually overfull, so it was time for something bigger. 
 At the same time, I had bought an NVMe daughter board for my
 Pinebook Pro . My impression with the PBP is that
the I/O performance of the eMMC module is holding it…

Reflections on Ops

I never spent much time toiling in the “sysadmin job” mines, though my first
job was user support and admin. Later, I joined Google SRE and worked with
both world-class and mediocre tools. As a junior SRE, you are mostly a user 
of these tools, though it is easy to pat yourself on the back and think of
yourself as better than the run-of-the-mill admin because all this…

pkgsrc Developer Monotony

Somehow, my contributions to NetBSD and pkgsrc have become monotonous.
Because I am busy with work, family and real life, the amount of time I can
spend on open source is fairly limited, and I have two commitments that I try
to fulfill: 
 
 Member of pkgsrc-releng: I process most of the pull-ups to the stable
quarterly branch. 
 Maintainer of Go and its infrastructure.…

Using CPU Subsets for Building Software

Like many ARM CPUs, the one in the Pinebook Pro has a “big.LITTLE”
architecture, where some cores are more powerful than others: 
 [ 1.000000] cpu0 at cpus0: Arm Cortex-A53 r0p4 (v8-A), id 0x0
[ 1.000000] cpu1 at cpus0: Arm Cortex-A53 r0p4 (v8-A), id 0x1
[ 1.000000] cpu2 at cpus0: Arm Cortex-A53 r0p4 (v8-A), id 0x2
[ 1.000000] cpu3 at cpus0: Arm Cortex-A53 r0p4…

Getting Started with NetBSD on the Pinebook Pro

If you buy a Pinebook Pro now, it comes with Manjaro Linux on the internal eMMC storage. Let’s install NetBSD instead! 
 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…

Pinebook Pro, First Impressions

Note: This post was written on the Pinebook Pro :) 
 After seeing it in action at FOSDEM (from afar, as the crowd was too
large), I decided to buy a Pinebook Pro for personal use. From the
beginning, the intention was to use it for pkgsrc development, with
NetBSD as the main OS. It was finally delivered on Thursday, one day
earlier than promised, so I thought I would write down…

How to do Pull-ups to pkgsrc-stable

I am part of the pkgsrc releng (release engineering) team. My main task there is
handling pull-ups into the stable branch. 
 pkgsrc creates a stable branch every three months and names it after the
respective quarter – for example, the last branch was called 2019Q4. Pull-ups
are tickets to “pull up” one or more commit from the development branch into…

A Tale of Two Spellcheckers

This is a transcript of the talk I gave at pkgsrcCon 2019 in Cambridge, UK. It
is about spellcheckers, but there are much more general software engineering
lessons that we can learn from this case study. 
 The reason I got into this subject at all was my paternal leave last year, when
I finally had some more time to spend working on pkgsrc. It was a tiny item in
the enormous…

pkgsrccon 2019: Talk Announcement

In a few weeks, on the weekend of July 13 and 14, the annual pkgsrc 
conference, pkgsrcCon 2019 , will take place in Cambridge, UK. Whether you are
a user or developer of pkgsrc, this is a really nice place to meet the
developers and spend some time hacking together and listening to talks. 
 My talk this year was originally supposed to be about Go module support in
pkgsrc, but…

Supporting Go Modules in pkgsrc (Part 2)

This announcement dropped today: 
 The #golang Module Mirror (~caching proxy), Index, and Checksum DB have launched: https://t.co/IrUZXimjCk https://t.co/sO1wvgsKxx https://t.co/8XrlUF3cX5 Announcement: https://t.co/kjWK58OKsb Props to team. (I did nothing.) 🚀🎉 — Brad Fitzpatrick (@bradfitz) April 29, 2019 
 I realized that this is the missing piece for supporting Go modules in…

Pkgsrc Buildbots

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. 
 The basic idea for a buildbot would be this: 
 
 Download and unpack latest pkgsrc.tar.gz for the stable branch. 
 Run the pullup script with the ticket number, then run whatever pullup script it outputs. 
 Figure out the package…

Supporting Go Modules in pkgsrc, a Proposal

Go 1.11 introduced a new way of building Go code that no longer needs a GOPATH at all. In due course, this will
become the default way of building. What’s more, sooner or later, we are going to want to package software that
 only builds with modules. 
 There should be some package-settable variable that controls whether you want to use modules or not. If you are going
to use…

Race Condition at the Pool

Recently, I stumbled upon an odd race condition, at the local public pool of
all places. The following workflow, which should be standard, does not work: 
 
 Buy a 10-entry ticket and pay with debit card. 
 Immediately try to redeem one entry to, well, go for a swim. 
 
 The freshly printed card will be declined, and you have to ask for help. When
you leave (because…

pkgsrc: Upgrading, Part 1

I found this text in my post drafts, where it had been sitting for a bit.
Consider this the first part of a series on keeping pkgsrc up to date. 
 If you have not upgraded the packages in your pkgsrc installation in a while,
you might be so far behind on updates that most or all your packages are
outdated. Now what? 
 The easiest way to update you packages in order is to simply…