Title: 20220223
Slug: 20220223
Date: 2022-02-23 22:22 PST
Modified: 2022-02-23 23:24 PST
Category: 
Tags: journal
Authors: kyle
Summary: Design work on blobs.

## Blob structures

I finished writing out the basic blob database and structure types. The
blob was a structure like

```go
type Blob struct {
	ID          string
	Header      *Header
	ContentType string
	Contents    []byte
}
```

I decided to make it an `io.Reader` to make it better handle large files;
rather than load them entirely into memory, we can do a straight buffer.

```go
type Blob struct {
	ID          string
	Header      *Header
	ContentType string
	r           io.Reader
}
```

## Syncing questions

I have a problem that I'm having difficult reconciling and I'll need
to revisit. Let me try to talk my way through it: I plan on running
`exod` on my laptop, or rather, I plan on having the ability to run it
offline. However, if I want to stash something while my laptop is asleep,
that breaks. If I store the repo remotely but make local changes offline,
how do I sync it?

I think the answer to this is to set up a buffer server, something like
another sync queue. If a connection fails, I'll add a task on phobos
to keep retrying occasionally (with a daily report), this should work.

The use case I'm thinking of is adding to my exocortex from my phone
while traveling, for example. The two modes that I think will work well
with this are adding artifacts and adding quick notes.

A quick note would be a node named something like 

```text
quick =>
  2022 => 
    02 =>
      23
```

The quick note function will add a new cell to the existing quick note
for the day. The idea is that I'll revisit that the next day, or at the
end of the day, and integrate those notes into the rest of the exocortex.

I'm satisfied with this approach for now.

