Computer hardware and devices