Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Building Apis That Rock

18,909 views

Published on

Published in: Technology
  • Hi there! Get Your Professional Job-Winning Resume Here - Check our website! http://bit.ly/resumpro
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Link to PDF ( keynote presentation export ) of above slide

    http://www.techbracket.net/Building_Apis_That_Rock.pdf

    or

    http://www.scribd.com/doc/16032080/Building-Apis-That-Rock
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • hey Jeff
    I wanted to download this presentation, when i did , it was a ZIP file containing 2 folders 1. _macosx ( you made it on MAC) and 2. building-apis-that-rock.key , It contain many images and PDF , and some folders too.

    I am unable to get, how to open it as presentation and which software should i use. I dont have a MaC. I only have linux and windows. Can you please help me out here .
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Building Apis That Rock

  1. Building APIs That Rock Congratulations: If you’re here, you’re a nerd! Wednesday, March 4, 2009
  2. hi. i’m eaton. • • Voting API eaton@lullabot.com • • Token eaton in #drupal • • Form API twitter.com/eaton • Render API • • @eaton is rambling in the Amazon API #drupalapi presentation. • no puppets yet! Twitter API Wednesday, March 4, 2009
  3. You Have Been Deceived Wednesday, March 4, 2009
  4. You Have Been Deceived Wednesday, March 4, 2009
  5. http://www.flickr.com/photos/diamondduste/1918745208/ Wednesday, March 4, 2009
  6. Drupal, 2004 http://www.flickr.com/photos/diamondduste/1918745208/ Wednesday, March 4, 2009
  7. http://www.flickr.com/photos/ejpphoto/2314610838/ Wednesday, March 4, 2009
  8. Drupal, 2009 http://www.flickr.com/photos/ejpphoto/2314610838/ Wednesday, March 4, 2009
  9. http://www.flickr.com/photos/jphilipson/582274247/ Wednesday, March 4, 2009
  10. Your Module http://www.flickr.com/photos/jphilipson/582274247/ Wednesday, March 4, 2009
  11. What is an API? (Hint: If it’s got comments, it’s fair game) Wednesday, March 4, 2009
  12. http://www.flickr.com/photos/noahwesley/120499365/ Wednesday, March 4, 2009
  13. This is your code. http://www.flickr.com/photos/noahwesley/120499365/ Wednesday, March 4, 2009
  14. This is your code. Can other devs use it? http://www.flickr.com/photos/noahwesley/120499365/ Wednesday, March 4, 2009
  15. http://www.flickr.com/photos/splorp/126523012/ Wednesday, March 4, 2009
  16. An interface to reusable features http://www.flickr.com/photos/splorp/126523012/ Wednesday, March 4, 2009
  17. An Features! Ponies! interface to reusable features http://www.flickr.com/photos/splorp/126523012/ Wednesday, March 4, 2009
  18. Your API An Features! Ponies! interface to reusable features http://www.flickr.com/photos/splorp/126523012/ Wednesday, March 4, 2009
  19. Your UI Your API An Features! Ponies! interface to reusable features http://www.flickr.com/photos/splorp/126523012/ Wednesday, March 4, 2009
  20. Your UI Code! Your API An Features! Ponies! interface to reusable features http://www.flickr.com/photos/splorp/126523012/ Wednesday, March 4, 2009
  21. Wednesday, March 4, 2009
  22. An abstraction that hides complexity Wednesday, March 4, 2009
  23. http://www.flickr.com/photos/mikereys/2643220264/ Wednesday, March 4, 2009
  24. An agreement about how things are done http://www.flickr.com/photos/mikereys/2643220264/ Wednesday, March 4, 2009
  25. Gentlemen! A Recap! Wednesday, March 4, 2009
  26. Gentlemen! A Recap! • Drupal is complicated Wednesday, March 4, 2009
  27. Gentlemen! A Recap! • Drupal is complicated • APIs let other code use your features Wednesday, March 4, 2009
  28. Gentlemen! A Recap! • Drupal is complicated • APIs let other code use your features • APIs hide complexity Wednesday, March 4, 2009
  29. Gentlemen! A Recap! • Drupal is complicated • APIs let other code use your features • APIs hide complexity • APIs get everyone on the same page Wednesday, March 4, 2009
  30. Screw this. Let’s make an API. http://www.flickr.com/photos/djou/2908514697/ Wednesday, March 4, 2009
  31. When two modules love each other very much The real story of how one API came to be Wednesday, March 4, 2009
  32. Wednesday, March 4, 2009
  33. VotingAPI 0.1 “This module looks cool, but that one works better…” Wednesday, March 4, 2009
  34. Wednesday, March 4, 2009
  35. Find the nouns! Wednesday, March 4, 2009
  36. Find the nouns! Wednesday, March 4, 2009
  37. Find the nouns! They’re your data! Wednesday, March 4, 2009
  38. Find the nouns! They’re your data! Find the verbs! Wednesday, March 4, 2009
  39. Find the nouns! They’re your data! Find the verbs! Wednesday, March 4, 2009
  40. Find the nouns! They’re your data! Find the verbs! They’re your functions! Wednesday, March 4, 2009
  41. Step 2: Evolution! Are the verbs and nouns flexible enough? Wednesday, March 4, 2009
  42. Wednesday, March 4, 2009
  43. Step 3: Planning Ahead Letting other modules do the unanticipated Wednesday, March 4, 2009
  44. Wednesday, March 4, 2009
  45. Wednesday, March 4, 2009
  46. Wednesday, March 4, 2009
  47. Wednesday, March 4, 2009
  48. Wednesday, March 4, 2009
  49. Wednesday, March 4, 2009
  50. SCREW YOU, MISTER API DESIGNER GUY http://www.flickr.com/photos/jayd/3296037643 Wednesday, March 4, 2009
  51. http://www.flickr.com/photos/jayd/3296037643 Wednesday, March 4, 2009
  52. What happens when someone adds a new type? http://www.flickr.com/photos/jayd/3296037643 Wednesday, March 4, 2009
  53. What happens when someone adds a new type? What happens when another person does? http://www.flickr.com/photos/jayd/3296037643 Wednesday, March 4, 2009
  54. What happens when someone adds a new type? What happens when another person does? Use enums for lists that won’t change. http://www.flickr.com/photos/jayd/3296037643 Wednesday, March 4, 2009
  55. What happens when someone adds a new type? What happens when another person does? Use enums for lists that won’t change. Use strings for stuff you can’t predict http://www.flickr.com/photos/jayd/3296037643 Wednesday, March 4, 2009
  56. Boldly going where no module has gone before Wednesday, March 4, 2009
  57. Boldly going where no module has gone before (planning ahead) Wednesday, March 4, 2009
  58. Remember the verbs? Wednesday, March 4, 2009
  59. Remember the verbs? Are you doing things other modules care about? Wednesday, March 4, 2009
  60. Remember the verbs? Are you doing things other modules care about? Wednesday, March 4, 2009
  61. Remember the verbs? Are you doing things other modules care about? Wednesday, March 4, 2009
  62. Remember the verbs? Are you doing things other modules care about? module_invoke_all() It’s like party invitations for code Wednesday, March 4, 2009
  63. Remember the nouns? Wednesday, March 4, 2009
  64. Remember the nouns? Are you building data other modules want to change? Wednesday, March 4, 2009
  65. Remember the nouns? Are you building data other modules want to change? Wednesday, March 4, 2009
  66. Remember the nouns? Are you building data other modules want to change? Wednesday, March 4, 2009
  67. Remember the nouns? Are you building data other modules want to change? drupal_alter() It’s like passing around the doobie of data Wednesday, March 4, 2009
  68. Is your name Adrian? Wednesday, March 4, 2009
  69. Is your name Adrian? Perhaps Earl? Wednesday, March 4, 2009
  70. Is your name Adrian? Perhaps Earl? Wednesday, March 4, 2009
  71. Is your name Adrian? Perhaps Earl? Wednesday, March 4, 2009
  72. Is your name Adrian? Perhaps Earl? Wednesday, March 4, 2009
  73. Is your name Adrian? Perhaps Earl? Wednesday, March 4, 2009
  74. Is your name Adrian? Perhaps Earl? Wednesday, March 4, 2009
  75. Is your name Adrian? Perhaps Earl? Custom data structures Build it, let modules alter it, then do stuff with it. Wednesday, March 4, 2009
  76. Stop! Hammertime! Wednesday, March 4, 2009
  77. Stop! Hammertime! • Identify verbs and nouns Wednesday, March 4, 2009
  78. Stop! Hammertime! • Identify verbs and nouns • Layer your verbs to hide complexity Wednesday, March 4, 2009
  79. Stop! Hammertime! • Identify verbs and nouns • Layer your verbs to hide complexity • Account for new uses Wednesday, March 4, 2009
  80. Stop! Hammertime! • Identify verbs and nouns • Layer your verbs to hide complexity • Account for new uses • Broadcast events via hooks Wednesday, March 4, 2009
  81. Stop! Hammertime! • Identify verbs and nouns • Layer your verbs to hide complexity • Account for new uses • Broadcast events via hooks • Let modules alter data Wednesday, March 4, 2009
  82. http://www.flickr.com/photos/tonyjcase/2847943252/ Wednesday, March 4, 2009
  83. The Seven Deadly Sins http://www.flickr.com/photos/tonyjcase/2847943252/ Wednesday, March 4, 2009
  84. The Lone Ranger Wednesday, March 4, 2009
  85. The Lone Ranger • Reinventing the wheel Wednesday, March 4, 2009
  86. The Lone Ranger • Reinventing the wheel • Ignoring conventions Wednesday, March 4, 2009
  87. The Lone Ranger • Reinventing the wheel • Ignoring conventions • Ignoring related APIs! Wednesday, March 4, 2009
  88. The Lone Ranger • Reinventing the wheel • Ignoring conventions • Ignoring related APIs! • Common for newcomers, or obsessives Wednesday, March 4, 2009
  89. Invisible Assumptions Wednesday, March 4, 2009
  90. Invisible Assumptions • Assuming the global $user Wednesday, March 4, 2009
  91. Invisible Assumptions • Assuming the global $user • Checking arg(0)… Wednesday, March 4, 2009
  92. Invisible Assumptions • Assuming the global $user • Checking arg(0)… • Assuming logged in users… Wednesday, March 4, 2009
  93. Invisible Assumptions • Assuming the global $user • Checking arg(0)… • Assuming logged in users… • Common with UI-bound APIs Wednesday, March 4, 2009
  94. Helping them to death Wednesday, March 4, 2009
  95. Helping them to death • “I’ll set the breadcrumb while I’m at it...” Wednesday, March 4, 2009
  96. Helping them to death • “I’ll set the breadcrumb while I’m at it...” • “And I’ll send an email, too!” Wednesday, March 4, 2009
  97. Helping them to death • “I’ll set the breadcrumb while I’m at it...” • “And I’ll send an email, too!” • “And add these links, and…” Wednesday, March 4, 2009
  98. Helping them to death • “I’ll set the breadcrumb while I’m at it...” • “And I’ll send an email, too!” • “And add these links, and…” • Common when an API grows out of a specific use case, or an existing module Wednesday, March 4, 2009
  99. Leaky Abstraction Wednesday, March 4, 2009
  100. Leaky Abstraction • “Just use this function…” Wednesday, March 4, 2009
  101. Leaky Abstraction • “Just use this function…” • ...And learn everything underneath it. Wednesday, March 4, 2009
  102. Leaky Abstraction • “Just use this function…” • ...And learn everything underneath it. • Common in complex problem domains Wednesday, March 4, 2009
  103. Leaky Abstraction • “Just use this function…” • ...And learn everything underneath it. • Common in complex problem domains • Simplify, or get out of the way Wednesday, March 4, 2009
  104. Leaky Abstraction • “Just use this function…” • ...And learn everything underneath it. • Common in complex problem domains • Simplify, or get out of the way • Sometimes, problems are just complicated. Wednesday, March 4, 2009
  105. Fake Flexibility Wednesday, March 4, 2009
  106. Fake Flexibility • “Oh, you can save any data…” (votingapi) Wednesday, March 4, 2009
  107. Fake Flexibility • “Oh, you can save any data…” (votingapi) • “Oh, there’s a hook for that…” (blogapi) Wednesday, March 4, 2009
  108. Fake Flexibility • “Oh, you can save any data…” (votingapi) • “Oh, there’s a hook for that…” (blogapi) • Build 3 test implementations Wednesday, March 4, 2009
  109. Fake Flexibility • “Oh, you can save any data…” (votingapi) • “Oh, there’s a hook for that…” (blogapi) • Build 3 test implementations • Step through different use cases Wednesday, March 4, 2009
  110. Mission Creep Wednesday, March 4, 2009
  111. Mission Creep • Even worse than feature creep Wednesday, March 4, 2009
  112. Mission Creep • Even worse than feature creep • Common with “solve-a-big-problem” APIs Wednesday, March 4, 2009
  113. Mission Creep • Even worse than feature creep • Common with “solve-a-big-problem” APIs • Focus, focus, focus. Wednesday, March 4, 2009
  114. Mission Creep • Even worse than feature creep • Common with “solve-a-big-problem” APIs • Focus, focus, focus. • Split into complementary APIs Wednesday, March 4, 2009
  115. Dependency Soup Wednesday, March 4, 2009
  116. Dependency Soup • The flip side of mission creep Wednesday, March 4, 2009
  117. Dependency Soup • The flip side of mission creep • Focus, focus, focus! Wednesday, March 4, 2009
  118. Dependency Soup • The flip side of mission creep • Focus, focus, focus! • Make the dependencies optional Wednesday, March 4, 2009
  119. Dependency Soup • The flip side of mission creep • Focus, focus, focus! • Make the dependencies optional • Pray for a package manager Wednesday, March 4, 2009
  120. Oh, the Recappery! Wednesday, March 4, 2009
  121. Oh, the Recappery! • Cooperate Wednesday, March 4, 2009
  122. Oh, the Recappery! • Cooperate • Don’t assume too much Wednesday, March 4, 2009
  123. Oh, the Recappery! • Cooperate • Don’t assume too much • Don’t be pushy Wednesday, March 4, 2009
  124. Oh, the Recappery! • Cooperate • Don’t assume too much • Don’t be pushy • Simplify or step aside Wednesday, March 4, 2009
  125. Oh, the Recappery! • Cooperate • Don’t assume too much • Don’t be pushy • Simplify or step aside • Test your extensions Wednesday, March 4, 2009
  126. Oh, the Recappery! • Cooperate • Don’t assume too much • Don’t be pushy • Simplify or step aside • Test your extensions • Stay focused Wednesday, March 4, 2009
  127. http://www.flickr.com/photos/-sel-/60124578/ Wednesday, March 4, 2009
  128. What? That’s it? http://www.flickr.com/photos/-sel-/60124578/ Wednesday, March 4, 2009
  129. Thanks, flickr! • • http://www.flickr.com/photos/mikereys http://www.flickr.com/photos/jayd • • http://www.flickr.com/photos/splorp http://www.flickr.com/photos/djou • • http://www.flickr.com/photos/ http://www.flickr.com/photos/-sel- noahwesley • http://www.flickr.com/photos/ • http://www.flickr.com/photos/tonyjcase diamondduste • • http://www.flickr.com/photos/ejpphoto http://www.flickr.com/photos/jphilipson Wednesday, March 4, 2009

×