SlideShare uma empresa Scribd logo
1 de 106
Stop Building It From Scratch
Creating Reusable eLearning Components
presented by Chad Udell and Mark Tovey at DevLearn ’09
November 12th, 2009
Introduction
Introduction

• Who we are
Introduction

• Who we are


• Where do we work
Introduction

• Who we are


• Where do we work


• What do we do
Purpose
Purpose

• Who is this presentation best suited for?
Purpose

• Who is this presentation best suited for?


• What will you learn?
Purpose

• Who is this presentation best suited for?


• What will you learn?


• How can you implement it immediately?
A show of hands
A show of hands

• Who has rebuilt a feature more than
  2-3 times?
A show of hands

• Who has rebuilt a feature more than
  2-3 times?


• Who has a library of snippets they
  refer to?
A show of hands

• Who has rebuilt a feature more than
  2-3 times?


• Who has a library of snippets they
  refer to?


• Who has used an API before?
A show of hands

• Who has rebuilt a feature more than
  2-3 times?


• Who has a library of snippets they
  refer to?


• Who has used an API before?


• Who has created their own API?
Some observations
Some observations
Some observations

• Everyone keeps a folder or two around on
  their PC/Mac for their “best of” examples
  and code reuse
Some observations

• Everyone keeps a folder or two around on
  their PC/Mac for their “best of” examples
  and code reuse


• APIs are used a lot in other areas, almost
  never in eLearning (barring SCORM, of
  course)
Some observations

• Everyone keeps a folder or two around on
  their PC/Mac for their “best of” examples
  and code reuse


• APIs are used a lot in other areas, almost
  never in eLearning (barring SCORM, of
  course)


• Version Control is used in other areas,
  too, almost never in eLearning
Key Differences between APIs and Libraries
Key Differences between APIs and Libraries
Key Differences between APIs and Libraries

                                       • APIs are by definition, basically
• A code “library” is always in flux.
                                         stable.
• Libraries may vary from developer • With an API, everyone shares the
  to developer                        same base
• Libraries may have collisions        • APIs are designed from a holistic
  between snippets                       view

• Documentation? ha!                   • Documentation is key!
Key Differences between APIs and Libraries

                                       • APIs are by definition, basically
• A code “library” is always in flux.
                                         stable.
• Libraries may vary from developer • With an API, everyone shares the
  to developer                        same base
• Libraries may have collisions        • APIs are designed from a holistic
  between snippets                       view

• Documentation? ha!                   • Documentation is key!
Key Differences between APIs and Libraries

                                       • APIs are by definition, basically
• A code “library” is always in flux.
                                         stable.
• Libraries may vary from developer • With an API, everyone shares the
  to developer                        same base
• Libraries may have collisions        • APIs are designed from a holistic
  between snippets                       view

• Documentation? ha!                   • Documentation is key!
Key Differences between APIs and Libraries

                                       • APIs are by definition, basically
• A code “library” is always in flux.
                                         stable.
• Libraries may vary from developer • With an API, everyone shares the
  to developer                        same base
• Libraries may have collisions        • APIs are designed from a holistic
  between snippets                       view

• Documentation? ha!                   • Documentation is key!
Key Differences between APIs and Libraries

                                       • APIs are by definition, basically
• A code “library” is always in flux.
                                         stable.
• Libraries may vary from developer • With an API, everyone shares the
  to developer                        same base
• Libraries may have collisions        • APIs are designed from a holistic
  between snippets                       view

• Documentation? ha!                   • Documentation is key!
Key Differences between APIs and Libraries

                                       • APIs are by definition, basically
• A code “library” is always in flux.
                                         stable.
• Libraries may vary from developer • With an API, everyone shares the
  to developer                        same base
• Libraries may have collisions        • APIs are designed from a holistic
  between snippets                       view

• Documentation? ha!                   • Documentation is key!
Key Differences between APIs and Libraries

                                       • APIs are by definition, basically
• A code “library” is always in flux.
                                         stable.
• Libraries may vary from developer • With an API, everyone shares the
  to developer                        same base
• Libraries may have collisions        • APIs are designed from a holistic
  between snippets                       view

• Documentation? ha!                   • Documentation is key!
Key Differences between APIs and Libraries

                                       • APIs are by definition, basically
• A code “library” is always in flux.
                                         stable.
• Libraries may vary from developer • With an API, everyone shares the
  to developer                        same base
• Libraries may have collisions        • APIs are designed from a holistic
  between snippets                       view

• Documentation? ha!                   • Documentation is key!
The problem with libraries.
The problem with libraries.

• It’s impossible to establish coding
  conventions
The problem with libraries.

• It’s impossible to establish coding
  conventions

• Copy and Paste syndrome
The problem with libraries.

• It’s impossible to establish coding
  conventions

• Copy and Paste syndrome

• Single source saves time
The problem with libraries.

• It’s impossible to establish coding
  conventions

• Copy and Paste syndrome

• Single source saves time

• Bugs recur
The problem with libraries.

• It’s impossible to establish coding
  conventions

