SlideShare a Scribd company logo
Camlistore.org
Your, Personal Datastore for Life
A side project in GoLang by Brad Fitzpatrick. Maintainer Mathieu Lonjaret.
Reprised by Clive Boulton for Google Developer Groups NYC. Jan 9, 2017.
https://www.meetup.com/gdgnyc/events/234963670/
Entrepreneurs: personal memories are priceless.
Demo
How Brad got Camlistore going
Brad Fitzpatrick @bradfitz is a member of the Go team at Google, working
primarily on the standard library.
● Brad wanted to create a system to store all of the content he’s created,
which is currently scattered across multiple sites and disks. He started
hacking in this directory:
$ Content Addressable Multi Level Indexed Storage = Camlistore
Camlistore Goals
● Content-addressable
● Searchable
● Web UI
● Extensibility: FUSE, etc.
Majority of Camlistore is pure Go. (Ed. note: It’s a great repo to read and learn
from.)
Content-addressable advantages
● Sync any which way, no conflicts
● (merge resolution at higher layers)
● corruption verification/repair
● de-duping
Content Addressable: What things are named depends on their content. Two
identical things have the same name. For example, the "name" or "key" for the
data is the SHA-1 for the data, ala git.
Multi-level
● blob storage
● indexing
● search
● web UI, FUSE, CU, apps are just clients of search + blob storage
Multi-Layer: The whole storage stack is built out of several layers. The blob
store sits on the bottom, and only knows about bytes, and access is via the
SHA-1 of those bytes. Things that you might store (Files, directories, sets,
collections of tweets, social graphs, etc) build on top of the blob store by
additional blobs that hold pointers to data blobs. Again, it's sort of like git. A
front-end might sit on top of that abstraction.
Indexed
● ask the indexer
● tags
● search = find
Indexed: blobs of JSON that have a few special attributes are recognized and
indexed. So, you might have a bunch of blobs with these special attributes (ie,
"tag") and be able to ask the indexer "Give me all blobs with tag equal to foo",
rather than having to search through the blobs directly.
Overview
Permanode
random #
Set-attribute
camliContent
Directory
JSON
File
Bytes
File
Bytes
File
Bytes
File
Bytes
Directory
JSON
File
JSON
File
JSON
unassigned blobs
object
Set-attribute
camliContent
Logically
Features of @camlistore
● Personal Datastore for life: Like Git for Social Backup.
● Security is private by default (share if you wish, more sharing in v.10)
● FUSE file system
● Data versioning, time travel
● Snappy UI (react.js like Instagram moving to gopherjs)
● Clients in JavaScript, Java, Obj-C,
● Deploy Web, Phone, Home, S3, GCE (Docker)
● Targets Desktop Chrome, Firefox, Safari, Edge (last two stable versions).
● Targets Safari and Chrome on Android and iOS tablets (last two stable ver)
Why Brad chose Go for Camlistore
● He considered a few other candidate languages:
● Perl and Python: too slow and single-threaded
● C++ and Java: tedious and not fun (slow builds)
● Go? Yeah.
As Brad hacked on Camlistore, he realized he needs to implement support for
various formats and protocols (like mime/multipart) and improve stdlib
packages (like os/exec nee exec, database/sql, etc.).
Camlistore ⇔ 20 per cent time (now a side project)
East deployment to GCP (now)
Makes firing up your own Camlistore server on GCE+MySQL+Cloud Storage a few clicks from a web app, using
CoreOS, Docker, and the various Google Cloud Platform APIs..
Visit https://camlistore.org/launch/ which lets you create your own camlistore instance on GCE. The Camlistore website
will say:
Step 1) go to https://console.developers.google.com/project
Step 2) click "Create Project". remember its name.
Step 3) Enable billing. (tell Google your credit card info) [Ed note. Dev’s sign up for GCP get $x00 credit for 60 days]
Step 4) Enter your project name: [ ]
[ Create ]
You click Create, and then we send you on an OAuth2 voyage to get access to create VMs & DBs & Buckets on your
behalf, and then we create it all, including creating a minimal CoreOS VM that boots right up into a tiny Docker
container just running camlistore. [Ed note, the API forms are also Camlistore open source]
Web UI
● React → gopherjs
● Infinite scroll
● Lightbox
● HTML history API
● Search
…
Camlistore Android app: demo time!
https://play.google.com/store/apps/details?id=org.camlistore
Command line tools $
● camget (blobs, trees, shares)
● camput (blobs, files, dirs, shares, permanodes, claims)
● camtool {init, sync, init, describe, claims…)
● cammount
Camlistore is pure Go: (no C)
● HTTP client/server, TLS, AES, …
● JSON, XML
● WebSockets
● SMTP server (coming)
● Rolling checksums
● GIF/JPG/PNG en/dec, resizing, thumbnails
● FUSE
● Notification bus
● database/sql, MySQL, Postgres, MongoDB
● OpenPGP signing & verification
Ed note: NYC is adoption center for Blockchain technologies, also written in GoLang
More
@camlistore
https://camlistore.org
Reprised by clive boulton twitter @iC

