DevoxxFR 2015: From API to protocol
About me
- Security and QA at Clever Cloud
- Freelance consultant

Why
The best thing about UDP jokes is that I don't care if you get them or not
Existing protocols are good enough

The problem with TCP jokes is that people keep retelling them slower until you get them
Old layers

The problem with token ring jokes is you need to wait your turn to laugh
Changing needs
- proxies VS mobile
- push
- embedded development
- more data
Why not a REST + JSON API over HTTP?
What's up with the jokes... Give it a REST, guys...
Why not?
- REST is for ressource access, not RPC
- JSON is not an excuse for no schema
- HTTP is not made for asynchronous communication
- Why make HTTP hold the RPC errors?
If you GET an HTTP joke, you may POST it, PUT it away or DELETE it from your HEAD
Why build your own protocol ?

Why build your own protocol ?
- synchronous VS asynchronous
- streaming
- guaranteed delivery or not
- different network topologies: bus, star, ring, etc
How do you keep a UDP client in suspense?
Why build your own protocol?
- embedded
- build over a communication channel
The bad thing about bluetooth jokes is they can only be told to people you've paired up with
It can be hard
The two hard things in CS are cache invalidation, naming, and off-by-one errors
Why describe properly a protocol?
There... There is... There is nothing... There is nothing funny about path MTU detection
Interoperability?
ARP jokes are often gratuitous
Ambiguity
WHO HAS ANY ARP JOKES?
Testing
TTL jokes are short lived
What is a protocol ?
NNTP jokes are news to me!
Encoding
Nobody likes a Debian SSH joke. Everyone can guess the punchline
Developers hate them !

Building a state machine ?
TOR jokes start and end almost anywhere
Build a state machine !
You might not laugh at this #protolol about ipv4-in-ipv6 encapsulation because it's an inside joker
Parsing ?

Chuck Norris has only one OSI layer - Physical
Schema and grammars

HTTP 200 jokes are only OK
Parser generators
Got a joke about SNMP but it's private...
Parser combinators
406 jokes are not acceptable
Code architecture
no one ever gets my null routed jokes
Parse early, validate early
Doctor: What seems to be the problem? Router: It hurts when IP
Versionning
CRC jokes tend to get repeated until you get them right
Versions
The problem with Napster jokes is that everyone has a slightly different version
Negotiation
the bad thing about KERBEROS jokes is: You can't understand them if your clock is wrong
Schema repository
The bad thing about IPv6 jokes is that nobody wants to tell them first
Error management
I like ARP-Jokes, because it's so easy to make them appear to originate from other persons
Authentication and session
The problem UDP jokes
Text vs binary
In high society, TCP is more welcome than UDP. At least it knows a proper handshake
Token separation VS length fields
Too many SMTP jokes push the envelope of good taste...
Layering
arrival order packet joke is critical to good a make
Context sensitivity
the good thing about #P2P jokes is that you only need to tell them once
Thanks!

Links
- slides: http://dev.unhandledexpression.com/slides/devoxxfr-2015/protocols/
- gifs: http://gif.unhandledexpression.com/
- essays: http://unhandledexpression.com
- twitter:
