diff --git a/talks/2011-05-07-Camlistore-Sao-Paolo/index.html b/talks/2011-05-07-Camlistore-Sao-Paolo/index.html
index 56f464fb2..e53c907e2 100755
--- a/talks/2011-05-07-Camlistore-Sao-Paolo/index.html
+++ b/talks/2011-05-07-Camlistore-Sao-Paolo/index.html
@@ -1,17 +1,6 @@
@@ -540,6 +529,16 @@ sha1-ea799271abfbf85d8e22e4577f15f704c8349026
+
+ Aside: Garbage Collection
+
+ - Permanodes are (optionally) GC roots,
+ - or anything signed by you.
+ - If not a blob isn't reachable by a signed root, can be deleted.
+ - If you want to keep a plain "dumb" blob, you should create a "keep" claim for it, or a permanode.
+
+
+
Modeling non-filesystem objects
@@ -598,11 +597,24 @@ sha1-ea799271abfbf85d8e22e4577f15f704c8349026
- indexing is real-time, no polling
- MySQL index speaks the blob server protocol
- - just replicated to MySQL (etc) just like Amazon S3 (etc)
+ - just replicate to the index (MySQL, etc) just like other blob servers (Amazon S3, etc)
+
+
+ Replication Implementation
+
+
+ - cold bootstrap: enumerate() (sorted) all blobs from src and dst, copy all blobs that dst doesn't have.
+
- more efficient: use multiple machines, starting at sha1-0*, sha1-1*, sha1-2*, ... etc
+ - once in-sync, for each (src, dst) replication pair, keep a src_to_dst_QUEUE namespace on src,
+ - all new blobs to src also go into src_to_dst_QUEUE (refcount, hardlink, etc)
+ - real-time watch src_to_dst_QUEUE & replicate & delete from the queue. or re-enumerate just the queue.
+
+
+
Search
@@ -636,53 +648,95 @@ sha1-ea799271abfbf85d8e22e4577f15f704c8349026
Sharing & Share Blobs
+
the act of sharing involves creating a new share claim, just another blob, signed.
+ here is: sha1-071fda36c1bd9e4595ed16ab5e2a46d44491f708:
+ {"camliVersion": 1,
+ "authType": "haveref",
+ "camliSigner": "sha1-f019d17dd308eebbd49fd94536eb67214c2f0587",
+ "camliType": "share",
+ "target": "sha1-0e5e60f367cc8156ae48198c496b2b2ebdf5313d",
+ "transitive": true
+,"camliSig":"iQEcBAABAgAGBQJNQJGuAAoJEIUeCLJL7Fq1EuAIAL/nGoX8caGaANnam0bcIQT7C61wXMRW4qCCaFW+w67ys5z4ztfnTPKwL9ErzMF8Hd32Xe/bVcF6ZL38x/axqI7ehxN8lneKGQNoEdZDA9i752aAr0fkAba6eDehoOj9F4XxOzk3iVrq445jEXtu/+twamHV3UfRozWK1ZQb57dM+cRff47M/Y6VIBRSgW2BrABjuBs8G6PiKxycgh1mb+RL8f9KG+HB/yFuK37YJqZ0zU2OTRp6ELiOgTxbeg99koV9Duy4f4mQgxQgli46077Sv/ujzIeVbmdFL3OenGEzQnyKG0fhf8fa5WkED0XfH7zibAHLiSq3O7x11Q0406U==ANug"}
+ Target w/ ?via= parameter: sha1-0e5e60f?via=sha1-071fda & next hop
+
+
+
+
+ Sharing Details & Implementation
+
- - the act of sharing involves creating a new share claim, just another blob, signed.
+ - blobserver is private-only. the frontend mediates access to the world, checks authentication, or lack thereof.
+ - all non-owner requests must present a share blob's blobref as an access token
+ - that share blob dictates:
+
+ - what sort of authenticatation is required (or "haveref" for none, like a secret link)
+ - which blob(s) are granted access (the "transitive" option)
+
+
+ - requests for a blob must include the path to get there, from the share root
-
+
-
-
+
- Image filling the slide (with optional header)
+ What can be shared
-
-
-
-
- Cat
-
+
+ - Share a single blob,
+
- Share a subtree,
+
- Share a search query and its results' reachable blobs
+ - ... give out [world, girlfriend] access to all pictures you take on your phone, in real-time
+
+
+
+
+
+ Project Status
+
-
-
+
- A slide with an embed + title
+ Project Status
-
-
-
+
+ - Blobstore, Go (any OS), can store on disk, s3, mysqlindex
+
- Blobstore, Python (App Engine only) can store on Google
+
- Perl tests for two blob stores
+
- Android uploader (Java)
+
- Bunch of Go libraries / command-line tools: sync, put, get
+
- FUSE filesystem (read-only, currently)
+
- Search: basics working. more queries looks easy now.
+
- Simple, self-contained everything binary (blob storage, sharing, search, index, frontend) for early adopters: ~95%
+
- Web UI / JavaScript APIs: in progress
+
+
-
-
-
-
-
+
- Full-slide embed with (optional) slide title on top
+ In Review
-
-
-
+
+ - You own all your blobs; everything is private by default.
+ - Mutable objects are made of mutation claim blobs.
+ - Sync is trivial: either you have it or you don't
+ - Some blobs are signed
+ - Indexing & search to find your blobs / roots
+ - To share you must create a declaration of sharing ...
+ - ... and the system will only allow access if such claims exist.
+ - Decentralized, but hostable. You can run your own server (with no central
+ company or point of control), but you can also let somebody else do it for
+ you, like email.
+
+
+
Thank you!
-
- - Brad Fitzpatrick, brad@danga.com
- - camlistore.org
-
+ Brad Fitzpatrick, brad@danga.com; Want to help? More info: camlistore.org
+