More Related Content

Similar to Camlistore reprise at Google NYC

SEO for Large Websites
SEO for Large WebsitesSEO for Large Websites
SEO for Large Websites
Dominic Woodman
 
How dojo works
How dojo worksHow dojo works
How dojo works
Amit Tyagi
 
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
Esteve Castells
 
Dojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, FastDojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, Fast
Gabriel Hamilton
 
Sandboxing JS and HTML. A lession Learned
Sandboxing JS and HTML. A lession LearnedSandboxing JS and HTML. A lession Learned
Sandboxing JS and HTML. A lession Learned
Minded Security
 
Dojo: Getting Started Today
Dojo: Getting Started TodayDojo: Getting Started Today
Dojo: Getting Started Today
Gabriel Hamilton
 
Lessons Learned from Building a Multi-Tenant Saas Content Management System o...
Lessons Learned from Building a Multi-Tenant Saas Content Management System o...Lessons Learned from Building a Multi-Tenant Saas Content Management System o...
Lessons Learned from Building a Multi-Tenant Saas Content Management System o...MongoDB
 
Content Mangement Systems and MongoDB
Content Mangement Systems and MongoDBContent Mangement Systems and MongoDB
Content Mangement Systems and MongoDB
Mitch Pirtle
 
DevOops & How I hacked you DevopsDays DC June 2015
DevOops & How I hacked you DevopsDays DC June 2015DevOops & How I hacked you DevopsDays DC June 2015
DevOops & How I hacked you DevopsDays DC June 2015
Chris Gates
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
Derek Jacoby
 
Dojo javascript toolkit
Dojo javascript toolkit Dojo javascript toolkit
Dojo javascript toolkit
Predhin Sapru
 
Meteor Day Athens (2014-11-07)
Meteor Day Athens (2014-11-07)Meteor Day Athens (2014-11-07)
Meteor Day Athens (2014-11-07)
svub
 
20150317 firefox os_studymtg_engver
20150317 firefox os_studymtg_engver20150317 firefox os_studymtg_engver
20150317 firefox os_studymtg_engver
Naoki Sekiguchi
 
Jamie Alberico — How to Leverage Insights from Your Site’s Server Logs | 5 Ho...
Jamie Alberico — How to Leverage Insights from Your Site’s Server Logs | 5 Ho...Jamie Alberico — How to Leverage Insights from Your Site’s Server Logs | 5 Ho...
Jamie Alberico — How to Leverage Insights from Your Site’s Server Logs | 5 Ho...
Semrush
 
CiklumJavaSat15112011:Andrew Mormysh-GWT features overview
CiklumJavaSat15112011:Andrew Mormysh-GWT features overviewCiklumJavaSat15112011:Andrew Mormysh-GWT features overview
CiklumJavaSat15112011:Andrew Mormysh-GWT features overviewCiklum Ukraine
 
