Skip to contentCyber landscape configurationAssets0Shielded0%Compromised0%Blue agents3Red agents3Shield break chance5%
Blue agents shield assets and repair compromised ones; red agents try to compromise them.
Blue agents
Red agents
Asset
Shielded
Compromised
Blue agent
Red agent
Coverage The share of the assets that at least one blue agent can see right now.
Mean time to detect How long a compromise lasts, on average, before a blue agent first sees the asset.
Mean time to respond How long it takes, on average, from the moment a blue agent sees a compromise to the asset being repaired.
Joël Abrahams
Security Engineer at Stedin
Hi, I'm Joël. When I'm not at the keyboard you'll find me at the piano, over a chessboard, or halfway up a boulder wall. By day I contribute to the cyber resilience of Stedin, a grid operator in the Netherlands.
Usually up for a game, not that I'm particularly skilled.
Bouldering & gym
A fun way to challenge myself.
Chess | Quantum edition (work in progress)
How it works
In common
Both editions are chess against Stockfish. There is no castling yet.
You do not know where the opponent's pieces are. You learn about a piece by measuring it. Attacking it measures it.
The editions differ in what a piece is before you measure it.
Hidden variable: the piece already is something. You only lack the knowledge. That is a statistical mixture, not a superposition. Nothing interferes.
Quantum: the piece is nowhere in particular. It only has a chance on each square. Amplitudes can interfere.
The hidden variable edition borrows the words superposition and collapse. There they only mean hidden and revealed.
Pieces in the hidden variable edition are correlated through the shared back rank. That is classical correlation. Neither edition could violate a Bell inequality.
Why two editions
Quantum key distribution rests on this difference.
BB84 uses superposition. An eavesdropper who measures a state disturbs it. The two parties notice.
Ekert's protocol uses entanglement. The parties test a Bell inequality. If it is violated, no local hidden variable fixed the outcomes in advance. So nobody could have known the key beforehand.
Playing
Above the board: the pieces you took on the left, the ones you lost on the right. The number is the material lead. Pawn 1, knight and bishop 3, rook 5, queen 9.
Under Game, the uncertainty counts the opponent's pieces you are unsure of. It also gives your missing information in bits. See The bits.
Point at a piece to see its chances. The settings can turn the card off.
The bits
Entropy counts how unsure you are, in bits. One bit is one fair coin flip you cannot call.
Shannon's formula takes the average surprise: A possibility with chance has surprise bits. The average over all possibilities is H.
It depends on the model of the opponent. It measures your uncertainty, not a property of the position.
Measuring a piece takes its entropy to 0.
Chess 960
Chess 960 shuffles the back rank. Bishops stand on opposite colours. The king stands between the rooks. The pawns stay put.
There are 960 starting positions. Both sides get the same one.
Double Chess 960
Each side gets its own shuffled back rank. Most games start unbalanced.
In the hidden variable edition your opponent's back rank starts hidden. It is drawn from odds you can set before the game, the prior. Pinning a piece reveals it.
In the quantum edition nothing starts hidden.
Superposition
The opponent's pieces are clouds. They come from a simulated quantum walk. Read the caveats first.
This simulates one quantum idea on an ordinary computer.
A cloud is 64 complex numbers. That is easy to simulate. There is no quantum computer and no quantum advantage. The random draws are pseudo-random.
Only the opponent's pieces are quantum. Your pieces and the engine are classical.
The clouds are independent. There is no entanglement. Nothing here can violate a Bell inequality.
Two clouds never share a square. The order of measurement enforces that. It is an approximation.
The rules are chosen, not derived. The walk, the measurement by sight and the check rule are rules of this game. Settle is not quantum mechanics.
This is not Cantwell's quantum chess. There you make quantum moves, and the engine does too. Here only the opponent is in superposition.
The opponent's turn
Collapse. Each cloud that your pieces can see is measured. It is found on a square, or it stays a cloud. The king is always measured.
Move. Stockfish plays on the pieces that are on the board.
Spread. Every piece spreads into a cloud again. That is what you see on your turn.
Clouds
Every piece of the opponent is a cloud, the king and the pawns too.
A cloud has an amplitude on every square. The chance of finding it there is the squared magnitude of that amplitude. This is the Born rule.
At the end of its turn each such piece spreads over the squares it could move to. This is a quantum walk. Amplitudes interfere: a cloud piles up on some squares and thins out on others. A mixture of chances cannot do that.
So a piece that just moved already fades. Over a game, pieces dissolve and are found again.
A cloud never goes onto a piece or onto a square that gives check. Those squares are cut out and the rest is rescaled to 1. That step is a measurement, not part of the walk.
A pawn only moves forward, but a walk goes both ways. So the cloud of a pawn can spread back along its file. It never goes to the first or the last rank.
The king is the exception in a turn. It is always measured before the engine plays.
Growth, in the settings, sets how far a cloud spreads.
Measuring
At the start of its turn, each cloud is measured against what your pieces attack. The question is: are you on one of these squares? With the chance it has there, it is found. Then it lands on one of them, drawn by those chances. Otherwise it is not there, and it goes on with those squares cut out.
Your moves measure too. Every square your piece passes over and lands on is measured.
A piece found on the target is taken. Take the king and you win.
A piece found on the way blocks the move. The move fails and you lose the turn.
Nothing decides an outcome in advance. It is drawn when the measurement happens.
Pawns get a strange power here. A pawn can move diagonally without capturing. Attacking a cloud is an attack, even though the piece may not be there when it collapses. If it is not, the pawn just moves to the empty square. This only works where a cloud has a chance.
The engine
Stockfish never sees a cloud. It plays the pieces on the board: yours and the clouds just found. That includes the king, which is always measured, whatever settle says. The engine can not play without it. So its position is new every turn.
Settle is an extra rule. A cloud whose likeliest square has at least the chosen chance is measured anyway. That gives the opponent pieces to play. Without it, only pieces you attack land on the board, and the king. The opponent has little to move.
Mate and stalemate count the pieces on the board, as the engine sees them.
There is no undo, replay or export. The engine plays a new position every turn. That is not one game you could replay.
The bits
The bits are the Shannon entropy of where each cloud would be found. The chances are the squared amplitudes.
The clouds are independent, so the total is the sum. It is exact for this model, not an upper bound.
A cloud is a pure state, with zero von Neumann entropy. The bits measure how unpredictable looking is.
Hidden variable
Every piece has a real state. It is hidden from you. Measuring reveals it.
The engine plays on the real board. It knows what every piece is.
A hidden piece is drawn as everything it could be, all at once. The settings can make it cycle instead, or add a small red bar of odds.
Measuring
A possibility is a kind of piece on a square. For example, a knight on c6.
Attacking a piece reveals it. It was that piece all along.
Giving check is a partial measurement. It narrows down what a piece may be.
A piece with one possibility left is known by deduction. It is revealed without being measured.
Measuring one piece tells you about the others. The back rank ties them together.
Possibilities
You are not shown the move of a hidden piece. It is drawn on every square it could have reached unmeasured. One possibility is real. The rest are phantoms.
You measure a piece by attacking it. You measure it partly when it gives check, takes something or changes your legal moves. A possibility that would have been measured is gone.
A new game asks how many extra possibilities a move may show. With a cap, possibilities are drawn at random, the real one included. What is not drawn counts as ruled out.
Hyper mode hides which piece moved. After an unmeasured move, every opponent piece is drawn on every square it could have reached, pawns and found pieces too. It has no cap and is much harder.
Playing
The card of a piece has two columns. The first adds up to 100%, with the chance of a phantom: nothing there. The second assumes the piece is real. These are estimates; see The odds.
A move made illegal by a hidden piece is refused. That possibility is ruled out.
Undo takes back your move and the reply. What it measured is hidden again, but you remember it. That makes it a way to cheat.
The odds
The odds are ordinary probabilities, not quantum ones. They come from a simple model of the opponent. Every legal move is equally likely, which is the least informative assumption.
A line through a hidden piece counts the chance that it is clear. Pins and check count once the king is known.
The odds never look at the real board. They cannot leak what the engine knows.
Stockfish prefers strong moves, so these are estimates. They can be well off when one move is obvious.
Every possibility starts with its own chance. All alike, or the odds you set in Double Chess 960. Ruling something out rescales the rest to 100%.
A piece that moved unseen was more likely one with many quiet moves.
The pieces share one back rank. Learning about one tells you about the others.
Some shortcuts are taken. Hyper mode weighs each piece against an average picture of the others. Two hidden pieces cannot share a square. Those chances come from sampling many possible worlds (Monte Carlo). They can be off by about a percentage point.
The bits
An example: at the start of Double Chess 960, with the odds unchanged, the piece on a8. It is a queen with 12.5%, a rook with 37.5%, a bishop with 25% or a knight with 25%.
Of the 8 files, 1 holds the queen, 2 hold the bishops and 2 hold the knights. The other 3 hold rook, king, rook.
The a-file is the leftmost, so it can only be the left rook: 3 in 8. It can never be the king.
Each chance is multiplied by its surprise: 1 in 8 is 3 bits, 1 in 4 is 2 bits, 3 in 8 is 1.415 bits.
The terms are the queen, the rook, the bishop and the knight:
The game adds this up over every hidden piece: about 17.4 bits at the start. The pieces share one back rank, so they depend on each other. The whole is at most the sum of its parts: So the number shown is an upper bound. With 960 equally likely back ranks, what you really do not know is only
Measuring a piece lowers the entropy of the others on average, because they are correlated. A piece that moves unseen raises it again.
Settings
Animation
Only in the hidden variable edition.
Only in the hidden variable edition.
Superposition
Only in the quantum edition.
Growth
How far a cloud spreads in one turn, as the time of its quantum walk. Low, and pieces hardly leave their squares. High, and they spread over the board, and the opponent has fewer pieces on it to play with. The default is 0.5.
Settle
A cloud whose likeliest square has at least this chance is measured anyway, so that it is on the board and the engine can move it. Without it only the pieces you attack ever land on the board, and the opponent has little to move. The king is the exception: it is always measured before the engine plays, whatever this says. This is an extra rule, not quantum mechanics: it is the easiest one to play without. The default is on, at 0.5.
This works on a phone, but a computer is much better. The board and the odds get more room, and a mouse gives finer control of the odds.
You play chess against Stockfish. You do not know everything about your opponent's pieces. You measure a piece by attacking it. Chess 960, also called Fischer random chess after Bobby Fischer, has 960 possible shuffled back ranks. Both sides get the same one. In Double Chess 960 each side gets its own, usually resulting in very unbalanced games.
Every piece has a real state that is hidden from you, and the engine plays on the real board. All you see is everything a piece could be. Measuring a piece reveals which it was all along, and with it a little about the others. This is a hidden variable model.
Every piece of your opponent is a cloud: they spread over the squares they could move to, and where one is found is a matter of chance. A cloud collapses when your pieces can see it, and the engine plays with the pieces that are on the board. Funnily enough, with quantum clouds a pawn can attack the cloud and move diagonally without capturing a piece. This is a simulated quantum walk, and it has caveats, listed in "How it works".
|
Castling is not supported yet.
It could be
Are you sure you want to start a new game? This one is not finished yet.
Which colour would you like to play?
Strength of the engine
Only in the hidden variable edition.
Extra possibilities per move
One extra possibility a move at most.Two extra possibilities a move at most.Three extra possibilities a move at most.Four extra possibilities a move at most.Five extra possibilities a move at most.Every possibility there is.
You are not told which piece moved.You are told which piece moved.
If a piece you found moves unseen, you may lose track of it.A piece you found stays found.
Loading the pieces and the engine…Your move. The piece from moved to . Your move. A piece moved, and you cannot tell which. Your move. Check. Your move. The engine is thinking… That square is covered. It is still your move. That would expose your king. It is still your move. That pawn is blocked. It is still your move. Checkmate. You won. Checkmate. The engine won. You took the king. You won. The game is a draw.The chess engine could not be loaded.
The engine is Stockfish 19 (licence), small build, thinking for under half a second a move. The Elo is Stockfish's own scale for its limited-strength mode, so it is only a rough guide to how you would fare against a human of that rating, and a rougher one in the unbalanced games of Double Chess 960. The rules come from chess.js (licence). The pieces were drawn by Colin M.L. Burnett.
Your attacks . That measures the piece from : it is a .
Your attacks and finds nothing. The piece from is now on .
Another piece now stands on . The piece from is now on .
The piece from gives check from , so you know where it is. From there only a gives check.
For the piece from , a was already ruled out.
The piece from moved to . A had no move from where it stood, so it is not one.
The piece from moved to without you measuring it. A would have been measured, so it is not one.
A piece moved without being measured, and hyper mode does not say which. Every hidden piece spreads: it stayed, or went anywhere it could.
The piece from moved to . Possibilities are capped, so a is ruled out: none of its moves was drawn.
The piece from took your piece on . A could not have got there, so it is not one.
No check was given. As a the piece from would be giving one, so it is not one.
No check was given. From the piece from would be giving one. It is now on .
No check was given. On the piece from is not a : that would be check.
A piece on would shield your from the piece on . Your moves show that nothing does. The piece from is now on .
A piece on would keep the piece on from covering , next to your king. Your moves show that nothing does. The piece from is now on .
The piece from shields your from the piece on . Your moves show that, so you know where it is: . It could still be a .
The piece from keeps the piece on from covering , next to your king. Your moves show that, so you know where it is: . It could still be a .
The piece from moved, so the piece from did not. It is now on .
The piece from went from to over , so nothing stood there. The piece from is now on .
A piece on would stand between your and your king, and free it from the piece on . Your moves show that it is not free. The piece from is now on .
The piece from stands between your and your king, and frees it from the piece on . Your moves show that, so you know where it is: . It could still be a .
By elimination: the piece from can no longer be what could reach . It is now on .
The piece from is no longer a : none of its moves is left.
One thing is left for the piece from : it is a on .
Your king cannot step to : a on covers it. Trying gave it away, so you now know it.
That move would expose your king to a on . Trying gave it away, so you now know it.
Your pawn cannot advance: there really is a on . Trying gave it away, so you now know it.
Switching edition ends your game. You will lose it. Are you sure?
My own statically typed programming language. The (reference) compiler is in Rust. Mostly a testbed for some of my weirder ideas related to programming languages.