Blowback
This is two posts in one, since I was scrambling to finish a small contract and just got done.
First off, if you can’t get GLSL shaders to work in OpenGL ES2, they never tell you that you have to have BOTH a GL_FRAGMENT_SHADER and a GL_VERTEX_SHADER attached to your shader program, or else it will compile fine but sit forever and never link, and glGetShaderInfoLog() and glGetProgramInfoLog() will just return empty strings. Also you can’t pass an empty string to glShaderSource(). You will get an error in glGetShaderInfoLog() that no code could be found to parse. Pass empty main() functions instead. This shows how to attach the two shaders to your program properly:
http://stackoverflow.com/questions/4850025/shader-for-android-opengl-es
Also watch out for unicode in your shaders, it may cause problems. Use ASCII.
Second off, I was so deep in code that I put off going to the store, eating, and changing the furnace filters. Now my $1500 contract has become a $4000 furnace and water heater replacement. They were 20 years old so we did them both to save money.
Moral of the story is, you will have to go into the zone to succeed in life, because tons of things waste so much of your time that you won’t succeed otherwise. But keep your eye on the ball, follow your instincts and change the friggin furnace filters, go to the dentist, and change your oil. Otherwise it’s one step forward and two steps back.
Update: they changed the furnace today and turns out the heat exchanger was cracked so had been leaking carbon dioxide into the house for who knows how long. Periodic inspections are a good idea too.