Javascript Apps at Build Artifacts
Javascript Apps at Build ArtifactsJavascript Apps at Build Artifacts
Javascript Apps at Build Artifacts
Clay Smith
 
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
patrickstox
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
Paul Jensen
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
carlostorres15106
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Andrey Dotsenko
 

Similar to Camlistore reprise at Google NYC (20)

SEO for Large Websites
SEO for Large WebsitesSEO for Large Websites
SEO for Large Websites
 
How dojo works
How dojo worksHow dojo works
How dojo works
 
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
 
Dojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, FastDojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, Fast
 
Sandboxing JS and HTML. A lession Learned
Sandboxing JS and HTML. A lession LearnedSandboxing JS and HTML. A lession Learned
Sandboxing JS and HTML. A lession Learned
 
Dojo: Getting Started Today
Dojo: Getting Started TodayDojo: Getting Started Today
Dojo: Getting Started Today
 
Lessons Learned from Building a Multi-Tenant Saas Content Management System o...
Lessons Learned from Building a Multi-Tenant Saas Content Management System o...Lessons Learned from Building a Multi-Tenant Saas Content Management System o...
Lessons Learned from Building a Multi-Tenant Saas Content Management System o...
 
Content Mangement Systems and MongoDB
Content Mangement Systems and MongoDBContent Mangement Systems and MongoDB
Content Mangement Systems and MongoDB
 
DevOops & How I hacked you DevopsDays DC June 2015
DevOops & How I hacked you DevopsDays DC June 2015DevOops & How I hacked you DevopsDays DC June 2015
DevOops & How I hacked you DevopsDays DC June 2015
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
 
Dojo javascript toolkit
Dojo javascript toolkit Dojo javascript toolkit
Dojo javascript toolkit
 
Meteor Day Athens (2014-11-07)
Meteor Day Athens (2014-11-07)Meteor Day Athens (2014-11-07)
Meteor Day Athens (2014-11-07)
 
20150317 firefox os_studymtg_engver
20150317 firefox os_studymtg_engver20150317 firefox os_studymtg_engver
20150317 firefox os_studymtg_engver
 
Jamie Alberico — How to Leverage Insights from Your Site’s Server Logs | 5 Ho...
Jamie Alberico — How to Leverage Insights from Your Site’s Server Logs | 5 Ho...Jamie Alberico — How to Leverage Insights from Your Site’s Server Logs | 5 Ho...
Jamie Alberico — How to Leverage Insights from Your Site’s Server Logs | 5 Ho...
 
CiklumJavaSat15112011:Andrew Mormysh-GWT features overview
CiklumJavaSat15112011:Andrew Mormysh-GWT features overviewCiklumJavaSat15112011:Andrew Mormysh-GWT features overview
CiklumJavaSat15112011:Andrew Mormysh-GWT features overview
 
Javascript Apps at Build Artifacts
Javascript Apps at Build ArtifactsJavascript Apps at Build Artifacts
Javascript Apps at Build Artifacts
 
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

More from clive boulton

Riak TS
Riak TSRiak TS
Riak TS
clive boulton
 
Ignitepii2014
Ignitepii2014Ignitepii2014
Ignitepii2014
clive boulton
 
Seattle Scalability meetup intro slides, Jan 22, 2014
Seattle Scalability meetup intro slides, Jan 22, 2014Seattle Scalability meetup intro slides, Jan 22, 2014
Seattle Scalability meetup intro slides, Jan 22, 2014
clive boulton
 
Seattle Scalability meetup intro slides - Dec 4, 2013 - Scaling SQL + Scaling...
Seattle Scalability meetup intro slides - Dec 4, 2013 - Scaling SQL + Scaling...Seattle Scalability meetup intro slides - Dec 4, 2013 - Scaling SQL + Scaling...
Seattle Scalability meetup intro slides - Dec 4, 2013 - Scaling SQL + Scaling...
clive boulton
 
Seattle scalability meetup intro slides 23 oct 2013
Seattle scalability meetup intro slides 23 oct 2013Seattle scalability meetup intro slides 23 oct 2013
Seattle scalability meetup intro slides 23 oct 2013
clive boulton
 