• Copy and Paste syndrome

• Single source saves time

• Bugs recur

• Teamwork is tough
What advantages does an API provide?
What advantages does an API provide?
What advantages does an API provide?

• Common, share-able code base (methods,
  properties, events)
What advantages does an API provide?

• Common, share-able code base (methods,
  properties, events)


• Extend as you need
What advantages does an API provide?

• Common, share-able code base (methods,
  properties, events)


• Extend as you need


• Proven effectiveness/Productivity
What advantages does an API provide?

• Common, share-able code base (methods,
  properties, events)


• Extend as you need


• Proven effectiveness/Productivity


• Company Risk Management & Intellectual
  Property Protection
We need something better: Version Control
We need something better: Version Control

• Revision History and Committing
  to a safe source.
We need something better: Version Control

• Revision History and Committing
  to a safe source.

• Needed for quality
We need something better: Version Control

• Revision History and Committing
  to a safe source.

• Needed for quality

• Needed to help transition from a
  library to an API
What does version control provide?
What does version control provide?
What does version control provide?




                             SVN=!OMG.
What does version control provide?

• Risk Management




                             SVN=!OMG.
What does version control provide?

• Risk Management

• Forks




                             SVN=!OMG.
What does version control provide?

• Risk Management

• Forks

• Team Collaboration

                             SVN=!OMG.
What does version control provide?

• Risk Management

• Forks

• Team Collaboration

• Ease of deployment         SVN=!OMG.
How can I get started?
How can I get started?
How can I get started?

• Make a list of common things you and your users routinely do.

  • LMS Connections

  • Bookmarking

  • Scenarios

  • Quizzes

  • L10N
Now what?
Now what?
Now what?

• Make a list of things you have done in the past that were painful

  • Getting content into/out of your LCMS

  • Sharing media pieces through the course

  • Integrating non-standard media

  • Exporting for multiple formats

  • Non-Linear/Non-Standard Navigation
Survey the landscape... What’s Flickr doing?
Survey the landscape... What’s Flickr doing?

• Or Twitter for that matter?
Survey the landscape... What’s Flickr doing?

• Or Twitter for that matter?


• Take a quick look at some developer sites like programmableweb.com
  to see APIs you may want to emulate.
Survey the landscape... What’s Flickr doing?

• Or Twitter for that matter?


• Take a quick look at some developer sites like programmableweb.com
  to see APIs you may want to emulate.
Key Tenets
Key Tenets

• There are a number of overarching
  principles you should adhere to.


• This isn’t meant to be dogmatic or
  inflexible, but merely a path to success
The Basics
The Basics

• Keep your users in mind!
The Basics

• Keep your users in mind!

• Once you deploy it, it’s tough to change it.
The Basics

• Keep your users in mind!

• Once you deploy it, it’s tough to change it.

• It can’t have everything in it!
The Basics

• Keep your users in mind!

• Once you deploy it, it’s tough to change it.

• It can’t have everything in it!

• It should be easy to learn, hard to abandon.
The Basics

• Keep your users in mind!

• Once you deploy it, it’s tough to change it.

• It can’t have everything in it!

• It should be easy to learn, hard to abandon.

• People should see value in it immediately.
Some Rules of Thumb

• Keep it small

• Methods, Properties and Events

  • Can’t have a decent API with out all 3

• Don’t use abbreviations for functions or
  variables

  • It should be apparent what is going on
    without reading the docs.
Samples: Some Rules of Thumb

• Example of Getter/Setter


• Code sample with abbreviation vs. code without.
Key Concept: Predictability

• Users shouldn’t be surprised by return
  values.


• Users should be able to chain methods


• Users should be able to call/access all
  methods/events at all times.
Samples: Predictability

• Code Sample - Non Surprising return value


• Code Sample - Chaining methods


• Code sample - flexible calling/returning
Key Concept: Supporting Ease of
Development

• A broader acceptance brings success

• Uniform data input/output is easier

  • Arrays vs. Vectors – Using 0 vs. null

• Provide meaningful errors

  • Compile time errors are better than runtime
Samples: Ease of Development

• Code Sample on input/output


• Code Sample on Compile time error vs Runtime error
That’s a lot... how do I do this?

• It’s probably not practical on your own.


• Focus on the end goal


• Start with a solid code base... OOP helps.


• The best tool to start with: A notepad.
On your own

• Re-familiarize yourself with your library.


  • Catalog the best examples.


  • Throw the rest out.
During Development: Agility
During Development: Agility
During Development: Agility

• Start small, build the best you can!
During Development: Agility

• Start small, build the best you can!


• Have a core set of methods you
  can chain to do something great,
  then grow.
During Development: Agility

• Start small, build the best you can!


• Have a core set of methods you
  can chain to do something great,
  then grow.


• Don’t throw in the kitchen sink!
During Development: Starting Simple
During Development: Starting Simple




                               Core
During Development: Starting Simple
•Core
  •Should be focused on your key pain
  point(s)
  •Should have a clear ROI in mind


                                        Core
