SlideShare a Scribd company logo
Internet all the things!
curl everywhere
Daniel Stenberg, February 1st
2015
Agenda
How we got here
Using libcurl
Future
Daniel Stenberg
Email: daniel@haxx.se
Twitter: @bagder
Web: daniel.haxx.se
Blog: daniel.haxx.se/blog
network hacker at
Please ask!
Feel free to interrupt and ask at any time!
First there was nothing
One day in 1996
… became curl 1998
HTTP, Gopher, FTP
… fast-forward to 2015
curl is a command line tool for transferring data with
URL syntax, supporting DICT, FILE, FTP, FTPS, Gopher,
HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3,
POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
Telnet and TFTP. curl supports SSL certificates, HTTP
POST, HTTP PUT, FTP uploading, HTTP form based
upload, proxies, cookies, user+password authentication
(Basic, Digest, NTLM, Negotiate, Kerberos..), HTTP/2,
happy eyeballs, file transfer resume, proxy tunneling
and a busload of other useful tricks.
1000 million users
16 Software, Access, Actuate, Adara Networks, Adobe, Aditiva, Adknowledge, alaTEST, Altera,
AOL, Apple, Archivas, ATX, Autodesk, BBC, Bietfuchs, Bitcartel, Blackberry, Blizzard,
Bloglines.com, Blue Digits, Blue Security, BMW, Bosch, Bwin, Candela Technologies, Canonical,
Carestream Health, Cascade Data Systems, CatchFIRE Systems, CERN, CheckPoint, Chevrolet,
Chronos, Cisco, CLAAS Tractor SAS, Comcast, Contactor Data, Cybernetica AS, Datasphere S.A.,
Datordax, Denon, DesignQuotes, Digium, EdelWeb, EFS Technology, Eiffel Software, Electronic
Arts, Emsoft, Euroling, Ergon Informatik AG, ESRI, expandtalk.se, Eye-Fi, E2E Technologies Ltd, F-
Secure, Facebook, FalconView, Feitian Technologies, FriendFeed, FMWebschool, GRIN, Groopex,
Grooveshark, Focuseek, Games Workshop, Garmin, GipsyMedia Ltd, Google, Haxx, HPC, Heynow
Software, Hitachi, HP, Huawei, HTC, inSORS, IBM, ideelabor.ee, Idruna Software Inc, Id Software,
Infomedia Business Systems Division, Informatica PowerCenter, Information Handling Services,
Insignia, Intel, Internet Security Systems, Intra2net AG, Jajja Communications, JET, JLynx Software,
Kajala Group Ltd., Kaleidescape, Karelia, Kaseya, Kencast inc., Kerio Technologies, Kongsberg
Spacetec, LassoSoft, Lastpass, LG, Linden Lab, Machina Networks, Macromates, Macromedia,
Magic TV, Mandiant Memoryze, MandrakeSoft, Marantz, Mazda, McAfee/Network Associates Inc,
MediaAnalys, Mellanox Switch Management System, Mercedes-Benz, Metaio, Micromuse Inc.,
MokaFive, Inc, Momento, Moodstocks, Motorola, Nagarsoft, Neptune Labs, Nest, Netflix, Netiq,
Network Mail, Neuros Technology, Nintendo, NoDesign's DIA Parrot, Nortel, Office2office Plc,
OKTET Labs Ltd, One Laptop Per Child, Onkyo, On Technology, OpenLogic, Optimsys, Oracle,
Outrider, Palm, Panasonic, Pandigital, Passiv Systems, Pelco, Philips, Pioneer, Polaroid
Corporation, Polycom, Pure Storage, Quest, QNX, RBS, Research in Motion, Retarus Network
Services GmbH, Riverbed, Rolltech, Inc, RSA Security Inc, RSSS, Samsung, SanDisk, SAS Institute,
SEB, Sharp, Siemens, Silicon Landmark, Slingbox, SmithMicro, Sony, Source Remoting, Spotify,
Steambird, Sun, Swisscom, Symantec, System Garden, Tasvideos, Tellabs, Telstra, Telvue,
Thumbtack, Tilgin, Tomtom, ToolAware, Toshiba Corporation, Trend Micro, Tribalmedia, Tiempo
de Espera, Unity3d, Vivisimo, Vmware, Voddler, Volition Inc, Vuo, Wump Research & Company,
Xilinx, XonaSoftware, Yahoo, Yamaha, Zimbra, Zixcorp, Zonar Systems LLC, Zyxel … and more
All the things!
Mac OS X
TVs
Iphones and Ipads
Other phones
Linux
Games
Version control systems
Cars
PHP sites
Set-top boxes
Audio equipment
Bluray players
Printers
Firefox crash reporter
Sites: Facebook, Yahoo, …
Your next device
Everyone in this room most
likely has a device using libcurl.
Probably even more than one!
why they use curl?
Because Internet doesn't
follow specs
Open source
MIT licensed
Simple and stable API
Yet powerful API
HTTP library when libwww was
the only choice
C library is still most portable
Bindings for every language
Decent documentation
Decent stability
Supports all the protocols
Fast
Allows disabling parts for
footprint shaving
Many TLS backends
Small devices still like C
http://curl.haxx.se/libcurl/theysay.html
the project
curl and libcurl
Transfer data using internet application protocols
Stable products
Stable API
Maximum portability
MIT
Contributors over time
1200+ in total
30-40 contributors per release
Increasing linearly
Core team < 10 people
Volunteers!
bindings
Ada95, Basic, C++, Ch, Cocoa, D, Dylan,
Eiffel, Euphoria, Falcon, Ferite, Gambas,
glib/GTK+, Guile, Haskell, ILE/RPG, Java,
Lisp, Lua, Mono, .NET, Object-Pascal,
Ocaml, Pascal, Perl, PHP, Postgres,
Python, R, Rexx, Ruby, Scheme, S-Lang,
Smalltalk, SP-Forth, SPL, Tcl, Visual Basic,
Visual FoxPro, Q, wxWidgets, XBLite
So what do I do?
When I want to use it.
Build it
Because on most embedded devices you will
Tailor your own build
Yocto / OpenEmbedded, BuildRoot etc provide recipes
All Linux distros have binary packages
Transfer oriented
A transfer: data going in either or both directions to or from a
given URL
Create an “easy handle” with curl_easy_setopt()
Create one handle for each transfer or re-use it serially
Set your transfer options and preferences
Like URL
Write callback
Authentication
Or another one of the 200+ options
Synch or asynch
The easy interface is single-transfer and blocking
The multi interface is many-transfers and non-blocking
hello world - blocking
CURL *h = curl_easy_init();
curl_easy_setopt(h, CURLOPT_URL, "http://example.com");
curl_easy_setopt(h, CURLOPT_FOLLOWLOCATION, 1L);
CURLcode res = curl_easy_perform(h);
if (res)
fprintf(stderr, "curl_easy_perform() failed: %sn",
curl_easy_strerror(res));
curl_easy_cleanup(h);
hello world – non-blocking
CURL *h = curl_easy_init();
curl_easy_setopt(h, CURLOPT_URL, "http://example.com");
CURLM *m = curl_multi_init();
curl_multi_add_handle(m, h);
int running;
do {
res = curl_multi_fdset(h, ...);
select();
curl_multi_perform(m, &running);
} while(running);
curl_multi_remove_handle(m, h);
curl_easy_cleanup(h);
curl_multi_cleanup(m);
event-based
avoids select() and poll()
event-library agnostic
scales better when beyond hundreds of parallel transfers
curl_multi_socket_action()
Event-based logic is usually trickier to write, read and debug
Documented
As man pages, as web pages on the site and even PDF
documents in the release archives.
http://curl.haxx.se/libcurl/
--libcurl
$ curl http://example.com/ -d “moo” -k -u my:secret
$ curl http://example.com/ -d “moo” -k -u my:secret --libcurl code.c
$ cat code.c
Future?
HTTP/2 multiplexing
Better parallel DNS lookups
SRV records
HTTPS to proxy
There's no slow-down in sight
Thank you!
Learn more!
•curl and libcurl: http://curl.haxx.se/
•curl vs wget:
http://daniel.haxx.se/docs/curl-vs-wget.html
•curl vs other tools:
http://curl.haxx.se/docs/comparison-table.html
•curl's TLS backends compared:
http://curl.haxx.se/docs/ssl-compared.html
Doing good is part of our code
License
This presentation and its contents are licensed under
the Creative Commons Attribution 4.0 license:
http://creativecommons.org/licenses/by/4.0/

