Diary

Welcome! 🙂

This is both a wiki (a website editable by all) and a blog (an online diary about the stuff Alex Schroeder reads and does). If you’re a friend or relative, you might be interested in reading Life instead of this page. If you’ve come here from an RPG blog, you might want to head over to RPG. There are other similar categories to be found on the SiteMap.

Für Rollenspieler gibt es ebenfalls eine eigene RSP Kategorie.

2021-02-27 Cohesion

I was recently talking with @wandererbill and mentioned some techniques I find useful to keep a party together, in-game, or socially, out-of-game.

In order to avoid players checking out of a scene because their characters aren’t there, I always allow suggestions and comments. I think it’s important to maintain space and time of the imaginary world, otherwise it all collapses into a dream where people come and go, where the past is malleable and cause and consequence are not ordered. That is to say, if your character isn’t there, you can’t do anything. But at the table, the players are still there, so if one player is doing all the talking because their character is doing something on their own and there’s a moment of indecision, everybody should feel free to comment and suggest. We’re all watching this scene like a TV series. Of course we can all comment.

Furthermore, as the referee I can influence the granularity of everything. If something would make for a cool adventure it might take the party an entire session to achieve it, and yet it can turn into a simple two sentence answer or possibly a roll when it’s a solo-event. I try to make sure that the solo-investigation takes just one roll, a few sentences, and the scene never turns into a fight, so to say. It doesn’t always work, but this is the goal. This automatically prunes solo-time. To push it even further, I switch into narrator mode, summarizing the solo-events instead of playing them out, denying the scene from taking time at the table. This is fast-forwarding, but not quite skipping. I want to encourage these characters to return to the party, report back, and then let’s all do something, together.

If this cannot be avoided, perhaps because we made characters that have no cause to adventure together (why?), then I can always switch into a movie director stance, go around the table, point at players, “now you!” and after a bit when the exchange happened and a die was maybe cast, “as we wait for that, we cut to…” and soon enough “in the mean time…” – and I do this aggressively, in small time slots. This results in a somewhat military style of pointing at people to let them know that now is their turn, while simultaneously waving at others to hold their thoughts, or maybe cutting talkative players off when they’re running too long. It’s weird, but when there’s a lot of players, or when there’s no party play to return to, it works well enough. We’ve made these kinds of mistakes in games where there are characters that are well suited for fighting and others that are not, with their players trying to solve problems by fighting, and players do not. This happened to me when I ran a one-shot of A Song of Ice and Fire. It worked for a session, but it was exhausting and I don’t want to claim that it’s a good solution. It was simple a short term solution that worked, for me. Next time, however, make sure players create characters that will adventure together.

If the problem is that players focus on their characters mechanically, and the only time the characters interact mechanically is during combat, then the game still lacks cohesion, socially. One thing I’ve tried to do is a move from Lady Blackbird. When there is a lull in-game, like a camp fire, a watch, a long walk, you ask one or two of the characters a question about their past. How did you meet? Why did you leave home? Do you have family back home? Just to get a few sentences. Sometimes I preface it by “please tell us a little something, to entertain us here at the table…” In a game with bennies, inspiration, refreshments, or short rests, you could make these sorts of reveals part of the condition to get the reward, if your players need this kind of push. I personally wouldn’t tie it to a mechanical reward, which is why I ask to be entertained as a person sitting at the same table. And the beauty of that is: anybody can ask for it. You don’t have to be the referee to make this move.

Generally speaking, when a game is a lot about rolling dice, it’s particularly important to give time and space to the words around the dice rolling. In the D&D 5E games I’m in, for example, there’s a lot of fighting, which means that I treasure the words said during a fight, or after a fight. Is it encouragement? Orders? Relief? As a person at the same table, I try to make sure such words are never cut off. As a referee, there is no cutting to the next scene while the players are still commenting in-character to each other.

A certain level of jokes or memes might be necessary if the players lack cohesion, each apparently only talking to the referee. Jokes are a way to bond as people at the table. Eventually I’m hoping this also translates to the characters interacting, of course. But it’s a start.

Add Comment

2021-02-27 Adding a table of contents to a PDF

I wanted to create small PDF with the most important pages for me, and add a table of contents, using pdftk.

First, create a draft of the PDF, based on a subset of pages:

pdftk ~/Documents/RPG/Traveller/CT/CT-TTB-The_Traveller_Book_\(11872828\).pdf \
  cat 45-48 101-102 115 \
  output referee.pdf

Next, create a table of content as follows:

BookmarkBegin
BookmarkTitle: Weapons and Equipment
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Personal Combat
BookmarkLevel: 1
BookmarkPageNumber: 2
BookmarkBegin
BookmarkTitle: Surprise
BookmarkLevel: 2
BookmarkPageNumber: 2
BookmarkBegin
BookmarkTitle: Range
BookmarkLevel: 2
BookmarkPageNumber: 2
BookmarkBegin
BookmarkTitle: Escape
BookmarkLevel: 2
BookmarkPageNumber: 2
BookmarkBegin
BookmarkTitle: Weapons and Range Matrix
BookmarkLevel: 1
BookmarkPageNumber: 3
BookmarkBegin
BookmarkTitle: Wounds, Medical Care, Ranges
BookmarkLevel: 1
BookmarkPageNumber: 4
BookmarkBegin
BookmarkTitle: Encounters, Patrons
BookmarkLevel: 1
BookmarkPageNumber: 5
BookmarkBegin
BookmarkTitle: Rumours
BookmarkLevel: 1
BookmarkPageNumber: 6

I’m not yet ready to write a Perl script to generate this output. If I need to do this often, I’ll use Emacs keyboard macros.

Save this as a text file, e.g. referee.txt.

pdftk ~/Documents/RPG/Traveller/CT/CT-TTB-The_Traveller_Book_\(11872828\).pdf \
  cat 45-48 101-102 115 \
  output - \
| pdftk - update_info referee.txt \
  output referee.pdf 

And now you have a file called referee.pdf.

You can also turn the existing table of contents into a text file, and add the necessary bookmarks:

pdftk ~/Documents/RPG/Traveller/CT/CT-TTB-The_Traveller_Book_\(11872828\).pdf \
  update_info traveller.txt output CT-TBB.pdf

Success!

Screenshot

Add Comment

2021-02-26 Life skills

This is from Judd Karlman’s podcast, Daydreaming about Dragons, reply show Snowblanket:

