Software Infrastructure and Design Challenges for Ubiquitous Computing Applications