More Related Content

What's hot

Gabriel Paues - IPv6 address planning + making the case for WHY
Gabriel Paues - IPv6 address planning + making the case for WHYGabriel Paues - IPv6 address planning + making the case for WHY
Gabriel Paues - IPv6 address planning + making the case for WHY
IKT-Norge
 
Keeping your rack cool
Keeping your rack cool Keeping your rack cool
Keeping your rack cool
Pavel Odintsov
 
FastNetMonを試してみた
FastNetMonを試してみたFastNetMonを試してみた
FastNetMonを試してみた
Yutaka Ishizaki
 
Henrik Strøm - IPv6 from the attacker's perspective
Henrik Strøm - IPv6 from the attacker's perspectiveHenrik Strøm - IPv6 from the attacker's perspective
Henrik Strøm - IPv6 from the attacker's perspective
IKT-Norge
 
Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]
Cumulus Networks
 
Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)
Anatoliy Okhotnikov
 
I want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICI want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUIC
Source Conference
 
Data Structures in and on IPFS
Data Structures in and on IPFSData Structures in and on IPFS
Data Structures in and on IPFS
C4Media
 
OpenVPN
OpenVPNOpenVPN
SDN - OpenFlow + OpenVSwitch + Quantum
SDN - OpenFlow + OpenVSwitch + QuantumSDN - OpenFlow + OpenVSwitch + Quantum
SDN - OpenFlow + OpenVSwitch + Quantum
The Linux Foundation
 
