SlideShare ist ein Scribd-Unternehmen logo
1 von 131
Downloaden Sie, um offline zu lesen
Lessons
on API design
Andrey Salomatin
@flpvsk
API affects
—What you can and can not do
—How does it perform
—How easy it is to make a mistake
2018-12-02 @flpvsk @growitconf 3
Why look at well-known projects?
—To understand how the systems we use work
—To learn techniques we can apply in our projects
—To improve our thinking processes
2018-12-02 @flpvsk @growitconf 4
1: A pixel
is not
a pixel2018-12-02 @flpvsk @growitconf 5
Poor abstractions
limit what we can do
using the API.
2018-12-02 @flpvsk @growitconf 6
2018-12-02 @flpvsk @growitconf 7
x = ?
1. h1 / 2
2. (h1 - h2) / 2
3. (h1 + h2) / 2
2018-12-02 @flpvsk @growitconf 8
x = ?
2. (h1 - h2) / 2
2018-12-02 @flpvsk @growitconf 9
CSS
.container {
display: flex;
align-items: center;
}
2018-12-02 @flpvsk @growitconf 10
2018-12-02 @flpvsk @growitconf 11
x = ?
1. h3 * round(
(h1 - h2) / (2 * h3))
2. h3 * (h1 - h2) / 2
3. h3 * floor(
(h1 + h2) / 2)
2018-12-02 @flpvsk @growitconf 12
x = ?
1. h3 * round(
(h1 - h2) / (2 * h3))
2018-12-02 @flpvsk @growitconf 13
Center element within a grid
—CSS?
—iOS Auto Layout?
—Android Layout?
2018-12-02 @flpvsk @growitconf 14
Vertical rhythm
2018-12-02 @flpvsk @growitconf 15
Testing layout & paint
requires spinning off
a simulator or a browser
2018-12-02 @flpvsk @growitconf 16
A pixel
is not
a pixel2018-12-02 @flpvsk @growitconf 17
Browser vendors' in the early 90s:
—WWW is for documents
—Each browser will decide how to best display
pages to their users
2018-12-02 @flpvsk @growitconf 18
19
Browser vendors' in the early 90s:
—WWW is for documents
—Each browser will decide how to display pages
—Seems like publishers want styling
2018-12-02 @flpvsk @growitconf 20
…the style of a document
couldn't be designed
by either the author
or the reader
on their own…
2018-12-02 @flpvsk @growitconf 21
…their wishes have to be
combined, or cascaded,
in some way.
2018-12-02 @flpvsk @growitconf 22
23
2018-12-02 @flpvsk @growitconf 24
Flutter design principles
—Layered API
—Access to Layout and Paint phases
—Full control over what is drawn on the screen
2018-12-02 @flpvsk @growitconf 25
Vertical rhythm in Flutter
Offset getPositionForChild(
Size containerSize,
Size childSize
)
2018-12-02 @flpvsk @growitconf 26
Vertical rhythm in Flutter
Offset getPositionForChild(
Size containerSize,
Size childSize
) {
final h1 = containerSize.height;
final h2 = childSize.height;
final h3 = rowHeight;
final rowsCount = ((h1 - h2) / (2 * h3)).round();
return Offset(0, rowsCount * h3);
}
2018-12-02 @flpvsk @growitconf 27
Vertical rhythm in Flutter
Offset getPositionForChild(
Size containerSize,
Size childSize
) {
final h1 = containerSize.height;
final h2 = childSize.height;
final h3 = rowHeight;
final rowsCount = ((h1 - h2) / (2 * h3)).round();
return Offset(0, rowsCount * h3);
}
2018-12-02 @flpvsk @growitconf 27
Geometry
x = h3 * round(
(h1 - h2) / (2 * h3)
)
2018-12-02 @flpvsk @growitconf 28
2018-12-02 @flpvsk @growitconf 29
Properly layered API
gives freedom to build for
custom usecases.
2018-12-02 @flpvsk @growitconf 30
31
32
33
34
35
36
37
38
39
40
2: Simple
or easy2018-12-02 @flpvsk @growitconf 41
Programming language
designers balance
cognitive load
and capabilities.
2018-12-02 @flpvsk @growitconf 42
43
Good abstractions
help API users
avoid mistakes.
2018-12-02 @flpvsk @growitconf 44
Working with
concurrency
2018-12-02 @flpvsk @growitconf 45
46
2018-12-02 @flpvsk @growitconf 47
Concurrency basics in Java
synchronized method() {}
synchronized (object) {}
Object.wait();
Object.notify();
Object.notifyAll();
2018-12-02 @flpvsk @growitconf 48
Actual concurrency in Java
—432 pages
—18cm x 3cm x 23cm
—635g
49
50
Correctness
is impossible
to enforce.
2018-12-02 @flpvsk @growitconf 51
2018-12-02 @flpvsk @growitconf 52
Concurrency basics in Rust
2018-12-02 @flpvsk @growitconf 53
Concurrency basics in Rust
—New concept of Borrow Checker
2018-12-02 @flpvsk @growitconf 53
Concurrency basics in Rust
—New concept of Borrow Checker
—Thread safety enforced by the compiler
2018-12-02 @flpvsk @growitconf 53
Concurrency basics in Rust
—New concept of Borrow Checker
—Thread safety enforced by the compiler
—Custom primitives with Send and Sync traits
2018-12-02 @flpvsk @growitconf 53
Expressive API
requires
more effort
from the person
adopting it.
2018-12-02 @flpvsk @growitconf 54
Choose what's important
and make it
hard to get wrong.
2018-12-02 @flpvsk @growitconf 55
Other examples
—RPC (free for all) vs
REST (unification) vs
GraphQL (flexibility on the client)
—Ethereum Solidity (ffa) vs
Bamboo (understanding state & transitions)
2018-12-02 @flpvsk @growitconf 56
3: Tree
that scales2018-12-02 @flpvsk @growitconf 57
API is
a performance
bottleneck.
2018-12-02 @flpvsk @growitconf 58
59
60
61
62
63
64
65
66
1h talk in Full-HD: 3.6GB
Chunk size Chunks count Metadata size
2MB 1800 >36KB
1MB 3516 >70KB
512KB 7032 >140KB
2018-12-02 @flpvsk @growitconf 67
10h conference in Full-HD: 36GB
Chunk size Chunks count Metadata size
2MB 18000 >360KB
1MB 35160 >700KB
512KB 70320 >1.4MB
2018-12-02 @flpvsk @growitconf 68
69
bittorent scaling issues
—Size of metadata
—Size of chunks
2018-12-02 @flpvsk @growitconf 70
Dat protocol
Peer-to-peer
versioned
data sharing
2018-12-02 @flpvsk @growitconf 72
Dat protocol
Decentralized
open-source
analog of Dropbox
2018-12-02 @flpvsk @growitconf 73
Dat protocol
—Started as a way to exchange scientific data sets
—Growing as the protocol for p2p web
—Can be used to share TBs of dynamic data
2018-12-02 @flpvsk @growitconf 74
75
76
77
78
79
80
81
82
83
84
85
86
87
Metadata size
—Bittorent: O(n)
—Dat: O(log(n))
n – number of chunks
2018-12-02 @flpvsk @growitconf 88
API
is the ultimate
performance bottleneck
2018-12-02 @flpvsk @growitconf 89
Other examples
—HTTP/1 and HTTP/2
—Bitcoin core and Lightning network
2018-12-02 @flpvsk @growitconf 90
4: The only
const is
change2018-12-02 @flpvsk @growitconf 91
Time and change are
API-designers'
worst nightmares.
2018-12-02 @flpvsk @growitconf 92
93
REST API
POST '/:personId/posts'
PUT '/:personId/posts/:postId'
GET '/:personId/posts'
2018-12-02 @flpvsk @growitconf 94
95
96
Creating new post
!
--> POST { text: 'All frameworks have tradeoffs!' } '/bob/posts'
"
<-- { id: 'post-1' }
2018-12-02 @flpvsk @growitconf 97
98
99
Sharing post
!
--> POST { share: 'post-1', text: 'YES!!' } '/alice/posts'
"
<-- { id: 'post-2' }
2018-12-02 @flpvsk @growitconf 100
101
Updating post
!
--> PUT { text: 'Serverless is a lie!' } '/bob/posts/post-1'
"
<-- { ok: true }
2018-12-02 @flpvsk @growitconf 102
103
105
REST assumptions
2018-12-02 @flpvsk @growitconf 106
REST assumptions
—Everything is a resource
2018-12-02 @flpvsk @growitconf 106
REST assumptions
—Everything is a resource
—Resources have unique identifiers
2018-12-02 @flpvsk @growitconf 106
REST assumptions
—Everything is a resource
—Resources have unique identifiers
—Resources can change over time*
2018-12-02 @flpvsk @growitconf 106
Alternative
assumptions
2018-12-02 @flpvsk @growitconf 107
Alternative assumptions
2018-12-02 @flpvsk @growitconf 108
Alternative assumptions
—Objects (facts) do not change over time
2018-12-02 @flpvsk @growitconf 108
Alternative assumptions
—Objects (facts) do not change over time
—References (labels) can change over time
2018-12-02 @flpvsk @growitconf 108
109
110
111
2018-12-02 @flpvsk @growitconf 112
113
The concepts of
time and change
are hard to get right.
2018-12-02 @flpvsk @growitconf 114
Separate facts
from labels,
snapshots
from references.
2018-12-02 @flpvsk @growitconf 115
Systems that get it right
—CouchDB, Datomic
—bittorent, Dat, IPFS
—Blockchain-based projects
—Event-sourcing-based projects
2018-12-02 @flpvsk @growitconf 116
Summary
2018-12-02 @flpvsk @growitconf 117
API design
is hard.
2018-12-02 @flpvsk @growitconf 118
API affects
—What you can and can not do
—How does it perform
—How easy it is to make a mistake
2018-12-02 @flpvsk @growitconf 119
Learn good desgin
from systems
you use.
2018-12-02 @flpvsk @growitconf 120
Listen to
code podcast.
2018-12-02 @flpvsk @growitconf 121
THE END
2018-12-02 @flpvsk @growitconf 122

