Buildings consume a significant amount of energy, and the exact breakdown depends on a myriad of factors including usage modalities, age, weather, occupants to name a few. The first step to managing their energy usage is understanding where the energy is being consumed, so that it can be managed effecitively. We have worked on making buildings more energy efficient at a campus scale by devising novel sensing methods to detect occupants and their movements and using that information to actually control or actuate building subsystems. We have built and deployed systems to manage IT (e.g. desktops and laptops) energy usage, called Somniloquy and SleepServer. We have also devised wireless, battery powered, occupancy sensors and our own smart energy meter. Using the occupancy information we have actuated the HVAC system of our building as well as managed plug-loads. We are also working on designing and implementing BuildingDepot, a scalable and extensible open-source software system to manage all data related to buildings supported by a library of "connectors" and "apps". There are many exciting avenues of research in the smart-bulding space, including novel sensing systems, at scale networking, data analysis, modeling and actuation. Futhermore, since buildings essentially house human occupants understanding their behavior and motivations, as well as devising the right incentive mechanisms to engage them are important research problems.
The phenomenal improvement in the capabilities of modern smartphones, and the underlying `App' store model of software distribution, has fundamentally changed the mobile computing landscape. For many people, smartphones are the platform of choice for their computing needs. These trends have led to several interesting research problems that need to be addressed. Two of the major ones that we have looked at are energy management (or improve battery lifetime) and mobile privacy. To improve the battery lifetime of these devices, we have looked at optimizing communication energy consumption since it is one of the dominant components given the many radios these devices have (Bluetooth, WiFi, NFC, GPS, Celluar). Recently, our focus has been more towards 3rd party Apps running on modern smartphone OSes which can cause un-necessary battery drain due to developer error. We have built a tool that verifies Android apps for the absence of energy sapping bugs. The other aspect of mobile computing that we are very interested in is privacy, specifically for smartphone applications that collect and often sell user data such as location, contacts, various identifiers and other private data unknown to users. Our ongoing project - ProtectMyPrivacy - explores the extent of these privacy leaks, and provides users the ability to manage access to their private data. To help users make informed privacy choices we have implemented a crowd-sourced recommendation engine. There are multiple research avenues that PmP has opened up, for example understanding user perception and bias towards privacy on smartphones, effectiveness of crowd-sourcing, improving effectiveness of privacy prompts, and also understanding the motivations behind privacy breaching apps.
As computing devices become more complex, the underlying components within them continue to shrink. One side effect of this continued scaling is that these devices cease to function as the precise machines of the past, and are becoming rather unpredictable with varying degrees of hardware "variability". While hardware designers cope with this by instituing more guard bands in their designs, thereby hiding it from the software, it often comes at the cost of reduced performance and energy in-efficiency. As part of the NSF Variability Expeditions, we have been investigating techniques to make the software stack not only more resilient, but also adaptive so that it can leverage these underlying differences between devices. We began by detailed characterization of power variability across multiple classes of processors, and the impact it has on power modeling. We are now investigating the right abstractions for exposing this variability to systems software and methods by which it can be leveraged to build more reliable and/or energy efficient systems. Since one manifestation of hardware variability is reduced reliability, we are looking at making programs more resilient by decomposing them into parts that can handle errors (run under relaxed hardware guarantees) and sections that cannot handle any errors (run under strict hardware guarantees). While a fuild hardware-software interface can not only mitigate but also leverage variability for increased robustness and energy efficiency, many research challenges remain!