SlideShare a Scribd company logo
1 of 119
Download to read offline
Advanced API Design
      How an awesome API can
               attract friends,
               make you rich,
         and change the world

                          Jon Dahl
                         @jondahl
                 jon@zencoder.com
Application
Programming
Interface
User
Interface
Interface
Library
SDK
Net::SSH
Web Service
Simple
Object
Access
Protocol
Simple
Object
Access
Protocol
REST
HTTP
Web is an API
GET /records
POST /record/new
POST /record/new
<xml>
 <data>Foo</data>
</xml>
POST /record/new
{
    "data" : "foo"
}
(Don’t tell our investors that
we don’t have a real product)
Some Examples
1. Second Interface
Flickr
Twitter
Linkedin
Facebook
Paypal
Google Maps
2. Internal APIs
Service Oriented Architecture
Mobile application backends
3. Core Tech
Amazon Web Services
Twilio
Geoloqi
Zencoder
Sendgrid
Factual
Spreedly
Recurly
Saplo
Tropo
4. Science Fiction
PiCloud
Amazon Mechanical Turk
...
so, how do you design a good API?
Competitive
Advantage
REST conventions
GET      records
POST     jobs
PUT      messages
DELETE   servers
         users
HTTP codes
200 OK
201 Created
202 Accepted

400 Bad Request
401 Unauthorized
402 Payment Required
404 Not Found
409 Conflict
418 I’m a teapot
422 Unprocessable Entity

500 Internal Server Error
503 Service Unavailable
... and many more!
Version it
GET /api/records/38927

{
    "color" : "green",
    "velocity" : 1000000
}
GET /api/records/38927

{
    "color" : "10EE33",
    "velocity" : 1000000
}
GET /api/v1/records/38927

{
    "color" : "green",
    "velocity" : 1000000
}
GET /api/v2/records/38927

{
    "color" : "10EE33",
    "velocity" : 1000000
}
GET /api/records/38927?version=2

GET /api/v2/records/38927

GET /api/records/38927
Accept: application/json+v2
Smart validations
POST /api/jobs HTTP/1.1
Accept: application/json
Content-Type: application/json

{
    "api_key" : "Not A Real Key",
    "color" : "green"
}
HTTP/1.1 500 Internal Server Error
HTTP/1.1 401 Unauthorized
HTTP/1.1 401 Unauthorized

{
    "errors": [
      "api_key not found"
    ]
}
HTTP/1.1 401 Unauthorized

{
    "errors": [
      "api_key not found.",
      "api_key may not include spaces."
    ]
}
HTTP/1.1 401 Unauthorized

{
  "errors": [
    "api_key not found. Please log in to https://
example.com/account/api to retrieve your API
key.",
    "api_key may not include spaces."
  ]
}
POST /api/user HTTP/1.1
Accept: application/json
Content-Type: application/json

{
    "api_key" : "A23B92F281CC"
    "strength" : 18
}
HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request

{
  "errors": [
    "JSON is not valid. Syntax error,
unexpected TSTRING, expecting '}'
at line 2"
  ]
}
JSON + XML
POST /api/user HTTP/1.1
Accept: application/json
Content-Type: application/json

{
    "api_key" : "A23B92F281CC",
    "strength" : 18
}
params[:strength] # 18
respond_to do |wants|
  wants.json { render :json => @jobs.to_json }
  wants.xml { render :xml => @jobs.to_xml }
end
Document it
Zencoder::API.define_setting :audio_channels, :section => section
do |z|
  z.tip = "The number of audio channels: 1 or 2."
  z.description = %Q{
    <p>The number of audio channels to use: 1 (mono) or 2
(stereo).</p>
    <p>Note that mono AAC audio sometimes erroneously self-reports
as stereo when inspected. We recommend using iTunes to get the true
number of channels for AAC audio.</p>
    }
  z.data_type = "Integer"
  z.valid = "1 or 2"
  z.default = "1 if the original file is mono; otherwise, 2."
  z.example = "1"
  z.see_also = [:audio_bitrate, :audio_quality]
end
Libraries
Support it
APIs are scary.
Make it fast
Rate limiting
loop { MyApi.create("data") }
Log requests
Request builder
GET /api/ideas
Competitive
Advantage
1. Make friends
Awesomeness is noticed
(Assymetrical value curve)
value
quality
value
quality
value
quality
Bus Driving




              value
   quality
Bus Driving




              value
   quality
Sports




          value
quality
API design




             value
  quality
"I know the following statement is going to sound dramatic,
but it's the truth. Zencoder seriously uplifted my entire day.

The API is really well designed and has documentation for not
only what each value should be but also what an example
input/output would look like using the value. I had spent the
earlier part of the day working with a web service that is the
complete opposite of those things.

So when I started digging into Zencoder I felt like I was
witnessing a double rainbow. Then when I found the API
Builder, it went beyond a double rainbow to a level I can only
imagine is equal to witnessing a unicorn birth.”
2. Get rich
Software is eating
the world
Software is eating
the world
Cloud computing revenue forecast

