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.

2020-09-24 Anthe numbers

Anthe is the orc village simulation that generates writing prompts on a Gemini wiki… I just added more documentation so that people have a better idea of how it works internally.

The idea is that people wanting to contribute idea need to understand how the simulation works. If you want to see it work, check out the Anthe wiki space at The Transjovian Council. Scroll down to “Index of all pages” and click the link. Of the pages shown, five are village names. Underforth is the one where I use the writing prompts to the the story of my village. Pick one of the others if you want to give it a try!

Comments on 2020-09-24 Anthe numbers

One interesting command I can imagine these days is “split”. It starts making sense once you get to 30 or 40 people. If you don’t, there’s going to be more malnutrition and more children dying.

– Alex 2020-09-24 15:22 UTC

One thing the development of Anthe is doing is that it makes me want to work on Hex Describe again. 😍

– Alex 2020-09-24

Add Comment

2020-09-19 Goat rustling in Anthe

I have working code for my Gemini game! Currently the idea is this: every player “runs” an orc tribe. The game is a low-effort game where players simply indicate a “strategy” for their tribe and the game engine does the rest: it simulates the lives of orcs living in their villages and appends the results to Phoebe pages. This is where part two of the game happens. It’s a bit like Cosmic Voyage, except that the turn reports function as writing prompts. Phoebe is a wiki and so what you do as a player is you edit your village’s wiki page and turn the dry messages into something more entertaining to read.

So what’s the current status?

When a new game is created, a bunch of villages is created with their inhabitants. When a turn is processed (a year passes in-game), the orcs grow older, give birth, and die. That’s it. It’s a lot of drama.

If you want to see it in action, check out the Anthe wiki space at The Transjovian Council. Feel free to send me mail with ideas, or edit an appropriate page on the Anthe wiki space. 😁

I’m planning on doing something regarding the old conflict between city dwellers and steppe nomads: tribes can focus on animal husbandry or agriculture; the game is going to have occasional calamities such as draughts, long winters, floods, diseases, invasion, marauders, and so on; agriculture allows you to nourish ten times as many people as animal husbandry, but at the same time the calamities will affect you much more; possible further actions for players would therefore be to build granaries (which requires a certain surplus), walls, canals, dams, and so on. Players can help each other in achieving these goals.

So I wanted to start with animal husbandry. Let’s say orcs have goats instead of cattle and thus goat rustlers instead of cattle rustlers. If you village has no animals, you can steal them from another village. My idea is that if the orcs have a strategy of animal husbandry set, but not enough animals to feed themselves, they’ll try and steal them from their neighbours, automatically.

Then we can give one village a bunch of animals and simulate a few years, see how it goes. I also need to think of how many animals are needed to feed a certain number of people at “equilibrium”.

Related posts:

Comments on 2020-09-19 Goat rustling in Anthe

OK, giant goats… 😃 Or cows? I feel I half-know more about cows but really, I don’t know anything. I hear a cow feeds a family for a year when it’s butchered. Let’s agree that this family just eats the dairy products as well. Does that make sense or would that feed even more people? I have no idea. A cow gives birth when she’s two years old. Remember, this is not reference material. This is reference material, dumbed down to serve for a game, not the other way around! Like the entire game… OK, moving on.

How many cows to sustain a group? Ancient nomads roamed in groups of five to ten families. If we start with the assumption that a family is about five people, that gives us 25–50 people, which isn’t any different from the hunter-gathering model I’ve used of 30–50 people. (Ancient Steppe Nomad Societies, Nikolay Kradin, DOI: 10.1093/acrefore/9780190277727.013.3)

Perhaps that goes to show that the presence or absence of livestock – that is, whether a group lives as hunter-gatherers or as pastoral nomads – depends on the ecosystem they find themselves in.

I have yet to figure out whether I want the villages to be located on a map, with advantageous and disadvantageous geographic places: hill forts can be defended easily but need a hill; fishing needs a lake; a river attracts malaria; living higher up in the mountains means pastoral nomadism as agriculture starts to fail. Or do I want a game of steppe nomads vs. settled people, agriculture, land ownership, taxes vs. free roaming smaller units?

Perhaps the game orcs can all live as outsiders. One of the actions players could vote on would be: do we want to go to war? It’s risky because many people can die, but it can also be very rewarding (meaning less people die). That would point to some sort of “treasure” being available to hoard. If you have it, orcs spend it to buy grain and supplies from border towns. Plunder replenishes this. Big victories result in tribute being paid for a few years.

To be entertaining, the choice to go to war should be some sort of bet. The war would be a sort of “off-screen” expedition that you can join or not. The empire to the North, East, South or West is weak and ripe for plunder. The king of kings calls on his subjects. Do you join the expedition? If you go, your share of plunder is proportional to the number of people returning from the expedition. The mortality rate of the expedition depends on luck and is the same for everybody participating (if the empire was weak, it’s low; if the empire recovered quickly, it’s going to be high).

– Alex 2020-09-22

Add Comment

2020-09-18 Programming

I just had an interesting conversation with @alpine_thistle and @polyphonic regarding the Raspberry Pi and how it wasn’t as useful as some people claimed it would be. If somebody tells you, “you can do anything with it” – then that simply isn’t true. It’s hard to do anything with it. Sure, you can use it as a small computer. But if you want to do a project, you’ll soon find out that you need a plethora of skills and tools.

To be honest, I used my Raspberrry Pi as a small computer for a bit – as a mail server – and as soon as I knew that I wanted to discontinue the mail server I had no idea what to do with the thing. Something about pins and motors and a mechanical tentacle that can grab stuff was an idea I had. I did not know where to start. It seemed like such a huge problem. In the end, I gave it away. The recipient hasn’t done much with it, either, I think.

