I remember trying to my own data transmission over lasers ages ago, back when I didn't really know about how to properly transfer data (PLLs, clock recovery, error correction, etc). It lost timing pretty quickly, but it could just about do a hello world