Commication Framework in OpenStack
Commication Framework in OpenStackCommication Framework in OpenStack
Commication Framework in OpenStack
Sean Chang
 
Apache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validationsApache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validations
Jean-Frederic Clere
 
Presentation iv implementasi 802x eap tls peap mscha pv2
Presentation iv implementasi  802x eap tls peap mscha pv2Presentation iv implementasi  802x eap tls peap mscha pv2
Presentation iv implementasi 802x eap tls peap mscha pv2Hell19
 
Implementing BGP Flowspec at IP transit network
Implementing BGP Flowspec at IP transit networkImplementing BGP Flowspec at IP transit network
Implementing BGP Flowspec at IP transit network
Pavel Odintsov
 
redGuardian DP100 large scale DDoS mitigation solution
redGuardian DP100 large scale DDoS mitigation solutionredGuardian DP100 large scale DDoS mitigation solution
redGuardian DP100 large scale DDoS mitigation solution
Redge Technologies
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5
Kazuho Oku
 
Who pulls the strings?
Who pulls the strings?Who pulls the strings?
Who pulls the strings?
Ronny
 
Operationalizing BGP in the SDDC
Operationalizing BGP in the SDDCOperationalizing BGP in the SDDC
Operationalizing BGP in the SDDC
Cumulus Networks
 
Network Architecture for Containers
Network Architecture for ContainersNetwork Architecture for Containers
Network Architecture for Containers
Cumulus Networks
 
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
Deploy360 Programme (Internet Society)
 

What's hot (20)

Gabriel Paues - IPv6 address planning + making the case for WHY
Gabriel Paues - IPv6 address planning + making the case for WHYGabriel Paues - IPv6 address planning + making the case for WHY
Gabriel Paues - IPv6 address planning + making the case for WHY
 
Keeping your rack cool
Keeping your rack cool Keeping your rack cool
Keeping your rack cool
 
FastNetMonを試してみた
FastNetMonを試してみたFastNetMonを試してみた
FastNetMonを試してみた
 
Henrik Strøm - IPv6 from the attacker's perspective
Henrik Strøm - IPv6 from the attacker's perspectiveHenrik Strøm - IPv6 from the attacker's perspective
Henrik Strøm - IPv6 from the attacker's perspective
 
Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]
 
Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)Ubuntu server wireless access point (eng)
Ubuntu server wireless access point (eng)
 
I want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICI want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUIC
 
Data Structures in and on IPFS
Data Structures in and on IPFSData Structures in and on IPFS
Data Structures in and on IPFS
 
OpenVPN
OpenVPNOpenVPN
OpenVPN
 
SDN - OpenFlow + OpenVSwitch + Quantum
SDN - OpenFlow + OpenVSwitch + QuantumSDN - OpenFlow + OpenVSwitch + Quantum
SDN - OpenFlow + OpenVSwitch + Quantum
 
Commication Framework in OpenStack
Commication Framework in OpenStackCommication Framework in OpenStack
Commication Framework in OpenStack
 
Apache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validationsApache Httpd and TLS certificates validations
Apache Httpd and TLS certificates validations
 
Presentation iv implementasi 802x eap tls peap mscha pv2
Presentation iv implementasi  802x eap tls peap mscha pv2Presentation iv implementasi  802x eap tls peap mscha pv2
Presentation iv implementasi 802x eap tls peap mscha pv2
 