Seattle scalability meetup intro slides 24 july 2013
Seattle scalability meetup intro slides 24 july 2013Seattle scalability meetup intro slides 24 july 2013
Seattle scalability meetup intro slides 24 july 2013clive boulton
 
Seattle Scalability Meetup intro pptx - June 26
Seattle Scalability Meetup intro pptx - June 26Seattle Scalability Meetup intro pptx - June 26
Seattle Scalability Meetup intro pptx - June 26
clive boulton
 
Seattle scalability meetup intro ppt May 22
Seattle scalability meetup intro ppt May 22Seattle scalability meetup intro ppt May 22
Seattle scalability meetup intro ppt May 22
clive boulton
 
Patent Trollls gonna kill VRM?
Patent Trollls gonna kill VRM?Patent Trollls gonna kill VRM?
Patent Trollls gonna kill VRM?
clive boulton
 
Seattle scalability meetup March 27,2013 intro slides
Seattle scalability meetup March 27,2013 intro slidesSeattle scalability meetup March 27,2013 intro slides
Seattle scalability meetup March 27,2013 intro slides
clive boulton
 
Seattle scalability meetup intro
Seattle scalability meetup introSeattle scalability meetup intro
Seattle scalability meetup introclive boulton
 
Seattle Scalability Meetup | Accumulo and WhitePages
Seattle Scalability Meetup | Accumulo and WhitePagesSeattle Scalability Meetup | Accumulo and WhitePages
Seattle Scalability Meetup | Accumulo and WhitePages
clive boulton
 
Seattle Scalability - Sept Meetup
Seattle Scalability - Sept MeetupSeattle Scalability - Sept Meetup
Seattle Scalability - Sept Meetup
clive boulton
 
Seattle montly hadoop nosql scalability meetup
Seattle montly hadoop nosql scalability meetupSeattle montly hadoop nosql scalability meetup
Seattle montly hadoop nosql scalability meetup
clive boulton
 
Leapfrogging with legacy
Leapfrogging with legacyLeapfrogging with legacy
Leapfrogging with legacyclive boulton
 
Whole Chain Traceability, pulling a Kobayashi Maru.
Whole Chain Traceability, pulling a Kobayashi Maru. Whole Chain Traceability, pulling a Kobayashi Maru.
Whole Chain Traceability, pulling a Kobayashi Maru.
clive boulton
 
Whole Chain Traceability Consortium
Whole Chain Traceability ConsortiumWhole Chain Traceability Consortium
Whole Chain Traceability Consortium
clive boulton
 
Seattle Scalability - GigaSpaces / Cassandra
Seattle Scalability - GigaSpaces / CassandraSeattle Scalability - GigaSpaces / Cassandra
Seattle Scalability - GigaSpaces / Cassandra
clive boulton
 
Seattle Scalability Meetup - Ted Dunning - MapR
Seattle Scalability Meetup - Ted Dunning - MapRSeattle Scalability Meetup - Ted Dunning - MapR
Seattle Scalability Meetup - Ted Dunning - MapR
clive boulton
 

More from clive boulton (20)

Riak TS
Riak TSRiak TS
Riak TS
 
Ignitepii2014
Ignitepii2014Ignitepii2014
Ignitepii2014
 
Seattle Scalability meetup intro slides, Jan 22, 2014
Seattle Scalability meetup intro slides, Jan 22, 2014Seattle Scalability meetup intro slides, Jan 22, 2014
Seattle Scalability meetup intro slides, Jan 22, 2014
 
Seattle Scalability meetup intro slides - Dec 4, 2013 - Scaling SQL + Scaling...
Seattle Scalability meetup intro slides - Dec 4, 2013 - Scaling SQL + Scaling...Seattle Scalability meetup intro slides - Dec 4, 2013 - Scaling SQL + Scaling...
Seattle Scalability meetup intro slides - Dec 4, 2013 - Scaling SQL + Scaling...
 
