John says

@joKingMob on twitter

Welcome back to the report on the game of war. This is where I chronicle the happenings each week of the Situationist Summer Mega-Game, the game of war.

This week was ruled by the die! And oh how people died...

And as ever you can check out the board here to see the current state of play.

Technical update

The supply line checkboxes are now saved across refreshes of the map. This should save a bit of time if you have a favourite state of checking. This was a request that came from a player, proving the benevolence and wisdom of the moderator.

Feel free to make your own such requests!

From the die to the dying

The turn order was:

Michiel de Ruyter The Rabble Southern Snowcones Umbrella Corps Count Guibert The Eyeballs House of Haltwhistle Ragnar the Fearless

This turned out to favour Michiel de Ruyter, in the orange, and the Southern Snowcones in the yellow. The battle favoured them in their attacks.

De Ruyter thrust into the Rabble's flank as they turned to take a more defensive position, killing one of the Rabble's cavalry.

Michiel attacking The disciplined cavalry of the Orange take advantage of their initiative to strike at the Rabble

Michiel de Ruyter had this to say “I want the board to know that there were multiple moves the Rabble could have done to not only counter my attack, but to kill one of my units instead.

Instead they chose retreat, and that is what will lose them their arsenal.”

The Rabble have been approached for comment.

Meanwhile, the Southern Snowcones's valiant knights of piss took another opportunity to charge at Ragnar's infantry, sending another brave soul to the halls of the fathers.

Southern snowcones attacking The Knights of Piss drench another day

The Southern Snowcones said “piece of piss”.

Ragnar the Fearless has been approached for comment.

The rest of the board

The Eyeballs are closing in on the Southern Snowcones easterly frontier. We could have another arsenal lost from the board very soon. The Eyeballs see all!

Count Guibert and the Umbrella Corps are jostling for position in the narrow pass between mountains. I'm sure their troops are making careful note of the relative positions.

Next turn deadline: 8pm Sunday 6th August

Get those moves in!

Welcome back to the report on the game of war. This is where I chronicle the happenings each week of the Situationist Summer Mega-Game, the game of war.

This week there was some action (yes!) but it's also time for the very first edition of MEET THE PLAYERS, where we get to know one of the players of the game of war. This time, we're going to learn about...

The House of Haltwhistle!

And as ever you can check out the board here to see the current state of play.

First, the action!

Here was the turn order of turn 5:

Michiel de Ruyter The Rabble Southern Snowcones The Eyeballs Ragnar the Fearless Umbrella Corps Count Guibert House of Haltwhistle

The key part is that the Southern Snowcones went ahead of Ragnar the Fearless, meaning they got to execute an arsenal attack. A fitting revenge in a relationship with very little love lost so far.

It pays to be in league with the fates. That's my only advice to my players: be lucky.

Meet the Players: The House of Haltwhistle

It's time for our very first edition of Meet the Players, with the BLACK team, the House of Haltwhistle.

house of Haltwhistle image

First up, who are you guys?

Lady Haltwhistle: Upon the knife's edge of the crescent moon, six gods howl into an eternal darkness. The blood of our house has simmered through the centuries, thickening in the veins of our mothers, screaming our rebellious spirit into existence. It was not easy. In the darkest depths of the Haltwhistle nights, we faced obsidian terrors, always our paths seemed blocked, our torrents dammed.

[note, I tried to ask the next question, but Lady Haltwhistle continued on this one]

But in the darkest depth of that night, the screech of the owl called forth our house's true purpose: to unite the blackness of the eternal night with the sacred call of the light.

A badger flashes its stripes. Even in the darkness, something remains.

What are you fighting for?

Lady Haltwhistle: The badger, the bear; the fox, the dog; the owl, the buzzard. A triad of diads, the phases of the moon. Man and woman, light and dark, peace and war.

What's been your approach to the war so far?

Lady Haltwhistle: Bone degrades so easily. It chips, is filed away by the defiling night. We sharpen our wolves's teeth, let it sink into succulent flesh, step unhesitantly into the unknown.

How has the game made you feel?

