SlideShare a Scribd company logo
THE VALUE IN TREES
DREW MCCORMACK
The Value in Trees
The Value in Trees
The Value in Trees
SKETCH
PROBLEMS
▸ Edits during saves
▸ Edits during rendering
▸ Fragile undo
The Value in Trees
SNAPSHOT
Time
The Value in Trees
The Value in Trees
The Value in Trees
1.02.0
The Value in Trees
VALUE TYPES
PROS
▸ Stack memory
▸ No reference counting
▸ Safe between threads
▸ No changes behind your back
struct Document {
var sections: [Section]
}
struct Section {
var paragraphs: [Paragraph]
}
struct Paragraph {
var style: ParagraphStyle
var content: String
}
class ViewController {
var document: Document {
didSet {
self.reloadViews()
}
}
}
let c = ViewController()
c.document.sections[0].paragraphs[0].style = ...
1.02.0
The Value in Trees
CAN I HAVE A VALUE STORE
FOR XMAS?
…AND CAN I HAVE IT SYNC?
DISTRIBUTED VALUE STORE (DVS)
DISTRIBUTED VALUE STORE (DVS)
Repository
DISTRIBUTED VALUE STORE (DVS)
struct Person {
var name = "Bob"
var age = 32
var tags = ["clean", "smart"]
}
DISTRIBUTED VALUE STORE (DVS)
struct Person {
var name = "Bob"
var age = 32
var tags = ["clean", "smart"]
}
CloudKit Repository
DISTRIBUTED VALUE STORE (DVS)
struct Person {
var name = "Bob"
var age = 32
var tags = ["clean", "smart"]
}
github.com/mentalfaculty/impeller
import Impeller
struct Person: Storable {
static let storedType = "Person"
var metadata = Metadata()
var name = "No Name"
var age: Int? = nil
...
init?(readingFrom repository:ReadRepository) {
name = repository.read("name")!
age = repository.read(optionalFor:"age")!
}
func write(in repository:WriteRepository) {
repository.write(name, for: "name")
repository.write(age, for: "age")
}
The Value in Trees
ATTRIBUTION
IMAGES
▸ Sketch Logo
▸ https://www.sketchappsources.com/free-source/2332-new-sketch-vector-icon.html
▸ Bamboo Forest
▸ https://www.pexels.com/photo/nature-forest-trees-bamboo-5091/
▸ Redwood Forest
▸ https://commons.wikimedia.org/wiki/File:Sequoia_sempervirens_Big_Basin_Redwoods_State_Park_4.jpg
▸ Notes
▸ http://www.cooperazionetrentina.it/Giovani/Iniziative/Iniziative-2015/I-giovani-e-la-cooperazione-che-cambia-7-edizione
▸ Crop Circles
▸ https://commons.wikimedia.org/wiki/File:CropCircleW.jpg
▸ iPhone
▸ https://commons.wikimedia.org/wiki/File:IPhone_with_icons.svg
▸ Database Icon
▸ https://pixabay.com/en/database-diagram-data-storage-disk-29954/
▸ Jedward
▸ https://www.flickr.com/photos/chiropractic/6849052778
▸ No cycling
▸ https://commons.wikimedia.org/wiki/File:Uruguay_Road_Sign_Bicycles_Only.svg
▸ Planting
▸ https://www.flickr.com/photos/usfsregion5/3598029211

More Related Content

PPTX
Ruby on Rails Introduction
PDF
Cassandra Summit 2013 Keynote
PDF
Cassandra Summit 2014: Real Data Models of Silicon Valley
PPTX
Alternatives to Relational Databases
DOCX
Format xls sheets Demo Mode
PDF
C++ Programming - 8th Study
PDF
Swift Generics in Theory and Practice
PDF
The Ins and Outs of Easing - dotCSS 2016
Ruby on Rails Introduction
Cassandra Summit 2013 Keynote
Cassandra Summit 2014: Real Data Models of Silicon Valley
Alternatives to Relational Databases
Format xls sheets Demo Mode
C++ Programming - 8th Study
Swift Generics in Theory and Practice
The Ins and Outs of Easing - dotCSS 2016

Viewers also liked (20)

PDF
The Expanding Boundaries of CSS
PDF
Building Scalable Systems: What you can learn from Erlang - DotScale 2016
PDF
Swift [and the] Evolution
PDF
The low level awesomeness of Go
PDF
Unbundling the Future Web Runtime
PDF
Advanced Imaging on iOS
PDF
Comment je ne rate plus mon train
PDF
Présentation SoLocal
PDF
L'intégration continue chez Pages Jaunes - Build Bot Mobile
PDF
Comment faire de HLS votre solution vidéo préférée ?
PDF
PDF
Firebase par nicolas lehovetzki
PDF
Découvrir dtrace en ligne de commande.
PDF
MVC-RS par Grégoire Lhotelier
PDF
Safari app extensions cleared up by Sanaa Squalli
PDF
Chainable datasource
PDF
Un retour d'expérience sur Apple Pay
PPTX
La sécurité sur iOS par Arnaud de Bock
PDF
BitTorrent on iOS
The Expanding Boundaries of CSS
Building Scalable Systems: What you can learn from Erlang - DotScale 2016
Swift [and the] Evolution
The low level awesomeness of Go
Unbundling the Future Web Runtime
Advanced Imaging on iOS
Comment je ne rate plus mon train
Présentation SoLocal
L'intégration continue chez Pages Jaunes - Build Bot Mobile
Comment faire de HLS votre solution vidéo préférée ?
Firebase par nicolas lehovetzki
Découvrir dtrace en ligne de commande.
MVC-RS par Grégoire Lhotelier
Safari app extensions cleared up by Sanaa Squalli
Chainable datasource
Un retour d'expérience sur Apple Pay
La sécurité sur iOS par Arnaud de Bock
BitTorrent on iOS
Ad

Similar to The Value in Trees (20)

PDF
NoSQL Overview
PDF
Couchbas for dummies
PDF
3 Dundee-Spark Overview for C* developers
PDF
Apache cassandra & apache spark for time series data
PDF
Introduction to Apache Tajo: Data Warehouse for Big Data
PDF
Developing with Cassandra
PPTX
Obevo Javasig.pptx
KEY
Cassandra and Rails at LA NoSQL Meetup
PDF
SQL? NoSQL? NewSQL?!? What's a Java developer to do? - PhillyETE 2012
PDF
Rich Internet Applications con JavaFX e NetBeans
PDF
Introduction to Docker
PDF
Manchester Hadoop Meetup: Spark Cassandra Integration
PDF
Cassandra Tutorial
PDF
React Internals
PPTX
SQL Server 2014 Hybrid Cloud Features
PDF
slides-students-C04.pdf
PDF
Reading Cassandra Meetup Feb 2015: Apache Spark
PPTX
Azure Table Storage: The Good, the Bad, the Ugly (full talk)
PDF
D3 data visualization
PDF
Real data models of silicon valley
NoSQL Overview
Couchbas for dummies
3 Dundee-Spark Overview for C* developers
Apache cassandra & apache spark for time series data
Introduction to Apache Tajo: Data Warehouse for Big Data
Developing with Cassandra
Obevo Javasig.pptx
Cassandra and Rails at LA NoSQL Meetup
SQL? NoSQL? NewSQL?!? What's a Java developer to do? - PhillyETE 2012
Rich Internet Applications con JavaFX e NetBeans
Introduction to Docker
Manchester Hadoop Meetup: Spark Cassandra Integration
Cassandra Tutorial
React Internals
SQL Server 2014 Hybrid Cloud Features
slides-students-C04.pdf
Reading Cassandra Meetup Feb 2015: Apache Spark
Azure Table Storage: The Good, the Bad, the Ugly (full talk)
D3 data visualization
Real data models of silicon valley
Ad

Recently uploaded (20)

PPTX
Reimagine Home Health with the Power of Agentic AI​
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Designing Intelligence for the Shop Floor.pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
17 Powerful Integrations Your Next-Gen MLM Software Needs
PDF
Download FL Studio Crack Latest version 2025 ?
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Salesforce Agentforce AI Implementation.pdf
PDF
iTop VPN Free 5.6.0.5262 Crack latest version 2025
PPTX
Transform Your Business with a Software ERP System
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PPTX
assetexplorer- product-overview - presentation
PPTX
Oracle Fusion HCM Cloud Demo for Beginners
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
history of c programming in notes for students .pptx
Reimagine Home Health with the Power of Agentic AI​
Why Generative AI is the Future of Content, Code & Creativity?
wealthsignaloriginal-com-DS-text-... (1).pdf
Designing Intelligence for the Shop Floor.pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
17 Powerful Integrations Your Next-Gen MLM Software Needs
Download FL Studio Crack Latest version 2025 ?
Odoo Companies in India – Driving Business Transformation.pdf
Salesforce Agentforce AI Implementation.pdf
iTop VPN Free 5.6.0.5262 Crack latest version 2025
Transform Your Business with a Software ERP System
Digital Systems & Binary Numbers (comprehensive )
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
assetexplorer- product-overview - presentation
Oracle Fusion HCM Cloud Demo for Beginners
How to Choose the Right IT Partner for Your Business in Malaysia
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
history of c programming in notes for students .pptx

The Value in Trees

