This document discusses using distributed object-oriented programming with RFID technology. It describes requirements like addressing physical objects tagged with RFIDs, storing application data on tags, and reacting to tags appearing and disappearing. It presents AmbientTalk, a programming language that addresses these requirements through an event loop model, asynchronous messaging, dynamic object discovery, and fault tolerance.
This document discusses ambient-oriented dataflow programming for mobile RFID-enabled applications. It presents a node-centric approach where nodes subscribe to channels to receive event notifications and publish to channels to send notifications. This allows for reactive programming where nodes can respond to events from other nodes in the network through asynchronous message passing along subscribed channels.
The document describes MORENA, a middleware for programming NFC-enabled Android applications as distributed object-oriented programs. MORENA addresses drawbacks of the Android NFC API such as manual failure handling and blocking communication. It introduces an event-driven architecture using "Things" as first-class representations of RFID-tagged objects that can be stored in tags' memory. The middleware enables asynchronous reads/writes and loosens coupling from activity-based programming. An evaluation demonstrates a WiFi sharing application built with MORENA.
The document proposes a hybrid visual dataflow language for coordination in mobile ad hoc networks. It describes using the language AmbientTalk to represent physical objects and react to events in a distributed, event-driven architecture over intermittent connections between mobile devices discovered through ad hoc discovery. The language allows control flow to be specified through textual blocks while data flows visually through the dataflow graph.
The document discusses loosely-coupled distributed reactive programming in mobile ad hoc networks. It describes using an event-driven architecture and ambient references to allow mobile devices to spontaneously interact and share information even when connectivity is intermittent. Applications can publish and discover objects, communicate asynchronously, and export reactive behaviors to handle dynamic discovery of nearby resources.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
The document proposes a new approach called live feature analysis that models features at runtime to address limitations of traditional post-mortem feature analysis. Live feature analysis reduces data volume, supports growing and changing features, enables sub-method granularity, and allows interactive analysis by modeling features using runtime reflection instead of traces. This provides an alternative to traditional static post-mortem feature analysis techniques.
This document discusses the history and current state of mobile web applications and campus assistants. It provides an overview of the evolution of mobile phone capabilities and the reasons for developing mobile web applications. The document then describes a case study of a mobile campus assistant application developed at the University of Bristol that provides students with information about locations, public transportation, and other campus resources. It concludes by discussing ongoing development work and future opportunities for mobile applications.
This document discusses ambient-oriented dataflow programming for mobile RFID-enabled applications. It presents a node-centric approach where nodes subscribe to channels to receive event notifications and publish to channels to send notifications. This allows for reactive programming where nodes can respond to events from other nodes in the network through asynchronous message passing along subscribed channels.
The document describes MORENA, a middleware for programming NFC-enabled Android applications as distributed object-oriented programs. MORENA addresses drawbacks of the Android NFC API such as manual failure handling and blocking communication. It introduces an event-driven architecture using "Things" as first-class representations of RFID-tagged objects that can be stored in tags' memory. The middleware enables asynchronous reads/writes and loosens coupling from activity-based programming. An evaluation demonstrates a WiFi sharing application built with MORENA.
The document proposes a hybrid visual dataflow language for coordination in mobile ad hoc networks. It describes using the language AmbientTalk to represent physical objects and react to events in a distributed, event-driven architecture over intermittent connections between mobile devices discovered through ad hoc discovery. The language allows control flow to be specified through textual blocks while data flows visually through the dataflow graph.
The document discusses loosely-coupled distributed reactive programming in mobile ad hoc networks. It describes using an event-driven architecture and ambient references to allow mobile devices to spontaneously interact and share information even when connectivity is intermittent. Applications can publish and discover objects, communicate asynchronously, and export reactive behaviors to handle dynamic discovery of nearby resources.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
The document proposes a new approach called live feature analysis that models features at runtime to address limitations of traditional post-mortem feature analysis. Live feature analysis reduces data volume, supports growing and changing features, enables sub-method granularity, and allows interactive analysis by modeling features using runtime reflection instead of traces. This provides an alternative to traditional static post-mortem feature analysis techniques.
This document discusses the history and current state of mobile web applications and campus assistants. It provides an overview of the evolution of mobile phone capabilities and the reasons for developing mobile web applications. The document then describes a case study of a mobile campus assistant application developed at the University of Bristol that provides students with information about locations, public transportation, and other campus resources. It concludes by discussing ongoing development work and future opportunities for mobile applications.
M.Malone Simple Geo @ Social Developers SummitMediabistro
The document summarizes SimpleGeo, a company that provides tools to make projects geo-aware. It describes SimpleGeo's Marketplace for geo-data, Storage Engine for storing and querying geo-records, and APIs. It also mentions related services and tools like SpotRank for location density data and client libraries for accessing SimpleGeo's APIs from different programming languages. The presentation aims to explain SimpleGeo's vision of enabling augmented reality gaming through location data and how their tools help developers work with such geo-spatial data.
The document discusses the launch of a new Knowledge Hub platform to connect over 65,000 members across 1,300 communities. The Hub will provide a centralized place for members from local authorities and 700 services to access information, join relevant networks, and share data and expertise to help improve services. The new platform utilizes modern technologies and linked data to better facilitate networking, knowledge sharing, and access to over 257 local government data sets compared to the previous system.
OSMC 2010 | OpenNMS Kickstart by Ronny TrommerNETWAYS
OpenNMS is an open-source management platform based on Java and has been generated to meet with market's requirements in sizable environments. This speech will facilitate the access to OpenNMS for listeners. After presenting ideas and architectural concepts the speaker will explain how network knots can be provided with the provisioning system established in version 1.8.
The document provides an overview of OpenNMS including its history and versioning, architecture with a focus on its data model and event bus system, discovery methods including automatic, directed, and policy-based approaches, and provisioning capabilities including CLI and RESTful interfaces. Useful resources for getting OpenNMS and support are also listed.
The document discusses concepts related to DevOps including:
- Automating infrastructure through configuration management and treating infrastructure as code
- Using roles and recipes in configuration management to provision, configure, and integrate systems
- How configuration management can be used in the cloud to rapidly provision replacement systems in the event of failures or disasters
- The importance of automating everything from builds and tests to deployments and orchestration
The document discusses using JRuby and Duby to run Ruby on Rails applications on Google App Engine. It provides an overview of App Engine's key features and limitations. It then discusses how JRuby allows Ruby code to access Java APIs and libraries on App Engine. The document outlines milestones in developing JRuby for App Engine and current issues. It also introduces the dm-appengine and Duby libraries for modeling data and building applications in Ruby.
This document introduces Akka, an open-source toolkit for building highly concurrent, distributed, and fault-tolerant applications on the JVM. It discusses how Akka addresses the difficulties of building correct highly concurrent, scalable, and fault-tolerant systems using traditional tools by providing a unified programming model based on the actor model. The document outlines key aspects of Akka including actors, dispatchers, agents, fault tolerance through supervision hierarchies and mechanisms like linking and trapping exits.
The document summarizes key aspects of using Scrum for project management. It discusses Scrum meetings and artifacts like the product backlog, sprint planning meetings, daily standups, sprint backlogs, burn down charts, reviews, and retrospectives. The goal of Scrum is to inspect and adapt processes through continuous improvement.
It doesn’t really matter how great you think your website is if your intended user thinks it’s a loser. There are some very easy methods to getting your website headed down the right track and creating a positive user experience (UX) for your target audience.
In this presentation I discuss the steps that lead up to a the launch or re-launch of your website from a down-to-earth UX perspective. Each site is different, so while there are fundamentals there is also a strong need for critical thinking and creative solutions.
This document discusses how local governments can maximize the benefits of social media. It explores how social media reduces costs and barriers while increasing speed and reach. Some key opportunities highlighted include open data and performance, two-way information exchange, open consultations, and supporting each other through online resources. The document urges measuring impact through both metrics and stories to evaluate social media's influence.
This document discusses implementing OpenSocial for 16 million users at VZnet Netzwerke Ltd, which operates three social networks in Germany with 16.5 million total users. It covers what OpenSocial and gadgets are, how to integrate OpenSocial into a site, and how to enrich the user experience. VZnet Netzwerke has implemented OpenSocial, launching over 60 apps in December 2009 that now receive over 14 million daily impressions across their networks. The presentation provides examples of using different views within a single gadget.
The document describes More!, a mobile application that allows researchers to easily discover more information about speakers and topics from conferences. More! uses QR codes linked to researcher profiles containing publications, social media profiles, etc. to provide context. It was inspired by music identification app Shazam. An evaluation found it was easy to use and helped users learn more about speakers. Further work includes automatic data gathering and understanding user experiences.
PhoneGap is a framework that allows developers to build mobile apps using HTML, CSS, and JavaScript instead of native languages. It works by wrapping web content into a native container, allowing access to device capabilities like the camera or accelerometer from JavaScript. Apps built with PhoneGap can be deployed to various mobile platforms like iOS, Android, BlackBerry and more. The framework handles bridging JavaScript calls to native device APIs, providing a common way to access device functionality across platforms.
The document discusses the expanding capabilities of mobile web applications through the use of HTML5 and JavaScript APIs. It describes how PhoneGap allows accessing device capabilities like the camera from within a web browser, and how this could enable applications in areas like transportation, health, and home automation. The presentation envisions a future where the web browser acts as an interface to access the internet, cloud services, and device capabilities through a common set of APIs.
The document discusses rapid prototyping and how to build things quickly. It emphasizes that prototypes are not products and should be used to either sell an idea or test an idea. It provides tips on focusing the prototype on only essential needs and using tools like YUI, YQL, browser inspectors, jQuery, Greasemonkey, and screen scraping to quickly build prototypes with minimum effort.
The document discusses using Python for scientific applications. It describes NumPy arrays as efficient data structures for numerical computing and SciPy as a library for scientific algorithms. It notes that NumPy provides N-dimensional arrays and universal functions for fast array operations, while SciPy builds on NumPy with modules for domains like linear algebra, optimization, integration and more. Together NumPy and SciPy provide the fundamental tools for scientific computing with Python.
M.Malone Simple Geo @ Social Developers SummitMediabistro
The document summarizes SimpleGeo, a company that provides tools to make projects geo-aware. It describes SimpleGeo's Marketplace for geo-data, Storage Engine for storing and querying geo-records, and APIs. It also mentions related services and tools like SpotRank for location density data and client libraries for accessing SimpleGeo's APIs from different programming languages. The presentation aims to explain SimpleGeo's vision of enabling augmented reality gaming through location data and how their tools help developers work with such geo-spatial data.
The document discusses the launch of a new Knowledge Hub platform to connect over 65,000 members across 1,300 communities. The Hub will provide a centralized place for members from local authorities and 700 services to access information, join relevant networks, and share data and expertise to help improve services. The new platform utilizes modern technologies and linked data to better facilitate networking, knowledge sharing, and access to over 257 local government data sets compared to the previous system.
OSMC 2010 | OpenNMS Kickstart by Ronny TrommerNETWAYS
OpenNMS is an open-source management platform based on Java and has been generated to meet with market's requirements in sizable environments. This speech will facilitate the access to OpenNMS for listeners. After presenting ideas and architectural concepts the speaker will explain how network knots can be provided with the provisioning system established in version 1.8.
The document provides an overview of OpenNMS including its history and versioning, architecture with a focus on its data model and event bus system, discovery methods including automatic, directed, and policy-based approaches, and provisioning capabilities including CLI and RESTful interfaces. Useful resources for getting OpenNMS and support are also listed.
The document discusses concepts related to DevOps including:
- Automating infrastructure through configuration management and treating infrastructure as code
- Using roles and recipes in configuration management to provision, configure, and integrate systems
- How configuration management can be used in the cloud to rapidly provision replacement systems in the event of failures or disasters
- The importance of automating everything from builds and tests to deployments and orchestration
The document discusses using JRuby and Duby to run Ruby on Rails applications on Google App Engine. It provides an overview of App Engine's key features and limitations. It then discusses how JRuby allows Ruby code to access Java APIs and libraries on App Engine. The document outlines milestones in developing JRuby for App Engine and current issues. It also introduces the dm-appengine and Duby libraries for modeling data and building applications in Ruby.
This document introduces Akka, an open-source toolkit for building highly concurrent, distributed, and fault-tolerant applications on the JVM. It discusses how Akka addresses the difficulties of building correct highly concurrent, scalable, and fault-tolerant systems using traditional tools by providing a unified programming model based on the actor model. The document outlines key aspects of Akka including actors, dispatchers, agents, fault tolerance through supervision hierarchies and mechanisms like linking and trapping exits.
The document summarizes key aspects of using Scrum for project management. It discusses Scrum meetings and artifacts like the product backlog, sprint planning meetings, daily standups, sprint backlogs, burn down charts, reviews, and retrospectives. The goal of Scrum is to inspect and adapt processes through continuous improvement.
It doesn’t really matter how great you think your website is if your intended user thinks it’s a loser. There are some very easy methods to getting your website headed down the right track and creating a positive user experience (UX) for your target audience.
In this presentation I discuss the steps that lead up to a the launch or re-launch of your website from a down-to-earth UX perspective. Each site is different, so while there are fundamentals there is also a strong need for critical thinking and creative solutions.
This document discusses how local governments can maximize the benefits of social media. It explores how social media reduces costs and barriers while increasing speed and reach. Some key opportunities highlighted include open data and performance, two-way information exchange, open consultations, and supporting each other through online resources. The document urges measuring impact through both metrics and stories to evaluate social media's influence.
This document discusses implementing OpenSocial for 16 million users at VZnet Netzwerke Ltd, which operates three social networks in Germany with 16.5 million total users. It covers what OpenSocial and gadgets are, how to integrate OpenSocial into a site, and how to enrich the user experience. VZnet Netzwerke has implemented OpenSocial, launching over 60 apps in December 2009 that now receive over 14 million daily impressions across their networks. The presentation provides examples of using different views within a single gadget.
The document describes More!, a mobile application that allows researchers to easily discover more information about speakers and topics from conferences. More! uses QR codes linked to researcher profiles containing publications, social media profiles, etc. to provide context. It was inspired by music identification app Shazam. An evaluation found it was easy to use and helped users learn more about speakers. Further work includes automatic data gathering and understanding user experiences.
PhoneGap is a framework that allows developers to build mobile apps using HTML, CSS, and JavaScript instead of native languages. It works by wrapping web content into a native container, allowing access to device capabilities like the camera or accelerometer from JavaScript. Apps built with PhoneGap can be deployed to various mobile platforms like iOS, Android, BlackBerry and more. The framework handles bridging JavaScript calls to native device APIs, providing a common way to access device functionality across platforms.
The document discusses the expanding capabilities of mobile web applications through the use of HTML5 and JavaScript APIs. It describes how PhoneGap allows accessing device capabilities like the camera from within a web browser, and how this could enable applications in areas like transportation, health, and home automation. The presentation envisions a future where the web browser acts as an interface to access the internet, cloud services, and device capabilities through a common set of APIs.
The document discusses rapid prototyping and how to build things quickly. It emphasizes that prototypes are not products and should be used to either sell an idea or test an idea. It provides tips on focusing the prototype on only essential needs and using tools like YUI, YQL, browser inspectors, jQuery, Greasemonkey, and screen scraping to quickly build prototypes with minimum effort.
The document discusses using Python for scientific applications. It describes NumPy arrays as efficient data structures for numerical computing and SciPy as a library for scientific algorithms. It notes that NumPy provides N-dimensional arrays and universal functions for fast array operations, while SciPy builds on NumPy with modules for domains like linear algebra, optimization, integration and more. Together NumPy and SciPy provide the fundamental tools for scientific computing with Python.
1. Distributed Object-Oriented Programming with
RFID Technology
Andoni Lombide Carreton, Kevin Pinte and Wolfgang De Meuter
Department of Computer Science
Vrije Universiteit Brussel
10th IFIP International Conference on Distributed Applications and Interoperable Systems
June 7-10 2010
Amsterdam, the Netherlands 1
Monday 7 June 2010
7. Mobile RFID-enabled Applications
Scarce infrastructure
Mobile devices
Spontaneous interactions
Intermittent connectivity
2
Monday 7 June 2010
8. Mobile RFID-enabled Applications
Scarce infrastructure
Mobile devices
Representation of physical objects
Spontaneous interactions
Intermittent connectivity
2
Monday 7 June 2010
9. 5 Requirements
• Addressing physical objects (“things”)
• Storing application objects on RFID tags
• Reactivity to appearing and disappearing “things”
• Asynchronous communication with “things”
• Fault-tolerant communication
3
Monday 7 June 2010
10. 5 Requirements
• Addressing physical objects (“things”)
• Storing application objects on RFID tags
• Reactivity to appearing and disappearing “things”
• Asynchronous communication with “things”
• Fault-tolerant communication
3
Monday 7 June 2010
11. 5 Requirements
• Addressing physical objects (“things”)
• Storing application objects on RFID tags
• Reactivity to appearing and disappearing “things”
• Asynchronous communication with “things”
• Fault-tolerant communication
3
Monday 7 June 2010
12. Assumes no Non-blocking
infrastructure communication
Classless Dynamic object
object model discovery
4
Monday 7 June 2010
35. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
36. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
37. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
38. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
39. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
40. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
41. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
42. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
43. RFID and AmbientTalk
RFID event loop
Hardware Abstraction Layer
9
Monday 7 June 2010
44. Addressing physical objects as software objects
deftype Book;
def aBook := object: {
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;
10
Monday 7 June 2010
45. Addressing physical objects as software objects
deftype Book;
def aBook := object: {
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;
10
Monday 7 June 2010
46. Storing objects on RFID tags
tag
aBook
RFID event loop
def aBook := object: { ... };
Hardware Abstraction Layer
when: BlankTag discovered: { |tag|
when: tag<-initialize(aBook)
becomes: { |bookReference|
// ...
}
} 11
Monday 7 June 2010
47. Storing objects on RFID tags
tag
aBook
RFID event loop
def aBook := object: { ... };
Hardware Abstraction Layer
when: BlankTag discovered: { |tag|
when: tag<-initialize(aBook)
becomes: { |bookReference|
// ...
}
} 11
Monday 7 June 2010
48. Storing objects on RFID tags
tag
aBook
RFID event loop
def aBook := object: { ... };
Hardware Abstraction Layer
when: BlankTag discovered: { |tag|
when: tag<-initialize(aBook)
becomes: { |bookReference|
// ...
}
} 11
Monday 7 June 2010
49. Storing objects on RFID tags
tag
aBook
bookRe
ference
RFID event loop
def aBook := object: { ... };
Hardware Abstraction Layer
when: BlankTag discovered: { |tag|
when: tag<-initialize(aBook)
becomes: { |bookReference|
// ...
}
} 11
Monday 7 June 2010
50. Reactivity to appearing and disappearing objects
RFID event loop
whenever: Book discovered: { |book|
// React on appearance
whenever: book disconnected: { Hardware Abstraction Layer
// React on disappearance
}
whenever: book reconnected: {
// React on reappearance
}
12
}
Monday 7 June 2010
51. Reactivity to appearing and disappearing objects
RFID event loop
whenever: Book discovered: { |book|
// React on appearance
whenever: book disconnected: { Hardware Abstraction Layer
// React on disappearance
}
whenever: book reconnected: {
// React on reappearance
}
12
}
Monday 7 June 2010
52. Reactivity to appearing and disappearing objects
RFID event loop
whenever: Book discovered: { |book|
// React on appearance
whenever: book disconnected: { Hardware Abstraction Layer
// React on disappearance
}
whenever: book reconnected: {
// React on reappearance
}
12
}
Monday 7 June 2010
53. Reactivity to appearing and disappearing objects
RFID event loop
whenever: Book discovered: { |book|
// React on appearance
whenever: book disconnected: { Hardware Abstraction Layer
// React on disappearance
}
whenever: book reconnected: {
// React on reappearance
}
12
}
Monday 7 June 2010
54. Asynchronous communication
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
13
Monday 7 June 2010
55. Asynchronous communication
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
13
Monday 7 June 2010
56. Asynchronous communication
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
13
Monday 7 June 2010
57. Asynchronous communication
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
13
Monday 7 June 2010
58. Asynchronous communication
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
13
Monday 7 June 2010
59. Asynchronous communication
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
13
Monday 7 June 2010
60. Asynchronous communication
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
13
Monday 7 June 2010
61. Fault-tolerant communication
RFID event loop
def myReview := “Not for beginners”;
Hardware Abstraction Layer
when: book<-addReview(myReview)@Due(10.seconds)
becomes: { |ack|
// Message processed successfully
} catch: TimeoutException using: { |exc|
// Message timed out
} 14
Monday 7 June 2010
62. Fault-tolerant communication
RFID event loop
def myReview := “Not for beginners”;
Hardware Abstraction Layer
when: book<-addReview(myReview)@Due(10.seconds)
becomes: { |ack|
// Message processed successfully
} catch: TimeoutException using: { |exc|
// Message timed out
} 14
Monday 7 June 2010
63. Fault-tolerant communication
RFID event loop
def myReview := “Not for beginners”;
Hardware Abstraction Layer
when: book<-addReview(myReview)@Due(10.seconds)
becomes: { |ack|
// Message processed successfully
} catch: TimeoutException using: { |exc|
// Message timed out
} 14
Monday 7 June 2010
64. Addressing groups of RFID-tagged objects
def books := ambient: Book;
def computerScienceBooks := ambient: Book where: { |b|
b.category == “Computer Science”
};
def shelfFuture := computerScienceBooks<-getShelf()@Any;
when: shelfFuture becomes: { |shelf|
system.println(“Place the book in shelf: “ + shelf);
};
computerScienceBook<-setShelf(“5D”)@[ All, Sustain ]; 15
Monday 7 June 2010
65. Addressing groups of RFID-tagged objects
def books := ambient: Book;
def computerScienceBooks := ambient: Book where: { |b|
b.category == “Computer Science”
};
def shelfFuture := computerScienceBooks<-getShelf()@Any;
when: shelfFuture becomes: { |shelf|
system.println(“Place the book in shelf: “ + shelf);
};
computerScienceBook<-setShelf(“5D”)@[ All, Sustain ]; 15
Monday 7 June 2010
66. Addressing groups of RFID-tagged objects
def books := ambient: Book;
def computerScienceBooks := ambient: Book where: { |b|
b.category == “Computer Science”
};
def shelfFuture := computerScienceBooks<-getShelf()@Any;
when: shelfFuture becomes: { |shelf|
system.println(“Place the book in shelf: “ + shelf);
};
computerScienceBook<-setShelf(“5D”)@[ All, Sustain ]; 15
Monday 7 June 2010
67. Addressing groups of RFID-tagged objects
def books := ambient: Book;
def computerScienceBooks := ambient: Book where: { |b|
b.category == “Computer Science”
};
def shelfFuture := computerScienceBooks<-getShelf()@Any;
when: shelfFuture becomes: { |shelf|
system.println(“Place the book in shelf: “ + shelf);
};
computerScienceBook<-setShelf(“5D”)@[ All, Sustain ]; 15
Monday 7 June 2010
68. Addressing groups of RFID-tagged objects
def books := ambient: Book;
def computerScienceBooks := ambient: Book where: { |b|
b.category == “Computer Science”
};
def shelfFuture := computerScienceBooks<-getShelf()@Any;
when: shelfFuture becomes: { |shelf|
system.println(“Place the book in shelf: “ + shelf);
};
computerScienceBook<-setShelf(“5D”)@[ All, Sustain ]; 15
Monday 7 June 2010
71. Implementation
RFID hardware level
RFID Hardware Abstraction Layer
18
Monday 7 June 2010
72. Implementation
Java RFID library level
JNI
RFID hardware level
RFID Hardware Abstraction Layer
18
Monday 7 June 2010
73. Implementation
public class Transponder {
Java RFID library level }
...
JNI
RFID hardware level
RFID Hardware Abstraction Layer
18
Monday 7 June 2010
74. Implementation
AT RFID Event Loop
Symbiosis
public class Transponder {
Java RFID library level }
...
JNI
RFID hardware level
RFID Hardware Abstraction Layer
18
Monday 7 June 2010
75. Implementation
when: tag<-getSerial() becomes: { |nr|
AT RFID Event Loop }
...
Symbiosis
public class Transponder {
Java RFID library level }
...
JNI
RFID hardware level
RFID Hardware Abstraction Layer
18
Monday 7 June 2010
76. Implementation
Thing level
Object serialization/backend connection
when: tag<-getSerial() becomes: { |nr|
AT RFID Event Loop }
...
Symbiosis
public class Transponder {
Java RFID library level }
...
JNI
RFID hardware level
RFID Hardware Abstraction Layer
18
Monday 7 June 2010
77. Implementation
Thing level book<-setTitle(“Title”);
Object serialization/backend connection
when: tag<-getSerial() becomes: { |nr|
AT RFID Event Loop }
...
Symbiosis
public class Transponder {
Java RFID library level }
...
JNI
RFID hardware level
RFID Hardware Abstraction Layer
18
Monday 7 June 2010
78. Limitations and Future Work
• Processing RFID events happens sequentially within one event loop. May
lead to performance problems in very large systems?
• No data protection when multiple RFID devices write to tags concurrently.
• Efficient serialization of proxy objects is work in progress. For cheap passive
tags, we need to fit the data on ~8K of memory.
• New generation of active RFID hardware may provide solutions.
19
Monday 7 June 2010
79. Conclusion
• Represent RFID-tagged things as true mutable proxy objects in an object-
oriented system.
• Reactivity to appearing and disappearing things.
• Asynchronous and fault-tolerant communication.
• Addressing and communicating with groups of intensionally described things.
http://soft.vub.ac.be/soft/research/amopcop 20
Monday 7 June 2010