SlideShare a Scribd company logo
1 of 173
Y! Local mobile case study
    Gonzalo Cordero
       @goonieiam
AGENDA


• Intro, demo   & design principles

• Deconstruction    of a hybrid application

• Conclusion
VS
WHEN TO USE NATIVE
WHEN TO USE NATIVE

• Anything   that needs to access the device’s hardware
WHEN TO USE NATIVE

• Anything   that needs to access the device’s hardware

• You   can put it on the app store
WHEN TO USE NATIVE

• Anything       that needs to access the device’s hardware

• You   can put it on the app store

• That’s   it*
WHEN TO USE NATIVE

 • Anything       that needs to access the device’s hardware

 • You   can put it on the app store

 • That’s   it*




*We’ll cover a few gotchas later in the presentation
FOR EVERYTHING ELSE
FOR EVERYTHING ELSE
• You   are familiar with the technologies
FOR EVERYTHING ELSE
• You   are familiar with the technologies

• Write   once and use everywhere
FOR EVERYTHING ELSE
• You   are familiar with the technologies

• Write   once and use everywhere

• You   decide when/how to update
Hybrid - Best of both
       worlds?
*NATIVE


We ended up using it more than we
            wanted
WHY?
WHY?


• Paying   that beginners price?
WHY?


• Paying   that beginners price?

• Some “web” features    not reliable enough
WHY?


• Paying   that beginners price?

• Some “web” features    not reliable enough

• Some “web” features    were not available at the time
NATIVE*
NATIVE*

Geo
NATIVE*

       Geo


Navigation Controls
NATIVE*

       Geo


Navigation Controls



     Storage
WEB
WEB

All content
WEB

  All content




All interactions
YUI3 MOBILE EXAMPLE
YUI3 MOBILE EXAMPLE
pulldown event
YUI3 MOBILE EXAMPLE
pulldown event   ScrollView module
YUI3 MOBILE EXAMPLE
pulldown event   ScrollView module   touch-events + CSS3
TECHNOLOGIES
TECHNOLOGIES
TECHNOLOGIES
TECHNOLOGIES
TECHNOLOGIES
TECHNOLOGIES



               ????
“There is no mobile web,
just the web” - Stephen Hay
YUI().USE(“ALL”)
      “Use”
One           statement to rule them all
YUI.USE(“...”)
YUI.USE(“...”)


Loader
YUI.USE(“...”)


Loader
Events
YUI.USE(“...”)


    Loader
     Events
Y.Lang.Substitute
YUI.USE(“...”)


    Loader             Transitions

     Events
Y.Lang.Substitute
YUI.USE(“...”)


    Loader              Transitions

     Events           App Framework

Y.Lang.Substitute
1. Load & Delivery
App delivery through
      app store
Pack light or pack
   for a month?
WHAT TO PACK, WHAT TO
            PACK


• Base   core files(including YUI)

• Anything   that doesn’t change frequently or is static
Load the data pieces
      on demand
YUI().USE(“LOADER”)
YUI().USE(“LOADER”)
   Feature based loading
YUI().USE(“LOADER”)
   Feature based loading


   Dependency calculation
YUI().USE(“LOADER”)
   Feature based loading


   Dependency calculation


   On demand loading
YUI().USE(“LOADER”)
   Feature based loading


   Dependency calculation


   On demand loading


   Manual or Automatic
CACHING THE ASSETS


• We  cached all the assets once we downloaded the
 first time

• Using   native storage
How about HTML5
   Manifest?
Probably but...
HTML5 MANIFEST
HTML5 MANIFEST

• At
   the time we saw some inconsistencies with
 how the data persisted in memory
HTML5 MANIFEST

• At
   the time we saw some inconsistencies with
 how the data persisted in memory

• Flushing   the cache wasn’t reliable either
CACHING THE DATA
CACHING THE DATA


      JSON
CACHING THE DATA


       JSON

  Y.Lang.Substitute
CACHING THE DATA


       JSON

  Y.Lang.Substitute