Lady Haltwhistle: The House of Haltwhistle watches the eternal cycle of the seasons with unfeelingness. War is but another spectacle upon the suffering planes of existence.

Lord Haltwhistle: I am a friend of death.

[this is the only thing Lord Haltwhistle said in our entire meeting.]

How did your alliance with the Southern Snowcones come about?

Lady Haltwhistle: Gaze upon the orchid petal and tell me it is not your ally.

and what does that mean?

Lady Haltwhistle: Beauty exists for less than an eye blink.

How did your alliance with the Rabble come about?

Lady Haltwhistle: A pair of buzzards surf the thermals in eye of an unknowing prey. How amusing to consider hands acting without knowing. The fates decide those who prey and those who die.

Any messages for the rest of the board?

Lady Haltwhistle: Observe thy spirits.

And how is this game preparing you for cybernetic communism?

Lady Haltwhistle: The glint in the owl's eye contains infinite value. A buzzard's egg can birth a badger. Sup the yolk and sublimate its veinal ether.

img buzzard badger

An insightful interview, I'm sure you'll agree. Looking forward to the next edition of meet the player to learn more about the other entities on the board!

Next turn deadline: 8pm Sunday 30th July

Get your turns in...for the game of war!

Welcome back to the report on the game of war. This is where I chronicle the happenings each week of the Situationist Summer Mega-Game, the game of war.

As ever you can check out the board here to see the current state of play.

It's been a banner week, with 2 new players, an arsenal destruction and some very exciting TECHNICAL UPDATES!!!

Board Not Bored

I've made some updates to the board so that it runs more quickly when switching player and moving units. This should make it easier to run through scenarios and just generally more pleasant to devise strategies on and interact with.

I've also added attack and move records to the map when it loads, so you can see where the pieces this turn have moved from. You may notice that you can't see Count Guibert's move and attack though, because the board starts with it as his turn and the turn erases the move records.

I have an idea for how to rectify this but it probably won't happen before the end of this turn.

Leaderless No Longer!

In the top half of the board, the Umbrella Corps has finalised a hostile takeover of what was once the orange faction. Rebranded using the official red corporate identity, an Umbrella Corps spokesperson commented that the company is “excited about the opportunities available on the board at this time and are satisfied that our upcoming operations fully exploit the aforementioned opportunities”.

Meanwhile in the bottom half of the board, Dutch naval hero Michiel de Ruyter has been anointed the champion of the leaderless faction, and adopted his national colours as better to rally the troops at his command. Michiel says that he is “honoured to accept the responsibility of command, and looks forward to meeting the other esteemed players, whether in friendship or in combat”. Very classy.

Gotta put the turn order somewhere

Here's what the turn order was:

Michiel de Ruyter Ragnar the Fearless The Rabble The Eyeballs Southern Snowcones House of Haltwhistle Umbrella Corps Count Guibert

Action Action Action

The Guibert-Snowcone alliance clashes with the Ragnar-Umbrella axis. Ragnar gets his revenge on the Snowcones by killing a swift artillery unit in exchange for his infantry last turn.

Count Guibert has taken the first arsenal of the game and therefore it is with great pride I award the good Count the Shareholders Cross, as I imagine a lot of the Umbrella Corps shareholders are now pretty cross indeed. Congratulations Guibert!

cross image

Even in a war of Manoeuvre, you eventually have to attack

The bottom half of the board continues to move troops around, making a very nice picture but not a great deal of action is forthcoming. It looks like the Rabble and House of Haltwhistle are coordinating...something, but it's hard to really see what the idea is.

I mean the eyeballs have even gotten so bored they're going north, probably to get something better to look at.

Please kill each other more!

Next turn: Turn 5 deadline is 23rd July

I am on the edge of my seat about what's going on in the top right of the board. I know what my next move would be if I was the Southern Snowcones. But will the gods of war favour us with another arsenal destruction? Only time will tell.

See you next week!

Welcome back to the report on the game of war. This is where I chronicle the happenings each week of the Situationist Summer Mega-Game, the game of war.

As ever you can check out the board here to see the current state of play.

