1. A method for configuring a device to perform a task, the method comprising: a server receiving information specifying the task, wherein the information is received over a network; automatically generating a hardware configuration program based on the information; and providing the hardware configuration program to the device over the network, wherein the device includes a programmable hardware element, wherein the hardware configuration program is usable to configure the programmable hardware element to perform the specified task.