1. A method for configuring a device to perform a task, wherein the device is coupled to or comprised in a client computer system, and wherein the device is comprised in a system comprising one or more devices, the method comprising: displaying a graphical user interface (GUI) on a display of the client computer system which iconically illustrates the system; receiving user input to the GUI specifying one or more target devices of the one or more devices to receive one or more hardware configuration programs, wherein the one or more target devices comprise the device; the client computer system receiving user input indicating information specifying the task; the client computer system providing the information specifying the task to a server over a network; the server receiving the information specifying the task over the 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.