There's been some action, so let's get to it!

(After a brief discussion on an update to the rules)

Additions to the Rules of Play

This was the first time turn precedence was a concern, when the forces of Ragnar the Fearless and the Southern Snowcones were fated to meet, so I consulted with the players who were mostly in favour of the chaos of battle, and we have instututed a random order for each turn!

No one knows what it will be and if your moves don't work that's too bad! No one said making war was easy...

This turn the order was:

House of Haltwhistle Edminster The Eyeballs Count Guibert Ragnar the Fearless TBD Southern Snowcones The Rabble.

Who knows what it'll be next time?

Finally, some action...

Turn order is not destiny however, as violently demonstrated by our brave warriors of the mid-East. Though second last to take their move, the Southern Snowcones have still taken FIRST BLOOD utilising a beautiful full cavalry charge alongside an artillery assist. This is mobile warfare at its best. You can see the move below:

combat moment

It is with great pride I award the Southern Snowcones the medal for First Blood:

medal first blood

What else is going on?

In other areas of the map, Count Guibert looks set to take the first Arsenal of the game. He's also accepted an alliance with the Southern Snowcones, forming a rather bloody band the other powers will have to work hard to contend with.

Meanwhile the orange and cyan leaderless factions have very different fates. Cyan seems secure enough for now, with orange about to lose one of their bases. But who knows if a warrior will emerge from within their ranks to turn their fortunes around? Only time will tell...

The next turn ends at 8pm on Sunday 16th July, with the report to follow soon after.

Until then, fare thee well...

The board once again has been updated. Alliances are forming in the South and it appears the dogs of war are about to start howling very loudly indeed in the North.

Check out the board here

Lets be friends!

In the South, the Rabble has racked up 3 allies. The House of Haltwhistle has 2, and the Eyeballs have 1.

Lets not be friends!

Count Guibert looks set to cause the first destruction of a communication centre in the game! The absentee ruler of the Orange West is going to feel this one!

Ragnar and the Southern Snowcones look set to have the first combat in the top right of the board, although simulations suggest casualties may be hard to come by.

Turmoil in the Cyan Kingdom

King Elminster has withdrawn from the field! A search goes out from the cyanites to find a new ruler to keep them safe in this, the game of war!

Perhaps this could be you? Get in touch with me however you read this missive and I can explain how.

Next time

The next turn concludes on the 9th July!

I'm very glad to bring you the latest report from the Situationist Summer Mega-Game! This is a bumper report bringing you TWO WHOLE WEEKS of action action action. So strap in.

As ever, you can see the board for yourself!

The Players have chosen their names and positions! (Mostly)

Going clockwise from the top left, we have:

  • Count Guibert, looking dashing in blue!
  • Ragnar the Fearless, looking scary in green!
  • Southern Snowcones, in their particular colour...
  • The Eyeballs, seeing all in brown
  • The House of Haltwhistle, in ominous black
  • Elminster, in sky-blue cyan!
  • The Rabble, in magisterial purple
  • Not Confirmed Playing, in orange

The Players have proposed alliances!

As you can see, the first alliance is on the board between the House of Haltwhistle and the Rabble.

The Players have made their first moves!

Using the turn output box, they've generated moves and sent them to me to put on the board!

I'm excited about where this is going

That's just true. I don't much more to say immediately because I have to fix a display issue to do with the alliance supply lines, but more later!

After writing out my plan and sharing it with a select few (as you can read here), there are now 8 players in the game!

I've made the board and sent it out to the players. They're choosing positions and colours for turn 1 to begin next week.


Prosaic Recap

I forked a web version of the game and started modifying it from a 2 player board game to an 8 player board state simulator. It's now more like a tool for a player to work out “what would happen if I did this?” before sending the final moves to me.

I've got about halfway through adding alliances between teams to the code. Allies can share supply and can't attack each other, but can't contribute to attack and defense yet. And there's not yet a UI for managing alliances on the board i.e. proposing, accepting, dissolving.

I can't say I fully understand the codebase because I've been modifying it as quickly as possible but I definitely have a sense of how it works and the personality of the original author is coming through a little.

