From programming languages to network protocols: lessons on API design

F
Lessons
on API design
Andrey Salomatin
@flpvsk
From programming languages to network protocols: lessons on API design
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
From programming languages to network protocols: lessons on API design
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
From programming languages to network protocols: lessons on API design
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
1 of 131

Recommended

GeeCON 2018 GraphQL vs Traditional REST API by
GeeCON 2018 GraphQL vs Traditional REST APIGeeCON 2018 GraphQL vs Traditional REST API
GeeCON 2018 GraphQL vs Traditional REST APIVladimir Dejanovic
210 views89 slides
GraphQL vs Traditional Rest API [GeeCon Prague 2018] by
GraphQL vs Traditional Rest API [GeeCon Prague 2018]GraphQL vs Traditional Rest API [GeeCon Prague 2018]
GraphQL vs Traditional Rest API [GeeCon Prague 2018]Vladimir Dejanovic
1.8K views89 slides
Java Day Istanbul 2018 GraphQL vs Traditional REST API by
Java Day Istanbul 2018 GraphQL vs Traditional REST APIJava Day Istanbul 2018 GraphQL vs Traditional REST API
Java Day Istanbul 2018 GraphQL vs Traditional REST APIVladimir Dejanovic
222 views89 slides
Devoxx France 2018 GraphQL vs Traditional REST API by
Devoxx France 2018 GraphQL vs Traditional REST APIDevoxx France 2018 GraphQL vs Traditional REST API
Devoxx France 2018 GraphQL vs Traditional REST APIVladimir Dejanovic
254 views88 slides
Velocity 2019 making s3 more resilient using lambda@edge- velocity v1 (1) by
Velocity 2019   making s3 more resilient using lambda@edge- velocity v1 (1)Velocity 2019   making s3 more resilient using lambda@edge- velocity v1 (1)
Velocity 2019 making s3 more resilient using lambda@edge- velocity v1 (1)Júlia Biró
154 views33 slides
Hypermedia APIs from Event-Driven CQRS Systems by
Hypermedia APIs from Event-Driven CQRS SystemsHypermedia APIs from Event-Driven CQRS Systems
Hypermedia APIs from Event-Driven CQRS SystemsMatt Bishop
275 views52 slides

More Related Content

Similar to From programming languages to network protocols: lessons on API design

XebiCon'18 - Passage à l'échelle de mes applications Kafka-Streams by
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
391 views50 slides
Manageable Data Pipelines With Airflow (and kubernetes) - GDG DevFest by
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
86 views57 slides
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018] by
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
1.2K views55 slides
35C3: EventFahrplan - Lightning Talk - Day 2 by
35C3: EventFahrplan - Lightning Talk - Day 235C3: EventFahrplan - Lightning Talk - Day 2
35C3: EventFahrplan - Lightning Talk - Day 2tobiaspreuss
80 views25 slides
Salesforce Developer Workshop for GDF Suez Hackathon by
Salesforce Developer Workshop for GDF Suez HackathonSalesforce Developer Workshop for GDF Suez Hackathon
Salesforce Developer Workshop for GDF Suez HackathonPeter Chittum
996 views39 slides
Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad... by
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
85 views28 slides

Similar to From programming languages to network protocols: lessons on API design(20)

Manageable Data Pipelines With Airflow (and kubernetes) - GDG DevFest by Jarek Potiuk
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
Jarek Potiuk86 views
The Speed Update: Faster is Better for Everyone [Aleh Barysevich, SMXeast 2018] by Link-Assistant.Com
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.Com1.2K views
35C3: EventFahrplan - Lightning Talk - Day 2 by tobiaspreuss
35C3: EventFahrplan - Lightning Talk - Day 235C3: EventFahrplan - Lightning Talk - Day 2
35C3: EventFahrplan - Lightning Talk - Day 2
tobiaspreuss80 views
Salesforce Developer Workshop for GDF Suez Hackathon by Peter Chittum
Salesforce Developer Workshop for GDF Suez HackathonSalesforce Developer Workshop for GDF Suez Hackathon
Salesforce Developer Workshop for GDF Suez Hackathon
Peter Chittum996 views
Yaroslav Ravlinko “Evolution of Data Processing platform from Hadoop to nowad... by Lviv Startup Club
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 by subhojit banerjee
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
subhojit banerjee613 views
Domain Specific Language generation based on a XML Schema. by Luis Duarte
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 Duarte223 views
The Evolution of (Open Source) Data Processing by Aljoscha Krettek
The Evolution of (Open Source) Data ProcessingThe Evolution of (Open Source) Data Processing
The Evolution of (Open Source) Data Processing
Aljoscha Krettek221 views
From shipping rpms to helm charts - Lessons learned and best practices by Ankush Chadha, MBA, MS
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 次世代マルチクラウド・データ分析プラットフォーム by Masayuki Matsushita
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォームPivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
GraphQL Without a Database | Frontend Developer Love by Roy Derks
GraphQL Without a Database | Frontend Developer LoveGraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer Love
Roy Derks188 views
Http/2 - What's it all about? by Andy Davies
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?
Andy Davies4.4K views
Critical Rendering Path - Velocidade também é uma funcionalidade by Joao Lucas Santana
Critical Rendering Path - Velocidade também é uma funcionalidadeCritical Rendering Path - Velocidade também é uma funcionalidade
Critical Rendering Path - Velocidade também é uma funcionalidade
Joao Lucas Santana1.3K views
GraphQL - when REST API is to less - lessons learned by MarcinStachniuk
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
MarcinStachniuk265 views
Designing API: REST | gRPC | GraphQL, which one should you pick? - Cedrick Lu... by Shift Conference
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 Conference104 views
Gerrit Analytics applied to Android source code by Luca Milanesio
Gerrit Analytics applied to Android source codeGerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source code
Luca Milanesio241 views

Recently uploaded

CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueShapeBlue
25 views13 slides
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...ShapeBlue
55 views12 slides
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...ShapeBlue
44 views13 slides
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...ShapeBlue
46 views28 slides
Data Integrity for Banking and Financial Services by
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial ServicesPrecisely
29 views26 slides
Business Analyst Series 2023 - Week 3 Session 5 by
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5DianaGray10
345 views20 slides

Recently uploaded(20)

CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue25 views
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue55 views
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by ShapeBlue
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
ShapeBlue44 views
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by ShapeBlue
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
ShapeBlue46 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely29 views
Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10345 views
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue70 views
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by ShapeBlue
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
ShapeBlue60 views
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by ShapeBlue
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates
ShapeBlue84 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue37 views
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue54 views
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue by ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlueVNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
VNF Integration and Support in CloudStack - Wei Zhou - ShapeBlue
ShapeBlue62 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays33 views
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De... by Moses Kemibaro
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Moses Kemibaro27 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive by Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue81 views
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by ShapeBlue
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
ShapeBlue61 views

From programming languages to network protocols: lessons on API design