Being a good player, including a GM, and being a good friend, and the skills that go along with those things, are the same skills. They are the same thing. You’ve got to show up. You’ve got to be present. You’ve got to pay attention. You’ve got to ask good questions. These are not only things that good players do, these are things that good people do. These are things that good friends do. Making sure that everybody’s boundaries aren’t being crossed. Checking in with someone when they seem uncomfortable. This is not just payer stuff – this is life stuff! This is important stuff. And when we talk about safety, that’s what we’re talking about. We’re talking about being a good friend.

Great stuff.

Add Comment

2021-02-21 Perl dependencies for Phoebe

Every now and then I’m getting reports from the CPAN testers that my modules fail tests because they don’t declare all their dependencies in the “Makefile.PL” file. The problem is that on those systems where the modules happen to be installed – such as mine – these problems don’t surface.

The first step to solve this is to write a test that uses “Test::Prereq” to check whether all the modules used are declared as a dependencies in the “Makefile.PL”. So far so good. I added many dependencies I considered unnecessary – I felt they were part of the Perl core since 5.26.0, the starting point I picked for Phoebe. But now I want to make sure, and I want a test to make sure I’m not slipping.

So what I did now is to use “perlbrew”, using a new Perl version without any modules installed (more or less?), rerunning “perl Makefile.PL” to regenerate a Makefile for the new Perl I’m using, running “perlbrew install_cpanm” to get a new “cpanm”, and then using “cpanm .” to attempt an install with all the dependencies.

The result? It’s still building the list of dependencies. 😴💤

Time passes.

OK, I can reproduce the problem!

Building and testing App-phoebe-2.1 ... FAIL
! Installing . failed. See /home/alex/.cpanm/work/1613930095.24976/build.log for details. Retry with --force to force install it.
56 distributions installed

Whaaaat! 😠

Well, it seems that somewhere, somehow, “DateTime::Format::ISO8601” is being used, so I added that as a dependency, and that in turn pulls in a ton of other modules… Oh well.

I’ve been chatting with @AFresh1 and he says that dependencies for optional code is a sign that perhaps that optional code should go into a separate distribution. Hm. I guess that makes sense. I’m currently just wondering about the architecture of the thing.

Extensions right now: there is a directory you can create and any Perl source file you put there is getting loaded on startup. Where do these files come from? From my repo. That is, if you install Phoebe using CPAN, these files are unpacked and tested, but then they aren’t being installed anywhere.

Extensions could instead be: there is a module you can install, such as App::phoebe::gopher, which installs a Perl module. In your config file, you’d write: “use App::phoebe::gopher”. Done?

Add Comment

2021-02-17 Fascism and AI

Sadly, I don’t have much. But this quote is worth remembering. Perhaps I’ll be able to expand on the idea in the future. Or have a link collection, at least.

“Extremist communities, especially in the social media era, bear a disturbing resemblance to what you might expect from a conversation held among similarly trained GPT-3s. A growing tide of cognitive distortion, rote repetition, incoherence and inability to parse facts and fantasies within the thoughts expressed in the extremist online landscape signals a dangerous contraction of understanding, one that leaves its users increasingly unable to explore, share and build an understanding of the real world with anyone outside of their online haven.” – The Thoughts The Civilized Keep, by Shannon Vallor, for Noëme

Something I called poetic reasoning in the past.

Association: Similar things can be used to make a point: This is beautiful and elegant, it must be good.

Wishes: Preferable conditions can be used to make a point: People are fundamentally peaceful creatures. That’s why nobody is going to vandalize our site.

Metaphors: Invoking unrelated strong imagery can be used to make a point: Like ants building their ant-hill, humans collaborate peacefully when sharing a common goal.

And then, just like in a dream, keep associating freely. People don’t ask for congruency or stringency of arguments.

Comments on 2021-02-17 Fascism and AI

I actually agree with the broader thrust of the essay, that understanding – a model of the world and not just a model of language – is necessary for useful intelligence. However, the quote you pulled is kind of self-congratulatory to centrists. You can find exactly the same kind of repetitive, stereotyped discourse in self-identified centrist communities. Look at Reddit’s /r/neoliberal for a good example, or anyone with a KHive pfp on Twitter. I’d suggest that the real trigger for this behavior or pattern of thought is a reliance on short-form writing rather than long-form, though I may have an incomplete picture.

GCU Prosthetic Conscience 2021-02-17 13:33 UTC


I think it reflects pretty well on how Switzerland is dealing with the pandemic, for example. Or how the right wing in Switzerland deals with foreigners. To me, so many things are clearly wrong: a sentence or two are correct, the next is a gross simplification, then a feel good ur-fascist statement, then something that contradicts what was said before but is offered as a counter argument to what I just said, then a distraction, something designed to feel good, something reusing the words we used to teach each other how to be scientists, like research, facts, or metaphors like safety regulations for cars, reused, repurposed for their exact opposite, in a free wheeling circle of association.

I’m not sure where the centrists come in, and I don’t feel like delving into Reddit, specially not with that subreddit name, and certainly not when you tell me that what I’m going to find there is all wrong. That’s a waste of time.

I don’t know what “a KHive pfp on Twitter” is. Something about fake follower counts?

In any case, I’m not sure that the way the Swiss government is reacting to the pandemic is a consequence of how Twitter has shaped our writing, but rather that we’re seeing an age old mechanism at work, exploited on a different medium, but not different from the use of Radio by the Nazis, or the printing press by the reformation. Any kind of unhappiness, exploited, via the inability of the public to form a coherent position.

The contradictory picture I describe was not the result of tolerance but of political andideological discombobulation. But it was a rigid discombobulation, a structured confusion. Fascism was philosophically out of joint, but emotionally it was firmly fastened to some archetypal foundations. – Umberto Eco, Ur-Fascism (1995)

I think to argue that a reliance on short-form writing might be involved is not enough, as the common denominator of all simple messaging is shortness of the messages themselves. But there is more to it, I think.

– Alex 2021-02-17 13:55 UTC


I see Sandra also wrote a blog post, Re: The Thoughts The Civilized Keep. 😄

– Alex 2021-02-17 17:31 UTC


I’m not sure where the centrists come in, and I don’t feel like delving into Reddit...

As well you shouldn’t. Centrists enter into it because the quote describes this kind of language as typical of “extremist” communities. But that subreddit is an example of that kind of circular/incoherent discourse in a “centrist” community – the name of the subreddit is unironic. The KHive are described here: https://www.huffpost.com/entry/kamala-harris-khive-toxic-side_n_5f4fa573c5b69eb5c037473e; they are often distinguished by a gold ring around their pfp (avatar). If you don’t want to look into it, the upshot is that they are vicious Twitter trolls who stan a centrist politician.