There are 2000 lines of code split into two files. It's a typescript react app using a library called to power the game rules.

With the board quadrupled in size it runs quite slowly. Any of the G methods in particular. I'm not sure if it's possible to make it run more quickly.

Profound Reflections

I look at the board and see its asymmetric beauty and I feel proud of what I've made. I really like this little world, and can imagine myself starting from any of the zones, trying to build a machine for survival and domination. Turning the lines on and off feels like casting shadows from different angles.

I'm very excited to see what the players get up to on the board. Every location feels quite distinct, even though it's just another point on the grid.

It's the start of Summer.

After the events of May 68, the French secret police threatened to throw Guy Debord and his wife out of a window if they didn't leave Paris. Relocated to the countryside, he proceeded to spend the next decade perfecting a board game based on the Napoleonic wars that was designed to teach revolutionaries the essentials of military strategy. This is Le Jeu de la Guerre, which you can play online here.

I was introduced to the game last week, by a group called Class Wargames who have a very nice physical version of the game that they brought to The World Transformed's May Game Jam along with their film about the game. I was warned that the game can become an obsession and I'm mature enough to admit that that has happened, so now I'm making my own bigger version and inviting you to be part of it!

But first we need to know how the game works.

(or click here to join the game without reading anything)

The Game of War As She Is Played

At base, this is a game about communication. There are 2 players that each have 2 immovable bases that radiate a line of supply/communication in 8 directions.

picture 1 The two bases of each player highlighted in green.

You can see the bases and blue and orange lines emanating from them on the board above. A piece can only move, attack or defend if they are on a communication line (supplied), or if they're adjacent to a piece that is on a communication line (or adjacent to a piece that is adjacent to a piece etc).

picture 2 Highlighted pieces from left to right: supplied because on a line; supplied because touching a supplied piece; not supplied and vulnerable

The aim of the game is to move a piece onto the opposing players base, thereby destroying it and cutting off the communication lines. Destroy both bases and the game is won.

Lines of communication can't go through mountains or through opposing pieces. In order to access more parts of the board, the players use 2 generals who can retransmit the communication lines.

picture 3 The two generals of each side highlighted in green. Note the lines broadcast from them. The flag is the infantry general, the truck is the cavalry general

The other pieces are:

  • the infantry which move one square at a time. Each player has 9.
  • the cavalry, which can move 2 squares at a time. Each player has 4.
  • the cannon, which has a stronger attack and defence and a range of 3 squares. It can move 1 square at a time. Each player has 1.
  • the swift cannon, the same as the cannon but can move 2 squares at a time.

There are rules about how attacks work because the pieces have different strengths in attack and defence which get combined in various ways that make sense but are not so important right now. The full rules are here if you need to know them immediately, but basically more pieces = better.

The best way to learn the rules is to play a few times against the AI. It's very easy to do and you can delight yourself with your own cleverness in a way that is rare in day to day life.

You may have noticed that while combat is significant, it is possible to win this wargame without attacking the opponent's pieces directly. Dynamic movement and responsiveness to a situation are the only skills required to triumph. And in this way you will learn the abilities necessary to institute cybernetic communism, which is of course why we are all here!

My Heretical Changes

“Why can't you just be happy with things as they are? Why do you have to make the already complicated even more complicated? Can't you just appreciate a work of genius for what it is?”


I'm adapting the game to my own situation, in which I want something lots of people can play at once, that encourages them to talk to each other, without too much of a time investment.


There will be more players on the board at once. I think my ideal would be seven players, but I'm open to whatever happens. In adding more teams, I'm pretty sure that means the board has to be bigger as well.


I'm adding the concept of alliances to the game. Alliances are bi-lateral relationships between players that mean you can use each other's communication lines and can't attack each other. Each turn starts with an alliance phase, where you can propose, accept or dissolve alliances with other players.


I'm inviting people to play just one turn a week to allow people with lives to take part. Players consider their moves over the week then on Sunday evening the board is updated based on their instructions. The board is a website based on this web version of the game.

Call to Action!

