Dicking around with D-Bus

D-Bus has been present on the Linux desktop for a long time, but it’s often also availabe on servers. Systemd’s suite of tools expose pretty much everything on D-Bus, and more and more using Varlink. This means I can work against a stable API, instead of scripting systemctl. This post is a tutorial and brain dump for myself. I hope it’s useful to others too. Concepts Aside from the broker itself, to work with D-Bus you need to know about:

Read More

BeyondCorp @ Home: OpenID Connect Provider with Rauthy

In a previous post I showed how to use Dex as an IdP. It’s a simple and small IdP ideal for home labs and self-hosting. However, Dex is pretty limited, keeps targetting cloud native deployments and keeps insisting that a database like SQLite is not appropriate for “real workloads.” I disagree. I’m not going to show you how to set things up this time, but I am going to point you at Rauthy.

Read More

Self-hosting things again

It’s 2025. The world is not doing great, and as a queer person Anglosphere tech corporations are now something I have to actively consider as part of my threat model. This was already a problem for many folks in the queer community, I was just lucky enough that in my case the risk remained acceptable. With a fascist regime installed in the US and tech corporations gleefully embracing it, depending on those corporations is no longer an option.

Read More

Removing AI stories from tech news aggregators with uBlock

I like to use tech news aggregators like HN or Lobsters to find new things to read. There are often interesting things on there, and they’ve helped me discover many blogs that I end up adding to my feed reader. I avoid the comment section though, and have uBlock rules that remove them and the login links. This has helped me unlearn the habit of checking the comments doing wonders for my mental health.

Read More

Fairy: a library for building friendly CLIs in Go

Why did I build my own when there’s a hundred of these already? Because I don’t like how most of the others work. Fairy 🧚 only uses Go’s flag package underneath. There’s no custom flag parsing involved, but it can do some things Go’s standard library package doesn’t provide. I quite like Go’s flag package. I don’t care that it doesn’t do GNU-style opts, that it’s not perfectly docopt etc. It fits my needs 95% of the time and unless you need a hyperscale Cloud Native CNCF approved CLI it probably is enough for just about any project.

Read More

Setting up OpenTelemetry in Go

This blog post is technically incorrect. It only aims to give you an in practice correct enough understanding of using OpenTelemetry in your Go projects and how to set it up. Lets dive in. Update 2024-05-02: Code has been updated to use the autoexport package to simplify setup a lot. Concepts There are a few concepts we need to be aware of: Providers. Meters and Tracers. Metric instruments and Spans. Exporters.

Read More

Migrating to Codeberg

Github has always been a very enticing code forge. You get a lot of things for free. Code hosting, decent issue management, Gists, Pages, CI etc. Of course, all of these things are also there to make the service more sticky. They’ve moved the baseline expectations of the services a forge should provide for free so far up it’s hard for entities without VC capital or Microsoft’s war chest to provide an enticing, competing offer.

Read More

Pana: a new Go library for the Fediverse

Getting started with building on the fediverse can be a big chore, there’s a lot to learn and handle. Pana is a new library in Go to help simplify things. It provides the buildiing blocks for handling ActivityStreams messages, the message format used between servers to exchanges actvivities and enable federation. A picture is worth more than a thousand worth, and good examples are worth more than me trying to convince you with words or pictures.

Read More

Disabling USB or PCI Sound Devices on Linux

On my Linux desktop I have multiple sound devices. Typically it’s the built-in sound card, the graphics card audio output and my GoXLR outputs. I don’t ever want to use the built-in audio or have audio routed to my monitor. But the Linux desktop has this habit of sometimes switching to one of those outputs, especially when coming out of standby because the USB audio devices provided by the GoXLR disappear.

Read More

GDM and Colemak

A little annoyance I always run into when configuring a new laptop is getting Gnome Display Manager to use Colemak on the login screen. For some reason, it’s impossible to configure the GDM keyboard layout unless there’s at least 2 users on the system. Otherwise Gnome Settings refuses to show the UI for it. I’m not sure why this weirdly hostile feature towards folks with alternative keyboard layouts on a single-user system exists in Gnome, but here we are.

Read More