In this work we propose several new coding designs attuned to the physical properties of memory devices. Our contributions are as follows: (a) We propose low-complexity, high-rate codes for write-once memories. These codes have the advantage not requiring long lengths. (b) We propose novel error correction coding schemes for multilevel Flash memories. Our codes exploit the intrinsic asymmetry in real Flash devices via tensor product operations, and as such offer significant advantage over popular symmetric error correcting codes, (c) We propose new codes for the high-density granular media channel. In many instances, our solutions improve the previous state of the art in the respective domains, and offer a foundation for further investigation of coding for asymmetric channels.