You only need five minutes a week to play the game. Just send me the moves you want to make!

Week 1: Gathering Players

Fill in this form if you want to be in the game. I'll get in touch and you can choose your army colour and symbols. You can have more than one person controlling a single army if you want to play as a team.

Week 2: Creating the Board

The game is roughly based on the Napoleonic wars, so you'll be playing a kind of facsimile of a European power. The size and design of the board is going to vary based on the number of players that get involved, so I'm waiting until I know what that is before making it. The aim is to maintain the feel of the original while extending it.

Players can place their pieces on the board where they want, or I can do it for them.

Week 3: First Moves

The players make their first moves! This can be forming alliances, or moving to attack their neighbour or anything at all. The game has truly begun! I'll begin doing “Meet the Players” kind of posts about what's going on.

Week 4: Turn #2

Second turn, continue your plan or adjust or whatever you want, we are in the game proper now!

Week 5: Turn 3.0

And so on...

Your Little Board Game Pieces Need You!

Each week I'll write a report of what's going on for anyone interested in the ongoing game. I'll also be interviewing players to talk about how they're getting along in the game and how they relate their strategy to their political practice in real life.

I think this will be a lot of fun whether it succeeds or fails. So come, join in the fun and fully utilise your erogenous zones in the process of creating cybernetic communism!

Fill in the form!

Virtual Bath allows unequalled amounts of bathtime previously inaccessible to humankind. I have defined a bath protocol as an extension the Matrix protocol.

The site is just a React front-end containing a Matrix client. This client connects to a standard Matrix homeserver to create and sync baths, and to handle all associated bath events such as turning the cold tap, the hot tap, and inserting and pulling the plug.

For a while it was connected to the Matrix Foundation's homeserver but I realised the rate limiting was causing an issue so I switched it over to my own one.

You can define custom events in the Matrix protocol and as long as your client can understand what to do with them, then it works great.

Here are some of the events I defined:

  • bath.create {taps: [coldTemp, hotTemp]}

  • bath.tap.turn { temp: temp, flow: flow }

  • bath.plug.pull {} empty event, the name of the event is the event

Every bath is a Matrix room, meaning it has a timeline of events. You could probably model lots of things as a timeline of events.

I use the same user details for all visitors to the site, so it's kind of like infinite clones of one person sharing the same bath. If my bath proposal is accepted into the Matrix protocol, then it'll be easier to bathe using your own identity.

If I had more integrity as a coder then I would have each user register a new account on my homeserver but this works fine.

The site uses no images. The water is all rendered as different variants of css gradients. The bath is a <div/> with a style that updates every 100ms, setting the background image to a linear gradient with a changeover distance of 1px.


I made this to try out using custom matrix events for my own project called Space Tube.

The matrix protocol is very powerful and pretty easy to use. You can link and nest rooms inside of each other creating potentially infinite configurations of spaces. Then with the custom events you can create a structure of interactions in that representation of sociality.

I chose a bath because someone I wanted to impress at the time was a fan of baths and it's very different from the other applications of Matrix which I wanted to emphasise to show the range of possibilities within the protocol.

What's next?

I will be drafting a Matrix Specification Change to include bath events as standard within the protocol. Then you can run a bath using any Matrix client you like, and potentially even using the bridges to Discord or Slack.

And a new era of bath abundance will have begun.

For a long time, I have been excited by the idea of democratic groups (e.g. coops and unions) communicating AS groups, rather than relying on individuals relaying messages, or forming a new group to chat in.

Space Tube is my current project to experiment with this idea (Wobbly is my old one). By linking existing chat groups together with bridging software, I want to see if new forms of communication emerge from the connection process.

In my wildest dreams, Space Tube enables coordination and collaboration of groups on a grand scale allowing us to flourish in a new earthly paradise or failing that, increase the numbers that survive the coming cataclysm.

What have you built?

I’ve made a discord bot that relays conversations from one discord server to another, turning messages from individuals within a group into messages from that group posted in both groups’s servers.

Here’s some screenshots of a group of Xylophone enthusiasts speaking to some Zebra aficionados.

