Photons can be used for quantum communication, quantum sensing and quantum computing. For all these applications we need efficient sources of single photons, and we need to find ways for photons to interact with one another. We are developing single molecules embedded in nanophotonic waveguides as single photon emitters. Each molecule can be made to emit a single photon into the waveguide on demand and with high efficiency. The presence of one photon passing the molecule changes the interaction of a second photon with the same molecule, providing the basis for a quantum gate for photons. We are also developing this system as a form of quantum memory.