Patterns and Practices Breakout
In the second breakout session lead by Alan Messer of Samsung Electronics, the group was tasked to summarize the list of design patterns, techniques and guidelines generated in the morning session, then apply those to a conference scenario.
The group managed to discuss many ideas (about 20?) which are listed here (line). To keep the scope manageable, the group decided to apply the techniques to a specific part of a conference scenario – the use of situated displays for meeting rooms.
The group decided to focus on the following requirements in meeting rooms:
- Information capture and summarization
- Capturing content in electronic form for search and categorization
- Retrieving lost information in meetings, that may be captured using video and audio recording – indexing techniques.
From these ideas, the group found that a key requirement is mapping information captured in the physical world to the electronic world. This is a difficult problem where many techniques can be applied.
The main outcome of this session was a starting point for a list of techniques and patterns that could be formalized. Participants found consensus on many of the topics discussed, while others were left on the list for future discussion online or in future workshops. The group agreed that a community portal like this one would be a great way to expand on the topics and ideas.
Patterns, Techiques and Guidelines
Patterns
| Name | Problem it solves | Example | How to apply | Notes |
|---|---|---|---|---|
| Web services for sensors | Interoperability | UPnP, Context Toolkit, Phidgets | ||
| HTML user interface/micro web servers | Need a "default" platform independent user interface for a component | iROS ICrafter, UPnP | Put web servers on cell phones, actuators | |
| Event broker | loose coupling between producers and consumers of events | iROS, Gaia | ||
| Spatial Models mapping real world to virtual | Can determine where users are, infer activity, what they are interested in (context) | Sentient Computing, Easy Living | ||
| Ontologies in middleware | Context reasoning, middleware model consistency checking | CoBRA, SoCAM | ||
| Use of tuplespaces | loose coupling, state storage | |||
| Entity aggregation | providing application with single node for related context, services about an entity (person, place, thing) | Context Toolkit, Cooltown Web presence, Java Context Aware Framework | ||
| Linking entities | Applications can discover related entities, people contained in places, adjacent rooms, objects held by people | Cooltown | ||
| Widget Metaphor | Can access sources of context, services the same way, using a uniform API even though the context and services are different | Context Toolkit | ||
| Blackboard | Place to get data and store results related to context, interaction state. Originally used for distributed cognition | iROS state, dataheap? | ||
| Publish/Subscribe | Similar to event brokers, content based or topics | iROS, Gaia, Elvin | ||
| Service oriented architecture | pattern for distributed dynamic systems | UPnP |
Techniques
| Name | Problem it solves | Example | How to apply | Notes |
|---|---|---|---|---|
| Assume no infrastructure | applications take advantage of local resources, even without internet connectivity | Ad hoc wireless networks, multicast service discovery | ||
| Physical toolkit | Bootstrap deployment | Phidgets, SmartIts | Great way to get deployment up and running | |
| User tagging | No sensor available for certain context | Allow the user to tag physical objects, data easily | ||
| Semi auto-tagging | Associated context with content automatically | Simple automated tagging using filters, image processing, timestamps, GPS | ||
| End user programming | Users can set up ad hoc solutions for a given situation | Equip Component Toolkit graphical editors, SpeakEasy and Casca | Visual programming or component links - jigsaw puzzle metaphors | |
| Signal strength or device sensor localization | indoor and outdoor localization without special equipment | Intel PlaceLab, Intel POLS, power line localization, fingerprinting |
Guidelines
| Name | Problem it solves | Example | How to apply | Notes |
|---|---|---|---|---|
| User in the loop | By asking the user, can avoid missed predictions, which can be bad | lights don't switch on and off at the wrong time | ask the user at the "right" time | |
| Using seams | Seams in infrastructure such as innacurate location, disconnectedness can be resources for design | Be aware of seams and if possible, use them to your advantage | ||
| Living lab or Eat your own dog food | You get a "real" deployment! |
Other ideas under development
- Ubicomp Mashups - exchanging data between systems
- Use standards - web services, UPnP, XMPP, etc.
- Sensor fusion - useful context from low level sensors, and combination of sensors. Need example, taxonomy?