Weitere ähnliche Inhalte

Ähnlich wie From programming languages to network protocols: lessons on API design

XebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
XebiCon'18 - Passage à l'échelle de mes applications Kafka-StreamsXebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
XebiCon'18 - Passage à l'échelle de mes applications Kafka-StreamsPublicis Sapient Engineering
 
Manageable Data Pipelines With Airflow (and kubernetes) - GDG DevFest
Manageable Data Pipelines With Airflow (and kubernetes) - GDG DevFestManageable Data Pipelines With Airflow (and kubernetes) - GDG DevFest
Manageable Data Pipelines With Airflow (and kubernetes) - GDG DevFestJarek Potiuk
 
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]Link-Assistant.Com
 
35C3: EventFahrplan - Lightning Talk - Day 2
35C3: EventFahrplan - Lightning Talk - Day 235C3: EventFahrplan - Lightning Talk - Day 2
35C3: EventFahrplan - Lightning Talk - Day 2tobiaspreuss
 
Salesforce Developer Workshop for GDF Suez Hackathon
Salesforce Developer Workshop for GDF Suez HackathonSalesforce Developer Workshop for GDF Suez Hackathon
Salesforce Developer Workshop for GDF Suez HackathonPeter Chittum
 
Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad...
Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad...Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad...
Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad...Lviv Startup Club
 