During Development: Starting Simple
•Core
  •Should be focused on your key pain
  point(s)
  •Should have a clear ROI in mind


                                        Data   Core
During Development: Starting Simple
•Core
  •Should be focused on your key pain
  point(s)
  •Should have a clear ROI in mind
•Data
  •Integrate with a CMS/XML/
  etc.
  •Work with translators, etc           Data   Core
During Development: Starting Simple
•Core
  •Should be focused on your key pain
  point(s)
  •Should have a clear ROI in mind
•Data
  •Integrate with a CMS/XML/
  etc.
  •Work with translators, etc           Data   Core   Behavior
During Development: Starting Simple
•Core
  •Should be focused on your key pain
  point(s)
  •Should have a clear ROI in mind
•Data
  •Integrate with a CMS/XML/
  etc.
  •Work with translators, etc           Data   Core   Behavior
•Behavior
  •Ease Development in a larger team
  •Expand rich media use/capabilties
Post development: Deploying
Post development: Deploying

• Don’t circulate beyond friends
  until it’s ready
Post development: Deploying

• Don’t circulate beyond friends
  until it’s ready


• Compilation, Obfuscation and
  Minifying
Post development: Deploying

• Don’t circulate beyond friends
  until it’s ready


• Compilation, Obfuscation and
  Minifying


• Hosting the API (Amazon,
  Sourceforge, etc)
Post development: Deploying

• Don’t circulate beyond friends
  until it’s ready


• Compilation, Obfuscation and
  Minifying


• Hosting the API (Amazon,
  Sourceforge, etc)
Post development: Deploying



                              Robot Picture
Post development: Deploying

• Building Installers, SWC, MXP, etc.


                                        Robot Picture
Post development: Deploying

• Building Installers, SWC, MXP, etc.


• http://blog.flashgen.com/
  components/distribution/              Robot Picture
  distribution-via-mxp/
Post development: Deploying

• Building Installers, SWC, MXP, etc.


• http://blog.flashgen.com/
  components/distribution/              Robot Picture
  distribution-via-mxp/


• Creating Docs (ASDocs, JSDocs,
  JavaDocs)
Post development: Deploying

• Building Installers, SWC, MXP, etc.


• http://blog.flashgen.com/
  components/distribution/              Robot Picture
  distribution-via-mxp/


• Creating Docs (ASDocs, JSDocs,
  JavaDocs)


• Automating Builds
Post development: Deploying

• Building Installers, SWC, MXP, etc.


• http://blog.flashgen.com/
  components/distribution/              Robot Picture
  distribution-via-mxp/


• Creating Docs (ASDocs, JSDocs,
  JavaDocs)


• Automating Builds
• Building an API is tough work, but VERY
  rewarding
• Building an API is tough work, but VERY
  rewarding


• For more information check out the sites
  listed in the handout, downloadable at
  the DevLearn Site.
• Building an API is tough work, but VERY
  rewarding


• For more information check out the sites
  listed in the handout, downloadable at
  the DevLearn Site.


• Contact us: chadu@ionagroup.com,
  mtovey@ionagroup.com

Mais conteúdo relacionado

Mais procurados

Facilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-CFacilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-CAaron Taylor
 
Chains process 7 stages powerpoint slides ppt templates
Chains process 7 stages powerpoint slides ppt templatesChains process 7 stages powerpoint slides ppt templates
Chains process 7 stages powerpoint slides ppt templatesSlideTeam.net
 
Enlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitEnlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitSamsung Open Source Group
 
Multilingual Content: Presentation from DrupalCamp Montreal 2012
Multilingual Content: Presentation from DrupalCamp Montreal 2012Multilingual Content: Presentation from DrupalCamp Montreal 2012
Multilingual Content: Presentation from DrupalCamp Montreal 2012Suzanne Dergacheva
 
Multilingual Site Building with Drupal 7 at Drupal Camp NYC 10
Multilingual Site Building with Drupal 7 at Drupal Camp NYC 10Multilingual Site Building with Drupal 7 at Drupal Camp NYC 10
Multilingual Site Building with Drupal 7 at Drupal Camp NYC 10Suzanne Dergacheva
 
The Future of Cross-Platform is Native
The Future of Cross-Platform is NativeThe Future of Cross-Platform is Native
The Future of Cross-Platform is NativeJustin Mancinelli
 
Library, Library Lets Use THAT Library – DFW Mobile
Library, Library Lets Use THAT Library  – DFW MobileLibrary, Library Lets Use THAT Library  – DFW Mobile
Library, Library Lets Use THAT Library – DFW MobileAdam Hill
 
Links of chains pieces weakest links process 11 stages powerpoint diagrams an...
Links of chains pieces weakest links process 11 stages powerpoint diagrams an...Links of chains pieces weakest links process 11 stages powerpoint diagrams an...
Links of chains pieces weakest links process 11 stages powerpoint diagrams an...SlideTeam.net
 
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Andy Maleh
 

Mais procurados (9)

Facilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-CFacilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-C
 