I think you’re right about simple messaging being the core, rather than short-form reading (social media) as such. But social media means people see much more simple messaging than ever before.

GCU Prosthetic Conscience 2021-02-17 20:01 UTC


I don’t like being part of a dogpile of criticism against any one particular writer, it easily gets redundant. I can’t in all honesty wash my hands of it, just own up to it. I shoulda held off on the essay and polished it so it was less about Vallor’s text and more about my own hangups around AI and AIP.

Sandra 2021-02-17 23:43 UTC


I miss when neoliberals and randroids where the enemy, they were more fun to talk to than climate deniers and social conservatives (including racists and sexists).

Sandra 2021-02-17 23:46 UTC


Re the bad KHivers I remember in 2016 (and I do think that Bernie was the best candidate in ’16) talking to some people who were saying there where no toxic Bernie Bros. Wait, that sounds like I’m saying they were “no true Scotsman”-ing the toxic members. That’s not quite right. Instead they denied the harassment outright. “That’s not true, that never happened, that’s just propaganda.” I’d see the harassment with my own eyes and the denial with my own eyes.

Now, this was in YouTube’s comment section so false flag on one or both of those seemingly contradictory things certainly possible, but, that’d leave us with the no true Scotsman again. The harassments happened (as in often) and made the Bernie faction a difficult place to be around.

Sandra 2021-02-17 23:56 UTC

Add Comment

2021-02-16 Still thinking about a new campaign

Yeah, I really need to think about a new campaign. I think it’s the pandemic blues.

So, what’s on the table? I’m writing things down mostly as a way to think it through. Writing as learning, as I’m fond of saying.

What rules?

I like Halberds and Helmets but I’ve run it a lot, and I’m willing to try Traveller and Burning Wheel again.

What I like about Halberds and Helmets is that it’s my favourite set of house rules, and I with the Alpine mini-setting generator I have the perfect starting point. Implied pantheon, monsters, treasures, temples, settlements, wilderness, factions, spells. A rich tapestry to start with!

What I like about Classic Traveller is the free wheeling skill-based setup where combat is harsh and there’s no advancement. I’ve read the blog posts in the Classic Traveller: Out of the Box series and they’ve rekindled that fascination with the retro-future that is Traveller. And I’ve started working on a rich Traveller subsector generator which I hope to one day get up to the same level as the one for Halberds and Helmets.

What I like about Burning Wheel is that it provides opportunity for a slow, maybe emotional development. I’m listening to the one-to-one episodes by Judd Karlman and Sean Nittner in the Actual Play podcast starting with the Shoeless Peasant and I’m loving them.

How many?

The last point also makes me think that perhaps I’d like to run a game for fewer people. Instead of aiming for six people so that most of the time we have four or five players at the table, I’d aim much lower: one, two, or three players. Perhaps that is also better for online play?

How long?

In a similar vein, perhaps I need to play shorter games. These days the games I’m in start at 19:30 and got til 22:00, or they start at 20:15 and go to 23:00 or later: 2½h and more. It’s tiring largely because it feels like work, and because I’m not looking at people but at tiny screens. Like, 1h game, break, 1h game?

And since I’m also doing this to overcome the pandemic blues, perhaps I need to make time for socialising. So I don’t want to just game. I want to talk with people about their lives, their jobs, their projects, their hobbies, just a few words, but all in all perhaps we can spend a few minutes before the game and after game on social stuff? I used to be very much against this: “I came to play, not to talk about our latest shopping.” Not any more. Perhaps I do need to hear about the things people bought, cooked, ate, and so on.

How often?

I’m unsure. Perhaps we can get a weekly table going? I think I’d like that. I used to have a weekly table a few years ago. Right now one of the campaigns I’m is ever second Wednesday, which is cool, regular, dependable, plannable. The other one is “whenever” and we use a Dudle to pick dates (a Doodle alternative). Perhaps people prefer that flexibility? I’d be ok with either solution.

I work Monday to Thursday, so I’d prefer Thursday or Friday evenings, or the weekends. Specially now, in winter, while the pandemic is on. I’m also ready to play Fridays during the day since I don’t work. But I think I’m flexible. I’m in the Central European Timezone (CET), UTC+1.

What language?

German or English. If we’re picking German, my wife might also join. I might mail some old RPG friends that moved away, back to Basel, back to Germany.

If we’re picking English, we might have a larger pool of unknown people willing to join. I got mail from B. in Sweden, but I don’t speak Swedish and he doesn’t speak German so it’d have to be English.

On Mastodon, P. said he’d be interested and he’s OK with either one.

What platform?

Yes, it’s tricky! The great fragmentation is ongoing. I have Zoom and Skype installed on the iPad and I hate them for all the spying the great powers are all involved in; and I hate them for the surveillance capitalism paying for so much of this. But I have to confess, they work. I also hear that Discord works well. But again, it all looks so shady. I’d prefer free software.

For one of the games I’m in we’ve been using Jitsi. We picked a Jitsi server that’s run by a local Internet service provider an RPG friend of mine is using (Jitsi by Cyon). My ISP runs a different one, so that would be an alternative (Jitsi by Init7). There’s plenty of others, I’m sure. It works well enough. We often all reduce video quality to the minimum. There’s also the option of switching off video completely.

Another option I’d be willing to try is Signal. Apparently there’s a limit of five people for video, but I don’t think we need more than five. The screen is tiny, but if all you want to do is have a look at the faces of people you’re talking with, then perhaps that’s good enough? Also, it doesn’t look like work!

All in all I’d say simpler is better. I’m willing to try Signal, and I’m willing to try Jitsi. And if we’re running out of options, we can always fall back to Skype and Zoom.

Dice?

In one of the games I’m in we’re using Roll 20. It looks nice. It also encourages people to set up a ton of macros. I know I have. And it encourages referees to prepare maps, and once you have maps people like to place their tokens, and soon the theatre of the mind is replaced with the battlemap. I’d like to keep the dice roller, though. It’s nice.

In the other game I’m in we just roll our own dice and that’s it. It’s not as nerve rattling as watching other pepole roll their dice, but you can wail and howl all you want after hearing the result, so my feeling is that it doesn’t really matter.

Again, simpler is better. We’d roll our own dice at first, for sure. Or just log into Roll 20 for the dice rolling.

Comments on 2021-02-16 Still thinking about a new campaign

How did Just Halberds turn out for you, by the way? Since you mentioned liking Classic Traveller’s freeform nature and your fantasy mini-setting generator, which seems super compatible with Just Halberds. Could be an interesting middleground between the two.

