Conjugate duality for convex programs: A geometric development