Seninha's Personal Chatting Workflow

2025-01-10

SYNOPSIS

net/bitlbee
net/bitlbee-mastodon
net/telethon (not packaged on OpenBSD)
net/irgramd (not packaged on OpenBSD)

DESCRIPTION

I use irc, telegram, mastodon and whatsapp services for instant messaging. All those services (but IRC itself) are proxied to IRC.

I use all those services through the Hexchat IRC client. Using a single software for all chatting needs is better than relying on multiple programs, as explained below at § RATIONALE. Hexchat's interface (and the interface of most IRC clients in general) is also less harmful than alternatives for the other services.

Telegram™ is proxied to IRC by irgramd. Irgramd is a Python3 software which works as both a IRC server and a telegram client (via the telethon python library).

(I use Telegram mostly to talk with friends.)

Mastodon/fediverse is proxied to IRC by bitlbee with the bitlbe-mastodon plugin. Bitlbee works as a IRC server and supports plugins that act as clients for different instant messaging services.

(I use fediverse mostly to talk with friendly strangers.)

Both proxy servers run on a virtual machine, for safety.

┌──────────────────────────────────────────────────────────────────────┐
│                ╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╷ │
│                ╵              Seninha's Personal Computer          ╷ │
│                ╵ ╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╷                    ╷ │
│                ╵ ╵       Virtual Machine      ╷                    ╷ │
│                ╵ ╵  ┌──────────────────────┐  ╷                    ╷ │
│                ╵ ╵  │ irgramd (IRC server) │  ╷                    ╷ │
│ ╶╶╶╶╶╶╶╶╶╶╶╶╷  ╵ ╵  │ ┌──────────────────┐ ├──────────────┐        ╷ │
│ ╵  Telegram ╷──────⮞│ │     telethon     │ │  ╷           │        ╷ │
│ ╵╴╴╴╴╴╴╴╴╴╴╴╴  ╵ ╵  │ │ (python library) │ │  ╷           │        ╷ │
│                ╵ ╵  │ └──────────────────┘ │  ╷           │        ╷ │
│                ╵ ╵  └───────────┬──────────┘  ╷           ⮟        ╷ │
│                ╵ ╵              ⮟             ╷    ┌─────────────┐ ╷ │
│                ╵ ╵  ┌──────────────────────┐  ╷    │   Hexchat   │ ╷ │
│                ╵ ╵  │ httpd (web server)   │  ╷    │  IRC client │ ╷ │
│                ╵ ╵  └──────────────────────┘  ╷    └─────────────┘ ╷ │
│                ╵ ╵  ┌──────────────────────┐  ╷      ⮝         ⮝   ╷ │
│                ╵ ╵  │ Bitlbee (IRC server) │  ╷      │         │   ╷ │
│ ╶╶╶╶╶╶╶╶╶╶╶╶╷  ╵ ╵  │ ┌──────────────────┐ │  ╷      │         │   ╷ │
│ ╵ Fediverse ╷──────⮞│ │ bitlbee-mastodon │ │  ╷      │         │   ╷ │
│ ╵╴╴╴╴╴╴╴╴╴╴╴╴  ╵ ╵  │ │ (bitlbee plugin) │ ├─────────┘         │   ╷ │
│                ╵ ╵  │ └──────────────────┘ │  ╷                │   ╷ │
│                ╵ ╵  └──────────────────────┘  ╷                │   ╷ │
│                ╵ ╵╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴                │   ╷ │
│                ╵╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴ │
│ ╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╷                                               │     │
│ ╵ IRC networks ╷───────────────────────────────────────────────┘     │
│ ╵╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴                                                     │
└──────────────────────────────────────────────────────────────────────┘
My current instant messaging setup.

Irgramd is unstable and under active development, but is usable to my needs. Configuring it requires getting a Telegram API id and hash pair.

I use my own fork of irgramd (soon to be released) with the following differences:

For the telegram proxy, i also set up a web server to access cached media (sent by Telegram users) from outside the virtual machine. And i also set a cronjob to remove old cached media (otherwise my VM's disk get full). Both of those are optional, but useful.

@hourly   -ns /usr/bin/find /var/www/htdocs/tg -mtime +1 -delete
cleaner cronjob

RATIONALE

Using a different program for each service imposes the common annoyances of interacting with various softwares for the same thing: write different configurations and swap interaction between incompatible interfaces. Also (for the nature of instant messaging) that disperses attention through different sources of information, by having several places to look at for messages.

Also, the interface of most of those programs induces addiction by imposing constant interaction (mostly scrolling). The following design patterns are harmful:

┌──────────────────────────────────────────────────────────────────────┐
│ ╭────────────────────────────────────────╮                           │
│ │ Bob said:                              │                           │
│ │           Does that game run on Linux? │                           │
│ ╰────────────────────────────────────────╯                           │
│ ╭────────────────────────────────────────╮                           │
│ │ Alice said:                            │                           │
│ │                     DO NOT INVOKE HIM! │                           │
│ ╰────────────────────────────────────────╯                           │
│                         ╭──────────────────────────────────────────╮ │
│                         │ I'd just like to interject for a moment. │ │
│                         │ What you're referring to as Linux, is in │ │
│                         │ fact, GNU/Linux, or as I've recently     │ │
│                         │ taken to calling it, GNU plus Linux.     │ │
│                         │                                          │ │
│                         │ Linux is not an operating system unto    │ │
│                         │ itself, but rather another free          │ │
│                         │ component of a fully functioning GNU     │ │
│                         │ system made useful by the GNU corelibs,  │ │
│                         │ shell utilities and vital system         │ │
│                         │ components comprising a full OS as       │ │
│                         │ defined by POSIX.                        │ │
│                         ╰──────────────────────────────────────────╯ │
│ ╭────────────────────────────────────────╮                           │
│ │ Alice said:                            │                           │
│ │                     SEE WHAT YOU DID?? │                           │
│ ╰────────────────────────────────────────╯                           │
│                         ╭──────────────────────────────────────────╮ │
│                         │                 @@@@@@ @                 │ │
│                         │               @@@@     @@                │ │
│                         │              @@@@ =   =  @@              │ │
│                         │             @@@ @ _   _   @@             │ │
│                         │              @@@ @(0)|(0)  @@            │ │
│                         │             @@@@   ~ | ~   @@            │ │
│                         │             @@@ @  (o1o)    @@           │ │
│                         │            @@@    #######    @           │ │
│                         │            @@@   ##{+++}##   @@          │ │
│                         │           @@@@@ ## ##### ## @@@@         │ │
│                         │           @@@@@#############@@@@         │ │
│                         │          @@@@@@@###########@@@@@@        │ │
│                         │         @@@@@@@#############@@@@@        │ │
│                         │         @@@@@@@### ## ### ###@@@@        │ │
│                         │          @ @  @              @  @        │ │
│                         │            @                    @        │ │
│                         ╰──────────────────────────────────────────╯ │
│ ╭────────────────────────────────────────╮                           │
│ │ Bob said:                              │                           │
│ │                                  What? │                           │
│ ╰────────────────────────────────────────╯                           │
│              ╭────────────────────────────────────────╮              │
│              │         * seninha was banned *         │              │
│              ╰────────────────────────────────────────╯              │
└──────────────────────────────────────────────────────────────────────┘
Imagine scrolling half a screenful to skip a low-effort shitpost…

I fixed those issues by using a single unified instant messaging software which speaks several protocols and connects to different services, and whose interface has larger information density (ie' more text visible at once) with limited backlog (ie' finite scroll).

┌──────────────────────────────────────────────────────────────────────┐
│ Bob:      Does that game work on Linux?                              │
│ Alice:    DO NOT INVOKE HIM!                                         │
│ Seninha:  I'd just like to interject for a moment.  What you're      │
│           referring to as Linux, is in fact, GNU/Linux, or as I've   │
│           recently taken to calling it, GNU plus Linux.              │
│ Seninha:  Linux is not an operating system unto itself, but rather   │
│           another free component of a fully functioning GNU system   │
│           made useful by the GNU corelibs, shell utilities and vital │
│           system components comprising a full OS as defined by POSIX.│
│ Alice:    SEE WHAT YOU DID??                                         │
│ Seninha:  <https://example.com/cache/rms.png>                        │
│ Bob:      What?                                                      │
│         * seninha was banned *                                       │
└──────────────────────────────────────────────────────────────────────┘
I have this instead:

HISTORY

Previously, i used four different softwares which, when combined, provides access to telegram from irc:

I was unsatisfied with that setup for the following issues:

TODO

Currently, Whatsapp™ is the only service i use which is not proxied to irc. In the future, i may addopt a whatsapp-irc gateway. That is not urgent, however. I only use Whatsapp™ rarelly, to talk with boomer relatives.

In the future, i want to replace hexchat with a unified text user interface, similar to that of the Oberon System or the Acme editor. So text operations (editing, selection, search, plumbing, etc) are common between all text-based software.

BUGS

Hexchat is not maintained anymore.

I do not use a bouncer. That is currently not an issue. I cope with that as it would get me a fear of missing out older messages; and make me read backlogs every day.