Malcolm 2021-02-17 06:24 UTC


Yeah, good question. I ran a handful of sessions for a friend and some kids, in German. It might have worked somehow. Combat and taking “damage” was still weird. Do we roll endlessly against that Ettin? Do we establish stakes before we roll and just roll once? For the moment I’m not all that interested in picking it up again.

– 2021-02-17 12:32 UTC


This was made by a CS Student! It works well with audio/ video and I like the sounds. https://magicalscrolls.com/roll/

There is also Dice With Friends

– Oliver 2021-02-17 14:21 UTC


I like the simple magic scroll site! Thanks.

– Alex 2021-02-17 15:34 UTC


When you say you like the Roll 20 dice rolling, are you talking about the fancy 3D dice that (I presume, haven’t seen them in action) roll around so you can get excited about them as they roll, or just the text/chat dice? I find the chat dice pretty bland and a bit fiddly. I think I prefer rolling my own dice, but I guess there is something to be said for everyone seeing the results simultaneously so that we can all groan together. 🙂

In the best “non-compromise” I’ve seen people had two cameras, one for their face and one for their dice tray. 🙂 This one adds some complexity/cost in the setup of course and may not be for everyone.

– Björn Buckwalter 2021-02-18 17:46 UTC


Haha, exactly. But as you say, the benefit is small and rolling your own dice is still the simplest solution. We can collectively groan after the roll instead of as we roll – not much of a difference, perhaps. 😄

Perhaps using phones instead of laptops would add an interesting option: pointing the camera at things like dice. As the home office drags into its second year I’m noticing that the actual videos are rare and that the sound of a voice is much more important after the exchange of some smiles and hand waving.

– Alex 2021-02-19 08:49 UTC


I like the face video in online games to be able to read when people are eager to cut in. Or have left to go to the bathroom. Or are distracted, programming. 😉

The main thing is that I find it easier to know when it is OK to cut in without interrupting someone else or stepping on toes. Those ongoing visual cues we get in a face-to-face group conversation. More important the more people involved. It isn’t perfect due to lag, but better than audio-only in my experience.

I’m thinking laptop camera for face and phone camera for dice could work for most of us nowadays, or just delegate all rolls to the person who has a good setup for the benefit of simultaneous despair!

– Björn Buckwalter 2021-02-19 21:27 UTC


Good points!

– Alex 2021-02-21 11:41 UTC

Add Comment

2021-02-16 Perl upgrading woes

I’ve got the first failing reports from CPAN testers reporting some TLS issues:

Mojo::Reactor::Poll: I/O watcher failed: Client creation failed: SSL connect attempt failed error:14094458:SSL routines:ssl3_read_bytes:tlsv1 unrecognized name

This seems to be related to upgrading IO::Socket::SSL from 2.068 to 2.069, but when I check the commit log, I see nothing suspicious.

When you upgrade Mojolicious from 8.67 to 9.0 things are even worse because they removed the tls_verify option for Mojo::IOLoop::TLS.

In t/test.pl you can change the test client code using Mojo::IOLoop as follows:

