Hardware and Software Platforms for Distributed Computing on Resource Constrained Devices