Implementing BGP Flowspec at IP transit network
Implementing BGP Flowspec at IP transit networkImplementing BGP Flowspec at IP transit network
Implementing BGP Flowspec at IP transit network
 
redGuardian DP100 large scale DDoS mitigation solution
redGuardian DP100 large scale DDoS mitigation solutionredGuardian DP100 large scale DDoS mitigation solution
redGuardian DP100 large scale DDoS mitigation solution
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5
 
Who pulls the strings?
Who pulls the strings?Who pulls the strings?
Who pulls the strings?
 
Operationalizing BGP in the SDDC
Operationalizing BGP in the SDDCOperationalizing BGP in the SDDC
Operationalizing BGP in the SDDC
 
Network Architecture for Containers
Network Architecture for ContainersNetwork Architecture for Containers
Network Architecture for Containers
 
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
ION Cape Town - DANE: The Future of Transport Layer Security (TLS)
 

Viewers also liked

HTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmHTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks Stockholm
Daniel Stenberg
 
Http2 right now
Http2 right nowHttp2 right now
Http2 right now
Daniel Stenberg
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
Daniel Stenberg
 
Introduction HTTP via cURL
Introduction HTTP via cURLIntroduction HTTP via cURL
Introduction HTTP via cURL
Kyosuke MOROHASHI
 
HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016
Daniel Stenberg
 
La etica de un contador publico es un asunto legal
La etica de un contador publico es un asunto legalLa etica de un contador publico es un asunto legal
La etica de un contador publico es un asunto legal
ISABEL LARA RODRIGUEZ
 
Antenas sistemas i
Antenas sistemas iAntenas sistemas i
Antenas sistemas iAlexrod45
 
Kelox
KeloxKelox
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013NORGESTION
 
Analgesia multimodal para plastia
Analgesia multimodal para plastiaAnalgesia multimodal para plastia
Analgesia multimodal para plastiaLily Lopez
 
Live ensure overview 1.4
Live ensure overview 1.4Live ensure overview 1.4
Live ensure overview 1.4
Ross Macdonald
 
Como encontrar tu felicidad interior
Como encontrar tu felicidad interiorComo encontrar tu felicidad interior
Como encontrar tu felicidad interior
Sophie Da Costa
 
camara de frio para camaron
camara de frio para camaroncamara de frio para camaron
camara de frio para camaronjose934
 
Unidad didáctica y dapatación metodológica
Unidad didáctica y dapatación metodológicaUnidad didáctica y dapatación metodológica
Unidad didáctica y dapatación metodológica
Elisa Arias
 
Cine actual
Cine actualCine actual
Cine actual
Angel D Hielo
 
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
ANTONIO INACIO FERRAZ
 
Planeta
PlanetaPlaneta
A lifetime group presentation 2011
A lifetime group presentation 2011A lifetime group presentation 2011
A lifetime group presentation 2011
Akhil Joshi
 
Plan de empresa [siscov sac]
Plan de empresa [siscov sac]Plan de empresa [siscov sac]
Plan de empresa [siscov sac]Mario Laura
 

Viewers also liked (20)

HTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks StockholmHTTP/2 - for TCP/IP Geeks Stockholm
HTTP/2 - for TCP/IP Geeks Stockholm
 
Http2 right now
Http2 right nowHttp2 right now
Http2 right now
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
 
Introduction HTTP via cURL
Introduction HTTP via cURLIntroduction HTTP via cURL
Introduction HTTP via cURL
 
HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016HTTP/2 Update - FOSDEM 2016
HTTP/2 Update - FOSDEM 2016
 
La etica de un contador publico es un asunto legal
La etica de un contador publico es un asunto legalLa etica de un contador publico es un asunto legal
La etica de un contador publico es un asunto legal
 
Antenas sistemas i
Antenas sistemas iAntenas sistemas i
Antenas sistemas i
 
Kelox
KeloxKelox
Kelox
 
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
NORGESTION Mergers Alliance. Igor Gorostiaga: Brasil Oil&Gas 2013
 
Analgesia multimodal para plastia
Analgesia multimodal para plastiaAnalgesia multimodal para plastia
Analgesia multimodal para plastia
 
Live ensure overview 1.4
Live ensure overview 1.4Live ensure overview 1.4
Live ensure overview 1.4
 
Como encontrar tu felicidad interior
Como encontrar tu felicidad interiorComo encontrar tu felicidad interior
Como encontrar tu felicidad interior
 
