  We consider a communication channel where there is no common clock between
the transmitter and the receiver. This is motivated by the recent interest in
building system-on-chip radios for Internet of Things applications, which
cannot rely on crystal oscillators for accurate timing. We identify two types
of clock uncertainty in such systems: timing jitter, which occurs at a time
scale faster than the communication duration (or equivalently blocklength); and
clock drift, which occurs at a slower time scale. We study the zero-error
capacity under both types of timing imperfections, and obtain optimal
zero-error codes for some cases. Our results show that, as opposed to common
practice, in the presence of clock drift it is highly suboptimal to try to
learn and track the clock frequency at the receiver; rather, one can design
codes that come close to the performance of perfectly synchronous communication
systems without any clock synchronization at the receiver.
