That's new information though,
GL_INVALID_OPERATION in glUseProgram(program 5 not linked)
Apparently, it didn't get linked somehow... I've added a debug print to check if the program gets linked correctly. Again, tell me to stop giving you things to do if I'm pushing.