$150B
                              $148.8B




$100B


               $68.3B
 $50B




  $0B
                2010           2014

  Source: Gartner 2010
Need an idea?
API to
API to
the government
API to
your body
API to
manufacturing
3. Change the world
In 2000...the cost of a customer running a basic
Internet application was approximately $150,000
a month. Running that same application today in
Amazon's cloud costs about $1,500 a month.

                              Mark Andreessen,
             “Why Software Is Eating The World”
1,000 CPU cores:
1,000 CPU cores:
$204
50 phone numbers:
50 phone numbers:
$50
POST /api/awesome_things HTTP/1.1

{
    "team_size" : 3,
    "productivity" : "10x"
}
Jon Dahl
        @jondahl
jon@zencoder.com

More Related Content

What's hot

Amazon Alexa: our successes and fails
Amazon Alexa: our successes and failsAmazon Alexa: our successes and fails
Amazon Alexa: our successes and fails
Vyacheslav Lyalkin
 

What's hot (20)

What Makes a Great Open API?
What Makes a Great Open API?What Makes a Great Open API?
What Makes a Great Open API?
 
Introduction to Artificial Intelligence (AI) at Amazon
Introduction to Artificial Intelligence (AI) at Amazon Introduction to Artificial Intelligence (AI) at Amazon
Introduction to Artificial Intelligence (AI) at Amazon
 
The Power of Open Data
The Power of Open DataThe Power of Open Data
The Power of Open Data
 
Presentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix APIPresentation to ESPN about the Netflix API
Presentation to ESPN about the Netflix API
 
Introduction to Facebook Pop
Introduction to Facebook PopIntroduction to Facebook Pop
Introduction to Facebook Pop
 
The future-of-netflix-api
The future-of-netflix-apiThe future-of-netflix-api
The future-of-netflix-api
 
Web2expo 2011u
Web2expo 2011uWeb2expo 2011u
Web2expo 2011u
 
Building AI-powered Apps on AWS
Building AI-powered Apps on AWSBuilding AI-powered Apps on AWS
Building AI-powered Apps on AWS
 
ALX402_Oh No, I Got Featured
ALX402_Oh No, I Got FeaturedALX402_Oh No, I Got Featured
ALX402_Oh No, I Got Featured
 
Heroku addons development - Nov 2011
Heroku addons development - Nov 2011Heroku addons development - Nov 2011
Heroku addons development - Nov 2011
 
Pragmatic RESTful API Design: Apigee Webinar
Pragmatic RESTful API Design: Apigee WebinarPragmatic RESTful API Design: Apigee Webinar
Pragmatic RESTful API Design: Apigee Webinar
 
BrightonSEO 2020 - Mastering The API and Having Fun Along The Way
BrightonSEO 2020 - Mastering The API and Having Fun Along The WayBrightonSEO 2020 - Mastering The API and Having Fun Along The Way
BrightonSEO 2020 - Mastering The API and Having Fun Along The Way
 
Amazon Alexa: our successes and fails
Amazon Alexa: our successes and failsAmazon Alexa: our successes and fails
Amazon Alexa: our successes and fails
 
Git store
Git storeGit store
Git store
 
"Managing API Complexity". Matthew Flaming, Temboo
"Managing API Complexity". Matthew Flaming, Temboo"Managing API Complexity". Matthew Flaming, Temboo
"Managing API Complexity". Matthew Flaming, Temboo
 
Digital Muse “Girl Tech Fest - AWS Alexa Skills Coding Workshop
Digital Muse “Girl Tech Fest - AWS Alexa Skills Coding WorkshopDigital Muse “Girl Tech Fest - AWS Alexa Skills Coding Workshop
Digital Muse “Girl Tech Fest - AWS Alexa Skills Coding Workshop
 
AWS re:Invent 2016: State of the Union: Amazon Alexa and Recent Advances in C...
AWS re:Invent 2016: State of the Union: Amazon Alexa and Recent Advances in C...AWS re:Invent 2016: State of the Union: Amazon Alexa and Recent Advances in C...
AWS re:Invent 2016: State of the Union: Amazon Alexa and Recent Advances in C...
 
Alexa, nice to meet you!
Alexa, nice to meet you! Alexa, nice to meet you!
Alexa, nice to meet you!
 
API Design - 3rd Edition
API Design - 3rd EditionAPI Design - 3rd Edition
API Design - 3rd Edition
 
API 101 - Understanding APIs
API 101 - Understanding APIsAPI 101 - Understanding APIs
API 101 - Understanding APIs
 

Viewers also liked

Streaming Api Design with Akka, Scala and Spray
Streaming Api Design with Akka, Scala and SprayStreaming Api Design with Akka, Scala and Spray
Streaming Api Design with Akka, Scala and Spray
Natalino Busa
 
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Cesare Pautasso
 

Viewers also liked (20)

Applying Domain-Driven Design to APIs and Microservices - Austin API Meetup
Applying Domain-Driven Design to APIs and Microservices  - Austin API MeetupApplying Domain-Driven Design to APIs and Microservices  - Austin API Meetup
Applying Domain-Driven Design to APIs and Microservices - Austin API Meetup
 