Discord screenshot of channel, with post from user king-mob asking what's up

Discord screenshot of channel, with post from xylophone club asking what's up

Discord screenshot of channel, with post from zebra afficiandos replying that they're demonstrating space tube

In the pictures you can see my account sends a message, then the message is deleted and replaced with the correct group depending on which server I sent the message from.

How did you do this?

Very short answer: combining a powerful ecosystem of chat tools called Matrix with my immense levels of technical ability.

Brief Paean to Matrix

The Matrix community have built a very powerful chat technology that has the potential to express complex relationships and events far beyond the user experience that we're accustomed to having with chat. Simple building blocks like nested rooms (channels inside channels) and custom events (you can add any field to an event) explodes the space of what is possible in online interaction. And there's encryption and federation for security and resilience. It’s like living in a dream.

Longer explanation with more searchable keywords

Here’s what I did, roughly in the order I did it although there were loops and back tracking along the way. I might have forgotten something important that you need to know to replicate it, but I am available for questions.

  • Installed Ubuntu 22.04 using WSL. Installed ansible on that.
  • Created a matrix server using the ansible playbook and a domain
  • Enabled matrix-appservice-discord, by editing the vars.yml of the matrix-ansible playbook
  • Created a Discord bot using Discord’s bot service tools and connected it to matrix-appservice-discord
  • Wrote a script using the matrix-js-sdk that connects to the bridges on the server, and interacts with the conversations.
  • Fetched a bunch of IDs from Matrix, put them in an env file and configured and avatars and display names
  • Used a script called adminme from matrix-appservice-discord to get admin privileges in the
  • Deployed the script to a server where it waits patiently to forward messages.

Basically 75% setting up other people's work correctly, and then 25% writing some proof of concept code that’s pretty simple in the end.

Here’s the script that’s running on the server:

Hard bits: avatars. I forgot how matrix media works that you have to get the internal mx url rather than the raw address. Also the matrix-discord bridge needed updating at one point so I had to seek help from the matrix community about that.

How do I try space tube for myself?

There are 4 options.

  1. Join the xylophone or zebra discord group, using the invite links here: Xylophone Club: Zebra Appreciators: Send some messages in the chat and watch what happens. Remember, you ARE the Xylophone club when you speak!

  2. Ask me to add your discord server to the experiment. Contribute some money to the opencollective if you can afford it.

  3. Wait for a version of the discord bot to be released that doesn’t require any manual set-up on my part, then add it to your server. It’ll probably look like clicking a link to add the bot to the server then typing “!open” in a channel to register a tube opening with some kind of registration flow.

  4. Replicate what I’ve done on your own server by following all the steps above that I did, and use the code and links that I’ve provided. This will likely take an hour or two if you know what you’re doing, or several hours if you kind of know what you’re doing, like I did.

What next?

In terms of features, I’d like to get agreements between groups working. And I’d like to have quorums for sending messages (e.g. requiring other people to do !send after your message to actually send it).

I’d like to add more chat platforms, probably next one will be Slack because I think a few tech coops I know use it a tube between Slack and Discord would look cool. I’ve got a version of this that works with WhatsApp, but they have a pretty bot-hostile policy so it just looks like my WhatsApp account is sending all the messages. Embarrassingly I haven’t made a matrix native version of this that would work in Element or the other clients because the bridging feels more impressive in discord. The magic of the demo is key!

The obvious current limitation is that I can’t add buttons to someone else’s chat platform. I don’t have direct access to the UX. At the moment the interface is basically a command line, which some people are comfortable with and some aren’t. My idea to resolve this is to keep things in chat groups for now, but add links to an external tool for more complex features like sociocratic proposals and stuff.

I’m currently applying for grants so I can work on Space Tube in my prime working hours. This is my first time applying for grants so if you have any tips on where to apply to or how, please let me know, I am very new at this.

I also need communities and collectives to try this out, so if that’s you let’s organise some experiments! And if you want to help out with development, please get in touch!

What do I want you to do?

Join the matrix room (, sign up for the newsletter, follow me on twitter, email me and spread the good news about Matrix and Space Tube!