blog.8-p.info

The Tragedy of systemd

systemd is, to put it mildly, controversial. As a FreeBSD developer I decided I wanted to know why.

I delved into the history of bootstrap systems, and even the history of UNIX and other contemporary operating systems, to try and work out why something like systemd was seem as necessary, if not desirable. I also tried to work out why so many people found it so upsetting, annoying, or otherwise rage-inducing.

Join me on a journey through the bootstrap process, the history of init, the reasons why change can be scary, and the discovery of a part of your OS you may not even know existed.

The word “tragedy” is too clickbaity for this little blog. Anyway, this talk is great.

karino2 has been writing a lot about F# nowadays. So, I gave it a try.

% dotnet new console -lang 'F#' -o hello-fsharp
The template "Console Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on hello-fsharp/hello-fsharp.fsproj...
  Determining projects to restore...
  Restored /Users/kazuyoshi/hello-fsharp/hello-fsharp.fsproj (in 112 ms).
Restore succeeded.

%

Then dotnet build builds the project. It looks simple.

% dotnet build
Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  All projects are up-to-date for restore.
  hello-fsharp -> /Users/kazuyoshi/hello-fsharp/bin/Debug/net5.0/hello-fsharp.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:03.98
%

Wait? hello-fsharp.dll? Didn’t it say “Console Application” in the beginning?

% file bin/Debug/net5.0/hello-fsharp.dll
bin/Debug/net5.0/hello-fsharp.dll: PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows
%

Hey! This is macOS… What can I do with the PE32 executable? Apparently I have to tell dotnet that the runtime is osx.10.11-x64.

% dotnet publish --runtime osx.10.11-x64
Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  Restored /Users/kazuyoshi/hello-fsharp/hello-fsharp.fsproj (in 167 ms).
  hello-fsharp -> /Users/kazuyoshi/hello-fsharp/bin/Debug/net5.0/osx.10.11-x64/hello-fsharp.dll
  hello-fsharp -> /Users/kazuyoshi/hello-fsharp/bin/Debug/net5.0/osx.10.11-x64/publish/
% file ./bin/Debug/net5.0/osx.10.11-x64/hello-fsharp
./bin/Debug/net5.0/osx.10.11-x64/hello-fsharp: Mach-O 64-bit executable x86_64
% otool -L ./bin/Debug/net5.0/osx.10.11-x64/hello-fsharp
./bin/Debug/net5.0/osx.10.11-x64/hello-fsharp:
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
%

Finally…

% ./bin/Debug/net5.0/osx.10.11-x64/hello-fsharp
Hello world from F#
%

Yes!

Why F#?

After writing Go for a few years, I still like functional programming languages. Rust is nice, but doesn’t have GC. There are applications where having GC is fine.

So, a functional programming language that can create a self-contained binary and has GC could be something I want. F# meets these criteria.

I’ve written way too much about not using Twitter last year. It looks crazy.

The 20th Post

I have IFTTT that tweets my new blog posts automatically, but I’m going to disable the integration for at least the next 10 posts.

Twitter

So I may not enable the Twitter integration and be better at handling the silence.

The 30th Post

I’m still not so sure what I’d like to do with Twitter.

Some broken promises

I have also read Twitter more than what I like.

Social Media Saturday is working okay. I still unblock Twitter from time to time. I no longer read Hacker News and Lobsters.

Twitter is designed to be a low-friction, impulsive medium. My “Joining containerd” post got some warm welcome tweets from other maintainers because of the low-friction. But people tweet and fight too much there because of the low-friction.

I had written about Fraidycat in 2020.

I’ve been using Feedly after Google Reader’s shutdown. Before that, I was using livedoor Reader and Bloglines. I may switch from Feedly to Fraidycat.

The switch didn’t happen. I ended up back to Feedly again. I’ve been using RSS readers for a decade 1 and seems I cannot go back anymore.

Kicks, the author of Fraidycat wrote;

This is one reason I was happy to see RSS fall out of favor. I don’t really want to read everything in Arial, gray on white with a little blue. Blog posts that were beautifully arranged in their homes, now stuffed together into a makeshift public shelter of dreary gray and white and chalked around with a little line of blue.

While I can understand this sentiment, I’m so used to that gray-and-white world. I’d like to read all blogs from my RSS reader without leaving there, even that loses a bit of personality.

That being said, Fraidycat is nice. I like the feature that I can follow certain sources intentionally slowly.


  1. Things I’ve been using since college all now fall into “I’ve been using X for more than a decade” bucket, which is overwhelming. Am I that old? ↩︎

This is the 90th post of my 100 Days To Offload challenge. One of the guidelines is

Publish 100 new posts in the space of a year.

I interpret that as “365 days” rather than “before December 31st”. So my challenge was started in 2020, but it will end in 2021. This may be misinterpretation of the original guidelines, but they are guidelines, not rules :)

Anyway, I only have 10 posts remaining. What will I write about?

I’d continue “Inside runc” series. Honestly speaking, it is a bit dull to write about containers, after working on containers at work though. I may look back some of the old posts from this challenge and give readers updates. I always want to write a mid-size program outside of my work and write about its progress. Maybe this time?