Uriel Fanelli

@uriel@x.keinpfusch.net
System Architect, platform Engineer mainly networking (both carrier and access network) and data fabric.Living in Germany, Hilden, NRW, where this instance is selfhosted. Non theistic Gnostic (with no "a"), so don't tell me about your gawd.Developer of Xenomorph, a small footprint AP server written in AdA/SPARK. Posting from it. (the picture of Stabby Possum is mine).
BLOG
https://keinpfusch.net
GIT
https://git.keinpfusch.net
Software
https://keinpfusch.net/software
XMPP
uriel@keinpfusch.net
MATRIX
@uriel:chat.keinpfusch.net
LULU
https://www.lulu.com/spotlight/urielfanelli
KDP
https://www.amazon.de/stores/Uriel-Fanelli/author/B0CS3Y7SXX
2661
Posts
2674
Followers
3970
Following
Uriel Fanelli@uriel@x.keinpfusch.net2026-09-01T08:41:33Z
After object-oriented programming and vibe coding, I believe I have invented hate programming.

Hate programming is when you hate and despise the very thing you are implementing.

I have implemented in Xenomorph the ActivityPub machinery required to follow a group on or . According to the protocol, an ordinary Fediverse user is written as:

@user@host.tld

Whereas a group is:

!group@host.tld

Fine. It’s horrible. Bang syntax died with DECnet, and nobody attended the funeral. But I suppose the presentation layer has to live somewhere.

Except it doesn’t.

Because WebFinger doesn’t want the bang, so it becomes:

acct:group@host.tld

And, just in case this wasn’t cursed enough already, there is yet another presentation layer inside the protocol itself: the type field, which must be set to "Group".

Three different ways to say “this is a group,” scattered across three different layers.

That is hate programming: implementing a specification while gradually developing a personal grudge against everyone who designed it.