camara de frio para camaron
camara de frio para camaroncamara de frio para camaron
camara de frio para camaron
 
Unidad didáctica y dapatación metodológica
Unidad didáctica y dapatación metodológicaUnidad didáctica y dapatación metodológica
Unidad didáctica y dapatación metodológica
 
Cine actual
Cine actualCine actual
Cine actual
 
Rotusa (1)
Rotusa (1)Rotusa (1)
Rotusa (1)
 
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
revista canaonline-antonio inacio ferraz-eletronica/agropecuária colégio cruz...
 
Planeta
PlanetaPlaneta
Planeta
 
A lifetime group presentation 2011
A lifetime group presentation 2011A lifetime group presentation 2011
A lifetime group presentation 2011
 
Plan de empresa [siscov sac]
Plan de empresa [siscov sac]Plan de empresa [siscov sac]
Plan de empresa [siscov sac]
 

Similar to Internet all the things - curl everywhere!

XMPP, HTTP and UPnP
XMPP, HTTP and UPnPXMPP, HTTP and UPnP
XMPP, HTTP and UPnP
ITVoyagers
 
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Julien Vermillard
 
Skydive, real-time network analyzer
Skydive, real-time network analyzer Skydive, real-time network analyzer
Skydive, real-time network analyzer
Sylvain Afchain
 
Supercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSupercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-RED
Simen Sommerfeldt
 
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...Mullaiselvan Mohan
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server
VOIP2DAY
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
Carlos González Florido
 
Protocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDNProtocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDN
Gerardo Pardo-Castellote
 
0bnosis 2016
0bnosis 20160bnosis 2016
0bnosis 2016
Lisa Kachold
 
MiniFi and Apache NiFi : IoT in Berlin Germany 2018
MiniFi and Apache NiFi : IoT in Berlin Germany 2018MiniFi and Apache NiFi : IoT in Berlin Germany 2018
MiniFi and Apache NiFi : IoT in Berlin Germany 2018
Timothy Spann
 
Computer communication module1-intro
Computer communication module1-introComputer communication module1-intro
Computer communication module1-intro
Ranjan Ghosh
 
Apache MXNet for IoT with Apache NiFi
Apache MXNet for IoT with Apache NiFiApache MXNet for IoT with Apache NiFi
Apache MXNet for IoT with Apache NiFi
Timothy Spann
 
Sectools
SectoolsSectools
Sectools
securedome
 
aaa
aaaaaa
IoT with Apache MXNet and Apache NiFi and MiniFi
IoT with Apache MXNet and Apache NiFi and MiniFiIoT with Apache MXNet and Apache NiFi and MiniFi
IoT with Apache MXNet and Apache NiFi and MiniFi
DataWorks Summit
 
Hail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open sourceHail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open source
Timothy Spann
 
mehmet_ekici
mehmet_ekicimehmet_ekici
mehmet_ekicixpath7
 
You know what's cool? Running on a billion devices
You know what's cool? Running on a billion devicesYou know what's cool? Running on a billion devices
You know what's cool? Running on a billion devices
Daniel Stenberg
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoT
Benjamin Cabé
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
OW2
 

Similar to Internet all the things - curl everywhere! (20)

XMPP, HTTP and UPnP
XMPP, HTTP and UPnPXMPP, HTTP and UPnP
XMPP, HTTP and UPnP
 
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
 
Skydive, real-time network analyzer
Skydive, real-time network analyzer Skydive, real-time network analyzer
Skydive, real-time network analyzer
 
Supercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-REDSupercharge your IOT toolbox with MQTT and Node-RED
Supercharge your IOT toolbox with MQTT and Node-RED
 
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
 
Protocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDNProtocol and Integration Challenges for SDN
Protocol and Integration Challenges for SDN
 
0bnosis 2016
0bnosis 20160bnosis 2016
0bnosis 2016
 
MiniFi and Apache NiFi : IoT in Berlin Germany 2018
MiniFi and Apache NiFi : IoT in Berlin Germany 2018MiniFi and Apache NiFi : IoT in Berlin Germany 2018
MiniFi and Apache NiFi : IoT in Berlin Germany 2018
 
Computer communication module1-intro
Computer communication module1-introComputer communication module1-intro
Computer communication module1-intro
 
Apache MXNet for IoT with Apache NiFi
Apache MXNet for IoT with Apache NiFiApache MXNet for IoT with Apache NiFi
Apache MXNet for IoT with Apache NiFi
 