Chains process 7 stages powerpoint slides ppt templates
Chains process 7 stages powerpoint slides ppt templatesChains process 7 stages powerpoint slides ppt templates
Chains process 7 stages powerpoint slides ppt templates
 
Enlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitEnlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & Toolkit
 
Multilingual Content: Presentation from DrupalCamp Montreal 2012
Multilingual Content: Presentation from DrupalCamp Montreal 2012Multilingual Content: Presentation from DrupalCamp Montreal 2012
Multilingual Content: Presentation from DrupalCamp Montreal 2012
 
Multilingual Site Building with Drupal 7 at Drupal Camp NYC 10
Multilingual Site Building with Drupal 7 at Drupal Camp NYC 10Multilingual Site Building with Drupal 7 at Drupal Camp NYC 10
Multilingual Site Building with Drupal 7 at Drupal Camp NYC 10
 
The Future of Cross-Platform is Native
The Future of Cross-Platform is NativeThe Future of Cross-Platform is Native
The Future of Cross-Platform is Native
 
Library, Library Lets Use THAT Library – DFW Mobile
Library, Library Lets Use THAT Library  – DFW MobileLibrary, Library Lets Use THAT Library  – DFW Mobile
Library, Library Lets Use THAT Library – DFW Mobile
 
Links of chains pieces weakest links process 11 stages powerpoint diagrams an...
Links of chains pieces weakest links process 11 stages powerpoint diagrams an...Links of chains pieces weakest links process 11 stages powerpoint diagrams an...
Links of chains pieces weakest links process 11 stages powerpoint diagrams an...
 
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
 

Semelhante a Stop Building It From Scratch: Creating Reusable eLearning Components

Portable Class Library Deep Dive
Portable Class Library Deep DivePortable Class Library Deep Dive
Portable Class Library Deep DiveJames Montemagno
 
Lipstick on a Pig: Integrated Library Systems
Lipstick on a Pig: Integrated Library SystemsLipstick on a Pig: Integrated Library Systems
Lipstick on a Pig: Integrated Library SystemsDorothea Salo
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swaggerTony Tam
 
BP-8 Global Federation and Search
BP-8 Global Federation and SearchBP-8 Global Federation and Search
BP-8 Global Federation and SearchAlfresco Software
 
Welcome to New Swift: Library Evolution & LSP Support
Welcome to New Swift: Library Evolution & LSP SupportWelcome to New Swift: Library Evolution & LSP Support
Welcome to New Swift: Library Evolution & LSP SupportG ABHISEK
 
Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Codersebbe
 
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
 
Native App Development for iOS, Android, and Windows with Visual Studio
Native App Development for iOS, Android, and Windows with Visual StudioNative App Development for iOS, Android, and Windows with Visual Studio
Native App Development for iOS, Android, and Windows with Visual StudioXamarin
 
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
 
Csun presentation-170302-hykim
Csun presentation-170302-hykimCsun presentation-170302-hykim
Csun presentation-170302-hykimhyunyoung kim
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's ArchitectureTony Tam
 
Revamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetupRevamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetupMailjet
 
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
 
PLAT-5 Jive, Dropbox & Other Integrations
PLAT-5 Jive, Dropbox & Other IntegrationsPLAT-5 Jive, Dropbox & Other Integrations
PLAT-5 Jive, Dropbox & Other IntegrationsAlfresco Software
 
DevOps Friendly Doc Publishing for APIs & Microservices
DevOps Friendly Doc Publishing for APIs & MicroservicesDevOps Friendly Doc Publishing for APIs & Microservices
DevOps Friendly Doc Publishing for APIs & MicroservicesSonatype
 
Software Engineering Thailand: Programming with Scala
Software Engineering Thailand: Programming with ScalaSoftware Engineering Thailand: Programming with Scala
Software Engineering Thailand: Programming with ScalaBrian Topping
 
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...InfluxData
 
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataUsing the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataInfluxData
 
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...CloudBees
 
JSR 335 / java 8 - update reference
JSR 335 / java 8 - update referenceJSR 335 / java 8 - update reference
JSR 335 / java 8 - update referencesandeepji_choudhary
 

Semelhante a Stop Building It From Scratch: Creating Reusable eLearning Components (20)

Portable Class Library Deep Dive
Portable Class Library Deep DivePortable Class Library Deep Dive
Portable Class Library Deep Dive
 
Lipstick on a Pig: Integrated Library Systems
Lipstick on a Pig: Integrated Library SystemsLipstick on a Pig: Integrated Library Systems
Lipstick on a Pig: Integrated Library Systems
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
 
BP-8 Global Federation and Search
BP-8 Global Federation and SearchBP-8 Global Federation and Search
BP-8 Global Federation and Search
 
Welcome to New Swift: Library Evolution & LSP Support
Welcome to New Swift: Library Evolution & LSP SupportWelcome to New Swift: Library Evolution & LSP Support
Welcome to New Swift: Library Evolution & LSP Support
 
Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Code
 
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
 