  • 1. THE VALUE IN TREES DREW MCCORMACK
  • 5. SKETCH PROBLEMS ▸ Edits during saves ▸ Edits during rendering ▸ Fragile undo
  • 13. VALUE TYPES PROS ▸ Stack memory ▸ No reference counting ▸ Safe between threads ▸ No changes behind your back
  • 14. struct Document { var sections: [Section] } struct Section { var paragraphs: [Paragraph] } struct Paragraph { var style: ParagraphStyle var content: String }
  • 15. class ViewController { var document: Document { didSet { self.reloadViews() } } } let c = ViewController() c.document.sections[0].paragraphs[0].style = ...
  • 18. CAN I HAVE A VALUE STORE FOR XMAS?
  • 19. …AND CAN I HAVE IT SYNC?
  • 21. DISTRIBUTED VALUE STORE (DVS) Repository
  • 22. DISTRIBUTED VALUE STORE (DVS) struct Person { var name = "Bob" var age = 32 var tags = ["clean", "smart"] }
  • 23. DISTRIBUTED VALUE STORE (DVS) struct Person { var name = "Bob" var age = 32 var tags = ["clean", "smart"] } CloudKit Repository
  • 24. DISTRIBUTED VALUE STORE (DVS) struct Person { var name = "Bob" var age = 32 var tags = ["clean", "smart"] }
  • 26. import Impeller struct Person: Storable { static let storedType = "Person" var metadata = Metadata() var name = "No Name" var age: Int? = nil ...
  • 27. init?(readingFrom repository:ReadRepository) { name = repository.read("name")! age = repository.read(optionalFor:"age")! } func write(in repository:WriteRepository) { repository.write(name, for: "name") repository.write(age, for: "age") }
  • 29. ATTRIBUTION IMAGES ▸ Sketch Logo ▸ https://www.sketchappsources.com/free-source/2332-new-sketch-vector-icon.html ▸ Bamboo Forest ▸ https://www.pexels.com/photo/nature-forest-trees-bamboo-5091/ ▸ Redwood Forest ▸ https://commons.wikimedia.org/wiki/File:Sequoia_sempervirens_Big_Basin_Redwoods_State_Park_4.jpg ▸ Notes ▸ http://www.cooperazionetrentina.it/Giovani/Iniziative/Iniziative-2015/I-giovani-e-la-cooperazione-che-cambia-7-edizione ▸ Crop Circles ▸ https://commons.wikimedia.org/wiki/File:CropCircleW.jpg ▸ iPhone ▸ https://commons.wikimedia.org/wiki/File:IPhone_with_icons.svg ▸ Database Icon ▸ https://pixabay.com/en/database-diagram-data-storage-disk-29954/ ▸ Jedward ▸ https://www.flickr.com/photos/chiropractic/6849052778 ▸ No cycling ▸ https://commons.wikimedia.org/wiki/File:Uruguay_Road_Sign_Bicycles_Only.svg ▸ Planting ▸ https://www.flickr.com/photos/usfsregion5/3598029211