2. Navigating around
NAVIGATION CONTROLS
NAVIGATION CONTROLS


• All   the navigation is done natively
NAVIGATION CONTROLS


• All   the navigation is done natively

• Logic   & visual aspects not available at the time
NAVIGATION CONTROLS


• All   the navigation is done natively

• Logic   & visual aspects not available at the time

• Some     major drawbacks
NAVIGATION
NAVIGATION

      position: fixed wasn’t
       working properly
           at the time.
NAVIGATION

        position: fixed wasn’t
         working properly
             at the time.




     Navigation logic was easier
       to implement natively
NATIVE NAVIGATION
NATIVE NAVIGATION
1. Load the view
NATIVE NAVIGATION
1. Load the view
NATIVE NAVIGATION
1. Load the view
NATIVE NAVIGATION
1. Load the view

2. While loading, disable
navigation controls
NATIVE NAVIGATION
1. Load the view

2. While loading, disable
navigation controls
NATIVE NAVIGATION
1. Load the view

2. While loading, disable
navigation controls
3. Send articles information
to native
NATIVE NAVIGATION
1. Load the view

2. While loading, disable
navigation controls
3. Send articles information
to native
NATIVE NAVIGATION
NATIVE NAVIGATION


• Loading   more data than we needed
NATIVE NAVIGATION


• Loading   more data than we needed

• Race   conditions
NATIVE NAVIGATION


• Loading   more data than we needed

• Race   conditions

• Several   bridge calls
If I were to build it
      today...
A BETTER SOLUTION

Transitions   App Framework
YUI().USE(“APP”)
            route
YUI().USE(“APP”)
              route




       Home
YUI().USE(“APP”)
              route




              Saved
       Home
              Items
YUI().USE(“APP”)
              route




              Saved
       Home           Settings
              Items
YUI().USE(“TRANSITION”)
YUI().USE(“TRANSITION”)
YUI().USE(“TRANSITION”)

Y.one('#homeView').transition({
    width: {
        duration: 0.5,
        easing: 'ease-out',
        value: 0
    }
}, function() {
    showNextView();
});
YUI().USE(“TRANSITION”)

Y.one('#homeView').transition({
    width: {
        duration: 0.5,
        easing: 'ease-out',
        value: 0
    }
}, function() {
    showNextView();
});
BENEFITS

• Logic   and content from the same stack

• No   race conditions between native + web

• Reusability   & maintainability
3. Reacting to gestures
YUI().USE(“GESTURES”)
YUI.USE(“EVENT-FLICK”)

movieCarousel.on("flick", onMovieFlick, {
// only notify me if the flick covered
// more than 20px and was faster than 0.8px/ms
    minDistance:20,
    minVelocity:0.8,
    axis : “x”
});

function onMovieFlick (e) {
   //Go to the next movie
}
YUI().USE(“EVENT-MOVE”)



• Itprovides a set of synthetic events to detect
  gestures

