title: grid subtitle: an eventually consistent distributed service manager date: 2018-07-14 tags: p2p technology

eventually consistent *sounds bad*, and google has spent an awful lot of time talking about how

terribly important strong consistency is

and betting their money on *very nice machines*, which you can rent at a very affordable rate. honestly, as far as cloud architecture goes that's probably what you want. big fleets of machines doing computations over mind-bending quantities of data. strong consistency *might be a good thing*.

so obviously we all need atomic clocks in our computers so we can...

hold on. breathe. think about this for a second. who owns that many computers? or generates a quantity of data that requires *hundreds of machines* to store and process it?

think about the activities you use your computer for. you fetch data, you do something with it, you send data (or links to data) to people (including yourself). sometimes you do real-time interactions. in cloud world, you have millions of people doing this ''at the same time'' all over the world, but if you break down the ''interactions'' people aren't doing particularly complicated things. the complexity comes out of trying to make it scale.

we *do* want networked applications, that's why the web is such a big thing these days. we don't have to give that up to have autonomy, we just have to think about *how we do these things* in a different way. this is kind of a big problem, so lets break it down. a typical web application has a few major parts:

1. client application (ui)

2. server application (logic)

3. database (state)

4. message bus (async tasks, events)

`grid` is a software project designed to put you at the center of a powerful mesh of computers. modern cloud services provide us with a lot of utility, but they are often designed around a lot of false assumptions and force you to trust people and systems you can't audit.

`grid` enables you to schedule jobs on any device that you have paired to your user account. in most cases, these jobs will be interactive process that run on the device you are holding, but for many applications running jobs in the background (possibly on another, more powerful device) might be expected behavior.