Seattle scalability meetup intro slides 23 oct 2013
Seattle scalability meetup intro slides 23 oct 2013Seattle scalability meetup intro slides 23 oct 2013
Seattle scalability meetup intro slides 23 oct 2013
 
Seattle scalability meetup intro slides 24 july 2013
Seattle scalability meetup intro slides 24 july 2013Seattle scalability meetup intro slides 24 july 2013
Seattle scalability meetup intro slides 24 july 2013
 
Seattle Scalability Meetup intro pptx - June 26
Seattle Scalability Meetup intro pptx - June 26Seattle Scalability Meetup intro pptx - June 26
Seattle Scalability Meetup intro pptx - June 26
 
Seattle scalability meetup intro ppt May 22
Seattle scalability meetup intro ppt May 22Seattle scalability meetup intro ppt May 22
Seattle scalability meetup intro ppt May 22
 
Patent Trollls gonna kill VRM?
Patent Trollls gonna kill VRM?Patent Trollls gonna kill VRM?
Patent Trollls gonna kill VRM?
 
Seattle scalability meetup March 27,2013 intro slides
Seattle scalability meetup March 27,2013 intro slidesSeattle scalability meetup March 27,2013 intro slides
Seattle scalability meetup March 27,2013 intro slides
 
Seattle scalability meetup intro
Seattle scalability meetup introSeattle scalability meetup intro
Seattle scalability meetup intro
 
Seattle Scalability Meetup | Accumulo and WhitePages
Seattle Scalability Meetup | Accumulo and WhitePagesSeattle Scalability Meetup | Accumulo and WhitePages
Seattle Scalability Meetup | Accumulo and WhitePages
 
Seattle Scalability - Sept Meetup
Seattle Scalability - Sept MeetupSeattle Scalability - Sept Meetup
Seattle Scalability - Sept Meetup
 
Seattle montly hadoop nosql scalability meetup
Seattle montly hadoop nosql scalability meetupSeattle montly hadoop nosql scalability meetup
Seattle montly hadoop nosql scalability meetup
 
Leapfrogging with legacy
Leapfrogging with legacyLeapfrogging with legacy
Leapfrogging with legacy
 
Whole Chain Traceability, pulling a Kobayashi Maru.
Whole Chain Traceability, pulling a Kobayashi Maru. Whole Chain Traceability, pulling a Kobayashi Maru.
Whole Chain Traceability, pulling a Kobayashi Maru.
 
Whole Chain Traceability Consortium
Whole Chain Traceability ConsortiumWhole Chain Traceability Consortium
Whole Chain Traceability Consortium
 
Seattle Scalability - GigaSpaces / Cassandra
Seattle Scalability - GigaSpaces / CassandraSeattle Scalability - GigaSpaces / Cassandra
Seattle Scalability - GigaSpaces / Cassandra
 
Wspm
WspmWspm
Wspm
 
Seattle Scalability Meetup - Ted Dunning - MapR
Seattle Scalability Meetup - Ted Dunning - MapRSeattle Scalability Meetup - Ted Dunning - MapR
Seattle Scalability Meetup - Ted Dunning - MapR
 

Recently uploaded

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
Jen Stirrup
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
UiPathCommunity
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 

Recently uploaded (20)

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 