I guess that’s why I’m a programmer still: when things get physical, I just don’t have the skill. I blame it on one or two miserable model plane experiences as a kid. Nobody helped me out, it was just taking forever and looking bad, so I decided all of this stuff was not for me. And then when you’re no longer ten, it’s hard to change… that’s been my experience, in any case.

Sometimes I fear it’s the projects-within-projects aspect mentioned above: when programming leaves the computer, the gap is so damn wide that programmers like me never attempt it and non-programmers wonder why the programmed stuff never meets their real world expectations. I think that’s why the Raspberry Pi got popular: at last, here was something where at least a very small number of people could affect the real world! It’s just that for most people, the promise remains unfulfilled.

We also talked about maker culture. What I find annoying is the reinvention of hobbies as ‘making’, with conferences to attend, magazines to buy, a new target audience for ads… the invention of a new market, basically. And all the people knitting, cooking, baking, wood working, gardening are scratching their heads… Are we bread makers, now? Clothes makers? I guess not because where as we have the spirit, the independence, the culture, the tools, the traditions, we simply don’t belong into the target audience for the ads. Which is fine! I don’t want to go to a maker fair, and I won’t be buying a 3D printer anytime soon.

Perhaps I’m simply envious because I think I don’t have the time to expand my life into yet another direction.

I guess I’m with @Sandra when she says:

My life needs focus. So I’ve decided to focus on everything except physical. That’s why I’m an artist writer musician DM programmer designer teacher philosopher psychonaut prophet poet aesthete semiotician. Because I decided to set a humble and limited goal instead of trying to do everything, such as soldering and 3d printing and such.

It made me laugh. 😁

Add Comment

2020-09-16 Orca

I saw a fascinating introduction to ORCA. Basically, it’s a very terse programming language that you write in all four directions. One of the possible uses for Orca is to make music. If you start looking, you’ll find some fantastic live coding setups.

One of the output formats is MIDI. The problem is that it doesn’t come with a synthesizer. I looked at some of the stuff I had and was confused. Jack, Aeolus, Yoshimi, Supercollider, Sonic Pi, what the hell?

I finally settled on VCV Rack. It’s the modular synth emulator. When you start it up, it already comes with a minimal setup that allows you to play on your keyboard, as it gets translated to MIDI, and from MIDI to (emulated) voltage.

So all I had to do was to pick ALSA and Midi through in VCV Rack. In Orca, I used Ctrl-D to show the menu → MIDI Output → Midi Through. And it worked!

First little program:



Give you a regular beep as the D emits bangs on every third frame which plays a MIDI note: octave 5, C.

A little more:

D1  C

The D emits bangs which activate the MIDI output, and the note is determined by the adder which adds a (10) to whatever the counter emits (0-9). Use < to slow it down.

Sadly, I know very little about modular synthesizers and therefore I would have to learn a lot before getting anything done! 😅

Screenshot of a modular synthesizer emulator and a tiny Orca window

What also works is to connect Orca to the OP-1 by Teenage Engineering. Use Ctrl-D to show the menu → MIDI Output → OP-1 Midi Device MIDI 1. It’s going to play whatever you have active on your OP-1. Hm... I guess that means you can only use MIDI channel 1 (0 in Orca) and that means you only get one instrument.

Table with laptop and a tiny synthesizer connected to it

Ah, and FluidSynth works on the command-line! Thank you, @dokuja, for this suggestion. There’s also a GUI if you want it, called Qsynth. I needed --audio-driver=alsa for it to work. I never quite know how these things work: OSS, ALSA, Jack, who knows… But MIDI+ALSA seems to be what works on my system, so yay! 😃

Orca and FluidSynth running side-by-side in Tilix

FluidSynth uses sound fonts. I guess you want a “standard” sound font to get started? I’m using FluidR3_GM.sf2. So, on a Debian system, that would be packages fluidsynth and fluid-soundfont-gm.

Nothing else is required:

fluidsynth --audio-driver=alsa /usr/share/sounds/sf2/FluidR3_GM.sf2

In Orca, use Ctrl-D to show the menu → MIDI Output → Synth input port or similar. As far as I can tell, the first nine MIDI channels (:0 to :8 in Orca) are a piano, and MIDI channel ten (:9 in Orca) is a drum kit.

So here’s how I like to my beats. Use a clock to pick items from list of 16 items. I seem to be doing this a lot.

The numbers often confuse me, so let’s go over this again. You probably saw it in a tutorial video already. The numbers being limited to a single digit, numbers above ten are simply the letters of the alphabet with ten being a, eleven being b, and so on. So if we want sixteen items, we need to tell the clock to have “g” items (1 2 3 4 5 6 7 8 9 a b c d e f g). The actual numbers generated by the clock start at 0 and don’t reach the limit (0 1 2 3 4 5 6 7 8 9 a b c d e f, that is from zero to fifteen).

When I’m confused, I change the clock to have “4” items and pause Orca, then I use Ctrl-F to step through the frames and I can see that it is looping 0 1 2 3 0 1 2 3, etc.

OK, so here’s a clock (C) producing sixteen (g) numbers below the C, (0–f).


Next, we need to the T operator. Use Ctrl-G to get a short description of all the operators. It takes the item to fetch and the total number of items on the left, and the actual items on the right.

 gT** *** **   * **

