Spreadsheet

A shared sheet over plain GenosDB. Rows and columns are identities whose position is a fractional key, and a cell is a node named after its row and its column: move a row and its cells go with it, insert a column and no data shifts, and two people editing different cells never collide. Open a second window: the coloured frame is the other peer's cell.

The grid you see is not written anywhere. A row nobody inserted has no node at all — it is r3 at key 3 on every peer — so two people who type into A3 of an empty sheet without seeing each other write the same cell and end with one value, not six rows and two cells. A row you insert is a real node with a random id and a key between its neighbours: two peers inserting at the same place both survive, in one order everywhere; several such inserts by two peers who cannot see each other may interleave, which a sheet of records tolerates and a paragraph would not. Headers in blue are the rows and columns that exist as nodes.

Enter commits and moves down, Tab moves right, Esc reverts. Alt+↑↓ moves the row and Alt+←→ the column with one put; sorting re-keys every row and keeps its id. On the right, the keys themselves: every row on a number line down the side and every column across the top, to scale — a hollow dot is a name with no node behind it, a filled one has a node. The gap beside the cell you stand on is where the next insert mints, and the panel says how much room a float64 has left in it.

The keys, as sorted

The graph, write by write

    No write yet. A cell is a node named after its row and its column; a row or a column is a node with a key.

    0 peers