SlideShare a Scribd company logo
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

More Related Content

PPTX
Inside Wordnik's Architecture
Tony Tam
 
PPTX
Hateoas APIs are about relationships
Matt Bishop
 
PDF
[GeekTalk#2] Takaaki Mizuno - Api Url Design
Nexus FrontierTech
 
PPTX
Microservices Manchester: Lightning Talk- Actor Based Concurrency by Amy O'Leary
OpenCredo
 
PPTX
Git store
Kirsten Hunter
 
PPTX
Devnest 110301
Angus Fox
 
PDF
Writing Alexa Voice Skills With NodeJS (with a little IoT)
David Janes
 
PPT
API 101 - Understanding APIs.
Kirsten Hunter
 
Inside Wordnik's Architecture
Tony Tam
 
Hateoas APIs are about relationships
Matt Bishop
 
[GeekTalk#2] Takaaki Mizuno - Api Url Design
Nexus FrontierTech
 
Microservices Manchester: Lightning Talk- Actor Based Concurrency by Amy O'Leary
OpenCredo
 
Git store
Kirsten Hunter
 
Devnest 110301
Angus Fox
 
Writing Alexa Voice Skills With NodeJS (with a little IoT)
David Janes
 
API 101 - Understanding APIs.
Kirsten Hunter
 

What's hot (16)

PPT
Book Reader Bingo: Which Page-Turner Should I Use?
ebenenglish
 
PPTX
The tale of 100 cve's
Prajal Kulkarni
 
PDF
Reactive programming
ryanstout
 
PDF
Your First Amazon Alexa Skill
Mike Christianson
 
PPTX
Deploying systems using AWS DevOps tools
MassTLC
 
PDF
Make Your Team Flow
Chad Moone
 
PPTX
Functions.php - It's Not Just For Developers
Eric Mann
 
PPTX
WordCamp Miami 2015 beginner course plugins
South Florida Web Studio
 
PPTX
Workbench: The Developer Tool for Admins
Salesforce Admins
 
PDF
Neotys PAC 2018 - Wilson Mar
Neotys_Partner
 
PDF
API-first World Domination
Joe Sepi
 
PPTX
devworkshop-04_13_2016-ucsdnow-presentation
Alex Wu
 
PDF
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
Jan Jongboom
 
KEY
Birdpie
anupnarkhede
 
PPTX
SharePoint Saturday STL: SharePoint Powershell Admins
Kenneth Maglio
 
PDF
Pain Free Frontend Development
Vanessa Böhner
 
Book Reader Bingo: Which Page-Turner Should I Use?
ebenenglish
 
The tale of 100 cve's
Prajal Kulkarni
 
Reactive programming
ryanstout
 
Your First Amazon Alexa Skill
Mike Christianson
 
Deploying systems using AWS DevOps tools
MassTLC
 
Make Your Team Flow
Chad Moone
 
Functions.php - It's Not Just For Developers
Eric Mann
 
WordCamp Miami 2015 beginner course plugins
South Florida Web Studio
 
Workbench: The Developer Tool for Admins
Salesforce Admins
 
Neotys PAC 2018 - Wilson Mar
Neotys_Partner
 
API-first World Domination
Joe Sepi
 
devworkshop-04_13_2016-ucsdnow-presentation
Alex Wu
 
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
Jan Jongboom
 
Birdpie
anupnarkhede
 
SharePoint Saturday STL: SharePoint Powershell Admins
Kenneth Maglio
 
Pain Free Frontend Development
Vanessa Böhner
 
Ad

Viewers also liked (18)

PPTX
Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...
Confluence Conference
 
PDF
Cet u boji
Zarko89
 
PPSX
El justo no se asusta
Luis Alberto Jiménez Manrique
 
PPTX
Back 2 Business - Digital & Social
Phil Buckley
 
PPTX
Search, Social & Online Reputation Management for Professional Service Providers
Phil Buckley
 
PPT
Patrick allmond - “The Rise & Relevance of Internet TV”
Confluence Conference
 
PDF
Uu 32 2009 pplh
Agus Fattah Riadi
 
PDF
Phantom of the opera music of the night
jef_spalla
 
PPTX
Casepedagogik
Teresa Sörö
 
PPTX
Evolve or Die: Healthcare IT Testing | QASymphony Webinar
QASymphony
 
PDF
Permen lh-no-05-th-2013-tentang-pedoman-adiwiyata
Agus Fattah Riadi
 
PPTX
An introduction to internal auditing
grifff
 
PDF
Репутация №1 в социальных сетях: стать первыми и лучшими
AGIMA
 
PDF
Test driven development vs Behavior driven development
Gallop Solutions
 
PPTX
Streamlining Automation Scripts and Test Data Management
QASymphony
 
PDF
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Phil Calçado
 
PPTX
Local Link Building Tips, Tools, and Tactics
Mike Ramsey
 
PDF
Wingify Culture Values
VWO
 
Purna Virji - “Remarketing in Paid Search: 8 Proven Segments to Maximize Your...
Confluence Conference
 
Cet u boji
Zarko89
 
El justo no se asusta
Luis Alberto Jiménez Manrique
 
Back 2 Business - Digital & Social
Phil Buckley
 
Search, Social & Online Reputation Management for Professional Service Providers
Phil Buckley
 
Patrick allmond - “The Rise & Relevance of Internet TV”
Confluence Conference
 
Uu 32 2009 pplh
Agus Fattah Riadi
 
Phantom of the opera music of the night
jef_spalla
 
Casepedagogik
Teresa Sörö
 
Evolve or Die: Healthcare IT Testing | QASymphony Webinar
QASymphony
 
Permen lh-no-05-th-2013-tentang-pedoman-adiwiyata
Agus Fattah Riadi
 
An introduction to internal auditing
grifff
 
Репутация №1 в социальных сетях: стать первыми и лучшими
AGIMA
 
Test driven development vs Behavior driven development
Gallop Solutions
 
Streamlining Automation Scripts and Test Data Management
QASymphony
 
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Phil Calçado
 
Local Link Building Tips, Tools, and Tactics
Mike Ramsey
 
Wingify Culture Values
VWO
 
Ad

Similar to Familiarity Breeds Contempt (Or why all APIs suck, even yours.) (20)

PDF
Guide To API Development – Cost, Importance, Types, Tools, Terminology, and B...
Techugo
 
PPTX
Building a REST API for Longevity
MuleSoft
 
PDF
How to Develop APIs - Importance, Types, Tools, Terminology, and Best Practic...
Techugo Inc
 
PDF
Guide To API Development.pdf
Techugo
 
PDF
Approaching APIs
Ross Singer
 
PDF
Api Design Patterns Meap V07 Meap V07 Jj Geewax
mohellrakes
 
PDF
API Best Practices
EmmanuelParaskakis1
 
PDF
API Introduction - API Management Workshop Munich from Ronnie Mitra
CA API Management
 
DOCX
API.docx
RichwellIanAfrica
 
PPTX
API workshop: Introduction to APIs (TC Camp)
Tom Johnson
 
PDF
Создание API, которое полюбят разработчики. Глубокое погружение
SQALab
 
PDF
Web REST APIs Design Principles
Anji Beeravalli
 
PDF
A_Complete_Guide_to_API_Development.pdf
PamRobert
 
PPTX
Your API is not a Website!
Apigee | Google Cloud
 
PDF
APIs: The Building Blocks of the Future
BBDO
 
PDF
Consumer centric api design v0.4.0
mustafa sarac
 
ODP
Designing Good API & Its Importance
Imran M Yousuf
 
PDF
Practical guide to building public APIs
Reda Hmeid MBCS
 
PDF
Using an API
Adam Culp
 
PDF
JOSA TechTalks - RESTful API Concepts and Best Practices
Jordan Open Source Association
 
Guide To API Development – Cost, Importance, Types, Tools, Terminology, and B...
Techugo
 
Building a REST API for Longevity
MuleSoft
 
How to Develop APIs - Importance, Types, Tools, Terminology, and Best Practic...
Techugo Inc
 
Guide To API Development.pdf
Techugo
 
Approaching APIs
Ross Singer
 
Api Design Patterns Meap V07 Meap V07 Jj Geewax
mohellrakes
 
API Best Practices
EmmanuelParaskakis1
 
API Introduction - API Management Workshop Munich from Ronnie Mitra
CA API Management
 
API workshop: Introduction to APIs (TC Camp)
Tom Johnson
 
Создание API, которое полюбят разработчики. Глубокое погружение
SQALab
 
Web REST APIs Design Principles
Anji Beeravalli
 
A_Complete_Guide_to_API_Development.pdf
PamRobert
 
Your API is not a Website!
Apigee | Google Cloud
 
APIs: The Building Blocks of the Future
BBDO
 
Consumer centric api design v0.4.0
mustafa sarac
 
Designing Good API & Its Importance
Imran M Yousuf
 
Practical guide to building public APIs
Reda Hmeid MBCS
 
Using an API
Adam Culp
 
JOSA TechTalks - RESTful API Concepts and Best Practices
Jordan Open Source Association
 

Recently uploaded (20)

PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Doc9.....................................
SofiaCollazos
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
The Future of Artificial Intelligence (AI)
Mukul
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 

Familiarity Breeds Contempt (Or why all APIs suck, even yours.)

  • 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

Editor's Notes

  • #4: She’s sad, and yet she has a burger, too.
  • #6: No, but really…
  • #7: If changing it might cause someone pain, it’s pretty much an API for the purposes of this talk
  • #8: If changing it might cause someone pain, it’s pretty much an API for the purposes of this talk
  • #10: 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
  • #12: 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.
  • #13: Mobile considerations: Limited memory Limited bandwidth Potentially high latency Unreliable Really bad proxy servers
  • #14: You need the = after “hashes”
  • #15: If you want to allow syncing… why not have a “changes since DATE” function? Allow “get all” but in “pages”
  • #16: 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
  • #17: 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.
  • #18: 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.