Programmable materials