SlideShare une entreprise Scribd logo
1  sur  19
Familiarity Breeds Contempt
Or why all APIs suck. Even yours.
Stephen Darlington
@sdarlington / @wandlesoftware
www.wandlesoftware.com / www.zx81.org.uk
After using Facebook Connect
After using the Twitter API
By Makuahine Pa'i Ki'i
After using your API
By VFW Kids
After using your API
By Lara604
What is an API?
• “An application programming interface, or
API, is the set of symbols that are
exported and available to the users of a
library to write their application.” (The Little Manual
of API Design)
• “The design of the APIs is arguably the
most critical part of designing the library”
What is an API?
• An interface used to communicate with
people
– Web service API
– A reusable Cocoa component
– List of functions in a header file
• “Other people” includes the “future you”
It’s easy to be a critic
“In many ways, the work of a critic is easy.
We risk very little, yet enjoy a position over
those who offer up their work and their
selves to our judgment. We thrive on
negative criticism, which is fun to write and
to read.”
Anton Ego, Food critic, Ratatouille
Using it
• Documentation
• Complete
• Error handling
Using it – example
• Adding a bookmark in Delicious.com
• https://api.delicious.com/v1/posts/add
– url
– description
– extended
– tags
– shared
Using it – example
• Error
– “Something went wrong”
• OK
– “done”
• But:
– URL might have changed
– Huge GET request
Using it
• Documentation
• Complete
• Error handling
• Mobile considerations
Using it – example 2
• Syncing Delicious.com bookmarks
• https://api.delicious.com/v1/posts/all
– hashes=
• https://api.delicious.com/v1/posts/get
– meta=yes
– hashes=
Using it – example 2
• You have to download all the “hashes”
– How many?
– How big?
• “hashes” means different things in different
commands
• Very long GET request
• Undocumented parameters
Changing it
• Documentation
• Versions
• Compatibility
• Notice period
Let’s try to be positive…
• Don’t think “what’s the easiest way of
making all this data public?”
– Consider use-cases of clients
• Give it a REST
– Leave religion to the church. Make it work first
• Use your own API
– Don’t have “secret” methods
– Amazon are a great example
Conclusions
• Terrible APIs == Terrible Apps
• Don’t short-change yourself
• Don’t short-change your users
Further Reading
• “The Little Manual of API Design,” Jasmin
Blanchette
• “ API Design,” Matt Gemmell
More?!
• Questions?
• Apps and slides at wandlesoftware.com

Contenu connexe

Tendances

Writing Alexa Voice Skills With NodeJS (with a little IoT)
Writing Alexa Voice Skills With NodeJS (with a little IoT)Writing Alexa Voice Skills With NodeJS (with a little IoT)
Writing Alexa Voice Skills With NodeJS (with a little IoT)David Janes
 
API 101 - Understanding APIs.
API 101 - Understanding APIs.API 101 - Understanding APIs.
API 101 - Understanding APIs.Kirsten Hunter
 
Book Reader Bingo: Which Page-Turner Should I Use?
Book Reader Bingo: Which Page-Turner Should I Use?Book Reader Bingo: Which Page-Turner Should I Use?
Book Reader Bingo: Which Page-Turner Should I Use?ebenenglish
 
Reactive programming
Reactive programmingReactive programming
Reactive programmingryanstout
 
Your First Amazon Alexa Skill
Your First Amazon Alexa SkillYour First Amazon Alexa Skill
Your First Amazon Alexa SkillMike Christianson
 
Deploying systems using AWS DevOps tools
Deploying systems using AWS DevOps toolsDeploying systems using AWS DevOps tools
Deploying systems using AWS DevOps toolsMassTLC
 
Make Your Team Flow
Make Your Team FlowMake Your Team Flow
Make Your Team FlowChad Moone
 
Functions.php - It's Not Just For Developers
Functions.php - It's Not Just For DevelopersFunctions.php - It's Not Just For Developers
Functions.php - It's Not Just For DevelopersEric Mann
 
WordCamp Miami 2015 beginner course plugins
WordCamp Miami 2015 beginner course pluginsWordCamp Miami 2015 beginner course plugins
WordCamp Miami 2015 beginner course pluginsSouth Florida Web Studio
 
Workbench: The Developer Tool for Admins
Workbench: The Developer Tool for AdminsWorkbench: The Developer Tool for Admins
Workbench: The Developer Tool for AdminsSalesforce Admins
 
Neotys PAC 2018 - Wilson Mar
Neotys PAC 2018 - Wilson MarNeotys PAC 2018 - Wilson Mar
Neotys PAC 2018 - Wilson MarNeotys_Partner
 
