diff options
Diffstat (limited to 'v2/src/content/en/slide/local-first.ps')
-rw-r--r-- | v2/src/content/en/slide/local-first.ps | 522 |
1 files changed, 0 insertions, 522 deletions
diff --git a/v2/src/content/en/slide/local-first.ps b/v2/src/content/en/slide/local-first.ps deleted file mode 100644 index 44c5858..0000000 --- a/v2/src/content/en/slide/local-first.ps +++ /dev/null @@ -1,522 +0,0 @@ -%!PS-Adobe-3.0 -%%DocumentMedia: SLIDE 842 595 0 () () -%%EndComments -%%BeginDefaults -%%PageMedia: SLIDE -%%EndDefaults -<< /PageSize [842 595] /ImagingBBox null >> setpagedevice - -/reencode { - exch - findfont - dup length dict - begin - { - 1 index /FID ne - { def } - { pop pop } - ifelse - } forall - /Encoding ISOLatin1Encoding def - currentdict - end - definefont pop -} def -/Courier /Courier reencode -/Helvetica /Helvetica reencode -/Times /Times reencode -/Times-Italic /Times-Italic reencode - - -/headerheight 77 def - -/frontfontsz 60 def -/authorfontsz 40 def -/titlefontsz 40 def -/mainfontsz 30 def -/codefontsz 18 def -/tinyfontsz 18 def - -/titlefont /Helvetica findfont titlefontsz scalefont def -/mainfont /Courier findfont mainfontsz scalefont def -/codefont /Courier findfont codefontsz scalefont def -/tinyfont /Times findfont tinyfontsz scalefont def -/frontfont /Helvetica findfont frontfontsz scalefont def -/authorfont /Times-Italic findfont authorfontsz scalefont def -/authorfonttwo /Times findfont authorfontsz scalefont def - - -/pagewidth 842 def -/pageheight 595 def -/leftmargin 30 def -/topmargin 595 def - -/pad 10 def - -/titlefonth titlefontsz pad add def -/mainfonth mainfontsz pad add def -/codefonth codefontsz pad add def -/tinyfonth tinyfontsz pad add def -/frontfonth frontfontsz pad add def -/authorfonth authorfontsz pad add def - -/headermargin - pageheight headerheight titlefonth sub 2 div titlefontsz add sub -def -/rightmargin pagewidth leftmargin sub def -/tbtop topmargin def -/ypos topmargin def - -/xcur { currentpoint pop } def -/ycur { currentpoint exch pop } def - -/wordbreak ( ) def -/linewrap { - /proc exch def - /linelength exch def - /textstring exch def - /breakwidth wordbreak stringwidth pop def - /curwidth 0 def - /lastwordbreak 0 def - /startchar 0 def - /restoftext textstring def - { - restoftext wordbreak search - { - /nextword exch def pop - /restoftext exch def - /wordwidth nextword stringwidth pop def - curwidth wordwidth add linelength gt - { - textstring startchar - lastwordbreak startchar sub - getinterval proc - /startchar lastwordbreak def - /curwidth wordwidth breakwidth add def - } - { - /curwidth curwidth wordwidth add - breakwidth add def - } ifelse - /lastwordbreak lastwordbreak - nextword length add 1 add def - } - { - pop exit - } ifelse - } loop - /lastchar textstring length def - textstring startchar lastchar startchar sub - getinterval proc -} def - -/line { - 0 0 0 setrgbcolor - 0.5 setlinewidth - leftmargin ypos moveto - rightmargin ypos lineto - stroke -} def - -/center { - dup - /str exch def - /sw str stringwidth pop def - /xpos pagewidth sw sub 2 div xcur sub def - xpos 0 rmoveto -} def - -/objcenter { - pagewidth exch sub 2 div 0 translate -} def - -/s { - /tbtop topmargin def - /ypos topmargin def - 1 1 1 setrgbcolor - 0 setlinewidth - newpath - 0 pageheight moveto - pagewidth pageheight lineto - pagewidth 0 lineto - 0 0 lineto - closepath - fill - stroke -} def - -/l { - /h exch def - /ypos ypos h sub def - leftmargin ypos moveto -} def - -/title { - frontfonth l - frontfont setfont - 0.5 0.5 0.9 setrgbcolor - { pagewidth leftmargin 2 mul sub } - { frontfonth l center show } - linewrap - frontfonth 2 div l - frontfonth l -} def - -/author { - authorfont setfont - 0 0 0 setrgbcolor - { pagewidth leftmargin 2 mul sub } - { authorfonth l center show } - linewrap -} def - -/authortwo { - authorfonttwo setfont - 0 0 0 setrgbcolor - { pagewidth leftmargin 2 mul sub } - { authorfonth l center show } - linewrap -} def - -/header { - /ypos pageheight headerheight sub def - 0 0 0 setrgbcolor - 0 setlinewidth - newpath - 0 pageheight moveto - pagewidth pageheight lineto - pagewidth ypos lineto - 0 ypos lineto - closepath - fill - stroke - leftmargin headermargin moveto - titlefont setfont - 0.5 0.5 0.9 setrgbcolor - center show - leftmargin ypos moveto -} def - -/n { - mainfont setfont - 0 0 0 setrgbcolor - { pagewidth leftmargin 2 mul sub } - { mainfonth l show } - linewrap -} def - -/cn { - codefont setfont - 0 0 0 setrgbcolor - { pagewidth leftmargin 2 mul sub } - { codefonth l show } - linewrap -} def - -/tn { - tinyfont setfont - 0 0 0 setrgbcolor - { pagewidth leftmargin 2 mul sub } - { tinyfonth l show } - linewrap -} def - -/is { - /level1 save def - /showpage {} def -} def - -/ie { - level1 restore -} def - -/bs { - /tbtop ypos def -} def - -/be { - /tm tbtop pad sub def - /bm ypos pad sub def - newpath - leftmargin 10 sub tm moveto - rightmargin tm lineto - rightmargin bm lineto - leftmargin 10 sub bm lineto - closepath - 0 0 0 setrgbcolor - 0.5 setlinewidth - stroke -} def -( On "local-first") title -(Beyond the CRDT silver bullet) authortwo -showpage -%%Page: 1 1 -s -( Part 1) header -( Exposition) title -showpage -%%Page: 2 2 -s -( Target) header -() n -() n -() n -(- documents) n -(- files) n -(- personal data repositories) n -() n -() n -(Not: banking services, e-commerce, social networking, ride-sharing, etc.) n -showpage -%%Page: 3 3 -s -() n -() n -() n -( 7 ideals for local-first software) title -showpage -%%Page: 4 4 -s -() n -() n -() n -( 1 - no spinners: your work at your fingertips) title -showpage -%%Page: 5 5 -s -() n -() n -() n -( 2 - your work is not trapped on one device) title -showpage -%%Page: 6 6 -s -() n -() n -() n -( 3 - the network is optional) title -showpage -%%Page: 7 7 -s -() n -() n -() n -( 4 - seamless collaboration with your colleagues) title -showpage -%%Page: 8 8 -s -() n -() n -() n -( 5 - the long now) title -showpage -%%Page: 9 9 -s -() n -() n -() n -( 6 - security and privacy by default ) title -showpage -%%Page: 10 10 -s -() n -() n -() n -( 7 - you retain ultimate ownership and control) title -showpage -%%Page: 11 11 -s -( Towards a better future) header -() n -() n -() n -() n -( CRDTs \(Conflict-free Replicated Data Types\) as a Foundational Technology) authortwo -showpage -%%Page: 12 12 -s -( Use case) header -() n -bs -(# in node A and node B) cn -(s = "Hello, World") cn -() cn -(# in node A) cn -(s = "Hello, Alice") cn -() cn -(# in node B) cn -(s = "Hello, Bob") cn -be -(How to reconcile those?) n -(- Hello, ABloibce) n -(- Hello, AliceBob) n -(- Hello, BobAlice) n -(- Hello, Alice) n -(...) n -showpage -%%Page: 13 13 -s -( Existing CRDTs differ) title -(- performance) n -(- storage) n -(- compression) n -(- metadata overhead) n -showpage -%%Page: 14 14 -s -() n -() n -() n -( Hint towards the "automerge" CRDT) title -showpage -%%Page: 15 15 -s -() n -() n -() n -() n -() n -() n -(show comparison table, page 9) author -showpage -%%Page: 16 16 -s -( Part 2) header -( Critique) title -showpage -%%Page: 17 17 -s -( Software license) header -() n -() n -() n -("In our opinion, maintaining control and ownership of data does not mean that the software must necessarily be open source.") author -showpage -%%Page: 18 18 -s -( Example 1 - intentional restriction) header -() n -bs -(#!/bin/sh) cn -(TODAY="$\(date +%s\)") cn -(LICENSE_EXPIRATION="$\(date -d 2020-10-27 +%s\)") cn -(if [ "$TODAY" -ge "$LICENSE_EXPIRATION" ]; then) cn -( echo 'License expired!') cn -( exit 1) cn -(fi) cn -(echo $\(\(2 + 2\)\)) cn -be -() n -bs -(# today) cn -($ ./useful-adder.sh) cn -(4) cn -(# tomorrow) cn -($ ./useful-adder.sh) cn -(License expired!) cn -be -showpage -%%Page: 19 19 -s -( Example 2 - unintentional restriction) header -() n -bs -(# today) cn -($ useful-program) cn -(# ... useful output ...) cn -() cn -(# tomorrow, with more data) cn -($ useful-program) cn -(ERROR: Panic! Stack overflow!) cn -be -showpage -%%Page: 20 20 -s -() n -() n -( local-first *requires* free software ) title -(Otherwise "The Long Now" \(ideal nš5\) is lost) n -showpage -%%Page: 21 21 -s -( Denial of existing solutions) header -() n -() n -("In principle it is possible to collaborate without a repository service, e.g. by sending patch files by email, but the majority of Git users rely on GitHub." ) author -() n -(Solution: either GitHub+CRDTs or git send-email ) n -showpage -%%Page: 22 22 -s -( Plain-text formats) header -() n -("Git is highly optimized for code and similar line-based text file") author -() n -(It even pulls software to the plain text directtion, e.g.:) n -(- delivery-templates) n -(- common-core.protocols.config) n -() n -(Why not exploit that more?) n -showpage -%%Page: 23 23 -s -( Ditching of web applications) header -() n -() n -("The architecture of web apps remains fundamentally server-centric) author -() n -(Disagree. Contrast PouchDB with Android Instant Apps) n -showpage -%%Page: 24 24 -s -( Costs are underrated) header -() n -(- storage) n -(- backups) n -(- maintenance) n -() n -(Example: blog vs vlog) n -showpage -%%Page: 25 25 -s -( Real-time collaboration a bit overrated) header -() n -(It is only possible on the presence of reliable, medium-quality network connection) n -() n -() n -("X also works when inside an elevator, subway or plane!") author -showpage -%%Page: 26 26 -s -( On CRDTs and developer experience) header -() n -("For an app developer, how does the use of a CRDT-based data layer compare to existing storage layers like a SQL database, a filesystem, or CoreData? Is a distributed system harder to write software for?) author -() n -(YES.) authortwo -() n -(See "A Note on Distributed Computing") n -showpage -%%Page: 27 27 -s -( Conclusion) header -() n -(Why this is a "paper I love": it took offline-first and ran with it.) n -() n -(But a pinch of CRDT won't make the world local-first. ) n -() n -(The tricky part is the end of the sentence: "in spite of the Cloud".) n -showpage -%%Page: 28 28 -s -( References) header -() n -(1. "Local-First Software: You Own Your Data, in spite of the Cloud", by M. Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan) n -(2. The Morning Paper article) n -(3. "A Note on Distributed Compiting", by J. Waldo, G. Wyant, A. Wollrath and S. Kendall) n -(4. these slides: euandre.org/slide/) n -(5. prose version of this presentation) n -(6. view source) n - -showpage - -%%EOF |