The number of homomorphisms from the fundamental group of a topological space X to a target finite group G is a useful invariant in geometric topology, in particular when X = M is a closed 3-manifold or a knot complement. However, we can show that this invariant is computationally intractable in these cases when G is a fixed finite simple group and M is sufficiently complicated. In effect, M is a programmable object, the existence of a non-trivial homomorphism is NP-complete, and counting homomorphisms is harder still. The machine behind the programmability of M is a mutual generalization and refinement of the Conway-Parker-Dunfield-Thurston theorem on the transitivity of the mapping class group action on the set of homomorphisms from a surface group to G. A refinement of the Goursat-Ribet theorem, which is a kind of non-commutative central limit theorem, also plays a role.