Native App Development for iOS, Android, and Windows with Visual Studio
Native App Development for iOS, Android, and Windows with Visual StudioNative App Development for iOS, Android, and Windows with Visual Studio
Native App Development for iOS, Android, and Windows with Visual Studio
 
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?
 
Csun presentation-170302-hykim
Csun presentation-170302-hykimCsun presentation-170302-hykim
Csun presentation-170302-hykim
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
 
Revamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetupRevamping Mailjet API documentation @ ParisAPI meetup
Revamping Mailjet API documentation @ ParisAPI meetup
 
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?
 
PLAT-5 Jive, Dropbox & Other Integrations
PLAT-5 Jive, Dropbox & Other IntegrationsPLAT-5 Jive, Dropbox & Other Integrations
PLAT-5 Jive, Dropbox & Other Integrations
 
DevOps Friendly Doc Publishing for APIs & Microservices
DevOps Friendly Doc Publishing for APIs & MicroservicesDevOps Friendly Doc Publishing for APIs & Microservices
DevOps Friendly Doc Publishing for APIs & Microservices
 
Software Engineering Thailand: Programming with Scala
Software Engineering Thailand: Programming with ScalaSoftware Engineering Thailand: Programming with Scala
Software Engineering Thailand: Programming with Scala
 
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
 
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataUsing the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
 
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
 
JSR 335 / java 8 - update reference
JSR 335 / java 8 - update referenceJSR 335 / java 8 - update reference
JSR 335 / java 8 - update reference
 

Mais de Chad Udell

DevLearn 2018 - Designing AR Experiences for Performance Support
DevLearn 2018 -  Designing AR Experiences for Performance SupportDevLearn 2018 -  Designing AR Experiences for Performance Support
DevLearn 2018 - Designing AR Experiences for Performance SupportChad Udell
 
ATD - Western Michigan September Meeting
ATD - Western Michigan September MeetingATD - Western Michigan September Meeting
ATD - Western Michigan September MeetingChad Udell
 
Atd 2015 - Mastering Mobile Learning
Atd 2015 - Mastering Mobile LearningAtd 2015 - Mastering Mobile Learning
Atd 2015 - Mastering Mobile LearningChad Udell
 
Leveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Leveraging Devices to Create Amazing Mobile Learning - TK2014 ResultsLeveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Leveraging Devices to Create Amazing Mobile Learning - TK2014 ResultsChad Udell
 
Mlearning Unraveled - With Poll Results
Mlearning Unraveled - With Poll ResultsMlearning Unraveled - With Poll Results
Mlearning Unraveled - With Poll ResultsChad Udell
 
Tappestry Demo
Tappestry DemoTappestry Demo
Tappestry DemoChad Udell
 
Whats Next for Mobile Learning
Whats Next for Mobile LearningWhats Next for Mobile Learning
Whats Next for Mobile LearningChad Udell
 
There Is No Easy Button
There Is No Easy ButtonThere Is No Easy Button
There Is No Easy ButtonChad Udell
 
Learning Tracking Out of the LMS and Embracing Learning Analytics
Learning Tracking Out of the LMS and Embracing Learning AnalyticsLearning Tracking Out of the LMS and Embracing Learning Analytics
Learning Tracking Out of the LMS and Embracing Learning AnalyticsChad Udell
 
The Leadership Challenge - mLearnCon
The Leadership Challenge - mLearnConThe Leadership Challenge - mLearnCon
The Leadership Challenge - mLearnConChad Udell
 
Design concepts for Mobile Learnng
Design concepts for Mobile LearnngDesign concepts for Mobile Learnng
Design concepts for Mobile LearnngChad Udell
 
ASTD St. Louis Presentation - July 28th
ASTD St. Louis Presentation - July 28thASTD St. Louis Presentation - July 28th
ASTD St. Louis Presentation - July 28thChad Udell
 
Is Mobile For Me? What Skills Do I Need?
Is Mobile For Me? What Skills Do I Need?Is Mobile For Me? What Skills Do I Need?
Is Mobile For Me? What Skills Do I Need?Chad Udell
 
How to Convert Your eLearning to Mobile
How to Convert Your eLearning to MobileHow to Convert Your eLearning to Mobile
How to Convert Your eLearning to MobileChad Udell
 
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...Chad Udell
 
Comparing the Four Main Mobile OSes
Comparing the Four Main Mobile OSesComparing the Four Main Mobile OSes
Comparing the Four Main Mobile OSesChad Udell
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitChad Udell
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitChad Udell
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitChad Udell
 

Mais de Chad Udell (20)

DevLearn 2018 - Designing AR Experiences for Performance Support
DevLearn 2018 -  Designing AR Experiences for Performance SupportDevLearn 2018 -  Designing AR Experiences for Performance Support
DevLearn 2018 - Designing AR Experiences for Performance Support
 
ATD - Western Michigan September Meeting
ATD - Western Michigan September MeetingATD - Western Michigan September Meeting
ATD - Western Michigan September Meeting
 
Atd 2015 - Mastering Mobile Learning
Atd 2015 - Mastering Mobile LearningAtd 2015 - Mastering Mobile Learning
Atd 2015 - Mastering Mobile Learning
 
Leveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Leveraging Devices to Create Amazing Mobile Learning - TK2014 ResultsLeveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Leveraging Devices to Create Amazing Mobile Learning - TK2014 Results
 
Mlearning Unraveled - With Poll Results
Mlearning Unraveled - With Poll ResultsMlearning Unraveled - With Poll Results
Mlearning Unraveled - With Poll Results
 
Tappestry Demo
Tappestry DemoTappestry Demo
Tappestry Demo
 
Prototyping
PrototypingPrototyping
Prototyping
 
Whats Next for Mobile Learning
Whats Next for Mobile LearningWhats Next for Mobile Learning
Whats Next for Mobile Learning
 
There Is No Easy Button
There Is No Easy ButtonThere Is No Easy Button
There Is No Easy Button
 
Learning Tracking Out of the LMS and Embracing Learning Analytics
Learning Tracking Out of the LMS and Embracing Learning AnalyticsLearning Tracking Out of the LMS and Embracing Learning Analytics
Learning Tracking Out of the LMS and Embracing Learning Analytics
 
The Leadership Challenge - mLearnCon
The Leadership Challenge - mLearnConThe Leadership Challenge - mLearnCon
The Leadership Challenge - mLearnCon
 
Design concepts for Mobile Learnng
Design concepts for Mobile LearnngDesign concepts for Mobile Learnng
Design concepts for Mobile Learnng
 
ASTD St. Louis Presentation - July 28th
ASTD St. Louis Presentation - July 28thASTD St. Louis Presentation - July 28th
ASTD St. Louis Presentation - July 28th
 
Is Mobile For Me? What Skills Do I Need?
Is Mobile For Me? What Skills Do I Need?Is Mobile For Me? What Skills Do I Need?
Is Mobile For Me? What Skills Do I Need?
 
How to Convert Your eLearning to Mobile
How to Convert Your eLearning to MobileHow to Convert Your eLearning to Mobile
How to Convert Your eLearning to Mobile
 
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
 
Comparing the Four Main Mobile OSes
Comparing the Four Main Mobile OSesComparing the Four Main Mobile OSes
Comparing the Four Main Mobile OSes
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and Profit
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and Profit
 

