Improving linear optical software and hardware for quantum information processing