Sectools
SectoolsSectools
Sectools
 
aaa
aaaaaa
aaa
 
IoT with Apache MXNet and Apache NiFi and MiniFi
IoT with Apache MXNet and Apache NiFi and MiniFiIoT with Apache MXNet and Apache NiFi and MiniFi
IoT with Apache MXNet and Apache NiFi and MiniFi
 
Hail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open sourceHail hydrate! from stream to lake using open source
Hail hydrate! from stream to lake using open source
 
mehmet_ekici
mehmet_ekicimehmet_ekici
mehmet_ekici
 
You know what's cool? Running on a billion devices
You know what's cool? Running on a billion devicesYou know what's cool? Running on a billion devices
You know what's cool? Running on a billion devices
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoT
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
 

More from Daniel Stenberg

curl security by Daniel Stenberg from curl up 2024
curl security by Daniel Stenberg from curl up 2024curl security by Daniel Stenberg from curl up 2024
curl security by Daniel Stenberg from curl up 2024
Daniel Stenberg
 
rust in curl by Daniel Stenberg from- curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024rust in curl by Daniel Stenberg from- curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024
Daniel Stenberg
 
trurl 2024 by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024trurl 2024 by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024
Daniel Stenberg
 
curl future 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024curl future 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024
Daniel Stenberg
 
The state of curl 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024The state of curl 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024
Daniel Stenberg
 
mastering libcurl part 2
mastering libcurl part 2mastering libcurl part 2
mastering libcurl part 2
Daniel Stenberg
 
mastering libcurl part 1
mastering libcurl part 1mastering libcurl part 1
mastering libcurl part 1
Daniel Stenberg
 
curl - openfourm europe.pdf
curl - openfourm europe.pdfcurl - openfourm europe.pdf
curl - openfourm europe.pdf
Daniel Stenberg
 
curl experiments - curl up 2022
curl experiments - curl up 2022curl experiments - curl up 2022
curl experiments - curl up 2022
Daniel Stenberg
 
curl security - curl up 2022
curl security - curl up 2022curl security - curl up 2022
curl security - curl up 2022
Daniel Stenberg
 
HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022
Daniel Stenberg
 
The state of curl 2022
The state of curl 2022The state of curl 2022
The state of curl 2022
Daniel Stenberg
 
Let me tell you about curl
Let me tell you about curlLet me tell you about curl
Let me tell you about curl
Daniel Stenberg
 
Curl with rust
Curl with rustCurl with rust
Curl with rust
Daniel Stenberg
 
Getting started with libcurl
Getting started with libcurlGetting started with libcurl
Getting started with libcurl
Daniel Stenberg
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
Daniel Stenberg
 
Landing code in curl
Landing code in curlLanding code in curl
Landing code in curl
Daniel Stenberg
 
Testing curl for security
Testing curl for securityTesting curl for security
Testing curl for security
Daniel Stenberg
 
common mistakes when using libcurl
common mistakes when using libcurlcommon mistakes when using libcurl
common mistakes when using libcurl
Daniel Stenberg
 
HTTP/3 in curl 2020
HTTP/3 in curl 2020HTTP/3 in curl 2020
HTTP/3 in curl 2020
Daniel Stenberg
 

More from Daniel Stenberg (20)

curl security by Daniel Stenberg from curl up 2024
curl security by Daniel Stenberg from curl up 2024curl security by Daniel Stenberg from curl up 2024
curl security by Daniel Stenberg from curl up 2024
 
rust in curl by Daniel Stenberg from- curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024rust in curl by Daniel Stenberg from- curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024
 
trurl 2024 by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024trurl 2024 by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024
 
curl future 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024curl future 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024
 
The state of curl 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024The state of curl 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024
 
mastering libcurl part 2
mastering libcurl part 2mastering libcurl part 2
mastering libcurl part 2
 
mastering libcurl part 1
mastering libcurl part 1mastering libcurl part 1
mastering libcurl part 1
 
curl - openfourm europe.pdf
curl - openfourm europe.pdfcurl - openfourm europe.pdf
curl - openfourm europe.pdf
 
curl experiments - curl up 2022
curl experiments - curl up 2022curl experiments - curl up 2022
curl experiments - curl up 2022
 
curl security - curl up 2022
curl security - curl up 2022curl security - curl up 2022
curl security - curl up 2022
 
HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022
 
The state of curl 2022
The state of curl 2022The state of curl 2022
The state of curl 2022
 