Último

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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 2024The Digital Insurer
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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 DevelopmentsTrustArc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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 educationjfdjdjcjdnsjd
 
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 TerraformAndrey Devyatkin
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
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 Takeoffsammart93
 
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...Neo4j
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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
 
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...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Stop Building It From Scratch: Creating Reusable eLearning Components

  • 1. Stop Building It From Scratch Creating Reusable eLearning Components presented by Chad Udell and Mark Tovey at DevLearn ’09 November 12th, 2009
  • 4. Introduction • Who we are • Where do we work
  • 5. Introduction • Who we are • Where do we work • What do we do
  • 7. Purpose • Who is this presentation best suited for?
  • 8. Purpose • Who is this presentation best suited for? • What will you learn?
  • 9. Purpose • Who is this presentation best suited for? • What will you learn? • How can you implement it immediately?
  • 10. A show of hands
  • 11. A show of hands • Who has rebuilt a feature more than 2-3 times?
  • 12. A show of hands • Who has rebuilt a feature more than 2-3 times? • Who has a library of snippets they refer to?
  • 13. A show of hands • Who has rebuilt a feature more than 2-3 times? • Who has a library of snippets they refer to? • Who has used an API before?
  • 14. A show of hands • Who has rebuilt a feature more than 2-3 times? • Who has a library of snippets they refer to? • Who has used an API before? • Who has created their own API?
  • 17. Some observations • Everyone keeps a folder or two around on their PC/Mac for their “best of” examples and code reuse
  • 18. Some observations • Everyone keeps a folder or two around on their PC/Mac for their “best of” examples and code reuse • APIs are used a lot in other areas, almost never in eLearning (barring SCORM, of course)
  • 19. Some observations • Everyone keeps a folder or two around on their PC/Mac for their “best of” examples and code reuse • APIs are used a lot in other areas, almost never in eLearning (barring SCORM, of course) • Version Control is used in other areas, too, almost never in eLearning
  • 20. Key Differences between APIs and Libraries
  • 21. Key Differences between APIs and Libraries
  • 22. Key Differences between APIs and Libraries • APIs are by definition, basically • A code “library” is always in flux. stable. • Libraries may vary from developer • With an API, everyone shares the to developer same base • Libraries may have collisions • APIs are designed from a holistic between snippets view • Documentation? ha! • Documentation is key!
  • 23. Key Differences between APIs and Libraries • APIs are by definition, basically • A code “library” is always in flux. stable. • Libraries may vary from developer • With an API, everyone shares the to developer same base • Libraries may have collisions • APIs are designed from a holistic between snippets view • Documentation? ha! • Documentation is key!
  • 24. Key Differences between APIs and Libraries • APIs are by definition, basically • A code “library” is always in flux. stable. • Libraries may vary from developer • With an API, everyone shares the to developer same base • Libraries may have collisions • APIs are designed from a holistic between snippets view • Documentation? ha! • Documentation is key!
  • 25. Key Differences between APIs and Libraries • APIs are by definition, basically • A code “library” is always in flux. stable. • Libraries may vary from developer • With an API, everyone shares the to developer same base • Libraries may have collisions • APIs are designed from a holistic between snippets view • Documentation? ha! • Documentation is key!
  • 26. Key Differences between APIs and Libraries • APIs are by definition, basically • A code “library” is always in flux. stable. • Libraries may vary from developer • With an API, everyone shares the to developer same base • Libraries may have collisions • APIs are designed from a holistic between snippets view • Documentation? ha! • Documentation is key!
  • 27. Key Differences between APIs and Libraries • APIs are by definition, basically • A code “library” is always in flux. stable. • Libraries may vary from developer • With an API, everyone shares the to developer same base • Libraries may have collisions • APIs are designed from a holistic between snippets view • Documentation? ha! • Documentation is key!
  • 28. Key Differences between APIs and Libraries • APIs are by definition, basically • A code “library” is always in flux. stable. • Libraries may vary from developer • With an API, everyone shares the to developer same base • Libraries may have collisions • APIs are designed from a holistic between snippets view • Documentation? ha! • Documentation is key!
  • 29. Key Differences between APIs and Libraries • APIs are by definition, basically • A code “library” is always in flux. stable. • Libraries may vary from developer • With an API, everyone shares the to developer same base • Libraries may have collisions • APIs are designed from a holistic between snippets view • Documentation? ha! • Documentation is key!
  • 30. The problem with libraries.
  • 31. The problem with libraries. • It’s impossible to establish coding conventions
  • 32. The problem with libraries. • It’s impossible to establish coding conventions • Copy and Paste syndrome
  • 33. The problem with libraries. • It’s impossible to establish coding conventions • Copy and Paste syndrome • Single source saves time
  • 34. The problem with libraries. • It’s impossible to establish coding conventions • Copy and Paste syndrome • Single source saves time • Bugs recur
  • 35. The problem with libraries. • It’s impossible to establish coding conventions • Copy and Paste syndrome • Single source saves time • Bugs recur • Teamwork is tough
  • 36. What advantages does an API provide?
  • 37. What advantages does an API provide?
  • 38. What advantages does an API provide? • Common, share-able code base (methods, properties, events)
  • 39. What advantages does an API provide? • Common, share-able code base (methods, properties, events) • Extend as you need
  • 40. What advantages does an API provide? • Common, share-able code base (methods, properties, events) • Extend as you need • Proven effectiveness/Productivity
  • 41. What advantages does an API provide? • Common, share-able code base (methods, properties, events) • Extend as you need • Proven effectiveness/Productivity • Company Risk Management & Intellectual Property Protection
  • 42. We need something better: Version Control
  • 43. We need something better: Version Control • Revision History and Committing to a safe source.
  • 44. We need something better: Version Control • Revision History and Committing to a safe source. • Needed for quality
  • 45. We need something better: Version Control • Revision History and Committing to a safe source. • Needed for quality • Needed to help transition from a library to an API
  • 46. What does version control provide?
  • 47. What does version control provide?
  • 48. What does version control provide? SVN=!OMG.
  • 49. What does version control provide? • Risk Management SVN=!OMG.
  • 50. What does version control provide? • Risk Management • Forks SVN=!OMG.
  • 51. What does version control provide? • Risk Management • Forks • Team Collaboration SVN=!OMG.
  • 52. What does version control provide? • Risk Management • Forks • Team Collaboration • Ease of deployment SVN=!OMG.
  • 53. How can I get started?
  • 54. How can I get started?
  • 55. How can I get started? • Make a list of common things you and your users routinely do. • LMS Connections • Bookmarking • Scenarios • Quizzes • L10N
  • 58. Now what? • Make a list of things you have done in the past that were painful • Getting content into/out of your LCMS • Sharing media pieces through the course • Integrating non-standard media • Exporting for multiple formats • Non-Linear/Non-Standard Navigation
  • 59. Survey the landscape... What’s Flickr doing?
  • 60. Survey the landscape... What’s Flickr doing? • Or Twitter for that matter?
  • 61. Survey the landscape... What’s Flickr doing? • Or Twitter for that matter? • Take a quick look at some developer sites like programmableweb.com to see APIs you may want to emulate.
  • 62. Survey the landscape... What’s Flickr doing? • Or Twitter for that matter? • Take a quick look at some developer sites like programmableweb.com to see APIs you may want to emulate.
  • 64. Key Tenets • There are a number of overarching principles you should adhere to. • This isn’t meant to be dogmatic or inflexible, but merely a path to success
  • 66. The Basics • Keep your users in mind!
  • 67. The Basics • Keep your users in mind! • Once you deploy it, it’s tough to change it.
  • 68. The Basics • Keep your users in mind! • Once you deploy it, it’s tough to change it. • It can’t have everything in it!
  • 69. The Basics • Keep your users in mind! • Once you deploy it, it’s tough to change it. • It can’t have everything in it! • It should be easy to learn, hard to abandon.
  • 70. The Basics • Keep your users in mind! • Once you deploy it, it’s tough to change it. • It can’t have everything in it! • It should be easy to learn, hard to abandon. • People should see value in it immediately.
  • 71. Some Rules of Thumb • Keep it small • Methods, Properties and Events • Can’t have a decent API with out all 3 • Don’t use abbreviations for functions or variables • It should be apparent what is going on without reading the docs.
  • 72. Samples: Some Rules of Thumb • Example of Getter/Setter • Code sample with abbreviation vs. code without.
  • 73. Key Concept: Predictability • Users shouldn’t be surprised by return values. • Users should be able to chain methods • Users should be able to call/access all methods/events at all times.
  • 74. Samples: Predictability • Code Sample - Non Surprising return value • Code Sample - Chaining methods • Code sample - flexible calling/returning
  • 75. Key Concept: Supporting Ease of Development • A broader acceptance brings success • Uniform data input/output is easier • Arrays vs. Vectors – Using 0 vs. null • Provide meaningful errors • Compile time errors are better than runtime
  • 76. Samples: Ease of Development • Code Sample on input/output • Code Sample on Compile time error vs Runtime error
  • 77. That’s a lot... how do I do this? • It’s probably not practical on your own. • Focus on the end goal • Start with a solid code base... OOP helps. • The best tool to start with: A notepad.
  • 78. On your own • Re-familiarize yourself with your library. • Catalog the best examples. • Throw the rest out.
  • 81. During Development: Agility • Start small, build the best you can!
  • 82. During Development: Agility • Start small, build the best you can! • Have a core set of methods you can chain to do something great, then grow.
  • 83. During Development: Agility • Start small, build the best you can! • Have a core set of methods you can chain to do something great, then grow. • Don’t throw in the kitchen sink!
  • 86. During Development: Starting Simple •Core •Should be focused on your key pain point(s) •Should have a clear ROI in mind Core
  • 87. During Development: Starting Simple •Core •Should be focused on your key pain point(s) •Should have a clear ROI in mind Data Core
  • 88. During Development: Starting Simple •Core •Should be focused on your key pain point(s) •Should have a clear ROI in mind •Data •Integrate with a CMS/XML/ etc. •Work with translators, etc Data Core
  • 89. During Development: Starting Simple •Core •Should be focused on your key pain point(s) •Should have a clear ROI in mind •Data •Integrate with a CMS/XML/ etc. •Work with translators, etc Data Core Behavior
  • 90. During Development: Starting Simple •Core •Should be focused on your key pain point(s) •Should have a clear ROI in mind •Data •Integrate with a CMS/XML/ etc. •Work with translators, etc Data Core Behavior •Behavior •Ease Development in a larger team •Expand rich media use/capabilties
  • 92. Post development: Deploying • Don’t circulate beyond friends until it’s ready
  • 93. Post development: Deploying • Don’t circulate beyond friends until it’s ready • Compilation, Obfuscation and Minifying
  • 94. Post development: Deploying • Don’t circulate beyond friends until it’s ready • Compilation, Obfuscation and Minifying • Hosting the API (Amazon, Sourceforge, etc)
  • 95. Post development: Deploying • Don’t circulate beyond friends until it’s ready • Compilation, Obfuscation and Minifying • Hosting the API (Amazon, Sourceforge, etc)
  • 97. Post development: Deploying • Building Installers, SWC, MXP, etc. Robot Picture
  • 98. Post development: Deploying • Building Installers, SWC, MXP, etc. • http://blog.flashgen.com/ components/distribution/ Robot Picture distribution-via-mxp/
  • 99. Post development: Deploying • Building Installers, SWC, MXP, etc. • http://blog.flashgen.com/ components/distribution/ Robot Picture distribution-via-mxp/ • Creating Docs (ASDocs, JSDocs, JavaDocs)
  • 100. Post development: Deploying • Building Installers, SWC, MXP, etc. • http://blog.flashgen.com/ components/distribution/ Robot Picture distribution-via-mxp/ • Creating Docs (ASDocs, JSDocs, JavaDocs) • Automating Builds
  • 101. Post development: Deploying • Building Installers, SWC, MXP, etc. • http://blog.flashgen.com/ components/distribution/ Robot Picture distribution-via-mxp/ • Creating Docs (ASDocs, JSDocs, JavaDocs) • Automating Builds
  • 102.
  • 103.
  • 104. • Building an API is tough work, but VERY rewarding
  • 105. • Building an API is tough work, but VERY rewarding • For more information check out the sites listed in the handout, downloadable at the DevLearn Site.
  • 106. • Building an API is tough work, but VERY rewarding • For more information check out the sites listed in the handout, downloadable at the DevLearn Site. • Contact us: chadu@ionagroup.com, mtovey@ionagroup.com