Designing for Tasks in Ubiquitous Computing: Challenges and Considerations