@@ -125,13 +125,15 @@ sub query_gemini {
   my ($header, $mimetype, $encoding, $buffer);
 
   # create client
-  Mojo::IOLoop->client({
-    address => "127.0.0.1",
-    port => $port,
-    tls => 1,
-    tls_cert => "t/cert.pem",
-    tls_key => "t/key.pem",
-    tls_verify => 0x00, } => sub {
+  Mojo::IOLoop->client(
+    {
+      address => "127.0.0.1",
+      port => $port,
+      tls => 1,
+      tls_cert => "t/cert.pem",
+      tls_key => "t/key.pem",
+      tls_options => { SSL_verify_mode => 0x00 }
+    } => sub {
       my ($loop, $err, $stream) = @_;
       die "Client creation failed: $err\n" if $err;
       $stream->on(error => sub {

That still doesn’t solve the TLS/SSL error, however. If you upgrade Net::SSLeay from 1.88 to 1.90 that seems to make no difference, and the list of changes appears innocuous.

My system has OpenSSL 1.1.1d installed, if that makes a difference.

I currently have no workaround except downgrading.

Comments on 2021-02-16 Perl upgrading woes

I have at least an inkling of what’s wrong. First, I verified that I can have a simple setup with Mojo::IOLoop acting both as server and as client, and that I can use IO::Socket::SSL as a client as well.

So that’s not where the problem is. The problem is somewhere in the hostnames.

Here’s an example. Start the server serving the hostname “melanobombus” and the IP 127.0.0.1.

$ phoebe --host melanobombus --host 127.0.0.1 --log_level=debug
[2021-02-17 22:42:52.78734] [39528] [info] Running ./wiki/config
[2021-02-17 22:42:52.78762] [39528] [info] PID: 39528
[2021-02-17 22:42:52.78767] [39528] [info] Host: melanobombus 127.0.0.1
[2021-02-17 22:42:52.78769] [39528] [info] Port: 1965
[2021-02-17 22:42:52.78772] [39528] [info] Space: 
[2021-02-17 22:42:52.78778] [39528] [info] Token: hello
[2021-02-17 22:42:52.78781] [39528] [info] Main page: 
[2021-02-17 22:42:52.78784] [39528] [info] Pages: 
[2021-02-17 22:42:52.78786] [39528] [info] MIME types: 
[2021-02-17 22:42:52.78788] [39528] [info] Wiki data directory: ./wiki
[2021-02-17 22:42:52.78807] [39528] [info] Listening on 127.0.1.1:1965
[2021-02-17 22:42:52.78911] [39528] [info] Listening on 127.0.0.1:1965

As you can see, “melanobombus” is translated to 127.0.1.1 because of my “/etc/hosts” file, which contains the following:

127.0.0.1	localhost
127.0.1.1	melanobombus
127.0.1.1	xn--mlanobombus-bbb

::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Phoebe takes host “melanobombus”, figures out the IP number, and listens on the appropriate port.

Now let’s test it, by requesting a few names:

$ script/gemini gemini://melanobombus | head -2
20 text/gemini; charset=UTF-8
# Welcome to Phoebe!
$ script/gemini gemini://127.0.0.1 | head -2
20 text/gemini; charset=UTF-8
# Welcome to Phoebe!
$ script/gemini gemini://localhost | head -2
Mojo::Reactor::Poll: I/O watcher failed: SSL connect attempt failed error:14094458:SSL routines:ssl3_read_bytes:tlsv1 unrecognized name

So I’m guessing the problem has nothing to do with the TLS options. This has nothing to do with SSL3 or TLSv1. The problem is that “localhost” isn’t being served, somehow, eventhough “localhost” translates to 127.0.0.1 and thus it would get served without TLS. Somehow, the TLS part now know that it’s only supposed to serve 127.0.0.1 and “melanobombus”. It shouldn’t work for “localhost” and it’s telling me: “you have requested an unrecognized name”. I got confused by the name of the error location: “routines:ssl3_read_bytes:tlsv1”.

All right!


This would be the CN attribute of the TLS cert. It’s only valid for the domain named, unfortunatlely. As far as TLS is concerned, localhost and 127.0.0.1 are two different domains.

– splatt9990 2021-02-17 23:03 UTC


Yes, this seems to be it. This used to work and now it no longer does. What I did now in my test setup was to remove all the occurrences of 127.0.0.1, replacing them with localhost, plus related changes, and that seems to work. I think I started doing that because some CPAN testers did not have “localhost” set, but I no longer remember. We’ll see what happens.

– Alex 2021-02-20 22:49 UTC

Add Comment

2021-02-15 Messaging and Chat Surveillance

“The EU wants to have all private chats, messages, and emails automatically searched for suspicious content, generally and indiscriminately. The stated aim: To prosecute child pornography. The result: Mass surveillance through fully automated real-time messaging and chat control and the end of secrecy of digital correspondence.” – Messaging and Chat Control: The End of the Privacy of Digital Correspondence, by Patrick Breyer, @echo_pbreyer

Comments on 2021-02-15 Messaging and Chat Surveillance

Which is very hard to do in real life since e2e encryption and almost endless number of possible communications apps...

Peter Kotrčka 2021-02-18 05:53 UTC


On the contrary, it will be easy: it will be made illegal, and then you just can’t find end-to-end encrypted chat clients on Apple’s and Google’s stores, the Internet service providers will be forced to block the domains. And immediately, your user base shrinks to 1%, it all being useless to ordinary people but criminals will continue to find ways to communicate securely. In any case, that’s what I want to prevent. Far too many people like the security aspects of the Chinese system. Ugh!

– Alex 2021-02-18 07:53 UTC


Exactly, so that is why I am thinking that it is not something any government wants. It would only block 99% of the population that does not do anything (or at least not too much) illegal. And it would only piss regular people - maybe not many of them, but politicians are still a bit afraid of elections, so...

Not something I want, I just do not think that it is something for a newar future.

Peter Kotrčka 2021-02-20 08:45 UTC


Hah, I hope the politicians see it the same way!

– Alex 2021-02-20 12:14 UTC

Add Comment

2021-02-14 Borg Backup Exception

Today I had an exception in my logs for Borg backup. 😱

Feb 14 09:16:12 melanobombus systemd[1]: Starting automatic-backup.service...
Feb 14 09:16:17 melanobombus run.sh[9191]: Disk bb1c034e-dd21-48e7-a496-1b95685a094d is a backup disk
Feb 14 09:16:17 melanobombus run.sh[9191]: /dev/sdb1 on /mnt/backup type ext4 (rw,nosuid,nodev,relatime,x-gvfs-show)
Feb 14 09:16:17 melanobombus run.sh[9191]: Drive path: /dev/sdb1
Feb 14 09:16:17 melanobombus run.sh[9191]: borgbackup version 1.1.9
Feb 14 09:39:36 melanobombus run.sh[9191]: Exception ignored in: <function Repository.__del__ at 0x7f4254351d90>
Feb 14 09:39:36 melanobombus run.sh[9191]: Traceback (most recent call last):
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/repository.py", line 178, in __del__
Feb 14 09:39:36 melanobombus run.sh[9191]:     self.close()
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/repository.py", line 427, in close
Feb 14 09:39:36 melanobombus run.sh[9191]:     self.lock.release()
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/locking.py", line 383, in release
Feb 14 09:39:36 melanobombus run.sh[9191]:     self._roster.modify(EXCLUSIVE, REMOVE)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/locking.py", line 282, in modify
Feb 14 09:39:36 melanobombus run.sh[9191]:     elements.remove(self.id)
Feb 14 09:39:36 melanobombus run.sh[9191]: KeyError: (('melanobombus@27278930346555', 9230, 0),)
Feb 14 09:39:36 melanobombus run.sh[9191]: Local Exception
Feb 14 09:39:36 melanobombus run.sh[9191]: Traceback (most recent call last):
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 154, in wrapper
Feb 14 09:39:36 melanobombus run.sh[9191]:     return method(self, args, repository=repository, **kwargs)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 557, in do_create
Feb 14 09:39:36 melanobombus run.sh[9191]:     create_inner(archive, cache)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 520, in create_inner
Feb 14 09:39:36 melanobombus run.sh[9191]:     read_special=args.read_special, dry_run=dry_run, st=st)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 634, in _process
Feb 14 09:39:36 melanobombus run.sh[9191]:     read_special=read_special, dry_run=dry_run)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 634, in _process
Feb 14 09:39:36 melanobombus run.sh[9191]:     read_special=read_special, dry_run=dry_run)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 634, in _process
Feb 14 09:39:36 melanobombus run.sh[9191]:     read_special=read_special, dry_run=dry_run)
Feb 14 09:39:36 melanobombus run.sh[9191]:   [Previous line repeated 3 more times]
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 608, in _process
Feb 14 09:39:36 melanobombus run.sh[9191]:     status = archive.process_file(path, st, cache)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archive.py", line 1034, in process_file
Feb 14 09:39:36 melanobombus run.sh[9191]:     self.chunk_file(item, cache, self.stats, backup_io_iter(self.chunker.chunkify(fd, fh)))
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archive.py", line 962, in chunk_file
Feb 14 09:39:36 melanobombus run.sh[9191]:     item.chunks.append(chunk_processor(data))
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archive.py", line 950, in chunk_processor
Feb 14 09:39:36 melanobombus run.sh[9191]:     chunk_entry = cache.add_chunk(self.key.id_hash(data), data, stats, wait=False)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/cache.py", line 899, in add_chunk
Feb 14 09:39:36 melanobombus run.sh[9191]:     self.repository.put(id, data, wait=wait)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/repository.py", line 1101, in put
Feb 14 09:39:36 melanobombus run.sh[9191]:     segment, offset = self.io.write_put(id, data)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/repository.py", line 1482, in write_put
Feb 14 09:39:36 melanobombus run.sh[9191]:     fd.write(b''.join((crc, header, id, data)))
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "src/borg/platform/linux.pyx", line 283, in borg.platform.linux.SyncFile.write
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "src/borg/platform/linux.pyx", line 236, in borg.platform.linux._sync_file_range
Feb 14 09:39:36 melanobombus run.sh[9191]: OSError: [Errno 5] Input/output error
Feb 14 09:39:36 melanobombus run.sh[9191]: During handling of the above exception, another exception occurred:
Feb 14 09:39:36 melanobombus run.sh[9191]: Traceback (most recent call last):
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/platform/base.py", line 136, in close
Feb 14 09:39:36 melanobombus run.sh[9191]:     self.sync()
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "src/borg/platform/linux.pyx", line 292, in borg.platform.linux.SyncFile.sync
Feb 14 09:39:36 melanobombus run.sh[9191]: OSError: [Errno 5] Input/output error
Feb 14 09:39:36 melanobombus run.sh[9191]: During handling of the above exception, another exception occurred:
Feb 14 09:39:36 melanobombus run.sh[9191]: Traceback (most recent call last):
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 4455, in main
Feb 14 09:39:36 melanobombus run.sh[9191]:     exit_code = archiver.run(args)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 4387, in run
Feb 14 09:39:36 melanobombus run.sh[9191]:     return set_ec(func(args))
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/archiver.py", line 154, in wrapper
Feb 14 09:39:36 melanobombus run.sh[9191]:     return method(self, args, repository=repository, **kwargs)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/repository.py", line 203, in __exit__
Feb 14 09:39:36 melanobombus run.sh[9191]:     self.close()
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/repository.py", line 425, in close
Feb 14 09:39:36 melanobombus run.sh[9191]:     self.io.close()
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/repository.py", line 1176, in close
Feb 14 09:39:36 melanobombus run.sh[9191]:     self.close_segment()
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/repository.py", line 1307, in close_segment
Feb 14 09:39:36 melanobombus run.sh[9191]:     fd.close()
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/platform/base.py", line 140, in close
Feb 14 09:39:36 melanobombus run.sh[9191]:     platform.sync_dir(dirname)
Feb 14 09:39:36 melanobombus run.sh[9191]:   File "/usr/lib/python3/dist-packages/borg/platform/base.py", line 58, in sync_dir
Feb 14 09:39:36 melanobombus run.sh[9191]:     fd = os.open(path, os.O_RDONLY)
Feb 14 09:39:36 melanobombus run.sh[9191]: FileNotFoundError: [Errno 2] No such file or directory: '/mnt/backup/borg-backups/backup.borg/data/1'
Feb 14 09:39:36 melanobombus run.sh[9191]: Platform: Linux melanobombus 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64
Feb 14 09:39:36 melanobombus run.sh[9191]: Linux: PureOS 9 amber
Feb 14 09:39:36 melanobombus run.sh[9191]: Borg: 1.1.9  Python: CPython 3.7.3
Feb 14 09:39:36 melanobombus run.sh[9191]: PID: 9230  CWD: /
Feb 14 09:39:36 melanobombus run.sh[9191]: sys.argv: ['/usr/bin/borg', 'create', '--stats', '--one-file-system', '--compression', 'lz4', '--show-version', '--exclude', '/root/.cache', '--exclude', '/var/cache', '/mnt/backup/borg-backups/backup.borg::{utcnow}-{hostname}', '/']
Feb 14 09:39:36 melanobombus run.sh[9191]: SSH_ORIGINAL_COMMAND: None
Feb 14 09:39:36 melanobombus systemd[1]: automatic-backup.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Feb 14 09:39:36 melanobombus systemd[1]: automatic-backup.service: Failed with result 'exit-code'.
Feb 14 09:39:36 melanobombus systemd[1]: Failed to start automatic-backup.service.
Feb 14 09:39:36 melanobombus systemd[1]: Starting automatic-backup.service...
Feb 14 09:39:41 melanobombus run.sh[9897]: Disk bb1c034e-dd21-48e7-a496-1b95685a094d is a backup disk
Feb 14 09:39:41 melanobombus run.sh[9897]: /dev/sdb1 on /mnt/backup type ext4 (rw,nosuid,nodev,relatime,x-gvfs-show)
Feb 14 09:39:41 melanobombus run.sh[9897]: Drive path: /dev/sdb1
Feb 14 09:39:42 melanobombus run.sh[9897]: borgbackup version 1.1.9
Feb 14 09:39:42 melanobombus run.sh[9897]: Killed stale lock melanobombus@27278930346555.9230-0.
Feb 14 09:39:42 melanobombus run.sh[9897]: Removed stale exclusive roster lock for host melanobombus@27278930346555 pid 9230 thread 0.
Feb 14 09:39:42 melanobombus run.sh[9897]: Removed stale exclusive roster lock for host melanobombus@27278930346555 pid 9230 thread 0.

Looks like it’s running again. But still. How disconerting.

Did it unmount itself by accident? The missing directory is back, in any case:

$ sudo ls /mnt/backup/borg-backups/backup.borg/data/1
1000  1013  1026  1039	1052  1065  1081  1094	1107  1120  1133  1146	1159  1175
1001  1014  1027  1040	1053  1066  1082  1095	1108  1121  1134  1147	1160  1176
1002  1015  1028  1041	1054  1068  1083  1096	1109  1122  1135  1148	1161  1177
1003  1016  1029  1042	1055  1070  1084  1097	1110  1123  1136  1149	1162  1178
1004  1017  1030  1043	1056  1072  1085  1098	1111  1124  1137  1150	1163  1179
1005  1018  1031  1044	1057  1073  1086  1099	1112  1125  1138  1151	1165  1180
1006  1019  1032  1045	1058  1074  1087  1100	1113  1126  1139  1152	1166  1181
1007  1020  1033  1046	1059  1075  1088  1101	1114  1127  1140  1153	1167  1182
1008  1021  1034  1047	1060  1076  1089  1102	1115  1128  1141  1154	1168  1183
1009  1022  1035  1048	1061  1077  1090  1103	1116  1129  1142  1155	1169  1184
1010  1023  1036  1049	1062  1078  1091  1104	1117  1130  1143  1156	1171  1185
1011  1024  1037  1050	1063  1079  1092  1105	1118  1131  1144  1157	1173  1186
1012  1025  1038  1051	1064  1080  1093  1106	1119  1132  1145  1158	1174  1187

Well, it seems to have worked now, so let’s hope this doesn’t happen again. 😰

Feb 14 09:39:36 melanobombus systemd[1]: Starting automatic-backup.service...
Feb 14 09:39:41 melanobombus run.sh[9897]: Disk bb1c034e-dd21-48e7-a496-1b95685a094d is a backup disk
Feb 14 09:39:41 melanobombus run.sh[9897]: /dev/sdb1 on /mnt/backup type ext4 (rw,nosuid,nodev,relatime,x-gvfs-show)
Feb 14 09:39:41 melanobombus run.sh[9897]: Drive path: /dev/sdb1
Feb 14 09:39:42 melanobombus run.sh[9897]: borgbackup version 1.1.9
Feb 14 09:39:42 melanobombus run.sh[9897]: Killed stale lock melanobombus@27278930346555.9230-0.
Feb 14 09:39:42 melanobombus run.sh[9897]: Removed stale exclusive roster lock for host melanobombus@27278930346555 pid 9230 thread 0.
Feb 14 09:39:42 melanobombus run.sh[9897]: Removed stale exclusive roster lock for host melanobombus@27278930346555 pid 9230 thread 0.
Feb 14 10:29:09 melanobombus run.sh[9897]: ------------------------------------------------------------------------------
Feb 14 10:29:09 melanobombus run.sh[9897]: Archive name: 2021-02-14T08:39:42-melanobombus
Feb 14 10:29:09 melanobombus run.sh[9897]: Archive fingerprint: b544aa2865c56d6ed899ab53e945d27b2e72632f3b03a9918fb770b8af323c60
Feb 14 10:29:09 melanobombus run.sh[9897]: Time (start): Sun, 2021-02-14 09:39:50
Feb 14 10:29:09 melanobombus run.sh[9897]: Time (end):   Sun, 2021-02-14 10:28:54
Feb 14 10:29:09 melanobombus run.sh[9897]: Duration: 49 minutes 4.44 seconds
Feb 14 10:29:09 melanobombus run.sh[9897]: Number of files: 2014188
Feb 14 10:29:09 melanobombus run.sh[9897]: Utilization of max. archive size: 1%
Feb 14 10:29:09 melanobombus run.sh[9897]: ------------------------------------------------------------------------------
Feb 14 10:29:09 melanobombus run.sh[9897]:                        Original size      Compressed size    Deduplicated size
Feb 14 10:29:09 melanobombus run.sh[9897]: This archive:              400.10 GB            370.87 GB             54.13 GB
Feb 14 10:29:09 melanobombus run.sh[9897]: All archives:                3.38 TB              2.98 TB            586.15 GB
Feb 14 10:29:09 melanobombus run.sh[9897]:                        Unique chunks         Total chunks
Feb 14 10:29:09 melanobombus run.sh[9897]: Chunk index:                 2857053             25178069
Feb 14 10:29:09 melanobombus run.sh[9897]: ------------------------------------------------------------------------------
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2021-02-14T08:39:42-melanobombus     Sun, 2021-02-14 09:39:50 [b544aa2865c56d6ed899ab53e945d27b2e72632f3b03a9918fb770b8af323c60]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2020-12-30T14:14:40-melanobombus     Wed, 2020-12-30 15:14:48 [e5d798a2f8f7d434c4c189abcf34416f25e56c2256be5ae5e2f159d6cea1bc10]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2020-11-29T16:11:52-melanobombus     Sun, 2020-11-29 17:12:00 [1a6d898cf8d0d762114a17c29485fae7cb8a1643b1bf958ebe0839efe10745ad]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2020-10-04T09:55:59-melanobombus     Sun, 2020-10-04 11:56:07 [6ae0f02f4db55f391068ef1e0597a70f7de74e88a9532e74cb8e3eb2f5b4996a]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2020-07-03T09:09:33-melanobombus     Fri, 2020-07-03 11:09:43 [02580a4055bf0eabf9244d7716679623c9ce6cfd2292146fca4f49283233345b]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2020-04-19T13:59:25-melanobombus     Sun, 2020-04-19 15:59:30 [48aff2806989e7e911438f9c0162d6e25052f1768e974c37035bbfec5887129b]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2020-01-01T18:11:38-melanobombus     Wed, 2020-01-01 19:11:47 [e1825d82ecefefda0ea9af7727f4df7b54d34b4a650b43a80a3ceb243426d9cf]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2019-10-01T20:01:46-melanobombus     Tue, 2019-10-01 22:01:53 [7b5b8e050e44d74f1bb2907cfcb49a1da78dd7e2b1777341bbb300066447b143]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2019-07-22T06:43:53-melanobombus     Mon, 2019-07-22 08:43:57 [b4c3007f18e14877984371787a55269f313a326205157a66d6045b4cfc7e514b]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2019-07-04T13:09:14-melanobombus     Thu, 2019-07-04 15:09:20 [bbd16ceece7396db68a9e0f2d2ecb397b2b30abd2e2aa0b47ba19e0c93fbca07]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2019-04-07T12:42:54-melanobombus     Sun, 2019-04-07 14:42:58 [94dec06bad944a1399c4b62ef3142627a334cdb937a8f54231a3547a4fbd8d6e]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2019-01-18T09:02:49-melanobombus     Fri, 2019-01-18 10:02:52 [55f42cec0f207580a0f8cf9e9453a60c38f7adcce8848e63cbbc42668c1a76c7]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2018-10-01T19:15:46-melanobombus     Mon, 2018-10-01 21:15:51 [fae71c41681ee1137e3b7df00ab9be34aff2544f3c37742fbfd2433cc67e4286]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2018-08-06T10:18:29-melanobombus     Mon, 2018-08-06 12:18:32 [df059b51998a17455727c131aba794c386827a275a373a46128b91680a66099a]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2018-07-24T11:42:35-melanobombus     Tue, 2018-07-24 13:42:40 [1debbaea26d5b721a0a0a87dcbeb5a1af86a19d5b3302fcf57189013f3aef461]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2018-06-28T15:19:01-melanobombus     Thu, 2018-06-28 17:19:05 [52450fda61601e22a8b96edb5c29aafc7a44a48de76c46bd77f521eb1c0c140f]
Feb 14 10:29:10 melanobombus run.sh[9897]: Keeping archive: 2018-05-01T11:57:49-melanobombus     Tue, 2018-05-01 13:57:51 [4e6aea1a8b90e363e51fc42a28bb6d0b3e02623fa3a196c80f5dc71251793f0e]
Feb 14 10:29:10 melanobombus run.sh[9897]: Pruning archive: 2018-03-16T16:41:37-melanobombus     Fri, 2018-03-16 17:41:39 [5df8d3b05427f89416db0bd322519b6991eb6b16eb05b80fb7ba3cb436da6835] (1/1)
Feb 14 10:35:26 melanobombus run.sh[9897]: ------------------------------------------------------------------------------
Feb 14 10:35:26 melanobombus run.sh[9897]:                        Original size      Compressed size    Deduplicated size
Feb 14 10:35:26 melanobombus run.sh[9897]: Deleted data:              -31.49 GB            -24.37 GB             -4.81 GB
Feb 14 10:35:26 melanobombus run.sh[9897]: All archives:                3.35 TB              2.95 TB            581.34 GB
Feb 14 10:35:26 melanobombus run.sh[9897]:                        Unique chunks         Total chunks
Feb 14 10:35:26 melanobombus run.sh[9897]: Chunk index:                 2755971             24549735
Feb 14 10:35:26 melanobombus run.sh[9897]: ------------------------------------------------------------------------------
Feb 14 10:35:26 melanobombus run.sh[9897]: terminating with success status, rc 0
Feb 14 10:35:27 melanobombus run.sh[9897]: /dev/sdb1:
Feb 14 10:35:27 melanobombus run.sh[9897]:  issuing sleep command
Feb 14 10:35:27 melanobombus systemd[1]: automatic-backup.service: Succeeded.
Feb 14 10:35:27 melanobombus systemd[1]: Started automatic-backup.service.

Add Comment

2021-02-11 Transporting suspects

I’ve been thinking about Traveller and Hex Describe again. I’d like to add more “quests” – or patron encounters, as Traveller would say. People that provide some adventure. And I decided upon the following: on a small starport, they are looking for a ship to bring a murder suspect to a nearby big starport.

This is what it looks like:

0403: This is Cov, UWP D99A356-8. There is a gas giant in this system.

Cov is larger than Earth, with a diameter of about 14400km. The atmosphere is very dense. The high levels of carcinogenic nano particles make filter masks mandatory.

A few thousand people live around the Cov starport. The settlement was originally a penal colony for Wifema (_0204_) and gained independence 50 years ago. The resentment is still strong among the locals.

When terrorists on Wifema (_0204_) turned out to be locals, it didn’t take long before the navy showed up, overthrew the old order on Cov, and installed a puppet government, currently led by Lan Gen. Curfews, patrols, interrogations, allegations of torture, and occasional revelations thereof provide fertile grounds for more shootings, more bombs, more assassinations. These are bad times.

Cov has a class D starport. All you can see is the toll house. The harbour master’s office is probably there as well. A bunch of clerks look up as you enter.

The harbour master Tajeddigt Tonui greets any new arrivals in person; they’re taciturn and grumpy. Currently, they’re holding murder suspect Alimah Khatibi, but capital crimes are usually judged in Wifema (_0204_) and the harbour master needs a ship to transport the suspect there. This is a case of domestic violence with the suspect accused of murdering their partner. The body has been found and the evidence is overwhelming. “This case is as good as decided!” says Tajeddigt Tonui. In truth, however, the deed was done by a close relative and Alimah Khatibi is being framed. “I’m innocent, I swear!” they say.

The locals are rich and well off. Economic refugees from neighbouring systems are welcomed for the internal labour marked needs plenty of new hands. At the starport, various agencies are trying to enlist all who came with low passage. The biggest of these agencies is the office of Ishizu Banking, run by Baron Ji Xiaodan.

I think I like it. I have a bunch of “murder case” templates, and these don’t show up too often. I like it. It’s a good model, I think.

Comments on 2021-02-11 Transporting suspects

This is very cool!

The results are very gamable 😀

Again this is bias here but I really like the bullet point format Winters Daughter by Gavin Norman uses.

Could the output emulate that at all

For paragraphs I really like Guy Fullertons The Hyqous Vaults as an example. Its free to download and he has a great way of using short snappy sentences. The length never feels too long to get into your head at the table.

– Oliver 2021-02-11 20:51 UTC


Using bullets would be no problem at all, for Hex Describe. I think the problem is me: are bullet points very important if you have bold, italic, underline, and paragraph breaks to work with? I fear that the information for the quest broken up into three paragraphs (or bullet points) makes them “as important” as some of the other info. And I’m not sure how well that works for the reader.

Let’s try and compare it, though. @wandererbill also mentioned that he’d differentiate player info from referee info, somehow.

0403: This is Cov, UWP D99A356-8. There is a gas giant in this system.

Cov is larger than Earth, with a diameter of about 14400km. The atmosphere is very dense. The high levels of carcinogenic nano particles make filter masks mandatory.

A few thousand people live around the Cov starport. The settlement was originally a penal colony for Wifema (_0204_) and gained independence 50 years ago. The resentment is still strong among the locals.

When terrorists on Wifema (_0204_) turned out to be locals, it didn’t take long before the navy showed up, overthrew the old order on Cov, and installed a puppet government, currently led by Lan Gen. Curfews, patrols, interrogations, allegations of torture, and occasional revelations thereof provide fertile grounds for more shootings, more bombs, more assassinations. These are bad times.

Cov has a class D starport. All you can see is the toll house. The harbour master’s office is probably there as well. A bunch of clerks look up as you enter.

  • Patron: the harbour master Tajeddigt Tonui greets any new arrivals in person; they’re taciturn and grumpy.
  • Quest: the harbour master needs a ship to transport the murder suspect Alimah Khatibi to Wifema (_0204_) because capital crimes are usually judged there
  • Case: This is a case of domestic violence with the suspect accused of murdering their partner. The body has been found and the evidence is overwhelming.
  • “This case is as good as decided!” says Tajeddigt Tonui
  • “I’m innocent, I swear!” says Alimah Khatibi
  • Referee: In truth, however, the deed was done by a close relative and Alimah Khatibi is being framed

The locals are rich and well off. Economic refugees from neighbouring systems are welcomed for the internal labour marked needs plenty of new hands. At the starport, various agencies are trying to enlist all who came with low passage. The biggest of these agencies is the office of Ishizu Banking.

  • Patron: the boss of Ishizu Banking is supreme director Baron Ji Xiaodan
  • Quest: ...

I don’t know.

– Alex 2021-02-11 22:37 UTC


I dig the bullets!

  • Patron:
  • Quest:

These are super helpful to my eye!

– Oliver 2021-02-12 04:00 UTC


Compromise: using the sidebar?

Patron in the sidebar

– Alex 2021-02-12 21:16 UTC


I dig it Sidebars ftw

– Oliver 2021-02-14 20:23 UTC

Add Comment

More...

Comments

You probably want to contact me via one of the means listed on the Contact page. This is probably the wrong place to do it. 😄

– Alex Schroeder 2020-05-22 12:19 UTC

Referrers: Diary Diary Diary