I have stuggled with writing this for a while. This has the potential to| bentsukun.ch
I stopped developing pkgsrc with CVS.| bentsukun.ch
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 we realized that we actually needed to write down a plan for bringing the software to a stable, usable...| benzblog
| benzblog
Introduction to https://github.com/bsiegert/BulkTracker. Introducing some new features such as per-package results, a JSON API, and starting to think about changing the data model and use a SQL DB.| bentsukun.ch
This is part 3 of my blog post series about emulating BSD operating systems for| bentsukun.ch
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.| bentsukun.ch
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.| bentsukun.ch
A while ago, I installed Fedora Asahi Remix on my M2| bentsukun.ch
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 someone’s (mis-)use. Why does this not compile?| benzblog
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.| bentsukun.ch
Over the Easter weekend 2024, there was a big kerfuffle around a compression| bentsukun.ch
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 dives into the most important new features of NetBSD 10, such as performance and security improvements, expanded CPU and GPU support, improved virtualization and more!| bentsukun.ch
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 conference, I mostly did not give a shit about the results themselves.| benzblog
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 Name schon sagt, ist es eine Sammlung von Quellpaketen, also Rezepten, um Software aus dem Quelltext zu bauen.| benzblog
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 veut gagner des millons?| benzblog
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 developers.) Flight Tracking All of these OSes are very eager to support you with flight tickets and boarding passes.| benzblog
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 point and make a more productive use of the remaining time.| benzblog
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 because it is small and provides excellent bindings in both directions – Lua code can call native code, and vice versa.| benzblog
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, Illumos and more. On the other hand, unfortunately, pkgsrc and NetBSD in general are suffering from what I would call a loss of mi...| benzblog
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 post much. Eventually, the person running the Pod died, and their family ended up switching it off.| benzblog
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 be fair, in addition to showing the time and tracking fitness data, it does many other things that I don’t need.| benzblog
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 won’t work; despite that, we used a subset and were somewhat successful with it.| benzblog
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: rpc error: code = ResourceExhausted desc = Quota exceeded.| benzblog
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 name turned into a link?| benzblog
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 use the go tool to build Go code.| benzblog
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, at least according to the guest OS chooser in the TrueNAS web UI :) But since the release of NetBSD 9 a while ago, things ha...| benzblog
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 … not working so well. Don’t believe Tech is unique A refinery is a distributed system.| benzblog
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 back, so I am excited to give it fast storage :)| benzblog
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 automation is available to you.| benzblog
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. Unfortunately, these things are always kinda the same.| benzblog
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 (v8-A), id 0x3 [ 1.000000] cpu4 at cpus0: Arm Cortex-A72 r0p2 (v8-A), id 0x100 [ 1.| benzblog
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 eMMC, so the system will boot from there.| benzblog
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 my first impressions.| benzblog
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 the stable branch. Typical justifications for pull-ups are: security updates build fixes important bug fixes (such as when the package crash...| benzblog
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 TODO file at the top of the source tree (“update enchant to version 2.| benzblog
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 that work did not get done in time.| benzblog
This announcement dropped today: I realized that this is the missing piece for supporting Go modules in pkgsrc. If you go back and reread the “fetch” section in Supporting Go Modules in pkgsrc, it seems a bit awkward compared to a standard fetch action. The reason is that go mod download re-packs the source into its own zip format archive. The module proxy (https://proxy.golang.org/) solves this problem and enables a simple solution for modules, very similar to lang/rust/cargo.| benzblog
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 that this concerns (perhaps from filenames). Go to the package in question, install its dependencies from binary packages.| benzblog
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 modules, then the repo should have a go.| benzblog
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 this is Switzerland and everyone is honest, right!| benzblog
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 use pkg_rolling-replace.| benzblog
I think I am finally warming up to CMake. Eight years ago (at FOSDEM 2010), I gave a talk on build systems that explains the fundamentals of automake, autoconf and libtool: There is nothing in this talk that is no longer valid today as far as I can see, though CMake was “newfangled” then and is a lot less so today. In any case, my conclusion still stands: Don’t try to reinvent the wheel, use a popular build system.| benzblog
Vacation is a good time for some housekeeping. So I managed to get categories for posts working! In the process, I learned a bit about how hugo works. Hugo automatically creates so-called taxonomies for tags and categories. The theme I have been using only shows categories in the header itself. And I managed to disable the categories taxonomy in the config file. And I got the syntax for specifying them wrong.| benzblog
A few days ago, I installed the Windows 10 “April update”, and it broke my GRUB installation. What happened? 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 moved my ext2 partition to slot #4 s...| benzblog
My new year’s resolution for 2018 has been to blog more. So I decided to create an actual blog! It started with me closing my Amazon AWS account and writing about it. The posting was up as a Gist on Github, and I shared that URL. This does give a useful viewer and the ability to add comments, but it is hardly discoverable. Anyway, the post was somewhat widely circulated (the provocative title certainly helped) and even made it to Reddit.| benzblog
Today, I deleted my Amazon AWS account. And done! I had been on AWS since about 2011. My usage was mainly for two things: Saving large amounts of files (build logs and such) on S3; Running NetBSD VMs on EC2. EC2 is based on Xen, and NetBSD runs really well in PV (paravirtualized) mode on Xen. However, XSA-240 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.| benzblog
| benzblog
I updated the showcase to NetBSD-6_BETA on the Dom0, and now X refuses| bentsukun.ch
I installed Fedora 39 the other day. (More on that in one of the next posts.) It| bentsukun.ch
When I used OpenBSD, I was a big fan of bsd.rd: a kernel that includes a root| bentsukun.ch