Amy’s tech stuff

All content public domain

start by drawing a n by n grid of points

  ╭─────── n ───────╮
╭ o  o  o  o  o  o  o
│ o  o  o  o  o  o  o
│ o  o  o  o  o  o  o
n o  o  o  o  o  o  o
│ o  o  o  o  o  o  o
│ o  o  o  o  o  o  o
╰ o  o  o  o  o  o  o

take the dots on the main diagonal and move them over to the side

  ╭─────── n ───────╮             1
╭    o  o  o  o  o  o             • ╮
│ o     o  o  o  o  o             • │
│ o  o     o  o  o  o             • │
n o  o  o     o  o  o     ==>     • n
│ o  o  o  o     o  o             • │
│ o  o  o  o  o     o             • │
╰ o  o  o  o  o  o                • ╯ 

we can see the points in the diagonal can be arranged into a line of 1 by n points, thus the main square without the diagonal is n²-n

we can also see that the remaining dots are divided up into two mirror images of each other, mirrored along the main diagonal. Since it can be evenly divided into two, it the remainder must be even

  ╭─────── n ───────╮
╭    •  •  •  •  •  •
│ o     •  •  •  •  •
│ o  o     •  •  •  •
n o  o  o     •  •  •
│ o  o  o  o     •  •
│ o  o  o  o  o     •
╰ o  o  o  o  o  o   

We can also slide all the point of one halve towards the other, creating a rectangle

  ╭───── n-1 ────╮
╭ •  •  •  •  •  •
│ o  •  •  •  •  •
│ o  o  •  •  •  •
n o  o  o  •  •  •
│ o  o  o  o  •  •
│ o  o  o  o  o  •
╰ o  o  o  o  o  o

This gives us the factored form of the expression n (n-1)
From this expression we can see that it must always produce an even result as it takes the product of two consecutive numbers, one of them must be even, and the product of two numbers is even if either number is even


I recently came across Veilid, a new network focused on secure communication, similar to TOR, but mixed in with distributed storage and a promise of true decentralization without any blockchains or coins.

Both the website and DefCon talk are a bit lacking in explanation at this moment, with a promise of more documentation coming soon. Looking at the repository however gives slightly more insights.

This guide seems to be the most complete introduction at this point.

Also looking through the slides might also give some more crumbs of detail.

TL:DR; Distributed storage

The network provides two kinds of storage:

Block storage allows to store medium sized chunks of data (up to 1MB) onto the network. These are accessed by their hash and are immutable. Nodes can choose to actively become a provider of a block, and nodes will cash retrieved blocks based on demand
(Note: at this point the block store is not implemented yet but is firmly on the roadmap)

Distributed hash table (Key/Value store) is for smaller chunks of (mostly text) data that can be modified by it's owner. These, as the name implies, are accessed via a key. Nodes can register to be informed of changes.

TL:DR; Networking

Everyone participating in the Network is a node, and all nodes are treated equally. Nodes can choose how much or little traffic they are willing to relay, and how much data to store.

At the start a node reaches out to a bootstrap server with a known address, which tells the nodes what other nodes in the network it can contact. From there the new node asks them for information on more peer in the network. This bootstrap server will usually be the main veilid bootstrap server, but can be your own, especially if you want to create a smaller, isolated network for some reason.
Once the node has info on it's peers it will not need to bootstrap again, unless all known peers stop existing the next time it attempts to join.

Since nodes can change, user identity is given by a public/private keypair which identifies a user and allows them to modify their data.

Routing your traffic by relaying it through other nodes is optional. Every user has a list of routes they can be reached by, which change frequently. These routes can just be the user's node itself it they don't want to receive traffic anonymously or a chain of nodes that lead to the user's node. The same thing applies to sending data. You can either send your data though a route of relays of your choosing to hide where it is coming from, or just send your traffic to the receivers route directly.

Up next: Setting up a node and playing with it