Camlistore reprise at Google NYC

  • 1. Camlistore.org Your, Personal Datastore for Life A side project in GoLang by Brad Fitzpatrick. Maintainer Mathieu Lonjaret. Reprised by Clive Boulton for Google Developer Groups NYC. Jan 9, 2017. https://www.meetup.com/gdgnyc/events/234963670/
  • 3.
  • 5. How Brad got Camlistore going Brad Fitzpatrick @bradfitz is a member of the Go team at Google, working primarily on the standard library. ● Brad wanted to create a system to store all of the content he’s created, which is currently scattered across multiple sites and disks. He started hacking in this directory: $ Content Addressable Multi Level Indexed Storage = Camlistore
  • 6. Camlistore Goals ● Content-addressable ● Searchable ● Web UI ● Extensibility: FUSE, etc. Majority of Camlistore is pure Go. (Ed. note: It’s a great repo to read and learn from.)
  • 7. Content-addressable advantages ● Sync any which way, no conflicts ● (merge resolution at higher layers) ● corruption verification/repair ● de-duping Content Addressable: What things are named depends on their content. Two identical things have the same name. For example, the "name" or "key" for the data is the SHA-1 for the data, ala git.
  • 8. Multi-level ● blob storage ● indexing ● search ● web UI, FUSE, CU, apps are just clients of search + blob storage Multi-Layer: The whole storage stack is built out of several layers. The blob store sits on the bottom, and only knows about bytes, and access is via the SHA-1 of those bytes. Things that you might store (Files, directories, sets, collections of tweets, social graphs, etc) build on top of the blob store by additional blobs that hold pointers to data blobs. Again, it's sort of like git. A front-end might sit on top of that abstraction.
  • 9. Indexed ● ask the indexer ● tags ● search = find Indexed: blobs of JSON that have a few special attributes are recognized and indexed. So, you might have a bunch of blobs with these special attributes (ie, "tag") and be able to ask the indexer "Give me all blobs with tag equal to foo", rather than having to search through the blobs directly.
  • 12. Features of @camlistore ● Personal Datastore for life: Like Git for Social Backup. ● Security is private by default (share if you wish, more sharing in v.10) ● FUSE file system ● Data versioning, time travel ● Snappy UI (react.js like Instagram moving to gopherjs) ● Clients in JavaScript, Java, Obj-C, ● Deploy Web, Phone, Home, S3, GCE (Docker) ● Targets Desktop Chrome, Firefox, Safari, Edge (last two stable versions). ● Targets Safari and Chrome on Android and iOS tablets (last two stable ver)
  • 13. Why Brad chose Go for Camlistore ● He considered a few other candidate languages: ● Perl and Python: too slow and single-threaded ● C++ and Java: tedious and not fun (slow builds) ● Go? Yeah. As Brad hacked on Camlistore, he realized he needs to implement support for various formats and protocols (like mime/multipart) and improve stdlib packages (like os/exec nee exec, database/sql, etc.). Camlistore ⇔ 20 per cent time (now a side project)
  • 14. East deployment to GCP (now) Makes firing up your own Camlistore server on GCE+MySQL+Cloud Storage a few clicks from a web app, using CoreOS, Docker, and the various Google Cloud Platform APIs.. Visit https://camlistore.org/launch/ which lets you create your own camlistore instance on GCE. The Camlistore website will say: Step 1) go to https://console.developers.google.com/project Step 2) click "Create Project". remember its name. Step 3) Enable billing. (tell Google your credit card info) [Ed note. Dev’s sign up for GCP get $x00 credit for 60 days] Step 4) Enter your project name: [ ] [ Create ] You click Create, and then we send you on an OAuth2 voyage to get access to create VMs & DBs & Buckets on your behalf, and then we create it all, including creating a minimal CoreOS VM that boots right up into a tiny Docker container just running camlistore. [Ed note, the API forms are also Camlistore open source]
  • 15. Web UI ● React → gopherjs ● Infinite scroll ● Lightbox ● HTML history API ● Search … Camlistore Android app: demo time! https://play.google.com/store/apps/details?id=org.camlistore
  • 16. Command line tools $ ● camget (blobs, trees, shares) ● camput (blobs, files, dirs, shares, permanodes, claims) ● camtool {init, sync, init, describe, claims…) ● cammount
  • 17. Camlistore is pure Go: (no C) ● HTTP client/server, TLS, AES, … ● JSON, XML ● WebSockets ● SMTP server (coming) ● Rolling checksums ● GIF/JPG/PNG en/dec, resizing, thumbnails ● FUSE ● Notification bus ● database/sql, MySQL, Postgres, MongoDB ● OpenPGP signing & verification Ed note: NYC is adoption center for Blockchain technologies, also written in GoLang