Xonsh + vterm in Emacs

I’ve been using Xonsh, a shell that combines a shell REPL with a Python REPL, for years now. I’ve also been using Emacs for years, but I was never able to marry the two in a satisfactory way. But finally, after being frustrated for long enough, I solved the puzzle. This article is written to help like one or two other people on this world who use both Emacs and Xonsh.

New blog theme

It's text and little else

I recently changed up my blog’s theme. I previously used beautifulhugo, and now I use hugo-pure. The whole thing’s a touch more basic, but I’ve not lost any important features. Multi-language supports works (although it has been ages since I posted in Esperanto), and posts display just fine. The most important thing I changed from the hugo-pure theme is the text colour: my black text is #000 instead of some dark grey.

REUSE alpha release: v3.1.0a1

Yesterday I released v3.1.0a1 of the REUSE tool. It is an alpha release for the soon-to-be-released REUSE Specification v3.2, which can be found in its current state at this link. The biggest change is the introduction of REUSE.toml, a configuration file that replaces the soft-deprecated .reuse/dep5. This configuration file allows you to declare the copyright and licensing of files (and globs of files) relative to the file. The important distinctions from .

Protokolo

I released a new project

On-and-off over the past few months I wrote a new tool called Protokolo. I wrote earlier about how I implemented internationalisation for this project. This blog post is a simple and short introduction to the tool. Protokolo—Esperanto for ‘report’ or ‘minutes’—is a change log generator. It solves a very simple (albeit annoying) problem space at the intersection of change logs and version control systems: Different merge requests all edit the same area in CHANGELOG, inevitably resulting in merge conflicts.

How to set up Python internationalisation with Click, Poetry, Forgejo, and Weblate

TL;DR—look at Protokolo and do exactly what it does. This is a short article because I am lazy but do want to be helpful. The sections are the steps you should take. All code presented in this article is licensed CC0-1.0. Use gettext As a first step, you should use gettext. This effectively means wrapping all string literals in _() calls. This article won’t waste a lot of time on how to do this or how gettext works.

Decades where nothing happens and weeks where decades happen

Attrition in Dungeons & Dragons 5e

I don’t really like running Dungeons & Dragons 5e. There are a lot of reasons for this, but I could learn to live with or subtly work around most of those reasons. There is one core mechanic in the game, however, that drives me up the wall like nothing else, and I basically never see it discussed anywhere—the long rest. This article is my attempt to make a case for why the long rest isn’t very good.

The sunk cost discount and the trip cost scaling problem

Cars are more expensive, but not when you already own one

You know how sometimes you see a common phenomenon, and you think there should logically already exist word for that phenomenon, but no matter how hard you search, you can find no such word? That’s what this article is about. I want to create new terms for two existing phenomena that, in my limited understanding, are not well-explored1 in spite of how common they are. I’m going to call them the sunk cost discount and the trip cost scaling problem.

Cars as asbestos

Let's unironically ban cars

Since moving to Brussels1, I have been radicalised against the automobile. I came from the Dutch countryside, where cars are kind of necessary to get anywhere meaningful, but where other modes of transport do exist and are feasible. I spent six years cycling one hour to school and one hour back, and I spent a few more years doing a commute of 1h30 by two buses and a train to university.

What's in a name?

A happy thought for International Transgender Day of Visibility

Often when people conceptualise transgender people, there is a misery inherent to our identity. There is the everyday discrimination, gender dysphoria, the arduous road of transition, and the sort of identity crisis that occurs when we let go of one name and choose another. And while being transgender certainly can be all of that, it’s a pity that the joyous aspects are often forgotten, or disappear behind all the negative clouds that more desperately require society’s attention.

Destination status quo

A reflection on idealism and the inadequacy of things

I recently happened upon an article1 that argued against the four freedoms as defined by the Free Software Foundation. I don’t actually want to link to the article—its tone is rather rude and unsavoury, and I do not want to end up in a kerfuffle—but I’ll include an obfuscated link at the end of the article for the sake of integrity. The article—in spite of how much I disagree with its conclusions—inspired me to reflect on idealism and the inadequacy of things.