Let me tell you about curl
Let me tell you about curlLet me tell you about curl
Let me tell you about curl
 
Curl with rust
Curl with rustCurl with rust
Curl with rust
 
Getting started with libcurl
Getting started with libcurlGetting started with libcurl
Getting started with libcurl
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
 
Landing code in curl
Landing code in curlLanding code in curl
Landing code in curl
 
Testing curl for security
Testing curl for securityTesting curl for security
Testing curl for security
 
common mistakes when using libcurl
common mistakes when using libcurlcommon mistakes when using libcurl
common mistakes when using libcurl
 
HTTP/3 in curl 2020
HTTP/3 in curl 2020HTTP/3 in curl 2020
HTTP/3 in curl 2020
 

Recently uploaded

PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 

Recently uploaded (20)

PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 

Internet all the things - curl everywhere!

  • 1. Internet all the things! curl everywhere Daniel Stenberg, February 1st 2015
  • 2. Agenda How we got here Using libcurl Future
  • 3. Daniel Stenberg Email: daniel@haxx.se Twitter: @bagder Web: daniel.haxx.se Blog: daniel.haxx.se/blog network hacker at
  • 4. Please ask! Feel free to interrupt and ask at any time!
  • 5. First there was nothing
  • 6. One day in 1996
  • 7. … became curl 1998 HTTP, Gopher, FTP
  • 8. … fast-forward to 2015 curl is a command line tool for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos..), HTTP/2, happy eyeballs, file transfer resume, proxy tunneling and a busload of other useful tricks.
  • 10. 16 Software, Access, Actuate, Adara Networks, Adobe, Aditiva, Adknowledge, alaTEST, Altera, AOL, Apple, Archivas, ATX, Autodesk, BBC, Bietfuchs, Bitcartel, Blackberry, Blizzard, Bloglines.com, Blue Digits, Blue Security, BMW, Bosch, Bwin, Candela Technologies, Canonical, Carestream Health, Cascade Data Systems, CatchFIRE Systems, CERN, CheckPoint, Chevrolet, Chronos, Cisco, CLAAS Tractor SAS, Comcast, Contactor Data, Cybernetica AS, Datasphere S.A., Datordax, Denon, DesignQuotes, Digium, EdelWeb, EFS Technology, Eiffel Software, Electronic Arts, Emsoft, Euroling, Ergon Informatik AG, ESRI, expandtalk.se, Eye-Fi, E2E Technologies Ltd, F- Secure, Facebook, FalconView, Feitian Technologies, FriendFeed, FMWebschool, GRIN, Groopex, Grooveshark, Focuseek, Games Workshop, Garmin, GipsyMedia Ltd, Google, Haxx, HPC, Heynow Software, Hitachi, HP, Huawei, HTC, inSORS, IBM, ideelabor.ee, Idruna Software Inc, Id Software, Infomedia Business Systems Division, Informatica PowerCenter, Information Handling Services, Insignia, Intel, Internet Security Systems, Intra2net AG, Jajja Communications, JET, JLynx Software, Kajala Group Ltd., Kaleidescape, Karelia, Kaseya, Kencast inc., Kerio Technologies, Kongsberg Spacetec, LassoSoft, Lastpass, LG, Linden Lab, Machina Networks, Macromates, Macromedia, Magic TV, Mandiant Memoryze, MandrakeSoft, Marantz, Mazda, McAfee/Network Associates Inc, MediaAnalys, Mellanox Switch Management System, Mercedes-Benz, Metaio, Micromuse Inc., MokaFive, Inc, Momento, Moodstocks, Motorola, Nagarsoft, Neptune Labs, Nest, Netflix, Netiq, Network Mail, Neuros Technology, Nintendo, NoDesign's DIA Parrot, Nortel, Office2office Plc, OKTET Labs Ltd, One Laptop Per Child, Onkyo, On Technology, OpenLogic, Optimsys, Oracle, Outrider, Palm, Panasonic, Pandigital, Passiv Systems, Pelco, Philips, Pioneer, Polaroid Corporation, Polycom, Pure Storage, Quest, QNX, RBS, Research in Motion, Retarus Network Services GmbH, Riverbed, Rolltech, Inc, RSA Security Inc, RSSS, Samsung, SanDisk, SAS Institute, SEB, Sharp, Siemens, Silicon Landmark, Slingbox, SmithMicro, Sony, Source Remoting, Spotify, Steambird, Sun, Swisscom, Symantec, System Garden, Tasvideos, Tellabs, Telstra, Telvue, Thumbtack, Tilgin, Tomtom, ToolAware, Toshiba Corporation, Trend Micro, Tribalmedia, Tiempo de Espera, Unity3d, Vivisimo, Vmware, Voddler, Volition Inc, Vuo, Wump Research & Company, Xilinx, XonaSoftware, Yahoo, Yamaha, Zimbra, Zixcorp, Zonar Systems LLC, Zyxel … and more
  • 11. All the things! Mac OS X TVs Iphones and Ipads Other phones Linux Games Version control systems Cars PHP sites Set-top boxes Audio equipment Bluray players Printers Firefox crash reporter Sites: Facebook, Yahoo, … Your next device
  • 12. Everyone in this room most likely has a device using libcurl. Probably even more than one!
  • 13. why they use curl? Because Internet doesn't follow specs Open source MIT licensed Simple and stable API Yet powerful API HTTP library when libwww was the only choice C library is still most portable Bindings for every language Decent documentation Decent stability Supports all the protocols Fast Allows disabling parts for footprint shaving Many TLS backends Small devices still like C http://curl.haxx.se/libcurl/theysay.html
  • 14. the project curl and libcurl Transfer data using internet application protocols Stable products Stable API Maximum portability MIT
  • 15. Contributors over time 1200+ in total 30-40 contributors per release Increasing linearly Core team < 10 people Volunteers!
  • 16. bindings Ada95, Basic, C++, Ch, Cocoa, D, Dylan, Eiffel, Euphoria, Falcon, Ferite, Gambas, glib/GTK+, Guile, Haskell, ILE/RPG, Java, Lisp, Lua, Mono, .NET, Object-Pascal, Ocaml, Pascal, Perl, PHP, Postgres, Python, R, Rexx, Ruby, Scheme, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro, Q, wxWidgets, XBLite
  • 17. So what do I do? When I want to use it.
  • 18. Build it Because on most embedded devices you will Tailor your own build Yocto / OpenEmbedded, BuildRoot etc provide recipes All Linux distros have binary packages
  • 19. Transfer oriented A transfer: data going in either or both directions to or from a given URL Create an “easy handle” with curl_easy_setopt() Create one handle for each transfer or re-use it serially Set your transfer options and preferences Like URL Write callback Authentication Or another one of the 200+ options
  • 20. Synch or asynch The easy interface is single-transfer and blocking The multi interface is many-transfers and non-blocking
  • 21. hello world - blocking CURL *h = curl_easy_init(); curl_easy_setopt(h, CURLOPT_URL, "http://example.com"); curl_easy_setopt(h, CURLOPT_FOLLOWLOCATION, 1L); CURLcode res = curl_easy_perform(h); if (res) fprintf(stderr, "curl_easy_perform() failed: %sn", curl_easy_strerror(res)); curl_easy_cleanup(h);
  • 22. hello world – non-blocking CURL *h = curl_easy_init(); curl_easy_setopt(h, CURLOPT_URL, "http://example.com"); CURLM *m = curl_multi_init(); curl_multi_add_handle(m, h); int running; do { res = curl_multi_fdset(h, ...); select(); curl_multi_perform(m, &running); } while(running); curl_multi_remove_handle(m, h); curl_easy_cleanup(h); curl_multi_cleanup(m);
  • 23. event-based avoids select() and poll() event-library agnostic scales better when beyond hundreds of parallel transfers curl_multi_socket_action() Event-based logic is usually trickier to write, read and debug
  • 24. Documented As man pages, as web pages on the site and even PDF documents in the release archives. http://curl.haxx.se/libcurl/
  • 25. --libcurl $ curl http://example.com/ -d “moo” -k -u my:secret $ curl http://example.com/ -d “moo” -k -u my:secret --libcurl code.c $ cat code.c
  • 26. Future? HTTP/2 multiplexing Better parallel DNS lookups SRV records HTTPS to proxy There's no slow-down in sight
  • 28. Learn more! •curl and libcurl: http://curl.haxx.se/ •curl vs wget: http://daniel.haxx.se/docs/curl-vs-wget.html •curl vs other tools: http://curl.haxx.se/docs/comparison-table.html •curl's TLS backends compared: http://curl.haxx.se/docs/ssl-compared.html
  • 29. Doing good is part of our code
  • 30. License This presentation and its contents are licensed under the Creative Commons Attribution 4.0 license: http://creativecommons.org/licenses/by/4.0/