API-first World Domination
API-first World DominationAPI-first World Domination
API-first World DominationJoe Sepi
 
devworkshop-04_13_2016-ucsdnow-presentation
devworkshop-04_13_2016-ucsdnow-presentationdevworkshop-04_13_2016-ucsdnow-presentation
devworkshop-04_13_2016-ucsdnow-presentationAlex Wu
 
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offlineDevelop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offlineJan Jongboom
 
SharePoint Saturday STL: SharePoint Powershell Admins
SharePoint Saturday STL: SharePoint Powershell AdminsSharePoint Saturday STL: SharePoint Powershell Admins
SharePoint Saturday STL: SharePoint Powershell AdminsKenneth Maglio
 
Pain Free Frontend Development
Pain Free Frontend DevelopmentPain Free Frontend Development
Pain Free Frontend DevelopmentVanessa Böhner
 

Tendances (18)

Writing Alexa Voice Skills With NodeJS (with a little IoT)
Writing Alexa Voice Skills With NodeJS (with a little IoT)Writing Alexa Voice Skills With NodeJS (with a little IoT)
Writing Alexa Voice Skills With NodeJS (with a little IoT)
 
API 101 - Understanding APIs.
API 101 - Understanding APIs.API 101 - Understanding APIs.
API 101 - Understanding APIs.
 
Book Reader Bingo: Which Page-Turner Should I Use?
Book Reader Bingo: Which Page-Turner Should I Use?Book Reader Bingo: Which Page-Turner Should I Use?
Book Reader Bingo: Which Page-Turner Should I Use?
 
The tale of 100 cve's
The tale of 100 cve'sThe tale of 100 cve's
The tale of 100 cve's
 
Reactive programming
Reactive programmingReactive programming
Reactive programming
 
Your First Amazon Alexa Skill
Your First Amazon Alexa SkillYour First Amazon Alexa Skill
Your First Amazon Alexa Skill
 
Deploying systems using AWS DevOps tools
Deploying systems using AWS DevOps toolsDeploying systems using AWS DevOps tools
Deploying systems using AWS DevOps tools
 
Make Your Team Flow
Make Your Team FlowMake Your Team Flow
Make Your Team Flow
 
Functions.php - It's Not Just For Developers
Functions.php - It's Not Just For DevelopersFunctions.php - It's Not Just For Developers
Functions.php - It's Not Just For Developers
 
WordCamp Miami 2015 beginner course plugins
WordCamp Miami 2015 beginner course pluginsWordCamp Miami 2015 beginner course plugins
WordCamp Miami 2015 beginner course plugins
 
Workbench: The Developer Tool for Admins
Workbench: The Developer Tool for AdminsWorkbench: The Developer Tool for Admins
Workbench: The Developer Tool for Admins
 
Neotys PAC 2018 - Wilson Mar
Neotys PAC 2018 - Wilson MarNeotys PAC 2018 - Wilson Mar
Neotys PAC 2018 - Wilson Mar
 
API-first World Domination
API-first World DominationAPI-first World Domination
API-first World Domination
 
devworkshop-04_13_2016-ucsdnow-presentation
devworkshop-04_13_2016-ucsdnow-presentationdevworkshop-04_13_2016-ucsdnow-presentation
devworkshop-04_13_2016-ucsdnow-presentation
 
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offlineDevelop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
 
Birdpie
BirdpieBirdpie
Birdpie
 
SharePoint Saturday STL: SharePoint Powershell Admins
SharePoint Saturday STL: SharePoint Powershell AdminsSharePoint Saturday STL: SharePoint Powershell Admins
SharePoint Saturday STL: SharePoint Powershell Admins
 
Pain Free Frontend Development
Pain Free Frontend DevelopmentPain Free Frontend Development
Pain Free Frontend Development
 

En vedette

Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...
Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...
Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...Confluence Conference
 
Cet u boji
Cet u bojiCet u boji
Cet u bojiZarko89
 
Back 2 Business - Digital & Social
Back 2 Business - Digital & SocialBack 2 Business - Digital & Social
Back 2 Business - Digital & SocialPhil Buckley
 
Search, Social & Online Reputation Management for Professional Service Providers
Search, Social & Online Reputation Management for Professional Service ProvidersSearch, Social & Online Reputation Management for Professional Service Providers
Search, Social & Online Reputation Management for Professional Service ProvidersPhil Buckley
 
Patrick allmond - “The Rise & Relevance of Internet TV”
Patrick allmond - “The Rise & Relevance of Internet TV”Patrick allmond - “The Rise & Relevance of Internet TV”
Patrick allmond - “The Rise & Relevance of Internet TV”Confluence Conference
 
