A tangible-programming technology supporting end-user development of smart-environments