hardware programming