Phantom of the opera music of the night
Phantom of the opera   music of the nightPhantom of the opera   music of the night
Phantom of the opera music of the nightjef_spalla
 
Evolve or Die: Healthcare IT Testing | QASymphony Webinar
Evolve or Die: Healthcare IT Testing | QASymphony WebinarEvolve or Die: Healthcare IT Testing | QASymphony Webinar
Evolve or Die: Healthcare IT Testing | QASymphony WebinarQASymphony
 
Permen lh-no-05-th-2013-tentang-pedoman-adiwiyata
Permen lh-no-05-th-2013-tentang-pedoman-adiwiyataPermen lh-no-05-th-2013-tentang-pedoman-adiwiyata
Permen lh-no-05-th-2013-tentang-pedoman-adiwiyataAgus Fattah Riadi
 
An introduction to internal auditing
An introduction to internal auditingAn introduction to internal auditing
An introduction to internal auditinggrifff
 
Репутация №1 в социальных сетях: стать первыми и лучшими
Репутация №1 в социальных сетях: стать первыми и лучшимиРепутация №1 в социальных сетях: стать первыми и лучшими
Репутация №1 в социальных сетях: стать первыми и лучшимиAGIMA
 
Test driven development vs Behavior driven development
Test driven development vs Behavior driven developmentTest driven development vs Behavior driven development
Test driven development vs Behavior driven developmentGallop Solutions
 
Streamlining Automation Scripts and Test Data Management
Streamlining Automation Scripts and Test Data ManagementStreamlining Automation Scripts and Test Data Management
Streamlining Automation Scripts and Test Data ManagementQASymphony
 
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Phil Calçado
 
Local Link Building Tips, Tools, and Tactics
Local Link Building Tips, Tools, and TacticsLocal Link Building Tips, Tools, and Tactics
Local Link Building Tips, Tools, and TacticsMike Ramsey
 
Wingify Culture Values
Wingify Culture ValuesWingify Culture Values
Wingify Culture ValuesVWO
 

En vedette (18)

Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...
Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...
Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...
 
Cet u boji
Cet u bojiCet u boji
Cet u boji
 
El justo no se asusta
El justo no se asustaEl justo no se asusta
El justo no se asusta
 
Back 2 Business - Digital & Social
Back 2 Business - Digital & SocialBack 2 Business - Digital & Social
Back 2 Business - Digital & Social
 
Search, Social & Online Reputation Management for Professional Service Providers
Search, Social & Online Reputation Management for Professional Service ProvidersSearch, Social & Online Reputation Management for Professional Service Providers
Search, Social & Online Reputation Management for Professional Service Providers
 
Patrick allmond - “The Rise & Relevance of Internet TV”
Patrick allmond - “The Rise & Relevance of Internet TV”Patrick allmond - “The Rise & Relevance of Internet TV”
Patrick allmond - “The Rise & Relevance of Internet TV”
 
Uu 32 2009 pplh
Uu 32 2009 pplhUu 32 2009 pplh
Uu 32 2009 pplh
 
Phantom of the opera music of the night
Phantom of the opera   music of the nightPhantom of the opera   music of the night
Phantom of the opera music of the night
 
Casepedagogik
CasepedagogikCasepedagogik
Casepedagogik
 
Evolve or Die: Healthcare IT Testing | QASymphony Webinar
Evolve or Die: Healthcare IT Testing | QASymphony WebinarEvolve or Die: Healthcare IT Testing | QASymphony Webinar
Evolve or Die: Healthcare IT Testing | QASymphony Webinar
 
Permen lh-no-05-th-2013-tentang-pedoman-adiwiyata
Permen lh-no-05-th-2013-tentang-pedoman-adiwiyataPermen lh-no-05-th-2013-tentang-pedoman-adiwiyata
Permen lh-no-05-th-2013-tentang-pedoman-adiwiyata
 
An introduction to internal auditing
An introduction to internal auditingAn introduction to internal auditing
An introduction to internal auditing
 
Репутация №1 в социальных сетях: стать первыми и лучшими
Репутация №1 в социальных сетях: стать первыми и лучшимиРепутация №1 в социальных сетях: стать первыми и лучшими
Репутация №1 в социальных сетях: стать первыми и лучшими
 
Test driven development vs Behavior driven development
Test driven development vs Behavior driven developmentTest driven development vs Behavior driven development
Test driven development vs Behavior driven development
 
Streamlining Automation Scripts and Test Data Management
Streamlining Automation Scripts and Test Data ManagementStreamlining Automation Scripts and Test Data Management
Streamlining Automation Scripts and Test Data Management
 
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
 