• gesturemovestart, gesturemove, gesturemoveend.
movieCarousel.delegate("gesturemovestart", function(e) {

    var item = e.currentTarget,
        swipeEnd,
        isSwipeLeft,
        swipeStart;

    item.setData("swipeStart", e.pageX);
    item.once("gesturemoveend", function(e) {

        swipeStart = item.getData("swipeStart");
        swipeEnd = e.pageX;
        isSwipeLeft = (swipeStart - swipeEnd) >
MIN_SWIPE;

          if (isSwipeLeft) {
              //Go to the previous movie
          } else {
             //Go to the next movie
          }
    });
YUI().USE(“SCROLLVIEW”)
YUI().USE(“SCROLLVIEW”)
YUI().USE(“SCROLLVIEW”)



• Provides   scrollable content for touch enabled devices.

• Two   plugins: ScrollViewScrollbars & ScrollViewPaginator
HOW TO?

        <ul id=”movies”>
            <li>
                 <img src=”movie.jpeg”
alt=”somemovie”>
            </li>
        </ul>
YUI({...}).use("scrollview", function(Y){

 var scrollview = new Y.ScrollView({
         srcNode:"#movies",
         flick : {minVelocity:0.8},
         deceleration : 0.98,
         bounce: 0.1,
         width:"20em"
 });

});
4. Offline & save modes
OFFLINE


• Two distinctions: Offline mode & Save articles to
 read later

• In   both cases we are using native storage
OFFLINE MODE
Used to display the most recent data in case
             of no connectivity
OFFLINE MODE
Used to display the most recent data in case
             of no connectivity

             Data(native storage)
OFFLINE MODE
Used to display the most recent data in case
             of no connectivity

             Data(native storage)
OFFLINE MODE
Used to display the most recent data in case
             of no connectivity

             Data(native storage)




             Y.Lang.Substitute (for
                  templating)
OFFLINE MODE
Used to display the most recent data in case
             of no connectivity

              Data from Local
             Data(native storage)
                   storage




             Y.Lang.Substitute (for
                  templating)
OFFLINE(SAVE)
OFFLINE(SAVE)

Core files(Already cached)
OFFLINE(SAVE)

Core files(Already cached)


      Content
OFFLINE(SAVE)

       Core files(Already cached)


             Content

HTML
OFFLINE(SAVE)

       Core files(Already cached)


             Content

HTML    CSS
OFFLINE(SAVE)

       Core files(Already cached)


             Content

HTML    CSS            JS
OFFLINE(SAVE)

       Core files(Already cached)


             Content

HTML    CSS            JS          Media
SO...


• Ifyou need to store big files + media: Use
  native storage

• Otherwise   store JSON in localStorage & use
  templates
5. The bridge
THE BRIDGE


Two way communication between Native & Web
NATIVE->WEB
NATIVE->WEB
NATIVE->WEB
NATIVE->WEB
NATIVE -> WEB


• Call   directly into JS

• Using Y.Env    to expose global method

• Use Y.applyTo    to call into specific function
WEB -> NATIVE



• By   navigating to a local host/protocol

• You   can use : window.location or XHR
WINDOW.LOCATION
WINDOW.LOCATION
On your JS:

 window.location = myProtocol://performAction?param=foo
WINDOW.LOCATION
On your JS:

 window.location = myProtocol://performAction?param=foo

On your native code:

if([[request.URL scheme] isEqualToString:@"myProtocol"])
{
  //Parse the request, perform an action
}
else {
   return TRUE; //Navigate
}
XHR


• Cross   domain policies restrictions

• Works    if the content is loaded locally

• Can   send a response back
General best practices
var true = TRUE;

Everything you’ve learned
      still applies
- Keep your JS small
- Keep your JS small
- Don’t touch the DOM. Keep it
Small
- Keep your JS small
- Don’t touch the DOM. Keep it
Small
- Every byte counts as “double” in
mobile
Reduce your http requests:
Reduce your http requests:
- Pre-pack as much as you can.
Reduce your http requests:
- Pre-pack as much as you can.
- Use data URI for small images.
Reduce your http requests:
- Pre-pack as much as you can.
- Use data URI for small images.
- Use cached templates to load similar
views.
Perceived performance:
Give constant UI feedback
Shrink your images
Take advantage of the
       shinny:
Take advantage of the
       shinny:
- Imageless designs(CSS3)
Take advantage of the
       shinny:
- Imageless designs(CSS3)
- Hardware acceleration (don’t abuse
it)
Take advantage of the
       shinny:
- Imageless designs(CSS3)
- Hardware acceleration (don’t abuse
it)
- Use new semantic HTML5 elements
One more thing...
Got a cool idea? Build it!

http://yuilibrary.com/gallery/
FINAL THOUGHTS



• YUI3is well suited for both Hybrid and
 Mobile web apps.

• Everything   you need is already available
YUI.USE(“RESOURCES”)


• http://davidbcalhoun.com/2011/mobile-performance-manifesto

• http://www.yuiblog.com/blog/2011/01/17/video-yuiconf2010-
 desai/

• http://www.slideshare.net/nzakas/mobile-web-speed-bumps
YUI().USE(“THANK YOU”)

          @goonieiam


        http://yuilibrary.com
    http://yuilibrary.com/theater/

More Related Content

Similar to Creating Hybrid mobile apps with YUI

iPhone Appleless Apps
iPhone Appleless AppsiPhone Appleless Apps
iPhone Appleless AppsRemy Sharp
 
The Inclusive Web: hands-on with HTML5 and jQuery
The Inclusive Web: hands-on with HTML5 and jQueryThe Inclusive Web: hands-on with HTML5 and jQuery
The Inclusive Web: hands-on with HTML5 and jQuerycolinbdclark
 
Fake it 'til you make it
Fake it 'til you make itFake it 'til you make it
Fake it 'til you make itJonathan Snook
 
Advanced #6 clean architecture
Advanced #6  clean architectureAdvanced #6  clean architecture
Advanced #6 clean architectureVitali Pekelis
 
Django Deployment with Fabric
Django Deployment with FabricDjango Deployment with Fabric
Django Deployment with FabricJonas Nockert
 
HTML5 on Mobile
HTML5 on MobileHTML5 on Mobile
HTML5 on MobileAdam Lu
 
Hosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceHosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceQuinlan Jung
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
Developing Mobile HTML5 Apps with Grails
Developing Mobile HTML5 Apps with GrailsDeveloping Mobile HTML5 Apps with Grails
Developing Mobile HTML5 Apps with GrailsGR8Conf
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java binOlve Hansen
 
Solving Problems with YUI3: AutoComplete
Solving Problems with YUI3: AutoCompleteSolving Problems with YUI3: AutoComplete
Solving Problems with YUI3: AutoCompleteIsaacSchlueter
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Esri Nederland
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentationasync_io
 
Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Brian LeRoux
 
From YUI3 to K2
From YUI3 to K2From YUI3 to K2
From YUI3 to K2kaven yan
 

Similar to Creating Hybrid mobile apps with YUI (20)

iPhone Appleless Apps
iPhone Appleless AppsiPhone Appleless Apps
iPhone Appleless Apps
 
The Inclusive Web: hands-on with HTML5 and jQuery
The Inclusive Web: hands-on with HTML5 and jQueryThe Inclusive Web: hands-on with HTML5 and jQuery
The Inclusive Web: hands-on with HTML5 and jQuery
 
HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
 
Fake it 'til you make it
Fake it 'til you make itFake it 'til you make it
Fake it 'til you make it
 
Txjs
TxjsTxjs
Txjs
 
Advanced #6 clean architecture
Advanced #6  clean architectureAdvanced #6  clean architecture
Advanced #6 clean architecture
 
Django Deployment with Fabric
Django Deployment with FabricDjango Deployment with Fabric
Django Deployment with Fabric
 
HTML5 on Mobile
HTML5 on MobileHTML5 on Mobile
HTML5 on Mobile
 
Hosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceHosting Your Own OTA Update Service
Hosting Your Own OTA Update Service
 
Titanium Alloy Tutorial
Titanium Alloy TutorialTitanium Alloy Tutorial
Titanium Alloy Tutorial
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
Web app
Web appWeb app
Web app
 
Web app
Web appWeb app
Web app
 
Developing Mobile HTML5 Apps with Grails
Developing Mobile HTML5 Apps with GrailsDeveloping Mobile HTML5 Apps with Grails
Developing Mobile HTML5 Apps with Grails
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Solving Problems with YUI3: AutoComplete
Solving Problems with YUI3: AutoCompleteSolving Problems with YUI3: AutoComplete
Solving Problems with YUI3: AutoComplete
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
 
Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Palm Developer Day PhoneGap
Palm Developer Day PhoneGap
 
From YUI3 to K2
From YUI3 to K2From YUI3 to K2
From YUI3 to K2
 

Recently uploaded

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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
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
 
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
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 

Recently uploaded (20)

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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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
 
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...
 
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
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
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 ...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
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
 

Creating Hybrid mobile apps with YUI

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n