This setup means that the bang (the asterisk) shows up in the rythm that I can “see” in the list items. It appears below the T. So now I put a MIDI operator (🙂 below it using channel ten (that is, 9!), and pick a drum. Watch out: if you put the MIDI operator to the right of the bang, then it will also be activated by the bang in the T operator data above, so don’t do that.

Wrong (you get constant banging):

 gT** *** **   * **


 gT** *** **   * **


Now repeat and use different patterns and different drums.

 gT*   *   * *



Comments on 2020-09-16 Orca

Well done, Alex 🙂

– Anonymous 2020-09-18 11:36 UTC

Add Comment

2020-09-12 Play by click

Many, many years ago, I maintained and developed a play by email (PBEM) game called German Atlantis. One of the problems it had was that it was a typical “explore, build, conquer” game. You gained more units and thus you had to give more orders, reports grew longer and longer, and I ended up not liking it in the end.

Today, @jbauer wondered whether there was something similar to Astrobotany out there. Astrobotany is a game where you get a seed that grows into a weird plant if you water it every few days. In order to do that, you log in and click a link. The interface is simple enough that you can “play” the game via Gemini. Sadly, that part is extremely boring. There are two things that are interesting: the plant develops and that is interesting to see: the ASCII art and the description changes over time, and you have “enough water” to water one other plant in the community garden every time you log in, which allows you to support a friend by watering their plant.

Astrobotany - Your Garden

   /              \      
  |                |     
  |                |     
  |     R.I.P.     |     
  |                |     
  |                |     
  |                |     
. |, _\/ .. \. \ /,|_ .  
  ^      '        `    ' 

name  : "Jason"
stage : fractal young agave (deceased)
age   : 21 days
score : 490177
water : N/A

You cry over the withered leaves of your plant.

Your plant was recently watered by Samsai.

Plant Actions

[1] 💧 Water
[2] 💀 Harvest
[3] 🍄 Fertilize
[4] 🔬 Plant info
[5] 📛 Plant name

[6] 🚶 Go back

Yes, I forgot about my plant… 😭

Thank you, Samsai! 🙇

But this got me wondering. We should design something for Gemini, perhaps? Maybe each player runs a small village in a generic non-tech setting. People are born and die, marry and separate, and every year players can make one decision: ask a character from a neighbouring village for marriage, send a character to help defend a village against marauders, focus on dairy, lumber, mines, salt, etc. Thus, the story progresses slowly, on autopilot, until you intervene and make one of these decisions?

OK, second iteration. There is a hex map, like a random Alpine map as generated by Text Mapper. On the map are villages and these villages belong to the various players.

Each hex also gets a wiki page. The report is generated for every hex and is appended to the wiki page. Players can edit those pages, add more stuff, elaborate, move stuff to other pages, but that doesn’t change the internal state of the game. This is how players who want to write some more can do so.

In order to keep the user interface simple, players don’t have a lot of choice. So I’m thinking: the game is simple. On auto-pilot, your village simply degenerates to some sort of hunter-gatherer tribe, decimated by bandits. The choices involve cooperating with other players and their villages or clans.

Terrain and trade. Every hex generates something that can help others: fish, lumber, salt, cheese, iron, crops, wool, leather, stone. Simplified, we could say that a hunter-gatherer tribe can grow up to twenty members, but with every trade you establish, you can add another twenty to your village: given the nine things I mentioned above, that would increase your village up to two hundred people. Cool. So, one of the actions could be establishing of regular trade with another village, giving you access to their raw materials, and giving them access to your raw materials. This would be a high level “trade” – I’m not actually interested in gold coins and prices, all I care is for trade routes to exist.

We could add calamities to mix things up. All would suffer. If there is drought, livestock perishes and people die. If you had built granaries, however, less people would have died. If there are marauders plundering the land, people die in the ensuing famine. If you had built palisades, however, less people would die. We could also think of bigger things: the Romans coming, the Huns coming, the plague coming, and so on. The thing all these things would have in common is that they would be a constant cause of degradation and impoverishment, where as the establishing of relations would mitigate these things.

We could add family politics. People are born and die, marry and divorce, they all have names, and so on. One of the actions could be to marry off children to other clans, strengthening your ties. I’m not quite sure how exactly this would work, however. Perhaps in the case of an invasion, all the related clans would help each other fight off the invaders, reducing their losses.

We could also add a little crafting or tech tree. I’m a bit hesitant, however. Perhaps it would make for a better game if there was infrastructure one could build, but it would also decay over time, leaving ruins. The constant maintenance required would also imply relations to other clans. For example: a secure water supply with an aqueduct requires trade relations with five villages having a stone quarry. If the player of one of these five quarries drops out of the game, the trade relation disappears and all the aqueducts start to decay until a replacement village is found.

Every turn the report would list the population changes, the buildings built and the buildings falling apart, and the options:

  • establish trade route to a random nearby village
  • build some infrastructure if the prerequisites are met
  • marry off a member of your clan to build a network

And then we just keep adding to the game if we like it. What do you think?

Comments on 2020-09-12 Play by click

OK, third iteration. Looking at a random map, I remember that all the villages are placed in forest hexes because I felt that this is where villages here in Switzerland were typically built: the giant forests of central Europe. You need water to run the mills, but you need to avoid the flooding of the big rivers in spring, and you need to avoid the swamps and the Malaria they brought. I remember the Swiss valleys being locked in: they had cheese and desperately poor men that were willing to fight in other people’s wars, and they needed salt… Perhaps lumber only shows up in countries where you need to build a fleet, that is in a time of intercontinental trade (and war), which would be boring.

The longer I’m thinking about this, the more it all breaks down. Most villages didn’t need all that long distance trade, I’m sure. So... where does the need to cooperate come from? Or make it all fantastic? I’d like to keep it non-fantastic for as long as possible, though.

So... how about players getting to say where they focus their surplus production, and they all have the same options. Let’s start small.

  • grain
  • cheese
  • meat
  • fish
  • lumber
  • stone
  • fibre

Later, we can add more resources to locations at random. Perhaps people “learn” about a local secret: copper, tin, iron, coal, dyes, tulips. Or perhaps “switching” your resource focus actually means moving your village: up into the valley if you want to focus on dairy but your grain production is going to be bad; to the lake if you want to focus on fish but your stone production is going to be bad; or to a particular mine. The point is that the game isn’t about map exploration but about building resilient networks of resource sharing.

By default, about twenty people can live in an area as hunter-gatherers.

With each food connection, you can add another twenty people:

  • grains
  • cheese
  • meat
  • fish

Non-food connections offer other benefits:

  • one lumber connection allows you to build a palisade to defend against marauders
  • one lumber connection allows you to build a mill to double your grain production one stone connection allows you to build a city wall to defend against invasion
  • one fibre connection improves your chances of surviving harsh winters

I need to experiment with the numbers. Perhaps each village can offer two outgoing connections at most? We’d get this long term situation:

  • village 1 focuses on grain and shares with village 2 and 3
  • village 2 focuses on lumber and shares with 1 and 3
  • village 3 focuses on grain and shares with village 1 and 2
  • this allows villages 1 and 3 to build a mill each
  • village 1 has 60 people (20 + 20 from the mill + 20 due to grain from village 3)
  • village 2 has 60 people (20 + 40 due to grain from villages 1 + 3)
  • village 3 has 60 people (20 + 20 from the mill + 20 due to grain from village 1)

But with random events, things get more interesting: when the marauders come, all the mills are burnt down and all the grain is stolen and all three villages are reduced to 20 hunter-gatherers again.

So now village 1 decides they need a palisade. That means no mill, and thus it only has 40 people. The trio of villages is now better prepared to resist marauders. Perhaps we can start modelling how people from the “safe” village marry into the surrounding clans after the pillaging to replenish those other clans?

I still think that with just two outgoing economic ties, we’re often going to end up in trios? So perhaps we need to have a model that says what people are doing. If we have 20 people they just feed themselves. If we have 40 people, we can have one outgoing connection. If we have 60 people, we can have two outgoing connections, and so on? Perhaps more than four outgoing connections needs some sort of infrastructure investment, again: building bridges requiring lumber or stone connections.

I’m going to try and not model “be rich” but I guess we could: seven lumber connections allows you to maintain a ship which gives you a luxury level; five fibre connections allows your clan leaders to dress in fancy silks and gives you another luxury level. Luxury levels are essentially useless but could be a player goal? I don’t know. Maybe I don’t want to make a game about amassing wealth.

– Alex 2020-09-12 21:25 UTC

L-0: food, clothing, shelter. L-1:defense, education, industry, L-2: bond with other communities, L-3:fiefdoms - require nominating a player as chief

– Kevin 2020-09-12 22:16 UTC

I’ve thought about it some more. I think the problem is that I have a lot of ideas for programming. We could make the number of outgoing connections proportional to the population size and so the reactions to calamities would have to be a prioritisation of which connections to maintain; we could have invading troops on the map, and clans could move to different villages, fleeing from the troops, or hand over part of their produce, diminishing their resources… We could have colonisers arrive, and regimes collapse, and through it all the villages would try to survive, children are born, move away if there are no opportunities, or build the settlement; we could go all dwarf fortress here and simulate how people that are too closely related are not allowed to have children; and on and on.

But the question is, I think: would I want to program the game, or would I want to play the game? I’m starting to suspect that I wouldn’t actually play the game for long. I’m too interested in programming. And that in turn makes me think I should postpone the programming: let the enthusiasm run its course, and then do nothing. Why work on a game that I wouldn’t want to play.

– Alex 2020-09-13

I just can’t drop it... Got started with a little “orc village simulator browser game” that I’m planning on integrating with my Gemini wiki, Phoebe. I’m calling the game Anthe (another of Saturn’s moon, and one of the daughters of the giant Alcyoneus that got turned into a kingfisher).

– Alex 2020-09-14 21:03 UTC

OK, Anthe has basic population growth! Orcs procreate and reports are written to a Phoebe wiki! ♥

– Alex 2020-09-18 22:27 UTC

Add Comment

2020-09-11 Authoritarian regimes are popular

Recently, @22 linked to “Life in authoritarian states is mostly boring and tolerable” by Thomas Pepinsky, arguing that “Americans have an overly dramatic view what the end of democracy looks like.” Then it goes on to say that people have the same problems as in a democracy, and that they are mostly happy. And I agree.

I’ve often said to friends that dictatorships work because most people benefit in some way. I’ve had a Brazilian friend tell me how they liked the dictatorship. It was safe to go to the public bath after sunset. Salazar and all the fascist leaders are still beloved by many. I think people underestimate how easy it is to slide into authoritarianism; what they ignore is how terrible the price to pay is for the minorities.

If you’re lesbian, gay, bisexual, trans, jewish, uighur, black, or if you own the plot of land a friend of the government wants, or if your business competes with a friend of the government, then you have a problem.

People often talk about Switzerland’s direct democracy as some form of “the majority is always right” and nothing could be farther from the truth (even if our right wing party wants it to be the truth). Protecting minorities and making sure they all have a say is the most important part and often not appreciated. If we can’t do that, then what’s the point, I wonder. Any authoritarian regime feels like a tyranny of the majority.

I often think about the motto on the Brazilian flag: Ordem e Progresso. Order and progress. Who doesn’t want order and progress? All the fascists are nodding. To talk about the drawbacks of rational authoritarian regimes is tricky and I find one of the easiest routes is the discussion of human rights.

Of course that same measuring stick can also be applied to many governments many consider to be democratic. If your government is democratic but human rights are being violated, what’s the point, I wonder? We need to change that.

To give you a simple example from Switzerland: we have about eight million people and of these about two million are foreigners. That’s because it takes so damn long for naturalisation to happen. Switzerland is criticised for it on a regular basis. A fourth of the population can’t vote in this country! I mean, that doesn’t mean that Switzerland is authoritarian, but as far as I’m concerned, it’s failing as a democracy on a different axis.

Comments on 2020-09-11 Authoritarian regimes are popular

The Vox link is currently truncated; the complete URL is https://www.vox.com/the-big-idea/2017/1/9/14207302/authoritarian-states-boring-tolerable-fascism-trump

Alexis 2020-09-12 03:30 UTC

Thanks, fixed! – Alex

Uh, not really. I grew up in a dictatorship. The crime rate was sky-high (especially compared to what we have now: for a good while this century, Bucharest was the safest city in Europe). And part of that was due to poverty. There’s still a huge difference in crime rates between parts of the country, and the correlation with poverty is striking. But also, law enforcement in a dictatorship doesn’t protect people from anything. It protects the regime from people, and largely ignores everything else.

No, life in a dictatorship isn’t safe. It’s predictable: you get up in the morning, go to your government-imposed workplace (they’ll even make one up just for you if there’s no work otherwise), get your salary at the end of the month (always the same amount), drop by the nearly-empty grocery store to pick up your food rations, and head back home to turn on the TV and hear how the economy is booming.

Which, of course, it isn’t. Dictatorships are never prosperous. They’re horribly poor all over, except in a few places where they keep up the appearances so they can brag to foreigners. But people would rather have extreme poverty and crime everywhere if that spares them from having to feel responsible for anything.

Felix 2020-09-12 06:31 UTC

Thank you, Felix!

– Sandra 2020-09-12 06:57 UTC

Every dictatorship and authoritarian state is different. The Vox article was about the American delusion that “not democracy” is “full on apocalyptic dictatorship” which sounds a bit like what you’re describing, Felix. The Vox article then went on to describe another state in the spectrum of “not democracy”, Malaysia. I feel many of the systems that disappeared and still have people pining for them without having been part of the immediate upper echelons of the government fall somewhere along this line – Salazar’s Portugal, the Brazilian military dictatorship, the communist regime in Eastern Germany, the communist regime in China today.

For Salazar, for example: «In 2006 and 2007 two public opinion television shows aroused controversy. Salazar was elected the “Greatest Portuguese Ever” with 41 per cent of votes on the show Os Grandes Portugueses (”The Greatest Portuguese”) from the RTP1 channel»

A Romanian friend told me similar stories about hardship and poverty (and the family’s eventual flight to Switzerland). I don’t want to deny the misery of these communist dictatorships.

I still agree with the author of the Vox piece, however: there’s a slow slide into authoritarianism and as the regime props up fake enemies, enemies to a religion, enemies to the economic order, enemies to the established societal order, and keeps up a basic working state, there’s no rebellion. People acquiesce and are distracted by daily life.

I also think an important part of the Vox article is to see these aspects in the countries that call themselves democracies today: if the system doesn’t change no matter who you vote for, if police and border patrols and other security elements have expansive powers, if widespread poverty and precariousness spread, then all of these are red flags.

– Alex 2020-09-12 11:11 UTC

Oh, red flags they are. As people have been pointing as of late: tanks in the street aren’t the first sign of a dictatorship in the making, but the last. And Americans don’t get it, as evidenced by their reaction to what’s been happening in Belarus. Which is exactly why they’re guaranteed victims in the upcoming elections.

Felix 2020-09-12 11:47 UTC

I’ve had a few depressing exchanges with @Shufei on the topic of the upcoming elections in the USA. 😱

Recently she linked to this thread by .

– Alex Schroeder 2020-09-12 13:22 UTC

Add Comment

2020-09-10 Barbarian Prince

Barbarian Prince is an old solo-adventure thing that is a bit more than just a Choose Your Own Adventure (CYOA) book. It has a hex map, rules for travelling, random encounters, adding more people to your entourage, a time limit, a goal. And it’s free! It was published in 1981. Check out the “one piece map”. 😍

Recently, as I was sitting at home, I decided to pull the PDFs out of one of those deep folders I have on my disk and started playing.

I started in that little town north of the river at 1501 – tried to cross the river but got lost in the swamp of 1401 so managed to cross it but couldn’t enter it; next day I enter the swamp successfully but encounter a troll. Foolishly I try to fight, got beat up but managed to escape with half my endurance gone. I’m lost in this swamp and I have 68 days to go.

I’ll report more when I play some more. 😁

Comments on 2020-09-10 Barbarian Prince

How does it compare to Ironsworn? There were also some GURPS Conan stuff in this vein and some early Tunnels & Trolls stuff. This is a field I’m not too familiar with. I’ve done Fighting Fantasy and Way of the Tiger. And of course IF games like Spider & Web, Floatpoint, The Gostak etc.

– Sandra 2020-09-11 06:23 UTC

Sadly, I am totally unfamiliar with the field. I played one or two choose your own adventure books as a kid and I don’t remember their titles.

– Alex Schroeder 2020-09-11 06:59 UTC

I spent days trying to leave the swamp, moved to the swamp of 1302, then more days trying to find the way out into the forest of 1202, until on day 11 a spectre appeared, turned me into smoke and took me to the astral plane, never to be seen again.

– Alex Schroeder 2020-09-15 20:15 UTC

Add Comment

2020-09-05 The shadow people of social media

When Google+ ended, I had about two thousand followers and was following a few hundred people. On Mastodon, I now have about 1.7K followers and I’m following about 550 people. What a strange feeling – not because there are so many people listening but because I don’t interact with that many people. I don’t think that the problem is the Dunbar number: I interact with less than 150 people and I read more or less all the post of the people I follow. I suffer from fear-of-missing-out (FOMO), yes I do. What remains is the slow dread of being followed and following 80% zombie accounts. It’s not a clear cut thing for now, just a feeling of unease.

Back in 2019 I was talking aboug Google+ and the blogs and using arguments such as the data krakens of our time. But really, what has changed? The data krakens are probably just connecting to the fediverse and siphoning our data, selling it for pennies. Psychopathic programmers at work.

Anyway, what does that mean, when I feel like I’m standing in the light somewhere, with maybe fifty other strangers from the Internet, surrounded but hundreds, maybe thousands of shadow people. Maybe they’re listening, scribbling into their notebooks, recording with the ingenious devices, feeding the data tanks and refineries, or maybe they’re dead, their faces permanently frozen in that strange grin of their last post made a year ago, two years ago, three years ago. Dead husks, their owners moved on, have a different life, a different presence. They shed their skin and left it there, standing in the shadows. In cyberspace, there’s no gravity to pull it down; there’s no funghi to break it down; digital junk and digital identities remain. Nothing is forgiven, and nothing is forgotten.

Perhaps these are the first signs of winter coming. The sky turns grey and grows heavy, the clouds come lower and lower, and life between heaven and earth is a drag, all is mud, wet clothes, rotting leaves. I fear those short days of murky light and that cold grip of winter on my ribs.

Sometimes I idly wonder about restarting the Mastodon account. Delete all the followings. Block and unblock all the followers (I think that’s how you force-unfollow others?), delete all the earlier blocks, delete all the favourites, boosts, and posts (archiving them offline, I guess – but what for?). And then see what happens. Would I end up in the same bubble? Would I start with ten people I remember from before the reset? Thirty? How important would it be to make a reset permanent instead of a new account? Would a simple alt account do the trick? Perhaps the finality of a reset would change the outcome. No peeking at the old lists!

@pet84rik says that you end up in almost the same bubble. “People with about the same interests will find your, sooner or later.” I guess that’s a good thing? Shake off the shadow people and find your bubble again?

There’s also the interface to consider. One of the ways to find new people is to look at the public feeds, the local feed and the federated feed. But if you have “enough” people you’re following, you don’t need to check the public timelines anymore. And if you’re on an instance that’s no longer open, there are far fewer new folks looking for people to follow on the public timelines, too.

Lots of guessing and vague feelings of winter, that is all.

My summer break is over, I spent a week at the office again. I also drank a glass of Armagnac. I didn’t drink any spirits over the summer break. Is work making me drink? Would I turn into an alcoholic over the years? I must shake all those winter thoughts. Maybe part of the problem is COVID-19. I don’t miss people. I don’t like people. At least I think I don’t. But perhaps without people, my mental health is starting to drift a little. I should meet more friends just in order to get centered.

I’m going to ask my wife for a run, get some fresh air, see the sun and the sky and the grass and the bees, to hear kids and dogs and crickets. Autumn has just begun. There’s still time.

Comments on 2020-09-05 The shadow people of social media

love your remark about there not being any fungi to break down the old detritus in cyberspace. the natural processes benefit us all yet we’ve forgot to build them in to our online worlds

– lukee 2020-09-05 14:26 UTC

Yeah, like gravity, all these omnipresent things need extra programming in cyberspace.

– Alex Schroeder 2020-09-05 15:33 UTC

I went for a run with my wife and it was nearly two hours long and it was peaceful and we were in the flow and the forest was green and the sun was shining and our feet were tapping along in harmony, it was wonderful. Then we went out for dinner with friends and it was interesting and we laughed a lot and it was wonderful, too.

– Alex 2020-09-05 22:49 UTC

Add Comment

2020-08-31 Summer's gone

Like every summer, I enjoyed a long summer break. Two months of staying at home, doing whatever I fall into. This year, it was Gemini, and Phoebe, my Gemini wiki.

Sadly, summer’s gone and that means going back to work!

Comments on 2020-08-31 Summer's gone

It turns out I made a mistake! I knew that I had wanted to start a week earlier, and had told my project manager, but then I forgot about it but remembered that I wanted to start a week earlier, so when I showed up in the call today they were surprised. Alex is back one week earlier! Whaaaaaat!?

OK, I really got confused this time. Which is a good sign regarding summer break. If you can’t remember things from before your holidays, then those are good holidays in my book! I did remember my password, though, so the mind wipe wasn’t complete... 😀

I’m thinking of taking off two weeks in October in order to make up for it. So far, so good!

– Alex 2020-08-31 10:08 UTC

Did I tell you that at my wife’s office the people working in Human Resources (HR) think that we should talk about “Life Balance” instead of “Work-Life Balance” since work is also part of life... That is such a clumsy way of trying to rework the language in order to reframe the mess we’re in, it makes me cringe. “Fremdschämen” is the German word to use when we feel shame for the mistakes of others.

Incredibly, I’ve since learned that they are not alone in their attempt to use “life balance.”

I think they’re trying to get away from the whole discussion of Work-Life Balance, all the books and papers and feelings on the subject. Instead of trying to fight the idea that work is something many and me included wouldn’t be doing if the consequences wouldn’t be so terrifying, they are trying to establish a new mind space that is still terra nullius. There, no opposition exists.

Which is why I like to fight this change. If we keep calling it Work-Life Balance, we have the existing literature in our back. And when they say that “work is not the opposite of life” we can either argue that an established concept is an established concept, even if the exact wording don’t match their expectations; we can’t just ignore the existing literature on the idea even if we don’t like the name of the idea. Or we can argue that “life balance” means even less: life in balance with what? A well balanced life in terms of what aspects? Like, how much walking we do instead of driving? Of watching TV instead of reading? We need to name the things we’re going to be looking at. Or are they going to just hand-wave it and claim, “everything?” In which case, the concept seems pretty meaningless. If we’re going to talk about how much time we spend away from the family and our relations, if we’re going to talk about the hours we spend at the office, if we’re going to talk about burnout, then let’s call a spade a spade. We’re talking about work.

– Alex 2020-08-31 10:21 UTC

Your post has reminded me to create my own! I’d love to see other geminauts report their summers too.

– Timur 2020-08-31 18:52 UTC

The Cure remains one of the best bands. 😄

– Alex Schroeder 2020-09-01 12:00 UTC

Add Comment

2020-08-29 Restarting Phoebe

I have trouble restarting Phoebe and other services I run. I guess I don’t understand how these forking processes work. These processes fork for every request they get, and that works. When they get a lot of requests, however, they enter some sort of failed state. And by “a lot” I mean more than a hundred or so. I know that it’s not a lot but I want these services to work for the small net and so I don’t want to spend any effort in trying to make them handle more. I don’t want to start caching HTTP requests, for example. What irks me most of all is that this doesn’t happen because hundreds of visitors want to know about my stuff. No, I share a link on Mastodon, and my post gets federated, and then every single server on the fediverse tries to get a preview image to display.

I’ve solved this issue for all my services behind Apache by blocking all the fediverse user agents, but Phoebe runs without a web server front-end. I’ve tried to abort as soon as possible, using the same regular expression, but that doesn’t seem to work.

But I have a second layer of defence: Monit watches over my processes. Please forgive the huge start program option. Maybe it’s time to move some of that into a config file. Please just scroll down. I also didn’t want to shorten it, because I think it’s an interesting snapshot of a non-trivial Phoebe setup.

Let’s go through this.

First we have a PID file, where the process ID is going to be. This is how Monit identifies the parent process responsible for the service. The --pid_file option is what tells Phoebe to write the same file. So far so good.

check process phoebe with pidfile /home/alex/farm/phoebe.pid
    start program = "/usr/bin/perl -I/home/alex/phoebe/lib /home/alex/farm/phoebe
 --setsid --user=alex --group=alex
 --log_level=3 --log_file=/home/alex/farm/phoebe.log
 --host=transjovian.org --cert_file=/var/lib/dehydrated/certs/transjovian.org/fullchain.pem --key_file=/var/lib/dehydrated/certs/transjovian.org/privkey.pem
 --host=toki.transjovian.org --cert_file=/var/lib/dehydrated/certs/transjovian.org/fullchain.pem --key_file=/var/lib/dehydrated/certs/transjovian.org/privkey.pem
 --host=vault.transjovian.org --cert_file=/var/lib/dehydrated/certs/transjovian.org/fullchain.pem --key_file=/var/lib/dehydrated/certs/transjovian.org/privkey.pem
 --host=communitywiki.org --cert_file=/var/lib/dehydrated/certs/communitywiki.org/fullchain.pem --key_file=/var/lib/dehydrated/certs/communitywiki.org/privkey.pem
 --host=alexschroeder.ch --cert_file=/var/lib/dehydrated/certs/alexschroeder.ch/fullchain.pem --key_file=/var/lib/dehydrated/certs/alexschroeder.ch/privkey.pem
 --host=next.oddmuse.org --cert_file=/var/lib/dehydrated/certs/oddmuse.org/fullchain.pem --key_file=/var/lib/dehydrated/certs/oddmuse.org/privkey.pem
 --wiki_main_page=Welcome --wiki_pages=About
 --wiki_mime_type=image/png --wiki_mime_type=image/jpeg

OK, with that out of the way, let’s talk about the important stuff: stopping and restarting the process, and determining when to restart the process.

    # leave enough time after a stop for the server to recover before starting
    stop program = "/bin/bash -c 'kill -s SIGKILL `cat /home/alex/farm/phoebe.pid`; sleep 120'"
    if failed
	host transjovian.org
	port 1965
	type tcpssl
        send "gemini://transjovian.org:1965/\r\n"
	expect "20 .*"
	for 5 cycles
	then restart
    if totalmem > 100 MB for 5 cycles then restart
    if 6 restarts within 15 cycles then stop

Monit checks the service using a regular request, once every cycle (5min). If it fails five times in a row (25min), it restarts. It also restarts when total memory is more than 100MB five times in a row. And when it had to restart six times in 15 cycles (75min), then the process gets stopped.

What happens on a restart? First the program is stopped and then it is started. But yesterday for example:

[CEST Aug 29 00:39:05] error    : 'phoebe' total mem amount of 190.0 MB matches resource limit [total mem amount>100 MB]
[CEST Aug 29 00:39:05] info     : 'phoebe' trying to restart
[CEST Aug 29 00:39:05] info     : 'phoebe' stop: '/bin/bash -c kill -s SIGKILL `cat /home/alex/farm/phoebe.pid`; sleep 120'
[CEST Aug 29 00:39:35] info     : 'phoebe' start: '/usr/bin/perl -I/home/alex/phoebe/lib /home/alex/farm/phoebe --setsid --user=alex --group=alex --log_level=3 --log_file=/home/alex/farm/phoebe.log --pid_file=/home/alex/farm/phoebe.pid --wiki_dir=/home/alex/phoebe --host=transjovian.org --cert_file=/va...'
[CEST Aug 29 00:44:42] error    : 'phoebe' process is not running
[CEST Aug 29 00:44:42] info     : 'phoebe' trying to restart
[CEST Aug 29 00:44:42] info     : 'phoebe' start: '/usr/bin/perl -I/home/alex/phoebe/lib /home/alex/farm/phoebe --setsid --user=alex --group=alex --log_level=3 --log_file=/home/alex/farm/phoebe.log --pid_file=/home/alex/farm/phoebe.pid --wiki_dir=/home/alex/phoebe --host=transjovian.org --cert_file=/va...'
[CEST Aug 29 00:49:57] error    : 'phoebe' process is not running
[CEST Aug 29 00:49:57] info     : 'phoebe' trying to restart
[CEST Aug 29 00:49:57] info     : 'phoebe' start: '/usr/bin/perl -I/home/alex/phoebe/lib /home/alex/farm/phoebe --setsid --user=alex --group=alex --log_level=3 --log_file=/home/alex/farm/phoebe.log --pid_file=/home/alex/farm/phoebe.pid --wiki_dir=/home/alex/phoebe --host=transjovian.org --cert_file=/va...'
[CEST Aug 29 00:55:02] error    : 'phoebe' process is not running
[CEST Aug 29 00:55:02] info     : 'phoebe' trying to restart
[CEST Aug 29 00:55:02] info     : 'phoebe' start: '/usr/bin/perl -I/home/alex/phoebe/lib /home/alex/farm/phoebe --setsid --user=alex --group=alex --log_level=3 --log_file=/home/alex/farm/phoebe.log --pid_file=/home/alex/farm/phoebe.pid --wiki_dir=/home/alex/phoebe --host=transjovian.org --cert_file=/va...'
[CEST Aug 29 01:00:12] error    : 'phoebe' process is not running
[CEST Aug 29 01:00:12] info     : 'phoebe' trying to restart
[CEST Aug 29 01:00:12] info     : 'phoebe' start: '/usr/bin/perl -I/home/alex/phoebe/lib /home/alex/farm/phoebe --setsid --user=alex --group=alex --log_level=3 --log_file=/home/alex/farm/phoebe.log --pid_file=/home/alex/farm/phoebe.pid --wiki_dir=/home/alex/phoebe --host=transjovian.org --cert_file=/va...'
[CEST Aug 29 01:05:19] error    : 'phoebe' process is not running
[CEST Aug 29 01:05:19] info     : 'phoebe' trying to restart
[CEST Aug 29 01:05:19] info     : 'phoebe' start: '/usr/bin/perl -I/home/alex/phoebe/lib /home/alex/farm/phoebe --setsid --user=alex --group=alex --log_level=3 --log_file=/home/alex/farm/phoebe.log --pid_file=/home/alex/farm/phoebe.pid --wiki_dir=/home/alex/phoebe --host=transjovian.org --cert_file=/va...'
[CEST Aug 29 01:10:25] error    : 'phoebe' service restarted 6 times within 6 cycles(s) - stop

Why isn’t the process running? Here’s a selection from the other log:

2020/08/29-00:39:38 App::Phoebe (type Net::Server::Fork) starting! pid(19496)
2020/08/29-00:39:38 Cannot connect to SSL port 1965 on [Address already in use]
2020/08/29-00:44:43 App::Phoebe (type Net::Server::Fork) starting! pid(20808)
2020/08/29-00:44:43 Cannot connect to SSL port 1965 on [Address already in use]
2020/08/29-00:49:59 App::Phoebe (type Net::Server::Fork) starting! pid(22125)
2020/08/29-00:49:59 Cannot connect to SSL port 1965 on [Address already in use]
2020/08/29-00:55:05 App::Phoebe (type Net::Server::Fork) starting! pid(23449)
2020/08/29-00:55:05 Cannot connect to SSL port 1965 on [Address already in use]
2020/08/29-01:00:15 App::Phoebe (type Net::Server::Fork) starting! pid(27704)
2020/08/29-01:00:15 Cannot connect to SSL port 1965 on [Address already in use]
2020/08/29-01:05:21 App::Phoebe (type Net::Server::Fork) starting! pid(15897)
2020/08/29-01:05:21 Cannot connect to SSL port 1965 on [Address already in use]

When I returned to the server this morning, that was the state it was in, and when I tried to restart it, same problem. There was a process still running, but the PID file was gone, and so Monit couldn’t stop the process, but the process was also not serving the port it was using.

ps aux | grep phoebe

So what’s the best solution, here? I’m thinking of a variant of “killall”, perhaps? The example below uses “[p]hoebe” to avoid the grep command from listing itself.

ps aux | grep '[p]hoebe' | awk '{print $2}' | xargs kill

What do you think?

Add Comment



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 Devine Lu Linvega (@neauoire@merveilles.town) - Merveilles Alex Schroeder Backup Blog Diary Diary