Local Link Building Tips, Tools, and Tactics
Local Link Building Tips, Tools, and TacticsLocal Link Building Tips, Tools, and Tactics
Local Link Building Tips, Tools, and Tactics
 
Wingify Culture Values
Wingify Culture ValuesWingify Culture Values
Wingify Culture Values
 

Similaire à Why APIs Suck

Building a REST API for Longevity
Building a REST API for LongevityBuilding a REST API for Longevity
Building a REST API for LongevityMuleSoft
 
Lessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptxLessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptxapidays
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swaggerTony Tam
 
APIs.JSON: Bootstrapping The Web of APIs
APIs.JSON: Bootstrapping The Web of APIsAPIs.JSON: Bootstrapping The Web of APIs
APIs.JSON: Bootstrapping The Web of APIs3scale
 
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...apidays
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Den Delimarsky
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIJeff Potts
 
Riding the Edge with Ember.js
Riding the Edge with Ember.jsRiding the Edge with Ember.js
Riding the Edge with Ember.jsaortbals
 
Harnessing Free Content with Web Service APIs
Harnessing Free Content with Web Service APIsHarnessing Free Content with Web Service APIs
Harnessing Free Content with Web Service APIsALATechSource
 
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 2010Twilio Inc
 
But we're already open source! Why would I want to bring my code to Apache?
But we're already open source! Why would I want to bring my code to Apache?But we're already open source! Why would I want to bring my code to Apache?
But we're already open source! Why would I want to bring my code to Apache?gagravarr
 
STC Summit 2015: API Documentation, an Example-Based Approach
STC Summit 2015: API Documentation, an Example-Based ApproachSTC Summit 2015: API Documentation, an Example-Based Approach
STC Summit 2015: API Documentation, an Example-Based ApproachLois Patterson
 
Progressive Enhancement using WSGI
Progressive Enhancement using WSGIProgressive Enhancement using WSGI
Progressive Enhancement using WSGIMatthew Wilkes
 
Creating a RESTful api without losing too much sleep
Creating a RESTful api without losing too much sleepCreating a RESTful api without losing too much sleep
Creating a RESTful api without losing too much sleepMike Anderson
 
Documenting APIs: Sample Code and More (with many pictures of cats)
Documenting APIs: Sample Code and More (with many pictures of cats)Documenting APIs: Sample Code and More (with many pictures of cats)
Documenting APIs: Sample Code and More (with many pictures of cats)Anya Stettler
 
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 PlatformAntonio Peric-Mazar
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile appsMugunth Kumar
 
Microservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell MonsterMicroservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell MonsterC4Media
 

Similaire à Why APIs Suck (20)

Building a REST API for Longevity
Building a REST API for LongevityBuilding a REST API for Longevity
Building a REST API for Longevity
 
Lessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptxLessons learned on the Azure API Stewardship Journey.pptx
Lessons learned on the Azure API Stewardship Journey.pptx
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
 
APIs.JSON: Bootstrapping The Web of APIs
APIs.JSON: Bootstrapping The Web of APIsAPIs.JSON: Bootstrapping The Web of APIs
APIs.JSON: Bootstrapping The Web of APIs
 
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
Riding the Edge with Ember.js
Riding the Edge with Ember.jsRiding the Edge with Ember.js
Riding the Edge with Ember.js
 
Harnessing Free Content with Web Service APIs
Harnessing Free Content with Web Service APIsHarnessing Free Content with Web Service APIs
Harnessing Free Content with Web Service APIs
 
Frontend as a first class citizen
Frontend as a first class citizenFrontend as a first class citizen
Frontend as a first class citizen
 
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
 
But we're already open source! Why would I want to bring my code to Apache?
But we're already open source! Why would I want to bring my code to Apache?But we're already open source! Why would I want to bring my code to Apache?
But we're already open source! Why would I want to bring my code to Apache?
 
STC Summit 2015: API Documentation, an Example-Based Approach
STC Summit 2015: API Documentation, an Example-Based ApproachSTC Summit 2015: API Documentation, an Example-Based Approach
STC Summit 2015: API Documentation, an Example-Based Approach
 
Progressive Enhancement using WSGI
Progressive Enhancement using WSGIProgressive Enhancement using WSGI
Progressive Enhancement using WSGI
 
Creating a RESTful api without losing too much sleep
Creating a RESTful api without losing too much sleepCreating a RESTful api without losing too much sleep
Creating a RESTful api without losing too much sleep
 
