Ambient-Oriented Dataflow Programming for        Mobile RFID-Enabled ApplicationsAndoni Lombide CarretonPromotor: Prof. Dr....
RoadmapPart I: Mobile RFID-Enabled ApplicationsPart II: Ambient-Oriented Programming for Mobile RFID-Enabled ApplicationsP...
Part I: Mobile RFID-Enabled Applications                                           3
RFID Technology                  0 cm ~ 10 m                  0 Kb ~ 32 Kb                  0.02$ ~ 0.50$                 ...
Mobile RFID-Enabled Applications                                   5
6
6
6
7
7
7
7
Event-based Decoupling and Inversion of Control       (register-connection-callback         (lambda (tagged-object)       ...
Event-based Decoupling and Inversion of Control       (register-connection-callback         (lambda (tagged-object)       ...
Event-based Decoupling and Inversion of Control         Shared state                        ?                            (...
Event-based Decoupling and Inversion of Control         Shared state                        ?                            (...
Event-based Decoupling and Inversion of Control         Shared state                        ?                            (...
Event-based Decoupling and Inversion of Control         Shared state                      ? in space                 Decou...
RFID-tagged Things as Objects            book.addReview(“Good book”);            println(book.getReviews());              ...
RFID-tagged Things as Objects              1. Addressing physical objects              2. Storing application-specific data...
RFID-tagged Things as Objects              1. Addressing physical objects              2. Storing application-specific data...
RFID-tagged Things as Objects              1. Addressing physical objects              2. Storing application-specific data...
RFID-tagged Things as Objects              1. Addressing physical objects              2. Storing application-specific data...
RFID-tagged Things as Objects              1. Addressing physical objects              2. Storing application-specific data...
RFID-tagged Things as Objects              1. Addressing physical objects              2. Storing application-specific data...
Survey of Related Work   Publish/subscribe        systems Reactive programming   Explicit dataflow    programming Node-cent...
Survey of Related Work   Publish/subscribe        systems                   Publish/subscribe Reactive programming     +  ...
Part II: Ambient-Oriented Programming for MobileRFID-Enabled Applications                                                 ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
RFID in AmbientTalk                                RFID event loop                      Hardware Abstraction Layer        ...
Things: Proxies for Tagsdeftype Book;def aBook := thing: {  def isbn := 123;  def title := “My book”;  def reviews := Vect...
Things: Proxies for Tagsdeftype Book;def aBook := thing: {  def isbn := 123;  def title := “My book”;  def reviews := Vect...
Storing Objects on RFID Tags                               tag           aBook                                            ...
Storing Objects on RFID Tags                               tag           aBook                                            ...
Storing Objects on RFID Tags                               tag           aBook                                            ...
Storing Objects on RFID Tags                               tag           aBook                           bookRe           ...
Reactivity to Appearing and Disappearing Things                                                RFID event loopwhenever: Bo...
Reactivity to Appearing and Disappearing Things                                                RFID event loopwhenever: Bo...
Reactivity to Appearing and Disappearing Things                                                RFID event loopwhenever: Bo...
Reactivity to Appearing and Disappearing Things                                                RFID event loopwhenever: Bo...
Asynchronous and Fault-tolerant Communication with Things                                                   RFID event loo...
Asynchronous and Fault-tolerant Communication with Things                                                   RFID event loo...
Asynchronous and Fault-tolerant Communication with Things                                                   RFID event loo...
Asynchronous and Fault-tolerant Communication with Things                                                   RFID event loo...
Asynchronous and Fault-tolerant Communication with Things                                                   RFID event loo...
Asynchronous and Fault-tolerant Communication with Things                                                   RFID event loo...
Asynchronous and Fault-tolerant Communication with Things                                                   RFID event loo...
Benchmarks             18
Benchmarks             18
Summary    1. Addressing physical objects    2. Storing application-specific data on RFID tags    3. Reactivity to appearin...
Summary    1. Addressing physical objects    2. Storing application-specific data on RFID tags    3. Reactivity to appearin...
Part III: Node-Centric Ambient-Oriented DataflowProgramming                                                  20
The Ticket Trader Application                                21
The Ticket Trader Application       Event                     Signaling                   ReactingNew ticket trader     Au...
Reactive Programming in AmbientTalk/R GUI.centerOn(GPSLocation.latitude, GPSLocation.longitude);                        GP...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Node-Centric Ambient-Oriented DataflowProgramming                   subscribe(       )                       subscribe(    ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Ambient Behaviors      deftype TicketVendorLocation;      exportBehavior: GPSLocation as: TicketVendorLocation        to: ...
Reactive Queries                             deftype TicketVendor;                             export: ticketVendor as: Ti...
Reactive Queries                             deftype TicketVendor;                             export: ticketVendor as: Ti...
Reactive Queries                               deftype TicketVendor;                               export: ticketVendor as...
Reactive Queries                             deftype TicketVendor;                             export: ticketVendor as: Ti...
Reactive Queries                             deftype TicketVendor;                             export: ticketVendor as: Ti...
Reactive Queries                             deftype TicketVendor;                             export: ticketVendor as: Ti...
Reactive Queries                             deftype TicketVendor;                             export: ticketVendor as: Ti...
Reactive Queries                             deftype TicketVendor;                             export: ticketVendor as: Ti...
Quantitative Evaluation                          26
Quantitative Evaluation                          26
Quantitative Evaluation                          26
Qualitative Evaluation       Event                     Signaling                   ReactingNew ticket trader     Automatic...
Qualitative Evaluation                         27
Qualitative Evaluation                         27
Qualitative Evaluation                         27
Qualitative Evaluation                         27
Qualitative Evaluation                         27
Qualitative Evaluation  def allNearbyOffers := ambientBehavior: TicketOffer @All(_timespan_);  allNearbyOffers.filter: { |...
Case Study: The Book Recommender Applicationin the Ambient Library         scanned      recommended  recommended in librar...
Case Study: The Book Recommender Applicationin the Ambient Library         scanned      recommended  recommended in librar...
Part IV: Network-Centric Ambient-OrientedDataflow Programming                                            29
Network-Centric Visual Dataflow Programming inAmbientTalk/R V         scanned      recommended  recommended in library     ...
Network-Centric Visual Dataflow Programming in   AmbientTalk/R V                                BookScanner ->             ...
Deploying an AmbientTalk/RV Dataflow Program def BookRecommenderApp := extend: OperatorHostInterface with: {    def showBoo...
Dataflow Dependencies                                BookScanner ->                                  deftype Book;         ...
Dependency AritiesBookRecommender ->                                                  EBookReader ->  showBooks(books);   ...
Dependency AritiesBookRecommender ->                                                  EBookReader ->  showBooks(books);   ...
Dependency Semantics                    Incoming 1                 Incoming *                Signal one value to a    Sign...
Part V: Conclusion                     35
Limitations and Avenues for Future Research• Event-loop based architecture prevents RFID events to be processed in  parall...
Summarizing the Contributions1. Addressing physical objects2. Storing application-specific data on RFID tags3. Reactivity t...
Summarizing the Contributions1. Addressing physical objects         Ambient-Oriented Programming2. Storing application-spe...
Summarizing the Contributions1. Addressing physical objects         Ambient-Oriented Programming                          ...
Summarizing the Contributions1. Addressing physical objects         Ambient-Oriented Programming                          ...
Summarizing the Contributions1. Addressing physical objects         Ambient-Oriented Programming                          ...
Summarizing the Contributions1. Addressing physical objects         Ambient-Oriented Programming                          ...
Summarizing the Contributions1. Addressing physical objects         Ambient-Oriented Programming                          ...
Summarizing the Contributions1. Addressing physical objects        Ambient-Oriented Programming                           ...
Why Ambient-Oriented Language Abstractions?                                              38
Why Ambient-Oriented Language Abstractions?                                              39
Why Ambient-Oriented Language Abstractions?                                              40
Why Ambient-Oriented Language Abstractions?                                              41
Upcoming SlideShare
Loading in...5
×

Private phd defense_40-45min

282

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
282
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Private phd defense_40-45min

  1. 1. Ambient-Oriented Dataflow Programming for Mobile RFID-Enabled ApplicationsAndoni Lombide CarretonPromotor: Prof. Dr. Wolfgang De MeuterCopromotor: Prof. Dr. Theo D’Hondt Vrije Universiteit Brussel Brussels, BelgiumPrivate PhD Defense, October 11th 2011, Brussels 1
  2. 2. RoadmapPart I: Mobile RFID-Enabled ApplicationsPart II: Ambient-Oriented Programming for Mobile RFID-Enabled ApplicationsPart III: Node-Centric Ambient-Oriented DataflowProgrammingPart IV: Network-Centric Ambient-Oriented DataflowProgrammingPart V: Conclusion 2
  3. 3. Part I: Mobile RFID-Enabled Applications 3
  4. 4. RFID Technology 0 cm ~ 10 m 0 Kb ~ 32 Kb 0.02$ ~ 0.50$ 4
  5. 5. Mobile RFID-Enabled Applications 5
  6. 6. 6
  7. 7. 6
  8. 8. 6
  9. 9. 7
  10. 10. 7
  11. 11. 7
  12. 12. 7
  13. 13. Event-based Decoupling and Inversion of Control (register-connection-callback (lambda (tagged-object) (register-reply-callback (lambda (reply) ...)) (register-disconnection-callback (lambda (tagged-object) ...)) ...)) 8
  14. 14. Event-based Decoupling and Inversion of Control (register-connection-callback (lambda (tagged-object) (register-disconnection-callback (lambda (tagged-object) ...)) (register-reply-callback (lambda (reply) ...)) ...)) 8
  15. 15. Event-based Decoupling and Inversion of Control Shared state ? (register-reply-callback (lambda (reply) (set! Shared state ...) ...))(register-connection-callback (lambda (tagged-object) (set! Shared state ...) ...)) (register-disconnection-callback (lambda (tagged-object) (set! Shared state ...) ...)) 9
  16. 16. Event-based Decoupling and Inversion of Control Shared state ? (register-reply-callback (lambda (reply) (set! Shared state ...) ...))(register-connection-callback (lambda (tagged-object) (set! Shared state ...) ...)) (register-disconnection-callback (lambda (tagged-object) (set! Shared state ...) ...)) 9
  17. 17. Event-based Decoupling and Inversion of Control Shared state ? (register-reply-callback (lambda (reply) (set! Shared state ...) ...))(register-connection-callback (lambda (tagged-object) (set! Shared state ...) ...)) (register-disconnection-callback (lambda (tagged-object) (set! Shared state ...) ...)) 9
  18. 18. Event-based Decoupling and Inversion of Control Shared state ? in space Decoupling (register-reply-callback Decoupling in time (lambda (reply) (set! Shared state Decoupling in arity ...) ...))(register-connection-callback Rich representation of events (lambda (tagged-object) (set! Shared state ...) ...)) No inversion of control (register-disconnection-callback (lambda (tagged-object) Global(set! Shared state ...) ...)) control flow management 9
  19. 19. RFID-tagged Things as Objects book.addReview(“Good book”); println(book.getReviews()); 10
  20. 20. RFID-tagged Things as Objects 1. Addressing physical objects 2. Storing application-specific data on RFID tags 3. Reactivity to appearing and disappearing objects 4. Asynchronous, fault-tolerant communication 5. Data consistency 6. Infrastructureless operation 10
  21. 21. RFID-tagged Things as Objects 1. Addressing physical objects 2. Storing application-specific data on RFID tags 3. Reactivity to appearing and disappearing objects 4. Asynchronous, fault-tolerant communication 5. Data consistency 6. Infrastructureless operation 10
  22. 22. RFID-tagged Things as Objects 1. Addressing physical objects 2. Storing application-specific data on RFID tags 3. Reactivity to appearing and disappearing objects 4. Asynchronous, fault-tolerant communication 5. Data consistency 6. Infrastructureless operation 10
  23. 23. RFID-tagged Things as Objects 1. Addressing physical objects 2. Storing application-specific data on RFID tags 3. Reactivity to appearing and disappearing objects 4. Asynchronous, fault-tolerant communication 5. Data consistency 6. Infrastructureless operation 10
  24. 24. RFID-tagged Things as Objects 1. Addressing physical objects 2. Storing application-specific data on RFID tags 3. Reactivity to appearing and disappearing objects 4. Asynchronous, fault-tolerant communication 5. Data consistency 6. Infrastructureless operation 10
  25. 25. RFID-tagged Things as Objects 1. Addressing physical objects 2. Storing application-specific data on RFID tags 3. Reactivity to appearing and disappearing objects 4. Asynchronous, fault-tolerant communication 5. Data consistency 6. Infrastructureless operation 10
  26. 26. Survey of Related Work Publish/subscribe systems Reactive programming Explicit dataflow programming Node-centric sensor- network programmingNetwork-centric sensor- network programming 11
  27. 27. Survey of Related Work Publish/subscribe systems Publish/subscribe Reactive programming + dataflow programming Explicit dataflow = ambient-oriented dataflow programming Node-centric sensor- network programmingNetwork-centric sensor- network programming 11
  28. 28. Part II: Ambient-Oriented Programming for MobileRFID-Enabled Applications 12
  29. 29. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  30. 30. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  31. 31. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  32. 32. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  33. 33. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  34. 34. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  35. 35. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  36. 36. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  37. 37. RFID in AmbientTalk RFID event loop Hardware Abstraction Layer 13
  38. 38. Things: Proxies for Tagsdeftype Book;def aBook := thing: { def isbn := 123; def title := “My book”; def reviews := Vector.new(); RFID event loop def setTitle(newTitle)@Mutator { title := newTitle; }; Hardware Abstraction Layer def addReview(review)@Mutator { reviews.add(review); };} taggedAs: Book; 14
  39. 39. Things: Proxies for Tagsdeftype Book;def aBook := thing: { def isbn := 123; def title := “My book”; def reviews := Vector.new(); RFID event loop def setTitle(newTitle)@Mutator { title := newTitle; }; Hardware Abstraction Layer def addReview(review)@Mutator { reviews.add(review); };} taggedAs: Book; 14
  40. 40. Storing Objects on RFID Tags tag aBook RFID event loopdef aBook := thing: { ... }; Hardware Abstraction Layerwhen: BlankTag discovered: { |tag| when: tag<-initialize(aBook) becomes: { |bookReference| // ... }} 15
  41. 41. Storing Objects on RFID Tags tag aBook RFID event loopdef aBook := thing: { ... }; Hardware Abstraction Layerwhen: BlankTag discovered: { |tag| when: tag<-initialize(aBook) becomes: { |bookReference| // ... }} 15
  42. 42. Storing Objects on RFID Tags tag aBook RFID event loopdef aBook := thing: { ... }; Hardware Abstraction Layerwhen: BlankTag discovered: { |tag| when: tag<-initialize(aBook) becomes: { |bookReference| // ... }} 15
  43. 43. Storing Objects on RFID Tags tag aBook bookRe ference RFID event loopdef aBook := thing: { ... }; Hardware Abstraction Layerwhen: BlankTag discovered: { |tag| when: tag<-initialize(aBook) becomes: { |bookReference| // ... }} 15
  44. 44. Reactivity to Appearing and Disappearing Things RFID event loopwhenever: Book discovered: { |book| // React on appearance whenever: book disconnected: { Hardware Abstraction Layer // React on disappearance }; whenever: book reconnected: { // React on reappearance };}; 16
  45. 45. Reactivity to Appearing and Disappearing Things RFID event loopwhenever: Book discovered: { |book| // React on appearance whenever: book disconnected: { Hardware Abstraction Layer // React on disappearance }; whenever: book reconnected: { // React on reappearance };}; 16
  46. 46. Reactivity to Appearing and Disappearing Things RFID event loopwhenever: Book discovered: { |book| // React on appearance whenever: book disconnected: { Hardware Abstraction Layer // React on disappearance }; whenever: book reconnected: { // React on reappearance };}; 16
  47. 47. Reactivity to Appearing and Disappearing Things RFID event loopwhenever: Book discovered: { |book| // React on appearance whenever: book disconnected: { Hardware Abstraction Layer // React on disappearance }; whenever: book reconnected: { // React on reappearance };}; 16
  48. 48. Asynchronous and Fault-tolerant Communication with Things RFID event loopwhen: book<-getTitle() Hardware Abstraction Layer becomes: { |title| system.println(“TITLE: “ + title) };system.println(“Here first!”); 17
  49. 49. Asynchronous and Fault-tolerant Communication with Things RFID event loopwhen: book<-getTitle() Hardware Abstraction Layer becomes: { |title| system.println(“TITLE: “ + title) };system.println(“Here first!”); 17
  50. 50. Asynchronous and Fault-tolerant Communication with Things RFID event loopwhen: book<-getTitle() Hardware Abstraction Layer becomes: { |title| system.println(“TITLE: “ + title) };system.println(“Here first!”); 17
  51. 51. Asynchronous and Fault-tolerant Communication with Things RFID event loopwhen: book<-getTitle() Hardware Abstraction Layer becomes: { |title| system.println(“TITLE: “ + title) };system.println(“Here first!”); 17
  52. 52. Asynchronous and Fault-tolerant Communication with Things RFID event loopwhen: book<-getTitle() Hardware Abstraction Layer becomes: { |title| system.println(“TITLE: “ + title) };system.println(“Here first!”); 17
  53. 53. Asynchronous and Fault-tolerant Communication with Things RFID event loopwhen: book<-getTitle() Hardware Abstraction Layer becomes: { |title| system.println(“TITLE: “ + title) };system.println(“Here first!”); 17
  54. 54. Asynchronous and Fault-tolerant Communication with Things RFID event loopwhen: book<-getTitle() Hardware Abstraction Layer becomes: { |title| system.println(“TITLE: “ + title) };system.println(“Here first!”); 17
  55. 55. Benchmarks 18
  56. 56. Benchmarks 18
  57. 57. Summary 1. Addressing physical objects 2. Storing application-specific data on RFID tags 3. Reactivity to appearing and disappearing objects 4. Asynchronous, fault-tolerant communication 5. Data consistency 6. Infrastructureless operation 19
  58. 58. Summary 1. Addressing physical objects 2. Storing application-specific data on RFID tags 3. Reactivity to appearing and disappearing objects 4. Asynchronous, fault-tolerant communication 5. Data consistency 6. Infrastructureless operation 19
  59. 59. Part III: Node-Centric Ambient-Oriented DataflowProgramming 20
  60. 60. The Ticket Trader Application 21
  61. 61. The Ticket Trader Application Event Signaling ReactingNew ticket trader Automatic notification by whenever:discovered:connected AmbientTalkTicket trader Automatic notification by when:disconnected:disconnected AmbientTalkTicket trader Automatic notification by when:reconnected:reconnected AmbientTalk notifyTicketForSale notifyTicketForSaleNew ticket for sale asynchronous message callbackPrice of ticket notifyPriceChanged notifyPriceChangedchanged asynchronous message callbackLocation of ticket notifyLocationChanged notifyLocationChangedtrader changed asynchronous message callbackOwn location GPS abstraction invokes Callback registered onchanged callback with new coordinates GPS abstraction 21
  62. 62. Reactive Programming in AmbientTalk/R GUI.centerOn(GPSLocation.latitude, GPSLocation.longitude); GPSLocation H .latitude .longitude latitude longitude H+1 GUI.centerOn(_, _) 22
  63. 63. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  64. 64. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  65. 65. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  66. 66. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  67. 67. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  68. 68. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  69. 69. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  70. 70. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  71. 71. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  72. 72. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  73. 73. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  74. 74. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  75. 75. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  76. 76. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  77. 77. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  78. 78. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  79. 79. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  80. 80. Node-Centric Ambient-Oriented DataflowProgramming subscribe( ) subscribe( ) publish( ) 23
  81. 81. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocation := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @Any; GUI.showLocationOnMap(vendorLocation); 24
  82. 82. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocation := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @Any; GUI.showLocationOnMap(vendorLocation); 24
  83. 83. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocation := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @Any; GUI.showLocationOnMap(vendorLocation); 24
  84. 84. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocation := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @Any; GUI.showLocationOnMap(vendorLocation); 24
  85. 85. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocation := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @Any; GUI.showLocationOnMap(vendorLocation); 24
  86. 86. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocations := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @All(3.seconds); vendorLocations.each: { |loc| GUI.showLocationOnMap(loc) }; 24
  87. 87. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocations := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @All(3.seconds); vendorLocations.each: { |loc| GUI.showLocationOnMap(loc) }; 24
  88. 88. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocations := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @All(3.seconds); vendorLocations.each: { |loc| GUI.showLocationOnMap(loc) }; 24
  89. 89. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocations := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @All(3.seconds); vendorLocations.each: { |loc| GUI.showLocationOnMap(loc) }; 24
  90. 90. Ambient Behaviors deftype TicketVendorLocation; exportBehavior: GPSLocation as: TicketVendorLocation to: { |buyer| buyer.interestedIn == “Rock Werchter” }; deftype TicketVendorLocation; def vendorLocations := ambientBehavior: TicketVendorLocation where: { def interestedIn := “Rock Werchter” } @All(3.seconds); vendorLocations.each: { |loc| GUI.showLocationOnMap(loc) }; 24
  91. 91. Reactive Queries deftype TicketVendor; export: ticketVendor as: TicketVendor with: { def event := “Rock Werchter” }; deftype TicketVendor; def werchterVendors := ambient: TicketVendor where: { |vendor| vendor.event == “Rock Werchter” }; def locations := werchterVendors<-getLocation()@Refresh(3.seconds); locations.each: { |loc| GUI.showLocationOnMap(loc) }; 25
  92. 92. Reactive Queries deftype TicketVendor; export: ticketVendor as: TicketVendor with: { def event := “Rock Werchter” }; deftype TicketVendor; def werchterVendors := ambient: TicketVendor where: { |vendor| vendor.event == “Rock Werchter” }; def locations := werchterVendors<-getLocation()@Refresh(3.seconds); locations.each: { |loc| GUI.showLocationOnMap(loc) }; 25
  93. 93. Reactive Queries deftype TicketVendor; export: ticketVendor as: TicketVendor with: { def event := “Rock Werchter” };?? ? deftype TicketVendor; def werchterVendors := ambient: TicketVendor where: { |vendor| vendor.event == “Rock Werchter” }; def locations := werchterVendors<-getLocation()@Refresh(3.seconds); locations.each: { |loc| GUI.showLocationOnMap(loc) }; 25
  94. 94. Reactive Queries deftype TicketVendor; export: ticketVendor as: TicketVendor with: { def event := “Rock Werchter” };? ? ? deftype TicketVendor; def werchterVendors := ambient: TicketVendor where: { |vendor| vendor.event == “Rock Werchter” }; def locations := werchterVendors<-getLocation()@Refresh(3.seconds); locations.each: { |loc| GUI.showLocationOnMap(loc) }; 25
  95. 95. Reactive Queries deftype TicketVendor; export: ticketVendor as: TicketVendor with: { def event := “Rock Werchter” }; deftype TicketVendor; def werchterVendors := ambient: TicketVendor where: { |vendor| vendor.event == “Rock Werchter” }; def locations := werchterVendors<-getLocation()@Refresh(3.seconds); locations.each: { |loc| GUI.showLocationOnMap(loc) }; 25
  96. 96. Reactive Queries deftype TicketVendor; export: ticketVendor as: TicketVendor with: { def event := “Rock Werchter” }; deftype TicketVendor; def werchterVendors := ambient: TicketVendor where: { |vendor| vendor.event == “Rock Werchter” }; def locations := werchterVendors<-getLocation()@Refresh(3.seconds); locations.each: { |loc| GUI.showLocationOnMap(loc) }; 25
  97. 97. Reactive Queries deftype TicketVendor; export: ticketVendor as: TicketVendor with: { def event := “Rock Werchter” }; deftype TicketVendor; def werchterVendors := ambient: TicketVendor where: { |vendor| vendor.event == “Rock Werchter” }; def locations := werchterVendors<-getLocation()@Refresh(3.seconds); locations.each: { |loc| GUI.showLocationOnMap(loc) }; 25
  98. 98. Reactive Queries deftype TicketVendor; export: ticketVendor as: TicketVendor with: { def event := “Rock Werchter” }; deftype TicketVendor; def werchterVendors := ambient: TicketVendor where: { |vendor| vendor.event == “Rock Werchter” }; def locations := werchterVendors<-getLocation()@Refresh(3.seconds); locations.each: { |loc| GUI.showLocationOnMap(loc) }; 25
  99. 99. Quantitative Evaluation 26
  100. 100. Quantitative Evaluation 26
  101. 101. Quantitative Evaluation 26
  102. 102. Qualitative Evaluation Event Signaling ReactingNew ticket trader Automatic notification by whenever:discovered:connected AmbientTalkTicket trader Automatic notification by when:disconnected:disconnected AmbientTalkTicket trader Automatic notification by when:reconnected:reconnected AmbientTalk notifyTicketForSale notifyTicketForSaleNew ticket for sale asynchronous message callbackPrice of ticket notifyPriceChanged notifyPriceChangedchanged asynchronous message callbackLocation of ticket notifyLocationChanged notifyLocationChangedtrader changed asynchronous message callbackOwn location GPS abstraction invokes Callback registered onchanged callback with new coordinates GPS abstraction 27
  103. 103. Qualitative Evaluation 27
  104. 104. Qualitative Evaluation 27
  105. 105. Qualitative Evaluation 27
  106. 106. Qualitative Evaluation 27
  107. 107. Qualitative Evaluation 27
  108. 108. Qualitative Evaluation def allNearbyOffers := ambientBehavior: TicketOffer @All(_timespan_); allNearbyOffers.filter: { |offer| (offer.eventName == event).and: { (offer.price <= maxPrice).and: { GPSLocation.distanceTo(offer.location) <= maxDistance }}}; 27
  109. 109. Case Study: The Book Recommender Applicationin the Ambient Library scanned recommended recommended in library 28
  110. 110. Case Study: The Book Recommender Applicationin the Ambient Library scanned recommended recommended in library 28
  111. 111. Part IV: Network-Centric Ambient-OrientedDataflow Programming 29
  112. 112. Network-Centric Visual Dataflow Programming inAmbientTalk/R V scanned recommended recommended in library 1 1 30
  113. 113. Network-Centric Visual Dataflow Programming in AmbientTalk/R V BookScanner -> deftype Book; /.bridges.rfid.ReactiveRFIDService.scan(Book); scanned 1 1 recommended books scannedBooks recommended in library 1 1BookRecommender -> EBookReader -> showBooks(books); 1 recommended 1 scannedBooks.map: { |book| showSimilarBooks(recommended); generateSimilarBooks(book) showRecommendationsInStock(recommendedInStock); }; 1 1 recommendedInStock similarBooks 1 * Shelf -> deftype Book; def booksInstock := /.bridges.rfid.ReactiveRFIDService.scan(Book); similarBooks.filter: { |book| booksInStock.contains(book) }; 30
  114. 114. Deploying an AmbientTalk/RV Dataflow Program def BookRecommenderApp := extend: OperatorHostInterface with: { def showBooks(books) { ... }; def showSimilarBooks(books) { ... }; def showRecommendationsInStock(books) { ... }; }; deftype BookRecommender; export: BookRecommenderApp as: BookRecommender; AmbientTalk/R VM JVMBookRecommender -> showBooks(books); showSimilarBooks(recommended); showRecommendationsInStock(recommendedInStock); 31
  115. 115. Dataflow Dependencies BookScanner -> deftype Book; /.bridges.rfid.ReactiveRFIDService.scan(Book); Fixed dataflow 1 dependency books 1BookRecommender -> EBookReader -> showBooks(books); scannedBooks.map: { |book| showSimilarBooks(recommended); generateSimilarBooks(book) showRecommendationsInStock(recommendedInStock); }; 1 Rebinding dataflow similarBooks dependency * Shelf -> deftype Book; def booksInstock := /.bridges.rfid.ReactiveRFIDService.scan(Book); similarBooks.filter: { |book| booksInStock.contains(book) }; 32
  116. 116. Dependency AritiesBookRecommender -> EBookReader -> showBooks(books); scannedBooks.map: { |book| showSimilarBooks(recommended); generateSimilarBooks(book) showRecommendationsInStock(recommendedInStock); }; 1 1 recommendedInStock similarBooks 1 * Shelf -> deftype Book; def booksInstock := /.bridges.rfid.ReactiveRFIDService.scan(Book); similarBooks.filter: { |book| booksInStock.contains(book) }; 33
  117. 117. Dependency AritiesBookRecommender -> EBookReader -> showBooks(books); scannedBooks.map: { |book| showSimilarBooks(recommended); generateSimilarBooks(book) showRecommendationsInStock(recommendedInStock); }; 1 1 recommendedInStock similarBooks * * Shelf -> deftype Book; def booksInstock := /.bridges.rfid.ReactiveRFIDService.scan(Book); similarBooks.filter: { |book| booksInStock.contains(book) }; 33
  118. 118. Dependency Semantics Incoming 1 Incoming * Signal one value to a Signal one value to all Outgoing 1 single (rebound or fixed) reachable nodes of same node role Signal set of values to a Signal set of values to all Outgoing * single (rebound or fixed) reachable nodes of same node role Binding semantics Arity semantics 34
  119. 119. Part V: Conclusion 35
  120. 120. Limitations and Avenues for Future Research• Event-loop based architecture prevents RFID events to be processed in parallel.• Security was not considered. For RFID it requires revising the technology stack down to the hardware level.• No distributed glitch prevention. It requires consistent distributed message ordering.• AmbientTalk/RV needs more tooling (e.g. visual scalability, syntax for content- based subscriptions...). 36
  121. 121. Summarizing the Contributions1. Addressing physical objects2. Storing application-specific data on RFID tags3. Reactivity to appearing and disappearing objects4. Asynchronous, fault-tolerant communication5. Data consistency6. Infrastructureless operation 37
  122. 122. Summarizing the Contributions1. Addressing physical objects Ambient-Oriented Programming2. Storing application-specific data on RFID tags with Passive RFID3. Reactivity to appearing and disappearing objects4. Asynchronous, fault-tolerant communication5. Data consistency6. Infrastructureless operation 37
  123. 123. Summarizing the Contributions1. Addressing physical objects Ambient-Oriented Programming Decoupling in space2. Storing application-specific data on RFID tags with Passive RFID Decoupling in time3. Reactivity to appearing and disappearing objects Decoupling in arity4. Asynchronous, fault-tolerant communication5. Data consistency6. Infrastructureless operation 37
  124. 124. Summarizing the Contributions1. Addressing physical objects Ambient-Oriented Programming Decoupling in space2. Storing application-specific data on RFID tags with Passive RFID Decoupling in time3. Reactivity to appearing and disappearing objects Decoupling in arity4. Asynchronous, fault-tolerant communication5. Data consistency No inversion of control6. Infrastructureless operation 37
  125. 125. Summarizing the Contributions1. Addressing physical objects Ambient-Oriented Programming Decoupling in space2. Storing application-specific data on RFID tags with Passive RFID Decoupling in time Publish/subscribe3. Reactivity to appearing and disappearing objects + Decoupling in arity4. Asynchronous, fault-tolerant communication dataflow programming =5. Data consistency ambient-oriented inversion of control No dataflow6. Infrastructureless operation 37
  126. 126. Summarizing the Contributions1. Addressing physical objects Ambient-Oriented Programming Decoupling in space2. Storing application-specific data on RFID tags Decoupling in time with Passive RFID3. Reactivity to appearing and disappearing objects Decoupling in arity4. Asynchronous, fault-tolerant communication Rich representation of events5. Data consistency No inversion of control6. Infrastructureless operation 37
  127. 127. Summarizing the Contributions1. Addressing physical objects Ambient-Oriented Programming Decoupling in space2. Storing application-specific data on RFID tags Decoupling in time with Passive RFID3. Reactivity to appearing and disappearing objects Decoupling in arity4. Asynchronous, fault-tolerant communication Rich representation of events5. Data consistency No inversion of control6. Infrastructureless operation Global control flow management 37
  128. 128. Summarizing the Contributions1. Addressing physical objects Ambient-Oriented Programming Decoupling in space2. Storing application-specific data on RFID tags Decoupling in time with Passive RFID3. Reactivity to appearing and disappearing objects Decoupling in arity4. Asynchronous, fault-tolerant communication Rich representation of events5. Data consistency No inversion of control6. Infrastructureless operation Global control flow management 37
  129. 129. Why Ambient-Oriented Language Abstractions? 38
  130. 130. Why Ambient-Oriented Language Abstractions? 39
  131. 131. Why Ambient-Oriented Language Abstractions? 40
  132. 132. Why Ambient-Oriented Language Abstractions? 41
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×