Deploying Large Spark Models to production and model scoring in near real time
Deploying Large Spark Models to production and model scoring in near real timeDeploying Large Spark Models to production and model scoring in near real time
Deploying Large Spark Models to production and model scoring in near real timesubhojit banerjee
 
Domain Specific Language generation based on a XML Schema.
Domain Specific Language generation based on a XML Schema.Domain Specific Language generation based on a XML Schema.
Domain Specific Language generation based on a XML Schema.Luis Duarte
 
The Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data ProcessingThe Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data ProcessingAljoscha Krettek
 
From shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesFrom shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesAnkush Chadha, MBA, MS
 
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォームPivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォームMasayuki Matsushita
 
GraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer LoveGraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer LoveRoy Derks
 
Http/2 - What's it all about?
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?Andy Davies
 
Critical Rendering Path - Velocidade também é uma funcionalidade
Critical Rendering Path - Velocidade também é uma funcionalidadeCritical Rendering Path - Velocidade também é uma funcionalidade
Critical Rendering Path - Velocidade também é uma funcionalidadeJoao Lucas Santana
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 
Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu...
Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu...Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu...
Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu...Shift Conference
 
Gerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source codeGerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source codeLuca Milanesio
 

Ähnlich wie From programming languages to network protocols: lessons on API design (20)

XebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
XebiCon'18 - Passage à l'échelle de mes applications Kafka-StreamsXebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
XebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams
 
Manageable Data Pipelines With Airflow (and kubernetes) - GDG DevFest
Manageable Data Pipelines With Airflow (and kubernetes) - GDG DevFestManageable Data Pipelines With Airflow (and kubernetes) - GDG DevFest
Manageable Data Pipelines With Airflow (and kubernetes) - GDG DevFest
 
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018]
 
35C3: EventFahrplan - Lightning Talk - Day 2
35C3: EventFahrplan - Lightning Talk - Day 235C3: EventFahrplan - Lightning Talk - Day 2
35C3: EventFahrplan - Lightning Talk - Day 2
 
Salesforce Developer Workshop for GDF Suez Hackathon
Salesforce Developer Workshop for GDF Suez HackathonSalesforce Developer Workshop for GDF Suez Hackathon
Salesforce Developer Workshop for GDF Suez Hackathon
 
Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad...
Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad...Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad...
Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad...
 
Deploying Large Spark Models to production and model scoring in near real time
Deploying Large Spark Models to production and model scoring in near real timeDeploying Large Spark Models to production and model scoring in near real time
Deploying Large Spark Models to production and model scoring in near real time
 
Domain Specific Language generation based on a XML Schema.
Domain Specific Language generation based on a XML Schema.Domain Specific Language generation based on a XML Schema.
Domain Specific Language generation based on a XML Schema.
 
The Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data ProcessingThe Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data Processing
 
DataXDay - Real-Time Access log analysis
DataXDay - Real-Time Access log analysis DataXDay - Real-Time Access log analysis
DataXDay - Real-Time Access log analysis
 
From shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesFrom shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practices
 
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォームPivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
 
Shift Dev Conf API
Shift Dev Conf APIShift Dev Conf API
Shift Dev Conf API
 
GraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer LoveGraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer Love
 
Http/2 - What's it all about?
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?
 
Deploying spark ml models
Deploying spark ml models Deploying spark ml models
Deploying spark ml models
 
Critical Rendering Path - Velocidade também é uma funcionalidade
Critical Rendering Path - Velocidade também é uma funcionalidadeCritical Rendering Path - Velocidade também é uma funcionalidade
Critical Rendering Path - Velocidade também é uma funcionalidade
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu...
Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu...Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu...
Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu...
 
Gerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source codeGerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source code
 

Kürzlich hochgeladen

Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 

Kürzlich hochgeladen (20)

Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 

From programming languages to network protocols: lessons on API design