Streaming Api Design with Akka, Scala and Spray
Streaming Api Design with Akka, Scala and SprayStreaming Api Design with Akka, Scala and Spray
Streaming Api Design with Akka, Scala and Spray
 
API Design Methodology - Mike Amundsen, Director of API Architecture, API Aca...
API Design Methodology - Mike Amundsen, Director of API Architecture, API Aca...API Design Methodology - Mike Amundsen, Director of API Architecture, API Aca...
API Design Methodology - Mike Amundsen, Director of API Architecture, API Aca...
 
APIDays - API Design Workshop
APIDays - API Design WorkshopAPIDays - API Design Workshop
APIDays - API Design Workshop
 
Big and fast a quest for relevant and real-time analytics
Big and fast a quest for relevant and real-time analyticsBig and fast a quest for relevant and real-time analytics
Big and fast a quest for relevant and real-time analytics
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
 
Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven Design
 
Design First API's with RAML and SoapUI
Design First API's with RAML and SoapUIDesign First API's with RAML and SoapUI
Design First API's with RAML and SoapUI
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
 
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
 
Domain Driven Design 101
Domain Driven Design 101Domain Driven Design 101
Domain Driven Design 101
 
Java 8 new features or the ones you might actually use
Java 8 new features or the ones you might actually useJava 8 new features or the ones you might actually use
Java 8 new features or the ones you might actually use
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Microservices: Where do they fit within a rapidly evolving integration archit...
Microservices: Where do they fit within a rapidly evolving integration archit...Microservices: Where do they fit within a rapidly evolving integration archit...
Microservices: Where do they fit within a rapidly evolving integration archit...
 
Stateless authentication for microservices
Stateless authentication for microservicesStateless authentication for microservices
Stateless authentication for microservices
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright Future
 

Similar to Advanced API Design: how an awesome API can help you make friends, get rich, and change the world

A great api is hard to find
A great api is hard to findA great api is hard to find
A great api is hard to find
Dan Diephouse
 
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIsThe liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
Jorge Ferrer
 

Similar to Advanced API Design: how an awesome API can help you make friends, get rich, and change the world (20)

Creating Datadipity
Creating DatadipityCreating Datadipity
Creating Datadipity
 
How to Design and Build a Great Web API
How to Design and Build a Great Web APIHow to Design and Build a Great Web API
How to Design and Build a Great Web API
 
Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack
 
A great api is hard to find
A great api is hard to findA great api is hard to find
A great api is hard to find
 
NPR API: Create Once Publish Everywhere
NPR API: Create Once Publish EverywhereNPR API: Create Once Publish Everywhere
NPR API: Create Once Publish Everywhere
 
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIsThe liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
 
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
 
Design Web Api
Design Web ApiDesign Web Api
Design Web Api
 
Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010
 
Ibm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshopIbm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshop
 
Building RESTful APIs
Building RESTful APIsBuilding RESTful APIs
Building RESTful APIs
 
API Documentation presentation to East Bay STC Chapter
API Documentation presentation to East Bay STC ChapterAPI Documentation presentation to East Bay STC Chapter
API Documentation presentation to East Bay STC Chapter
 
API Documentation -- Presentation to East Bay STC Chapter
API Documentation -- Presentation to East Bay STC ChapterAPI Documentation -- Presentation to East Bay STC Chapter
API Documentation -- Presentation to East Bay STC Chapter
 
Creating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APICreating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services API
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
 
Clickslide Datadipity Beta V1
Clickslide Datadipity Beta V1Clickslide Datadipity Beta V1
Clickslide Datadipity Beta V1
 
Documenting Your API
Documenting Your APIDocumenting Your API
Documenting Your API
 
GraphQL: Enabling a new generation of API developer tools
GraphQL: Enabling a new generation of API developer toolsGraphQL: Enabling a new generation of API developer tools
GraphQL: Enabling a new generation of API developer tools
 
Swift meetup22june2015
Swift meetup22june2015Swift meetup22june2015
Swift meetup22june2015
 

More from Jonathan Dahl

More from Jonathan Dahl (9)

The impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video qualityThe impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video quality
 
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano ModelDesigning Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
 
Advanced API Design: how an awesome API can attract friends, make you rich, a...
Advanced API Design: how an awesome API can attract friends, make you rich, a...Advanced API Design: how an awesome API can attract friends, make you rich, a...
Advanced API Design: how an awesome API can attract friends, make you rich, a...
 
Programming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the ClashProgramming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the Clash
 
Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)
 
Rails and alternative ORMs
Rails and alternative ORMsRails and alternative ORMs
Rails and alternative ORMs
 
Aristotle and the Art of Software Development
Aristotle and the Art of Software DevelopmentAristotle and the Art of Software Development
Aristotle and the Art of Software Development
 
EC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed ProcessingEC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed Processing
 
Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)
 

Recently uploaded

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 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...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

Advanced API Design: how an awesome API can help you make friends, get rich, and change the world