Documenting APIs: Sample Code and More (with many pictures of cats)
Documenting APIs: Sample Code and More (with many pictures of cats)Documenting APIs: Sample Code and More (with many pictures of cats)
Documenting APIs: Sample Code and More (with many pictures of cats)
 
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
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile apps
 
Library in their pocket
Library in their pocketLibrary in their pocket
Library in their pocket
 
Microservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell MonsterMicroservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell Monster
 

Dernier

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
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...Drew Madelung
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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 WorkerThousandEyes
 

Dernier (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
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...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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
 

Why APIs Suck

  • 1. Familiarity Breeds Contempt Or why all APIs suck. Even yours. Stephen Darlington @sdarlington / @wandlesoftware www.wandlesoftware.com / www.zx81.org.uk
  • 3. After using the Twitter API By Makuahine Pa'i Ki'i
  • 4. After using your API By VFW Kids
  • 5. After using your API By Lara604
  • 6. What is an API? • “An application programming interface, or API, is the set of symbols that are exported and available to the users of a library to write their application.” (The Little Manual of API Design) • “The design of the APIs is arguably the most critical part of designing the library”
  • 7. What is an API? • An interface used to communicate with people – Web service API – A reusable Cocoa component – List of functions in a header file • “Other people” includes the “future you”
  • 8. It’s easy to be a critic “In many ways, the work of a critic is easy. We risk very little, yet enjoy a position over those who offer up their work and their selves to our judgment. We thrive on negative criticism, which is fun to write and to read.” Anton Ego, Food critic, Ratatouille
  • 9. Using it • Documentation • Complete • Error handling
  • 10. Using it – example • Adding a bookmark in Delicious.com • https://api.delicious.com/v1/posts/add – url – description – extended – tags – shared
  • 11. Using it – example • Error – “Something went wrong” • OK – “done” • But: – URL might have changed – Huge GET request
  • 12. Using it • Documentation • Complete • Error handling • Mobile considerations
  • 13. Using it – example 2 • Syncing Delicious.com bookmarks • https://api.delicious.com/v1/posts/all – hashes= • https://api.delicious.com/v1/posts/get – meta=yes – hashes=
  • 14. Using it – example 2 • You have to download all the “hashes” – How many? – How big? • “hashes” means different things in different commands • Very long GET request • Undocumented parameters
  • 15. Changing it • Documentation • Versions • Compatibility • Notice period
  • 16. Let’s try to be positive… • Don’t think “what’s the easiest way of making all this data public?” – Consider use-cases of clients • Give it a REST – Leave religion to the church. Make it work first • Use your own API – Don’t have “secret” methods – Amazon are a great example
  • 17. Conclusions • Terrible APIs == Terrible Apps • Don’t short-change yourself • Don’t short-change your users
  • 18. Further Reading • “The Little Manual of API Design,” Jasmin Blanchette • “ API Design,” Matt Gemmell
  • 19. More?! • Questions? • Apps and slides at wandlesoftware.com

Notes de l'éditeur

  1. She’s sad, and yet she has a burger, too.
  2. No, but really…
  3. If changing it might cause someone pain, it’s pretty much an API for the purposes of this talk
  4. If changing it might cause someone pain, it’s pretty much an API for the purposes of this talk
  5. Documentation Coming soon. Link to partial. Inadequate to code against No example. Complete Crap syncing Think about your use cases Error handling "something went wrong” (delicious) Facebook API fails when no friends GameCenter mysteriously fails when one user is connected on Simulator rather than a real device
  6. Consistent way of accessing data. Example: when you add a URL, the URL that gets saved is not always the one you send (you’ve mentioned stripping out some of the Google Reader junk; Delicious “helpfully” converts “www.wandlesoftware.com” to “http://www.wandlesoftware.com”). The only way to have the offline copy up-to-date is by doing a complete sync again. Tags is with commas… which they changed without any notice and without changing the rest of the API.
  7. Mobile considerations: Limited memory Limited bandwidth Potentially high latency Unreliable Really bad proxy servers
  8. You need the = after “hashes”
  9. If you want to allow syncing… why not have a “changes since DATE” function? Allow “get all” but in “pages”
  10. Versions Upward compatibility Spaces vs commas use same version Adding new features, but keeping the same version (and not documenting it) Notice period Yahoo ID Twitter oauth
  11. The title of this talk is “Familiarity Breeds Contempt” for a reason. You need to *use* an API to really appreciate it – and almost anything you’ve used you find problems with. That doesn’t mean they’re all bad – it’s a spectrum – but you should aim to be at the right end of the spectrum.
  12. Or at least, apps that are not as good as they could have been. The time I spend battling the API could have been better spent making the UI better or adding more features.