Computing with light